Public interface dossier

Cited financial facts, structured for AI agents.

CLI + Skill and MCP are the primary AI-agent interfaces; REST provides HTTPS and batch transport. Every response includes status and governance metadata. Returned facts link to source evidence and time semantics.

Primary AI-agent calls use CLI + Skill or MCP; REST provides HTTPS and batch transport.

Discovery precedes execution. Every successful or refused call remains structured, bounded, and auditable.
ARGUS / SYSTEM MAPOne governed path, end to end

Choose the interface that fits your AI agent

All three access paths enter the same CoreServiceBoundary. Tenant, permission, license, evidence, provenance, and audit rules do not change with the client.

01CLIOAuth · browser sign-in · JSON stdout
argus auth login
argus --base-url https://api.argusfa.com entity-resolve \
  --identifier-type lei \
  --identifier-value HWUPKR0MPOU8FGXBT394

Technical documentation: CLI

02RESTOAuth Bearer · HTTPS · JSON · OpenAPI
# First run: argus auth login
import json
from urllib.request import Request, HTTPRedirectHandler, build_opener
from argus.cli.oauth import CliOAuthProfile

profile = CliOAuthProfile()
token = profile.client().access_token()
if token is None:
    raise RuntimeError("Run argus auth login first")

class NoRedirect(HTTPRedirectHandler):
    def redirect_request(self, *args, **kwargs):
        return None

request = Request(
    profile.api_base_url + "/v1/entity-resolve",
    data=json.dumps(json.loads(r'''{"identifier_type":"lei","identifier_value":"HWUPKR0MPOU8FGXBT394","purpose":"factual_lookup","requires_redistribution":false}''')).encode(),
    headers={"Authorization": f"Bearer {token}",
             "Content-Type": "application/json", "User-Agent": "Argus REST client"},
    method="POST",
)
with build_opener(NoRedirect()).open(request, timeout=30) as response:
    envelope = json.load(response)
    print(json.dumps(envelope, indent=2))

Technical documentation: REST

03MCPPython 3.12+ · Argus 1.1.8+ · MCP SDK · Registry-first
# Install once: use the official Argus installer.
# argus auth login --interface mcp
import asyncio
import json
from datetime import timedelta

from argus.cli.oauth import CliOAuthProfile
from mcp import ClientSession
from mcp.client.streamable_http import streamable_http_client
from mcp.shared._httpx_utils import create_mcp_http_client


def decode_tool_result(response):
    if response.isError:
        raise RuntimeError(response.content)
    if response.structuredContent is not None:
        return response.structuredContent
    text = next(block.text for block in response.content if block.type == "text")
    return json.loads(text)


async def main() -> None:
    tool_name = "entity_resolve"
    arguments = json.loads(r'''{"identifier_type":"lei","identifier_value":"HWUPKR0MPOU8FGXBT394","purpose":"factual_lookup","requires_redistribution":false}''')
    profile = CliOAuthProfile.from_environment().for_interface("mcp")
    token = profile.client().access_token()
    if token is None:
        raise RuntimeError("Run argus auth login --interface mcp first")

    async with (
        create_mcp_http_client(headers={"Authorization": f"Bearer {token}"}) as http,
        streamable_http_client(profile.audience, http_client=http) as (read, write, _),
    ):
        async with ClientSession(
            read,
            write,
            read_timeout_seconds=timedelta(seconds=30),
        ) as session:
            await session.initialize()
            listed_tools = {tool.name for tool in (await session.list_tools()).tools}
            registry = decode_tool_result(
                await session.call_tool("agent_tool_registry")
            )
            registry_tools = {tool["tool_name"] for tool in registry["tools"]}
            if tool_name not in listed_tools or tool_name not in registry_tools:
                raise RuntimeError(f"Tool is not available in the current Registry: {tool_name}")

            response = await session.call_tool(
                tool_name,
                arguments=arguments,
            )
            payload = decode_tool_result(response)
            if payload.get("success") is not True:
                error = payload.get("error")
                audit_id = payload.get("audit_id")
                if audit_id is None and isinstance(error, dict):
                    audit_id = error.get("audit_id")
                raise RuntimeError(f"Argus request failed (audit_id={audit_id}): {error}")
            print(json.dumps(payload, indent=2, ensure_ascii=False))


