mcp server · hosted + stdio · three tools

Signed receipts for agent actions.

PCRZERO adjudicates an attestation document against a policy and hands back a cryptographically signed receipt pair — durable, independently checkable proof that this decision was made, by these keys, over this document. Any MCP-speaking agent can issue and verify them natively. No SDK, no integration project.

hosted

https://mcp.pcrzero.com/mcp — streamable-http, probed live at build. verify_receipt and get_keyset need no key.

npm

@scytalex-llc/pcrzero-mcp — resolved on the public registry at build time.

hosted

No install. Point the client at the URL. Same three tools, same free-verify rule. A key is only required to issue (Authorization: Bearer).

Claude Code:

claude mcp add --transport http pcrzero https://mcp.pcrzero.com/mcp

Any JSON-configured MCP client:

{
  "mcpServers": {
    "PCRZERO": {
      "type": "streamable-http",
      "url": "https://mcp.pcrzero.com/mcp"
    }
  }
}

local, over stdio

The server runs over stdio — your agent host launches it; nothing listens on a port. Requires Node 22 or later.

  1. 1 Add the server. No key, no account.

    Claude Code:

    claude mcp add pcrzero -- npx -y @scytalex-llc/pcrzero-mcp

    Claude Desktop, or any JSON-configured MCP client:

    {
      "mcpServers": {
        "PCRZERO": {
          "command": "npx",
          "args": ["-y", "@scytalex-llc/pcrzero-mcp"]
        }
      }
    }
  2. 2 Verify something. Still free.

    verify_receipt and get_keyset work immediately, with no key configured and no account anywhere. The check below is that tool, running in this tab against the published specimen. Hand your agent the same files and you should see the same valid.

  3. 3 Add a key only when you want to issue.

    There is no signup page yet, so here is the call that works. It mails a confirmation link, and the key is shown once on the page that link opens — copy it before you close the tab.

    curl -X POST https://api.pcrzero.com/v1/signup \
      -H 'content-type: application/json' \
      -d '{"email":"you@company.com"}'

    Then re-add the server with the key in its environment:

    claude mcp add pcrzero -e PCRZERO_API_KEY=<your-key> -- npx -y @scytalex-llc/pcrzero-mcp

Listed on the official MCP registry as com.pcrzero/mcp, on Smithery, and on mcpservers.org.

the three tools

  1. issue_receiptmetered

    Adjudicates an attestation document against a policy and returns the verdict together with a signed receipt pair. Every call bills one receipt_verifications unit, and a fail verdict bills exactly like a pass — you are paying for the adjudication, not for the answer you wanted.

  2. verify_receiptfree

    Checks a PCRZERO receipt pair against the signing keyset: whether the signature holds, and whether the receipt says what it appears to say. Free, with no API key and no account, and it stays free. Offline by default — supply keyset and this call touches the network not at all; the result field keyset_source tells you which of the two happened, every time.

  3. get_keysetfree

    Returns the current PCRZERO signing keyset — key ids, public halves, each key’s status. Public and unauthenticated — the same document an outside party fetches to check a PCRZERO receipt without trusting us.

auth, exactly

PCRZERO_API_KEY in the server’s environment, via your MCP client configuration. It is sent as a bearer header on issue_receipt calls and used nowhere else: the key never appears in tool results, error text, or logs — not even redacted. With no key configured, issue_receipt refuses cleanly and the two free tools keep working. API errors pass through verbatim; this server never rewrites, retries, or softens a billing refusal.

Issuing is metered per receipt; the two verify tools are free and stay that way. Rates live on the pricing page rather than baked into the server, where a number would go stale inside your agent’s config.

verify_receipt, in this tab

A PCRZERO receipt is checkable by anyone holding the public keyset — including people who are not our customers and never will be. The run below is the free tool: same published receipt rcp_pom_synthetic_119_0001, same vendored verifier, no account. If we disappeared tomorrow, this check would still be the check.

validnot run

Nothing has been checked in this browser yet.