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.
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.
01CLI
argus auth login
argus --base-url https://api.argusfa.com entity-resolve \
--identifier-type lei \
--identifier-value HWUPKR0MPOU8FGXBT39402REST
# 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))03MCP
# 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())One governed path, end to end
Discovery precedes execution. Every successful or refused call remains structured, bounded, and auditable.
- 01
identityOAuth subject · scopes · purpose · as_of - 02
registryagent_tool_registry · scopes · allowed_purposes - 03
boundarytenant · permission · license · provenance · audit - 04
DataPackagefacts · 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.
- Use interactive OAuth to connect an AI agent; use a machine client or service account for unattended automation.
- Read the tool registry and choose a tool whose scopes and purpose match the identity.
- Use CLI + Skill or MCP as primary AI-agent interfaces; use REST for HTTPS and batch transport.
- Call the tool with an explicit as_of time.
- 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.
{
"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.
- 01
company_fact_snapshotCompany 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
- 02
- REST
/v1/point-in-time-snapshot- MCP
point_in_time_snapshot- Return contract
- CliToolEnvelope JSON with nested DataPackage result
- 03
evidence_gap_reportEvidence 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
- 04
agent_data_preflightAgent 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.
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.