asyncio.run(main())

Technical documentation: MCP

One governed path, end to end

Discovery precedes execution. Every successful or refused call remains structured, bounded, and auditable.

  1. 01identityOAuth subject · scopes · purpose · as_of
  2. 02registryagent_tool_registry · scopes · allowed_purposes
  3. 03boundarytenant · permission · license · provenance · audit
  4. 04DataPackagefacts · source_evidence · known_time · quality · audit_id

Reference requests

Sign in with OAuth before calling a tool. These requests use a real GLEIF legal entity; check the returned coverage and evidence before using the result. Keep unattended machine credentials in your secret environment.

  1. Use interactive OAuth to connect an AI agent; use a machine client or service account for unattended automation.
  2. Read the tool registry and choose a tool whose scopes and purpose match the identity.
  3. Use CLI + Skill or MCP as primary AI-agent interfaces; use REST for HTTPS and batch transport.
  4. Call the tool with an explicit as_of time.
  5. Validate evidence, quality, license, restrictions, and audit_id before using the facts.

Validate the package, not only the status code

A transport success is not proof that a fact is usable. Inspect the governed envelope and the nested DataPackage before downstream automation.

Request syntax only. Use real identifiers and evidence returned by earlier calls, and a time window with confirmed coverage. This example does not demonstrate a completed production business result.

DataPackage · company_fact_snapshot

{
  "success": true,
  "tool_name": "company_fact_snapshot",
  "output_format": "json",
  "audit_id": "audit_01JYEXAMPLE0000000000000000",
  "data_package_version": "company-fact-snapshot-cli-v1",
  "source_evidence": [
    {
      "evidence_id": "evidence:filing:1",
      "source_type": "regulatory_filing",
      "source_file_id": "filing:example-inc:2025-10k",
      "document_url": "https://regulator.example.test/filings/example-inc-2025-10k",
      "fragment_position": "char:1024-1080",
      "page_number": 42,
      "paragraph_position": null,
      "field_path": "filing.financials.revenue",
      "filing_time": "2026-06-15T09:00:00Z",
      "retrieved_at": "2026-06-16T09:30:00Z",
      "parser_version": "filing-parser-v1",
      "evidence_confidence": 0.99,
      "credibility_level": "regulatory_original",
      "pointer_type": "source_fragment",
      "content_trust": "untrusted_source_text",
      "mime_type": "text/plain",
      "source_object_sha256": null,
      "excerpt_boundary": "external_source_data",
      "is_conflicting": false,
      "conflict_group_id": null
    }
  ],
  "permission_result": {
    "allowed": true,
    "checked_at": "2026-06-16T10:00:00Z",
    "missing_permissions": [],
    "reason": "permission_allowed",
    "safe_alternative_tools": [
      "company_fact_snapshot",
      "filing_search",
      "source_evidence_lookup"
    ]
  },
  "license_status": "authorized",
  "output_restrictions": [
    "machine_readable_json",
    "cite_source_evidence"
  ],
  "result": {
    "package_type": "company_fact_snapshot",
    "package_version": "company-fact-snapshot-cli-v1",
    "generated_at": "2026-06-16T10:00:00Z",
    "request_subject": "company:example-inc",
    "caller_id": "service:customer-agent",
    "institution_id": "institution:customer",
    "request_purpose": "factual_lookup",
    "facts": [
      {
        "fact_id": "fact:revenue",
        "fact_type": "financial_metric",
        "field_name": "revenue",
        "value": 125000000,
        "evidence_ids": [
          "evidence:filing:1"
        ],
        "credibility_level": "regulatory_original",
        "extraction_method": "structured_source",
        "confidence": 0.99,
        "review_status": null
      }
    ],
    "sections": [],
    "source_evidence": [
      {
        "evidence_id": "evidence:filing:1",
        "source_type": "regulatory_filing",
        "source_file_id": "filing:example-inc:2025-10k",
        "document_url": "https://regulator.example.test/filings/example-inc-2025-10k",
        "fragment_position": "char:1024-1080",
        "page_number": 42,
        "paragraph_position": null,
        "field_path": "filing.financials.revenue",
        "filing_time": "2026-06-15T09:00:00Z",
        "retrieved_at": "2026-06-16T09:30:00Z",
        "parser_version": "filing-parser-v1",
        "evidence_confidence": 0.99,
        "credibility_level": "regulatory_original",
        "pointer_type": "source_fragment",
        "content_trust": "untrusted_source_text",
        "mime_type": "text/plain",
        "source_object_sha256": null,
        "excerpt_boundary": "external_source_data",
        "is_conflicting": false,
        "conflict_group_id": null
      }
    ],
    "data_period": {
      "start": "2025-01-01T00:00:00Z",
      "end": "2025-12-31T23:59:59Z"
    },
    "filing_time": "2026-06-15T09:00:00Z",
    "known_time": "2026-06-16T09:30:00Z",
    "revision_time": null,
    "invocation_time": "2026-06-16T10:00:00Z",
    "data_quality": {
      "quality_level": "high",
      "issues": [],
      "requires_human_review": false
    },
    "credibility_level": "regulatory_original",
    "data_license": {
      "license_id": "public-disclosure-v1",
      "source": "regulatory_filing",
      "status": "authorized",
      "allowed_uses": [
        "factual_lookup",
        "audit_reproduction"
      ],
      "prohibited_uses": [
        "restricted_redistribution"
      ],
      "redistribution": "restricted",
      "authorized_institutions": [
        "institution:customer"
      ],
      "restricted_fields": []
    },
    "allowed_uses": [
      "factual_lookup",
      "audit_reproduction"
    ],
    "prohibited_uses": [
      "restricted_redistribution"
    ],
    "output_restrictions": [
      "machine_readable_json",
      "cite_source_evidence"
    ],
    "structured_output_flags": {},
    "audit_id": "audit_01JYEXAMPLE0000000000000000",
    "output_policy_version": "[email protected]"
  }
}

