Frontier-Compute/zcash-mcp
This server connects AI agents to Zcash blockchain operations, ZAP1 attestation services, and advanced shielded features.
Blockchain Data
Query current Zcash chain height from a Zebra node.
Look up raw/decoded transaction data by txid.
Wallet & Payments
Generate
zcash:payment URIs (ZIP 321) with address, amount, and optional memo.Decode shielded memos: ZAP1 typed, ZIP 302, plain text, or binary.
Create payment invoices and monitor them until paid, returning txid, block height, and amount.
ZAP1 Attestation
Get attestation history and anchor status for a wallet hash.
Write typed attestation events (e.g., DEPLOYMENT, AGENT_ACTION, GOVERNANCE_PROPOSAL) to the Zcash blockchain Merkle tree.
Verify Merkle proofs to confirm a leaf hash exists in the attestation tree.
Fetch the full Merkle proof bundle for a given leaf hash.
Query protocol stats: total leaves, anchors, type distribution, tree height.
Retrieve full anchor history (txids and block heights) and current Merkle tree state.
Fetch recent attestation events (configurable limit up to 200).
Get a full agent attestation summary: registration, policies, actions, and event history.
Agent & Advanced Features
Register agent identities via
AGENT_REGISTERattestation.Fetch agent reputation scores (bond data and policy compliance).
Initiate cross-chain swap intents from ZEC transparent funds to BTC, USDC, or USDT via Ika or NEAR.
Create split-key wallets via Ika 2PC-MPC for signing ZEC, BTC, and ETH.
Perform MPC signing where neither party holds the full key.
Shield transparent ZEC funds to the Orchard pool.
Verify ZAP1 Merkle proofs on-chain via EVM contracts (Sepolia, Base, Arbitrum).
Provides tools for interacting with the Zcash blockchain, enabling AI agents to perform shielded operations including checking balances, generating payment URIs, decoding shielded memos, writing attestations, verifying Merkle proofs, and querying chain data like block height and transaction details.
zcash-mcp
ZAP1 receipts for Zcash agents: verify workflows without trusting the server.
ZAP1 is an attestation and proof rail for Zcash workflows. Frontier Compute maintains the reference ZAP1 implementation.
A wrapper makes you trust the server. ZAP1 makes the server unnecessary to trust.
Core rule: observe state, bound the claim, hash evidence, issue a receipt, verify later.
MCP is the standard way for AI agents to call external tools. zcash-mcp
exposes the ZAP1 attestation layer for agents that need verifiable receipts
around Zcash workflows: create ZAP1 attestation leaves, query anchor state,
and verify proof receipts.
This is not a full wallet MCP. Balance scanning, private key custody, seed handling, PCZT signing, shielded spend construction, and lightwalletd or Zaino wallet synchronization are complementary wallet-layer work, not this server's scope.
Why ZAP1
Wallet MCPs can move value. ZAP1 proves the workflow around the value, and the counterparty can verify the proof without trusting Frontier.
Tool servers expose what a backend says right now. ZAP1 produces a receipt that another party can verify later from the schema, proof material, and Zcash anchor.
ZAP1 is the proof rail for Zcash agent workflows:
attest: create a typed event leaf.anchor: commit leaves into a Merkle root anchored to Zcash.prove: return a receipt packet for a leaf.verify: let another party check the receipt without trusting the original agent.
Agent systems need more than a payment or a transaction lookup. They need a receipt that another agent, user, auditor, or service can verify later:
what event was asserted
which agent or workflow asserted it
which ZAP1 leaf records it
which Merkle root includes it
which Zcash transaction anchored that root
how to verify the proof without trusting the original agent
That is the lane for this server. It gives Zcash agents a receipt layer that can sit beside any wallet, signer, custody system, lightwalletd stack, Zaino stack, or application-specific payment flow.
See ZAP1 Proof Rail for the category boundary, receipt model, integration pattern, and red-team rejects. See ZAP1 Conformance for the receipt contract agents and integrations should satisfy. See Wallet Receipt Integration for the wallet-action handoff pattern. See External Rail Receipts for generic external-action receipt requests, and Receipt Disclosure Profiles for public, counterparty, auditor, grant, compliance, and internal packet shapes.
Related MCP server: Aurey Wallet MCP
Capability Boundary
The zcash_capability_manifest tool gives agents a machine-readable scope map:
covered here: ZAP1 receipts, lifecycle attestations, proof verification, anchor state, memo decoding, and public chain context
excluded here: custody, seed handling, balance scanning, PCZT signing, shielded spend construction, and wallet-server synchronization
composition rule: use this server before or after wallet-layer actions to create, query, and verify receipts
Good fits:
agent action receipts
payment and invoice proof packets
wallet action receipts
external action receipts
operator lifecycle events
grant proof packets
compliance audit packets
policy and reputation attestations
public anchor verification for private workflows
cross-agent handoffs where the receiver needs proof, not custody
Poor fits:
holding keys
scanning wallet balances
signing PCZTs
broadcasting shielded spends
replacing a wallet SDK
Customer Flow
Use zcash_receipt_template first when you are wiring ZAP1 into a product. It
returns a customer-ready workflow for the receipt type you want:
agent_action: prove an agent performed a named action with specific input and output hashespayment_receipt: bind invoice or payment metadata to a ZAP1 leaf and later prove inclusion under an anchored rootoperator_lifecycle: record deployment, upgrade, incident, recovery, or policy state as a verifiable lifecycle eventpolicy_attestation: record an agent, service, or workflow policy decision as a verifiable event
Expected flow:
Call
zcash_capability_manifestto confirm the attestation boundary.Call
zcash_receipt_templatefor the use case.For wallet actions, call
zap1_wallet_receipt_requestto convert the wallet result into hash-onlyattest_eventarguments.Call
attest_eventto create the typed ZAP1 leaf.Call
get_anchor_statusto check whether the leaf is anchored or waiting.Call
verify_proofto verify tree inclusion.Call
zap1_prove_receiptto fetch a handoff proof bundle.
Acceptance checks:
the receipt has a leaf hash
the leaf verifies under a returned Merkle root
v2 receipts retain every sibling position and the committed
leaf_countanchor finality comes from a separately verified root-opening artifact, not txid, height, or status metadata alone
another verifier can repeat verification without trusting the original agent
no private keys, seeds, PCZTs, or wallet scan state were sent to this server
Red-team rejects:
treating a payment URI as proof of payment
treating an unanchored leaf as final settlement evidence
treating a quote, route, or intent hash as settlement evidence by itself
asking this server to sign, scan balances, recover seeds, or hold keys
mixing custody claims into ZAP1 receipt claims
hiding the distinction between wallet action and receipt verification
ZAP1 verifies ZAP1 receipts. It does not audit or guarantee any external wallet, route, payment, bridge, exchange, or settlement system referenced by a receipt.
Tools
Tool | What it does |
| Machine-readable scope map for agent use: covered surfaces, excluded wallet functions, and composition rules |
| Validate only the shape of a frozen v1 receipt packet; v1 cannot prove inclusion or anchor confirmation |
| Customer-ready receipt workflow for agent actions, payment receipts, operator lifecycle events, and policy attestations |
| Convert a wallet-layer action result into hash-only ZAP1 receipt request fields |
| Map bounded external verification evidence into the supported ZAP1 |
| Validate legacy v1 external-receipt shape without claiming cryptographic inclusion or anchor confirmation |
| Verify the official proof-bundle-v2 plus retained |
| Extract the portable proof artifact from a ZAP1 receipt |
| Compute depth arithmetic from supplied heights without claiming chain confirmation |
| Validate legacy v1 receipt-sequence shape without claiming proof or anchor validity |
| Compare two ZAP1 receipts for claim, evidence, event, and anchor divergence |
| Replay a receipt sequence against a caller-supplied event-type policy |
| Create a typed ZAP1 attestation leaf for later anchoring |
| Verify a ZAP1 Merkle proof |
| Fetch the full Merkle proof bundle for a leaf hash |
| All ZAP1 Merkle root anchors with txids and block heights |
| Current Merkle tree state: root, unanchored leaves, recommendation |
| ZAP1 protocol stats: leaves, anchors, types |
| Recent ZAP1 attestation events with type, wallet hash, leaf hash |
| Attestation summary for a ZAP1 agent ID |
| Register an agent identity via AGENT_REGISTER attestation |
| Fetch agent bond data and policy compliance as a reputation object |
| Decode Zcash memo payloads: ZAP1 typed, ZIP 302, text, binary |
| Create ZAP1 receipt metadata for an external payment workflow |
| Poll receipt-invoice status until paid or timeout |
| Current chain height from Zebra |
| Raw transaction data by txid |
| Verify a ZAP1 Merkle proof on-chain via EVM contract |
Install
npx @frontiercompute/zcash-mcpOr install globally:
npm install -g @frontiercompute/zcash-mcpQuickstart
Add this to your MCP config:
{
"mcpServers": {
"zcash": {
"command": "npx",
"args": ["@frontiercompute/zcash-mcp"]
}
}
}Restart your client and ask for the current Zcash block height. Read-only tools do not need an API key.
Get a trial key for write operations:
curl -s -X POST https://api.frontiercompute.cash/trial-keyConfiguration
Environment variables:
Variable | Default | Description |
|
| Zebra node JSON-RPC endpoint |
|
| ZAP1 attestation API |
| none | API key for write operations |
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"zcash": {
"command": "npx",
"args": ["@frontiercompute/zcash-mcp"],
"env": {
"ZEBRA_RPC_URL": "http://127.0.0.1:8232",
"ZAP1_API_KEY": "your-key-here"
}
}
}
}Any MCP Client
The server communicates over stdio using JSON-RPC. Point your MCP client at the
zcash-mcp binary.
Build From Source
git clone https://github.com/Frontier-Compute/zcash-mcp.git
cd zcash-mcp
npm ci
npm run build
node dist/index.jsTesting
Offline verification covers the built stdio server and a clean-room install from the packed npm tarball:
npm run test:offlineLive verification hits a real Zebra RPC and ZAP1 API:
ZEBRA_RPC_URL=http://127.0.0.1:8232 \
ZAP1_API_URL=http://127.0.0.1:3080 \
ZAP1_API_KEY=your-key-here \
npm run test:livetest:live drives the MCP server over stdio and exercises the live tool surface,
not just the underlying HTTP endpoints. Set ZAP1_AGENT_ID if you want the
get_agent_status check to target a specific deployed agent.
GitHub Actions mirrors that split:
.github/workflows/offline-ci.ymlruns deterministic packaging and MCP handshake checks on every push and pull request..github/workflows/live-e2e.ymlruns secret-backed live checks onmain, on a schedule, and by manual dispatch.
Dependencies
A running Zebra node for chain queries
The ZAP1 API for attestation, proof, anchor, event, and receipt tools
Memo decoding works locally with no external dependencies
Related Packages
Package | What it does |
Zcash and Bitcoin signing via Ika 2PC-MPC | |
OpenClaw skill for ZAP1 attestation | |
ZAP1 attestation client | |
Silo agent attestation via ZAP1 |
Links
License
MIT
Available Tools
20 toolsattest_eventB
Create a typed ZAP1 attestation event leaf for later anchoring. Returns a leaf hash for verification.
Inputs: event_type (required), wallet_hash (required), api_key, input_hash, +4 more.
decode_memoA
Decode a Zcash shielded memo field. Handles ZAP1 typed memos, ZIP 302, plain text, and raw binary.
Inputs: memo (required).
get_agent_statusA
Get attestation summary for a ZAP1 agent: registration, policies, actions, event history.
Inputs: agent_id (required).
get_anchor_historyA
Get all ZAP1 Merkle root anchors with Zcash txids and block heights.
Inputs: no named parameters.
get_anchor_statusA
Get current ZAP1 Merkle tree state: root hash, unanchored leaves, anchor recommendation.
Inputs: no named parameters.
get_block_heightA
Get the current Zcash chain height from Zebra.
Inputs: no named parameters.
get_eventsC
Get recent ZAP1 attestation events. Returns event type, wallet hash, leaf hash, and timestamps.
Inputs: limit.
get_statsA
Get ZAP1 protocol stats: total leaves, anchors, type distribution, and tree height.
Inputs: no named parameters.
lookup_transactionA
Get raw transaction data by txid from Zebra.
Inputs: txid (required), verbose.
verify_proofA
Verify a ZAP1 Merkle proof. Checks whether a leaf hash exists in the ZAP1 attestation tree and returns the proof path.
Inputs: leaf_hash (required).
zap1_create_receipt_invoiceA
Create ZAP1 receipt metadata for an external payment workflow. Returns invoice metadata for later receipt verification; this server does not sign, scan, or broadcast.
Inputs: memo (required), amount_zat (required), wallet_hash (required).
zap1_prove_receiptA
Fetch a ZAP1 Merkle proof bundle for a leaf hash. Returns the full proof: leaf, path, root, and anchor.
Inputs: leaf_hash (required).
zap1_verify_evmB
Verify a ZAP1 Merkle proof on-chain via the EVM ZAP1Verifier contract. Checks that a leaf hash is included in a registered Zcash anchor root. Supports Sepolia (testnet), Base, and Arbitrum.
Inputs: chain (required), siblings (required), leaf_hash (required), positions (required), +1 more.
zap1_wallet_receipt_requestB
Build a ZAP1 receipt request from a wallet-layer action result. The wallet keeps custody, signing, scanning, and broadcast; ZAP1 receives only bounded hashes.
Inputs: action_type (required), wallet_provider (required), txid, amount_zat, +8 more.
zap1_watch_receipt_invoiceA
Poll ZAP1 receipt-invoice status until paid or timeout. Returns public receipt status only; this server does not scan wallet state.
Inputs: invoice_id (required), timeout_seconds.
zcash_capability_manifestA
Return the ZAP1 capability manifest: what this MCP covers, what it deliberately excludes, and how agents should compose it with wallet-layer tools.
Inputs: no named parameters.
zcash_conformance_checkB
Validate a ZAP1 receipt packet against the frozen v1 receipt contract. Returns malformed, pending, or anchored.
Inputs: receipt (required).
zcash_identity_registerB
Register an agent identity on ZAP1 via an AGENT_REGISTER attestation. Returns the leaf hash and verification URLs for the registration event.
Inputs: agent_id (required), pubkey_hash (required).
zcash_receipt_templateB
Return a customer-ready ZAP1 receipt workflow for agent actions, payment receipts, operator lifecycle events, or policy attestations.
Inputs: use_case.
zcash_reputation_scoreB
Fetch an agent's reputation from ZAP1. Combines bond data and policy compliance into a single object: attestation count, violations, bonds, and compliant flag.
Inputs: agent_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Each tool targets a specific aspect of the ZAP1 protocol with clear, non-overlapping purposes. Even similar-sounding getters (e.g., get_agent_status vs get_anchor_status) return distinct data, and verification tools differ by off-chain vs on-chain context.
Tools use mixed conventions: most use snake_case with verbs (attest_event, decode_memo), while a subset uses the 'zap1_' prefix (zap1_create_receipt_invoice). There is no uniform pattern, making it harder for an agent to predict tool names.
20 tools is well-scoped for the ZAP1 attestation and receipt system. Each tool serves a distinct function, and the number aligns with the complexity of the protocol without being overwhelming.
The surface covers the core ZAP1 workflow: creating attestations, receipts, proofs, verification (off-chain and on-chain), identity registration, and reputation. The server explicitly excludes wallet scanning, which is a deliberate boundary, but otherwise no major gaps.
Maintenance
Related MCP Connectors
MCP server for the Z1N Protocol - on-chain identity for AI agents on Polygon
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Tenzro Network MCP server: wallet, identity, payments, inference, staking, bridges, verification.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to send and receive private Zcash payments with shielded transactions, balance checks, and encrypted memos.5MIT
- AlicenseNot gradedqualityCmaintenanceSelf-hosted MCP server enabling AI agents to manage EVM wallets, check balances, swap tokens, and securely execute transactions via 1Claw Intents without exposing private keys.100 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for ClawVault - an AI agent payment security layer that enables Claude to request payments, check limits, and manage transactions with configurable rules.73 npmMIT
- AlicenseNot gradedqualityCmaintenanceMCP server that lets any AI agent operate a wallet directly on-chain: create wallets, send, swap, bridge, and deploy contracts across EVM and Bitcoin networks.1MIT