Surface Contract MCP Server
dev.workers.penny-mcamp.penny-surface-contract/surface-contractv2026.10.13
Evidence-cited machine-readable contracts for how agent platform APIs really behave
context tax
~1,338 tok/turn7 tools
security
pending
cold start
hosted
freshness
Active5d ago
Our reading of Surface Contract, from the data
Surface Contract is an MCP server, listed in the official MCP Registry.
Its 7 tools add about 1,338 tokens to every model turn (measured 2026-10-19).
Maintenance is active: the last public signal was 5 days ago (2026-10-13).
It runs as a hosted endpoint, so there is nothing to install.
Install Surface Contract MCP server
Install in Claude Code
claude mcp add --transport http surface-contract https://penny-surface-contract.penny-mcamp.workers.dev/mcpInstall in Cursor
{
"mcpServers": {
"surface-contract": {
"url": "https://penny-surface-contract.penny-mcamp.workers.dev/mcp"
}
}
}Install in Claude Desktop
{
"mcpServers": {
"surface-contract": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://penny-surface-contract.penny-mcamp.workers.dev/mcp"
]
}
}
}Or add it as a custom connector under Settings → Connectors. The config above bridges via mcp-remote.
Install in VS Code
{
"servers": {
"surface-contract": {
"type": "http",
"url": "https://penny-surface-contract.penny-mcamp.workers.dev/mcp"
}
}
}Install in Windsurf
{
"mcpServers": {
"surface-contract": {
"serverUrl": "https://penny-surface-contract.penny-mcamp.workers.dev/mcp"
}
}
}Remote endpoints
- streamable-http
https://penny-surface-contract.penny-mcamp.workers.dev/mcp
Context tax
Connecting this server adds ~1,338 tokens of tool definitions to every model turn (moderate, 7 tools). Measured 2026-10-19 via its hosted endpoint; o200k tokenizer, worst case for clients that load all tools up front. How we measure
| Model | Per 1,000 turns | With prompt caching |
|---|---|---|
| Claude Opus 5.5 | $5.35 | $0.268 |
| Claude Sonnet 5.5 | $2.68 | $0.268 |
| Claude Haiku 5.5 | $0.134 | — |
Input prices as of 2026-10-06. Excludes your own prompt and output.
Tools (7)
contribute_discrepancy377 tokReport a platform behaviour that contradicts a published claim, or a new claim, with evidence. One-line call: POST /v1/contribute with {contractId, kind, statement, evidence[], reporter, observedAt}. Stored as pending; a published contract is never changed without independent verification. A contractId no published contract serves is accepted as a NEW-PLATFORM PROPOSAL: the 202 body carries contractExists:false (with proposal:true, proposedContractId and proposedHost), it is listed distinctly at GET /v1/contributions, and it stays pending until a second party reproduces it - it never creates o
preflight_mcp_server275 tokRun the anonymous MCP handshake against ANY https MCP endpoint you name, right now, and get back a verdict (open / refused / unreachable / initialize-transport-error), the shape of any refusal body, whether the server is stateful (sets Mcp-Session-Id), how many tools tools/list returns, and the guard clauses that follow. Use it before wiring an MCP server into your own config. Pass `urls` (up to 5) to check a whole mcp.json in one call. When the endpoint refuses, it also reports whether the refusal advertises a credential path (an RFC 9728 resource_metadata pointer) and whether that pointer re
prepay_check258 tokCheck an x402 route BEFORE you pay it. GET /v1/prepay?url=<the route> makes ONE unpaid GET with no payment header and no credential, and returns one row: the measured HTTP status, the parsed x402 v2 challenge (scheme / network / asset / amount / payTo), whether that challenge is schema-valid exact-on-Base, and whether its payTo and price agree with the seller's own card (pass `card` to read that card with one more unpaid GET). No payment is made, no credential is sent, no redirect is followed, and a transport failure on our side is reported as unknown rather than as a fact about the seller. Us
get_integration_recipe94 tokGet a plain-text integration recipe for a platform: the order of operations to use it, and a guard clause for every behaviour we measured going wrong, each naming the contract claim behind it. Derived from the contract, so it cannot drift from it.
get_surface_contract92 tokGet the machine-readable surface contract for a platform host (read/write semantics, pending states, rate limits, limits, idempotency, pagination completeness, data portability), each claim carrying its evidence and its verification status.
verify_surface53 tokRun the anonymous conformance checks for a contract now and return verified / failed / unknown / manual / unsupported per claim.
list_surface_contracts38 tokList the platform surface contracts published in Penny's free registry, with claim counts.
Freshness
Active — last maintenance signal 5d ago. The newest of the signals below sets the band.
Last commit (default branch)
no data · GitHub
Latest release
no data · GitHub
Package published
no data · npm/PyPI
Registry entry updated
2026-10-13 · 5d ago · official registry · v2026.10.13
FAQ
›How do I install the Surface Contract MCP server in Claude Code?
Run: claude mcp add --transport http surface-contract https://penny-surface-contract.penny-mcamp.workers.dev/mcp. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Surface Contract require an API key?
No required environment variables are declared in its published metadata.
›Can I use Surface Contract as a remote (hosted) MCP server?
Yes. It is a hosted MCP server; connect to its URL with any client that supports remote MCP.
›Is Surface Contract in the official MCP registry?
Yes, as dev.workers.penny-mcamp.penny-surface-contract/surface-contract.
›How many tokens does Surface Contract add to my context?
Its tool definitions total about 1,338 tokens, resent on every turn.
Sources and method
- Official MCP Registry entry
- updated 2026-10-13
- Tool list (tools/list), measured by us
- 2026-10-19
- Last checked against all sources
- 2026-10-19
The description, packages and links come from the maintainer's own published metadata. Token cost, security signals, freshness and the reading above are MCPSkillHub's own measurements; see the methodology. Spot an error? Request a correction or claim the listing.