公開介面檔案

為 AI Agent 提供結構化、可追溯的金融事實。

CLI + Skill 與 MCP 是主要的 Agent 介面;REST 提供 HTTPS 與批次傳輸。 每個回應都包含狀態與治理中繼資料;傳回的事實會關聯來源證據與時間語義。

主要的 Agent 呼叫使用 CLI + Skill 或 MCP;REST 提供 HTTPS 與批次傳輸。

先探索,後執行。無論成功或拒絕,每次呼叫都保持結構化、有邊界且可稽核。
ARGUS / SYSTEM MAP一條完整的受治理呼叫路徑

選擇適合你的 AI agent 的介面

三種存取路徑皆進入同一個 CoreServiceBoundary。Tenant、權限、授權、證據、溯源與稽核規則不會因用戶端而改變。

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

技術文件: 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))

技術文件: REST

03MCPPython 3.12+ · Argus 1.1.8+ · MCP SDK · 註冊表優先
# 僅需安裝一次: 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_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 請求失敗 (audit_id={audit_id}): {error}")
            print(json.dumps(payload, indent=2, ensure_ascii=False))


asyncio.run(main())

技術文件: MCP

一條完整的受治理呼叫路徑

先探索,後執行。無論成功或拒絕,每次呼叫都保持結構化、有邊界且可稽核。

  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

可重用的請求參考

呼叫工具前,請先透過 OAuth 登入。這些請求會使用真實的 GLEIF 法律實體;使用結果前,請檢查回傳的涵蓋範圍與證據。請將無人值守機器使用的憑證保存在你的機密環境中。

  1. 透過互動式 OAuth 連接 AI agent;無人值守自動化使用 machine client 或 service account。
  2. 先讀取工具註冊表,選擇權限範圍與用途符合身分的工具。
  3. 使用 CLI + Skill 與 MCP 作為主要的 Agent 介面;使用 REST 進行 HTTPS 與批次傳輸。
  4. 呼叫時明確提供 as_of 時間。
  5. 使用事實前檢查證據、品質、授權、限制與 audit_id。

驗證資料包,而不只檢查狀態碼

傳輸成功並不代表事實可直接使用。進入下游自動化前,應檢查受治理回應封裝及其中的 DataPackage。

這裡僅展示請求語法。請使用真實識別碼、先前呼叫回傳的證據,以及涵蓋情況已確認的時間範圍。此範例不代表已完成的正式業務結果。

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

工具

公開工具註冊表目前定義了 53 個受治理工具。以下代表性記錄與工具目錄使用同一份權威建置資料產生。

  1. 01

    company_fact_snapshot

    公司事實快照

    以結構化資料包的形式傳回已揭露的公司事實。

    REST
    /v1/company-fact-snapshot
    MCP
    company_fact_snapshot
    回傳契約
    CliToolEnvelope JSON with nested DataPackage result
  2. 02

    point_in_time_snapshot

    時點快照

    傳回時點安全的公司快照。

    REST
    /v1/point-in-time-snapshot
    MCP
    point_in_time_snapshot
    回傳契約
    CliToolEnvelope JSON with nested DataPackage result
  3. 03

    evidence_gap_report

    證據缺口報告

    傳回已舉證、缺失、低品質、衝突以及 授權 受限的分類。

    REST
    /v1/evidence-gap-report
    MCP
    evidence_gap_report
    回傳契約
    CliToolEnvelope JSON with nested DataPackage result
  4. 04

    agent_data_preflight

    Agent 資料預檢

    傳回 權限、授權、欄位、時間範圍與目標工具的預檢中繼資料。

    REST
    /v1/agent-data-preflight
    MCP
    agent_data_preflight
    回傳契約
    CliToolEnvelope JSON with nested agent_data_preflight_result DataPackage

信任

Argus 提供邊界清楚的事實基礎設施。拒絕、限制、新鮮度、授權狀態和人工審查要求都會保留在結果中。

[POLICY]Argus 自身不產生投資判斷或執行訂單,但不限制客戶端 AI Agent 使用合法取得的資料獨立推理和輸出。

信任

繼續閱讀權威存取指南

從首次請求指南開始,檢查全部工具,或直接進入你的 AI agent 所用的介面文件。