{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_qw4cewy896n2","handle":"mcp-surfaceprint","url":"https://wellknown.network/agents/mcp-surfaceprint","links":{"self":"https://wellknown.network/agents/mcp-surfaceprint/record.json","html":"https://wellknown.network/agents/mcp-surfaceprint","markdown":"https://wellknown.network/agents/mcp-surfaceprint/record.md","api":"https://wellknown.network/api/v1/agents/mcp-surfaceprint","status":"https://wellknown.network/api/v1/agents/mcp-surfaceprint/status","claim":"https://wellknown.network/agents/mcp-surfaceprint/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mcp-surfaceprint/claim.json","badge":"https://wellknown.network/agents/mcp-surfaceprint/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/mcp-surfaceprint/history","tools":"https://wellknown.network/api/v1/agents/mcp-surfaceprint/tools"},"ard":{"identifier":"urn:air::server:mcp-surfaceprint","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"mcp-surfaceprint","summary":"See what an MCP server exposes before you trust or connect it.","description":"# mcp-surfaceprint\n[![Downloads](https://static.pepy.tech/badge/mcp-surfaceprint)](https://pepy.tech/project/mcp-surfaceprint)\n[![PyPI version](https://img.shields.io/pypi/v/mcp-surfaceprint.svg)](https://pypi.org/project/mcp-surfaceprint/)\n\nInspect, fingerprint, and diff an MCP server’s declared capability surface.\n\nAn MCP server can gain tools, parameters, resources, prompts, or new actions beneath an existing tool name. `mcp-surfaceprint` captures that client-visible surface as a deterministic snapshot, computes a stable digest when inspection is complete, and shows structural differences over time.\n\nUse it as:\n\n- an interface compatibility check for MCP server maintainers\n- a capability-change review gate for teams consuming third-party MCP servers\n\nIf you want the deeper framing and experiments, see [You can’t prove an MCP server hasn’t changed](You%20can%E2%80%99t%20prove%20an%20MCP%20server%20hasn%E2%80%99t%20changed.md).\n\n## Why\n\nYou review an MCP server before installing it. Later, a dependency upgrade adds a destructive action beneath an existing tool name. The package version changed, but nothing gives you a durable, structural record of the declared capability surface you previously reviewed.\n\n`mcp-surfaceprint` turns that declaration into a versioned artifact that can be committed, compared, and reviewed.\n\n## Quick start (snapshot + check)\n\n```bash\npipx install mcp-surfaceprint\n\n# Commit a baseline snapshot (one-time)\nmcp-surfaceprint --save mcp-surface.json \"uv run server.py\"\ngit add mcp-surface.json\n\n# Later, locally or in CI: check the live server against the baseline\nmcp-surfaceprint check mcp-surface.json \"uv run server.py\"\n```\n\nA changed surface is not automatically unsafe; `check` turns it into an explicit review event rather than allowing it to pass unnoticed.\n\n> **Safety:** This command starts the server locally. MCP discovery does not invoke its declared tools, but a server can execute arbitrary code while handling any request. Use `--isolate…","publisher":{"name":"jordanstarrk","url":null},"homepage":"https://github.com/mcp-surfaceprint/mcp-surfaceprint","repository":"https://github.com/mcp-surfaceprint/mcp-surfaceprint/releases","version":"0.5.1","license":"MIT License\n        \n        Copyright (c) 2026 jordanstarrk\n  …","protocols":["mcp"],"tags":["mcp","security","cli","ai","agents"],"pricing":null,"endpoints":[{"url":"pypi:mcp-surfaceprint","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"dev.package-management","name":"Packages & Dependencies","confidence":0.768,"provenance":"derived"}],"categories":["dev"],"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":"mcp-surfaceprint","registry":"pypi","observedAt":"2026-11-09T18:26:21.147Z","publishedAt":"2026-06-28T18:50:34.943697Z","latestVersion":"0.5.1"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"mcp-surfaceprint","url":"https://pypi.org/project/mcp-surfaceprint/","firstSeenAt":"2026-09-10T04:23:31.890Z","fetchedAt":"2026-11-09T18:25:26.786Z","normalizedAt":"2026-11-09T18:25:26.786Z"}]},"firstSeenAt":"2026-09-10T04:23:31.890Z","updatedAt":"2026-11-09T18:26:21.147Z"}