{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_yxnzuuhr68r5","handle":"custody-mcp","url":"https://wellknown.network/agents/custody-mcp","links":{"self":"https://wellknown.network/agents/custody-mcp/record.json","html":"https://wellknown.network/agents/custody-mcp","markdown":"https://wellknown.network/agents/custody-mcp/record.md","api":"https://wellknown.network/api/v1/agents/custody-mcp","status":"https://wellknown.network/api/v1/agents/custody-mcp/status","claim":"https://wellknown.network/agents/custody-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/custody-mcp/claim.json","badge":"https://wellknown.network/agents/custody-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/custody-mcp/history","tools":"https://wellknown.network/api/v1/agents/custody-mcp/tools"},"ard":{"identifier":"urn:air::server:custody-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"custody-mcp","summary":"A governed, auditable agent gateway for oncology data workflows","description":"# Custody\n\nCustody sits between an AI agent and the tools it uses on oncology data,\nso the agent can work under controls a privacy or compliance officer can\nactually review: data-aware policy, approval gates for anything sensitive,\na tamper-evident audit log, and isolated execution for every command.\n\n```\nAgent (Claude Code / Codex / OpenHands / Goose / any MCP client)\n   |  MCP (stdio or streamable HTTP)\n   v\nCustody Gateway\n   1. Identify principal + session\n   2. Classify request (tool, datasets, data class, egress, model target)\n   3. Policy engine  -> allow | deny | require_approval\n   4. Approval broker -> wait for human decision (timeout = deny)\n   5. Executor       -> sandboxed container\n   6. Output guard   -> redact/summarize results by data class\n   7. Audit log      -> hash-chained entry at every step\n   |\n   v\nCustody's own tools: catalog.list, sql.query, shell.run, files.write,\nfiles.export, approvals.status, fhir.search\n```\n\nStatus: v0.1.0 tagged and public (285 tests, 96% coverage on\n`src/custody`, `ruff` and `mypy --strict` clean); `main` carries\nseveral items since merged in from ROADMAP.md (signed policy bundles,\nan OPA policy backend, a Kubernetes deployment, a FHIR connector, an\nS3 Object Lock audit sink, an egress allowlist proxy, OIDC-verified\napprover identity) -- see CHANGELOG.md's `[Unreleased]` section for\nexactly what, and for what shipped in v0.1.0 itself. One scope note:\nthe architecture above describes a gateway that can also proxy a\ndownstream MCP server's tools, that proxying is **not implemented**,\nevery tool call this release handles goes through one of the\nbuilt-ins listed above (see `custody/mcp_server.py`'s module\ndocstring).\n\n## Quickstart (under 5 minutes to the demo, Docker required)\n\nFrom a clone of this repository (not yet published to PyPI):\n\n```bash\ngit clone <this repo>\ncd custody\nuv sync --extra dev\ndocker build -f docker/sandbox.Dockerfile -t custody-sandbox:duckdb .\nuv run custody demo\n```\n\n`custody demo` generates a…","publisher":null,"homepage":"https://github.com/unmirihealth/custody","repository":"https://github.com/unmirihealth/custody","version":"0.2.0","license":null,"protocols":["mcp"],"tags":["ai-agents","audit-log","governance","healthcare","mcp","oncology"],"pricing":null,"endpoints":[{"url":"pypi:custody-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi"}},"derived":{"capabilities":[{"slug":"infra.cloud","name":"Cloud Platforms","confidence":1,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":0.791,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.779,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.745,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":0.733,"provenance":"derived"}],"categories":["data","dev","infra"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"custody-mcp","registry":"pypi","observedAt":"2026-11-05T21:26:35.104Z","publishedAt":"2026-10-21T22:52:05.320166Z","latestVersion":"0.2.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"custody-mcp","url":"https://pypi.org/project/custody-mcp/","firstSeenAt":"2026-10-24T17:27:06.624Z","fetchedAt":"2026-11-05T21:24:59.805Z","normalizedAt":"2026-11-05T21:24:59.805Z"}]},"firstSeenAt":"2026-10-24T17:27:06.624Z","updatedAt":"2026-11-05T21:26:35.104Z"}