Tools

The public registry currently defines 53 governed tools. These representative records are generated from the same authority data as the tool directory.

  1. 01

    company_fact_snapshot

    Company Fact Snapshot

    Return disclosed company facts as a structured data package.

    REST
    /v1/company-fact-snapshot
    MCP
    company_fact_snapshot
    Return contract
    CliToolEnvelope JSON with nested DataPackage result
  2. 02

    point_in_time_snapshot

    Point In Time Snapshot

    Return an as-of-safe company snapshot.

    REST
    /v1/point-in-time-snapshot
    MCP
    point_in_time_snapshot
    Return contract
    CliToolEnvelope JSON with nested DataPackage result
  3. 03

    evidence_gap_report

    Evidence Gap Report

    Return evidenced, missing, low-quality, conflicting, and license-blocked classifications.

    REST
    /v1/evidence-gap-report
    MCP
    evidence_gap_report
    Return contract
    CliToolEnvelope JSON with nested DataPackage result
  4. 04

    agent_data_preflight

    Agent Data Preflight

    Return permission, license, field, time range, and target-tool preflight metadata.

    REST
    /v1/agent-data-preflight
    MCP
    agent_data_preflight
    Return contract
    CliToolEnvelope JSON with nested agent_data_preflight_result DataPackage

Trust

Argus exposes factual infrastructure with visible limits. Refusal, restrictions, freshness, license state, and human-review requirements remain part of the result.

[POLICY]Argus itself does not generate investment judgments or execute orders. Client AI agents may use lawfully accessible facts and labeled source material for independent reasoning and output.

Trust

Continue with an authoritative guide

Start with the first-request guide, inspect every supported tool, or open the interface documentation used by your AI agent.