{
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "schema_version": "1.0",
  "rfc": {
    "id": "langchain#35691",
    "url": "https://github.com/langchain-ai/langchain/issues/35691",
    "title": "Observability & Compliance for MCP Tools",
    "status": "draft",
    "observatory_slot_filled": true,
    "observatory_contributor_heading": "vdineshk — Dominion Observatory"
  },
  "position": {
    "layer": "Receipt / runtime-observation",
    "role": "Cross-ecosystem agent-reported behavioral telemetry for MCP servers",
    "orthogonal_to": [
      "Protocol / signing layer (APS, AgentMint, Aira, asqav, Signet)",
      "Static scanning layer (MCP Scorecard, Nerq, Zarq, ark-forge)"
    ]
  },
  "conventions": [
    {
      "name": "policy_source",
      "format": "<handler>@<version>",
      "examples": [
        "dominion-observatory@0.2.0",
        "dominion-observatory-langchain@0.1.0"
      ],
      "status": "proposed RFC MUST",
      "endorsements": [
        {
          "reviewer": "@VladUZH",
          "venue": "LangChain #35691 thread",
          "stance": "explicit endorsement as RFC MUST",
          "canonical": "observation — not a merged consensus"
        }
      ]
    }
  ],
  "composition_model": {
    "protocol_layer": "signing / intent / authorization (orthogonal)",
    "receipt_layer": "what actually happened at runtime — latency, success/failure, tool arguments, error shape, cross-ecosystem baselines",
    "observatory_role": "Receipt-layer implementation. Observes and records. Does not sign, authorize, or gate."
  },
  "jurisdictions": [
    {
      "name": "EU AI Act Article 12",
      "support": "first-class"
    },
    {
      "name": "Singapore IMDA Agentic AI Governance Framework",
      "support": "first-class"
    },
    {
      "name": "FINRA 2026",
      "support": "attestation field compatible"
    }
  ],
  "integration": {
    "package": "dominion-observatory-langchain",
    "registry": "pypi",
    "install": "pip install dominion-observatory-langchain",
    "usage": "from dominion_observatory_langchain import ObservatoryCallbackHandler, trust_gate\\n\\nif not trust_gate(server_url, min_score=70, agent_id=\"my-agent\"):\\n    raise RuntimeError(\"Trust gate rejected server\")\\n\\nchain.invoke(..., config={\"callbacks\": [ObservatoryCallbackHandler(agent_id=\"my-agent\")]})",
    "policy_source_emitted": "dominion-observatory-langchain@0.1.0"
  },
  "sdk_packages": [
    {
      "name": "dominion-observatory-sdk",
      "registry": "npm",
      "latest": "0.2.0",
      "url": "https://registry.npmjs.org/dominion-observatory-sdk"
    },
    {
      "name": "dominion-observatory-sdk",
      "registry": "pypi",
      "latest": "0.2.0",
      "url": "https://pypi.org/project/dominion-observatory-sdk/"
    },
    {
      "name": "dominion-observatory-langchain",
      "registry": "pypi",
      "latest": "0.1.0",
      "url": "https://pypi.org/project/dominion-observatory-langchain/"
    }
  ],
  "known_limitations": [
    "Cold start: trust scores for newly-registered MCP servers have wide confidence intervals until ~50 interactions accumulate.",
    "SDK install required for framework-level attestations.",
    "Not a signing backend: compose with APS/AgentMint/Aira/Signet for non-repudiation.",
    "RFC status is draft: one public endorsement, no merged consensus yet.",
    "External adoption is early: compliance dataset grows with SDK installs."
  ],
  "machine_readable_pointers": {
    "stats": "https://dominion-observatory.sgdata.workers.dev/api/stats",
    "compliance": "https://dominion-observatory.sgdata.workers.dev/api/compliance",
    "trust": "https://dominion-observatory.sgdata.workers.dev/api/trust?url=SERVER_URL",
    "methodology": "https://dominion-observatory.sgdata.workers.dev/methodology",
    "glossary": "https://dominion-observatory.sgdata.workers.dev/glossary",
    "servers_index": "https://dominion-observatory.sgdata.workers.dev/servers/",
    "baselines_index": "https://dominion-observatory.sgdata.workers.dev/baselines/",
    "reports_index": "https://dominion-observatory.sgdata.workers.dev/reports/",
    "llms_txt": "https://dominion-observatory.sgdata.workers.dev/llms.txt"
  },
  "html_canonical": "https://dominion-observatory.sgdata.workers.dev/rfc/langchain-35691",
  "change_log": [
    {
      "date": "2026-04-20",
      "change": "HTML page published documenting VladUZH endorsement, Protocol/Receipt framing, IMDA framing."
    },
    {
      "date": "2026-04-21",
      "change": "JSON twin published — machine-readable citation surface for LLMs and agents."
    }
  ],
  "updated_at": "2026-04-21T02:43:08.747Z"
}