Dossier public des interfaces

Des faits financiers cités, structurés pour les agents IA.

CLI + Skill et MCP sont les interfaces principales pour les agents ; REST fournit le transport HTTPS et par lots. Chaque réponse inclut des métadonnées d’état et de gouvernance ; les faits renvoyés sont associés à des preuves de source et à la sémantique temporelle.

Les appels principaux des agents utilisent CLI + Skill ou MCP ; REST fournit le transport HTTPS et par lots.

La découverte précède l’exécution. Chaque appel, réussi ou refusé, reste structuré, limité et auditable.
ARGUS / SYSTEM MAPUn parcours gouverné de bout en bout

Choisir l’interface adaptée à votre AI agent

Les trois chemins d’accès entrent dans la même CoreServiceBoundary. Les règles relatives au Tenant, aux permissions, aux licences, aux preuves, à la provenance et à l’audit ne changent pas selon le 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

Documentation technique: 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))

Documentation technique: REST

03MCPPython 3.12+ · Argus 1.1.8+ · MCP SDK · Registre d’abord
# Installer une seule fois: 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"L’outil n’est pas disponible dans le registre actuel: {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"La requête Argus a échoué (audit_id={audit_id}): {error}")
            print(json.dumps(payload, indent=2, ensure_ascii=False))


asyncio.run(main())

Documentation technique: MCP

Un parcours gouverné de bout en bout

La découverte précède l’exécution. Chaque appel, réussi ou refusé, reste structuré, limité et 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

Requêtes de référence réutilisables

Connectez-vous avec OAuth avant d’appeler un outil. Ces requêtes utilisent une entité juridique réelle de GLEIF ; vérifiez la couverture et les éléments de preuve renvoyés avant d’utiliser le résultat. Conservez les identifiants des machines fonctionnant sans supervision dans votre environnement de secrets.

  1. Connectez un AI agent par OAuth interactif ; pour l’automatisation sans intervention, utilisez un machine client ou service account.
  2. Lisez d’abord le registre et choisissez un outil dont les portées et la finalité correspondent à l’identité.
  3. Utilisez CLI + Skill ou MCP comme interfaces principales pour les agents ; utilisez REST pour le transport HTTPS et par lots.
  4. Appelez l’outil avec une heure as_of explicite.
  5. Validez preuves, qualité, licence, restrictions et audit_id avant d’utiliser les faits.

Valider le paquet, pas seulement le code d’état

Un transport réussi ne prouve pas qu’un fait est utilisable. Vérifiez l’enveloppe gouvernée et le DataPackage avant toute automatisation.

Seule la syntaxe de la requête est présentée ici. Utilisez des identifiants réels, les éléments de preuve renvoyés par des appels précédents et une période dont la couverture est confirmée. Cet exemple ne démontre pas qu’un résultat métier en production a été obtenu.

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]"
  }
}

Outils

Le registre public des outils définit actuellement 53 outils gouvernés. Ces enregistrements proviennent des mêmes données d’autorité que l’annuaire des outils.

  1. 01

    company_fact_snapshot

    Snapshot de Faits d'Entreprise

    Renvoyer les faits d'entreprise divulgués sous forme de DataPackage structuré.

    REST
    /v1/company-fact-snapshot
    MCP
    company_fact_snapshot
    Contrat de retour
    CliToolEnvelope JSON with nested DataPackage result
  2. 02

    point_in_time_snapshot

    Snapshot Point-In-Time

    Renvoyer un snapshot d'entreprise as-of-safe.

    REST
    /v1/point-in-time-snapshot
    MCP
    point_in_time_snapshot
    Contrat de retour
    CliToolEnvelope JSON with nested DataPackage result
  3. 03

    evidence_gap_report

    Rapport des lacunes de preuves

    Renvoyer les classifications avec preuves, sans preuves, de faible qualité, conflictuelles et bloquées par licence.

    REST
    /v1/evidence-gap-report
    MCP
    evidence_gap_report
    Contrat de retour
    CliToolEnvelope JSON with nested DataPackage result
  4. 04

    agent_data_preflight

    Pré-vérification de Données d'Agent

    Renvoyer les métadonnées de pré-vérification de autorisation, licence, champ, plage horaire et target_tool.

    REST
    /v1/agent-data-preflight
    MCP
    agent_data_preflight
    Contrat de retour
    CliToolEnvelope JSON with nested agent_data_preflight_result DataPackage

Confiance

Argus fournit une infrastructure factuelle aux limites visibles. Refus, restrictions, fraîcheur, licence et revue humaine restent dans le résultat.

[POLICY]Argus ne génère ni décisions d’investissement ni ordres, mais ne limite pas l’analyse et la sortie indépendantes de l’agent client à partir de données obtenues légalement.

Confiance

Continuer avec un guide d’autorité

Commencez par le guide de première requête, consultez tous les outils ou ouvrez la documentation de l’interface de votre AI agent.