dev.workers.penny-mcamp.penny-surface-contract/surface-contract · v2026.10.13 · agents-and-memory
Surface Contract: how platform APIs really behave is healthy: it completed an MCP handshake in 1688 ms and exposes 7 tools.
Evidence-cited machine-readable contracts for how agent platform APIs really behave
Endpoint: https://penny-surface-contract.penny-mcamp.workers.dev/mcp (streamable-http)
No repository listed · Website · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 7 |
| Latency | 1688 ms |
| Last checked (UTC) | 2026-10-16T02:35:09.837Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-16T02:35:09.837Z | Healthy | 1688 | |
| 2026-10-14T23:40:37.313Z | Healthy | 1946 |
list_surface_contracts | List the platform surface contracts published in Penny's free registry, with claim counts. |
get_surface_contract | Get 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_surface | Run the anonymous conformance checks for a contract now and return verified / failed / unknown / manual / unsupported per claim. |
contribute_discrepancy | Report 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 contrac |
get_integration_recipe | Get 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. |
preflight_mcp_server | Run 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 guar |
prepay_check | Check 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-o |