{
  "markdown": "# zcash-mcp\n\n[![npm](https://img.shields.io/npm/v/@frontiercompute/zcash-mcp)](https://www.npmjs.com/package/@frontiercompute/zcash-mcp)\n[![MCP Registry](https://img.shields.io/badge/MCP_Registry-published-green)](https://registry.modelcontextprotocol.io/)\n![downloads](https://img.shields.io/npm/dw/@frontiercompute/zcash-mcp)\n![license](https://img.shields.io/npm/l/@frontiercompute/zcash-mcp)\n\nZAP1 receipts for Zcash agents: verify workflows without trusting the server.\n\nZAP1 is an attestation and proof rail for Zcash workflows. Frontier Compute\nmaintains the reference ZAP1 implementation.\n\nA wrapper makes you trust the server. ZAP1 makes the server unnecessary to\ntrust.\n\nCore rule: observe state, bound the claim, hash evidence, issue a receipt,\nverify later.\n\nMCP is the standard way for AI agents to call external tools. `zcash-mcp`\nexposes the ZAP1 attestation layer for agents that need verifiable receipts\naround Zcash workflows: create ZAP1 attestation leaves, query anchor state,\nand verify proof receipts.\n\nThis is not a full wallet MCP. Balance scanning, private key custody, seed\nhandling, PCZT signing, shielded spend construction, and lightwalletd or Zaino\nwallet synchronization are complementary wallet-layer work, not this server's\nscope.\n\n## Why ZAP1\n\nWallet MCPs can move value. ZAP1 proves the workflow around the value, and the\ncounterparty can verify the proof without trusting Frontier.\n\nTool servers expose what a backend says right now. ZAP1 produces a receipt that\nanother party can verify later from the schema, proof material, and Zcash anchor.\n\nZAP1 is the proof rail for Zcash agent workflows:\n\n1. `attest`: create a typed event leaf.\n2. `anchor`: commit leaves into a Merkle root anchored to Zcash.\n3. `prove`: return a receipt packet for a leaf.\n4. `verify`: let another party check the receipt without trusting the original\n   agent.\n\nAgent systems need more than a payment or a transaction lookup. They need a\nreceipt that another agent, user, auditor, or service can verify later:\n\n- what event was asserted\n- which agent or workflow asserted it\n- which ZAP1 leaf records it\n- which Merkle root includes it\n- which Zcash transaction anchored that root\n- how to verify the proof without trusting the original agent\n\nThat is the lane for this server. It gives Zcash agents a receipt layer that can\nsit beside any wallet, signer, custody system, lightwalletd stack, Zaino stack,\nor application-specific payment flow.\n\nSee [ZAP1 Proof Rail](docs/zap1-proof-rail.md) for the category boundary,\nreceipt model, integration pattern, and red-team rejects. See\n[ZAP1 Conformance](docs/zap1-conformance.md) for the receipt contract agents\nand integrations should satisfy. See\n[Wallet Receipt Integration](docs/wallet-receipt-integration.md) for the\nwallet-action handoff pattern. See\n[External Rail Receipts](docs/external-rail-receipts.md) for generic\nexternal-action receipt requests, and\n[Receipt Disclosure Profiles](docs/receipt-disclosure-profiles.md) for\npublic, counterparty, auditor, grant, compliance, and internal packet shapes.\n\n## Capability Boundary\n\nThe `zcash_capability_manifest` tool gives agents a machine-readable scope map:\n\n- covered here: ZAP1 receipts, lifecycle attestations, proof verification, anchor\n  state, memo decoding, and public chain context\n- excluded here: custody, seed handling, balance scanning, PCZT signing,\n  shielded spend construction, and wallet-server synchronization\n- composition rule: use this server before or after wallet-layer actions to\n  create, query, and verify receipts\n\nGood fits:\n\n- agent action receipts\n- payment and invoice proof packets\n- wallet action receipts\n- external action receipts\n- operator lifecycle events\n- grant proof packets\n- compliance audit packets\n- policy and reputation attestations\n- public anchor verification for private workflows\n- cross-agent handoffs where the receiver needs proof, not custody\n\nPoor fits:\n\n- holding keys\n- scanning wallet balances\n- signing PCZTs\n- broadcasting shielded spends\n- replacing a wallet SDK\n\n## Customer Flow\n\nUse `zcash_receipt_template` first when you are wiring ZAP1 into a product. It\nreturns a customer-ready workflow for the receipt type you want:\n\n- `agent_action`: prove an agent performed a named action with specific input\n  and output hashes\n- `payment_receipt`: bind invoice or payment metadata to a ZAP1 leaf and later\n  prove inclusion under an anchored root\n- `operator_lifecycle`: record deployment, upgrade, incident, recovery, or\n  policy state as a verifiable lifecycle event\n- `policy_attestation`: record an agent, service, or workflow policy decision\n  as a verifiable event\n\nExpected flow:\n\n1. Call `zcash_capability_manifest` to confirm the attestation boundary.\n2. Call `zcash_receipt_template` for the use case.\n3. For wallet actions, call `zap1_wallet_receipt_request` to convert the wallet\n   result into hash-only `attest_event` arguments.\n4. Call `attest_event` to create the typed ZAP1 leaf.\n5. Call `get_anchor_status` to check whether the leaf is anchored or waiting.\n6. Call `verify_proof` to verify tree inclusion.\n7. Call `zap1_prove_receipt` to fetch a handoff proof bundle.\n\nAcceptance checks:\n\n- the receipt has a leaf hash\n- the leaf verifies under a returned Merkle root\n- v2 receipts retain every sibling position and the committed `leaf_count`\n- anchor finality comes from a separately verified root-opening artifact, not txid, height, or status metadata alone\n- another verifier can repeat verification without trusting the original agent\n- no private keys, seeds, PCZTs, or wallet scan state were sent to this server\n\nRed-team rejects:\n\n- treating a payment URI as proof of payment\n- treating an unanchored leaf as final settlement evidence\n- treating a quote, route, or intent hash as settlement evidence by itself\n- asking this server to sign, scan balances, recover seeds, or hold keys\n- mixing custody claims into ZAP1 receipt claims\n- hiding the distinction between wallet action and receipt verification\n\nZAP1 verifies ZAP1 receipts. It does not audit or guarantee any external wallet,\nroute, payment, bridge, exchange, or settlement system referenced by a receipt.\n\n## Tools\n\n| Tool | What it does |\n|------|-------------|\n| `zcash_capability_manifest` | Machine-readable scope map for agent use: covered surfaces, excluded wallet functions, and composition rules |\n| `zcash_conformance_check` | Validate only the shape of a frozen v1 receipt packet; v1 cannot prove inclusion or anchor confirmation |\n| `zcash_receipt_template` | Customer-ready receipt workflow for agent actions, payment receipts, operator lifecycle events, and policy attestations |\n| `zap1_wallet_receipt_request` | Convert a wallet-layer action result into hash-only ZAP1 receipt request fields |\n| `zap1_attest_external_action` | Map bounded external verification evidence into the supported ZAP1 `AGENT_ACTION` write contract and precompute the expected typed leaf |\n| `zap1_verify_external_receipt` | Validate legacy v1 external-receipt shape without claiming cryptographic inclusion or anchor confirmation |\n| `zap1_verify_receipt_v2` | Verify the official proof-bundle-v2 plus retained `AGENT_ACTION` witness, or an integration receipt-v2; anchor confirmation remains separate |\n| `zap1_extract_proof_artifact` | Extract the portable proof artifact from a ZAP1 receipt |\n| `zap1_check_anchor_freshness_at_height` | Compute depth arithmetic from supplied heights without claiming chain confirmation |\n| `zap1_verify_receipt_chain` | Validate legacy v1 receipt-sequence shape without claiming proof or anchor validity |\n| `zap1_compare_receipt_claims` | Compare two ZAP1 receipts for claim, evidence, event, and anchor divergence |\n| `zap1_audit_event_log` | Replay a receipt sequence against a caller-supplied event-type policy |\n| `attest_event` | Create a typed ZAP1 attestation leaf for later anchoring |\n| `verify_proof` | Verify a ZAP1 Merkle proof |\n| `zap1_prove_receipt` | Fetch the full Merkle proof bundle for a leaf hash |\n| `get_anchor_history` | All ZAP1 Merkle root anchors with txids and block heights |\n| `get_anchor_status` | Current Merkle tree state: root, unanchored leaves, recommendation |\n| `get_stats` | ZAP1 protocol stats: leaves, anchors, types |\n| `get_events` | Recent ZAP1 attestation events with type, wallet hash, leaf hash |\n| `get_agent_status` | Attestation summary for a ZAP1 agent ID |\n| `zcash_identity_register` | Register an agent identity via AGENT_REGISTER attestation |\n| `zcash_reputation_score` | Fetch agent bond data and policy compliance as a reputation object |\n| `decode_memo` | Decode Zcash memo payloads: ZAP1 typed, ZIP 302, text, binary |\n| `zap1_create_receipt_invoice` | Create ZAP1 receipt metadata for an external payment workflow |\n| `zap1_watch_receipt_invoice` | Poll receipt-invoice status until paid or timeout |\n| `get_block_height` | Current chain height from Zebra |\n| `lookup_transaction` | Raw transaction data by txid |\n| `zap1_verify_evm` | Verify a ZAP1 Merkle proof on-chain via EVM contract |\n\n## Install\n\n```bash\nnpx @frontiercompute/zcash-mcp\n```\n\nOr install globally:\n\n```bash\nnpm install -g @frontiercompute/zcash-mcp\n```\n\n## Quickstart\n\nAdd this to your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"zcash\": {\n      \"command\": \"npx\",\n      \"args\": [\"@frontiercompute/zcash-mcp\"]\n    }\n  }\n}\n```\n\nRestart your client and ask for the current Zcash block height. Read-only tools\ndo not need an API key.\n\nGet a trial key for write operations:\n\n```bash\ncurl -s -X POST https://api.frontiercompute.cash/trial-key\n```\n\n## Configuration\n\nEnvironment variables:\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `ZEBRA_RPC_URL` | `http://127.0.0.1:8232` | Zebra node JSON-RPC endpoint |\n| `ZAP1_API_URL` | `https://api.frontiercompute.cash` | ZAP1 attestation API |\n| `ZAP1_API_KEY` | none | API key for write operations |\n\n### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"zcash\": {\n      \"command\": \"npx\",\n      \"args\": [\"@frontiercompute/zcash-mcp\"],\n      \"env\": {\n        \"ZEBRA_RPC_URL\": \"http://127.0.0.1:8232\",\n        \"ZAP1_API_KEY\": \"your-key-here\"\n      }\n    }\n  }\n}\n```\n\n### Any MCP Client\n\nThe server communicates over stdio using JSON-RPC. Point your MCP client at the\n`zcash-mcp` binary.\n\n## Build From Source\n\n```bash\ngit clone https://github.com/Frontier-Compute/zcash-mcp.git\ncd zcash-mcp\nnpm ci\nnpm run build\nnode dist/index.js\n```\n\n## Testing\n\nOffline verification covers the built stdio server and a clean-room install from\nthe packed npm tarball:\n\n```bash\nnpm run test:offline\n```\n\nLive verification hits a real Zebra RPC and ZAP1 API:\n\n```bash\nZEBRA_RPC_URL=http://127.0.0.1:8232 \\\nZAP1_API_URL=http://127.0.0.1:3080 \\\nZAP1_API_KEY=your-key-here \\\nnpm run test:live\n```\n\n`test:live` drives the MCP server over stdio and exercises the live tool surface,\nnot just the underlying HTTP endpoints. Set `ZAP1_AGENT_ID` if you want the\n`get_agent_status` check to target a specific deployed agent.\n\nGitHub Actions mirrors that split:\n\n- `.github/workflows/offline-ci.yml` runs deterministic packaging and MCP\n  handshake checks on every push and pull request.\n- `.github/workflows/live-e2e.yml` runs secret-backed live checks on `main`, on\n  a schedule, and by manual dispatch.\n\n## Dependencies\n\n- A running [Zebra](https://github.com/ZcashFoundation/zebra) node for chain\n  queries\n- The ZAP1 API for attestation, proof, anchor, event, and receipt tools\n- Memo decoding works locally with no external dependencies\n\n## Related Packages\n\n| Package | What it does |\n|---------|-------------|\n| [@frontiercompute/zcash-ika](https://www.npmjs.com/package/@frontiercompute/zcash-ika) | Zcash and Bitcoin signing via Ika 2PC-MPC |\n| [@frontiercompute/openclaw-zap1](https://www.npmjs.com/package/@frontiercompute/openclaw-zap1) | OpenClaw skill for ZAP1 attestation |\n| [@frontiercompute/zap1](https://www.npmjs.com/package/@frontiercompute/zap1) | ZAP1 attestation client |\n| [@frontiercompute/silo-zap1](https://www.npmjs.com/package/@frontiercompute/silo-zap1) | Silo agent attestation via ZAP1 |\n\n## Links\n\n- [Dashboard](https://frontiercompute.cash/dashboard.html)\n- [MCP Registry](https://registry.modelcontextprotocol.io/)\n- [Frontier Compute](https://frontiercompute.cash)\n- [Live stats](https://api.frontiercompute.cash/stats)\n\n## License\n\nMIT\n",
  "bytes": 12419,
  "sha": "7b48cd4afb56e117ad3661dd4bc4936d5f17edb0eec914b4acf06d4e392452eb",
  "repo_slug": "frontier-compute/zcash-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_zk_nd3r_zcash_mcp_09e741bc/readme"
}