zkproofport-ai
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Express server port | 4002 |
| BB_PATH | No | Barretenberg CLI path | bb |
| NODE_ENV | No | Node environment | development |
| TEE_MODE | No | TEE mode: disabled / nitro | disabled |
| REDIS_URL | Yes | Redis connection string | |
| NARGO_PATH | No | Nargo CLI path | nargo |
| ENCLAVE_CID | No | Nitro Enclave CID (required when TEE_MODE=nitro) | |
| A2A_BASE_URL | Yes | Public-facing service URL (for Agent Card) | |
| BASE_RPC_URL | Yes | Base chain RPC endpoint | |
| CIRCUITS_DIR | No | Circuit artifacts directory | /app/circuits |
| ENCLAVE_PORT | No | Nitro Enclave port | 5000 |
| PAYMENT_MODE | Yes | Payment mode: disabled / testnet / mainnet | |
| AGENT_VERSION | No | Agent version string | 1.0.0 |
| CHAIN_RPC_URL | Yes | RPC for proof verification | |
| GEMINI_API_KEY | No | Gemini API key for chat | |
| OPENAI_API_KEY | No | OpenAI API key for chat | |
| PAYMENT_PAY_TO | No | Operator wallet (required when payment enabled) | |
| TEE_ATTESTATION | No | Enable attestation verification | false |
| CIRCUITS_REPO_URL | No | Circuit artifacts download URL | |
| PROVER_PRIVATE_KEY | Yes | Agent wallet private key (64 hex chars, no 0x) | |
| PAYMENT_PROOF_PRICE | No | Price per proof (USD) | $0.10 |
| EAS_GRAPHQL_ENDPOINT | Yes | EAS GraphQL endpoint for attestation queries | |
| ERC8004_IDENTITY_ADDRESS | No | ERC-8004 Identity contract | |
| ERC8004_REPUTATION_ADDRESS | No | ERC-8004 Reputation contract | |
| PHOENIX_COLLECTOR_ENDPOINT | No | Phoenix OTLP endpoint for tracing |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_action_approvalA | Read the status of a human wallet approval created by this MCP client. This operation never starts a proof or payment. |
| generate_proofA | All-in-one ZK proof generation. Handles: prepare inputs, request challenge, and submit proof in a single call. Use this when you want the simplest path to a proof. For fine-grained control over each step, use prepare_inputs, request_challenge, and submit_proof individually. CIRCUITS:
WITH ACTION: Returns awaiting_approval with an approval URL for the HUMAN to review and sign in their wallet. Keep the request parameters unchanged, query get_action_approval, then repeat with approval_id when approved. ATTESTATION_KEY cannot authorize an action on the human's behalf. Ordinary proofs without action retain automatic signing. RETURNS: awaiting_approval or the full ProofResult with proof bytes, public inputs, and timing information. Use verify_proof separately to verify on-chain. |
| get_supported_circuitsA | List all ZK circuits supported by ZKProofport, including verifier addresses and authorized signers. No parameters required. Call this first to discover available circuits before starting proof generation. |
| request_challengeA | Step 2 of the step-by-step flow: Request a challenge from the server. Pass inputs: {} to discover the live payment offers, nonce and optional TEE key without transmitting private witness inputs. You MUST pass the returned "nonce" to submit_proof — without it the server just issues another challenge. MCP submit_proof does not sign payments or encrypt inputs; use generate_proof or the SDK for paid/encrypted orchestration. |
| prepare_inputsA | Step 1 of the step-by-step flow. WITH ACTION: human wallet approval is required; returns awaiting_approval until resumed with approval_id. Approved action witnesses stay in private local storage; pass the returned prepared_inputs_id to submit_proof. WITHOUT ACTION: retains the existing credential-key signature and private witness result. Handle private witness inputs only in trusted local code, never expose them to the dApp, model or logs. Call this BEFORE request_challenge. For oidc_domain provide jwt and scope. |
| submit_proofA | Step 3 of the step-by-step flow: Submit prepared inputs to generate the ZK proof. The TEE server runs the Noir circuit and returns the UltraHonk proof. This step may take 30-90 seconds. The TEE server builds Prover.toml from these inputs. You MUST pass the nonce returned by request_challenge. POST /api/v1/prove answers every request that arrives without that nonce with a fresh 402 challenge, so a submission that omits it can never produce a proof. |
| verify_proofA | Step 4 (optional): Verify a ZK proof on-chain against the deployed verifier contract. Pass the full generate_proof result object directly — verification info (verifierAddress, chainId, rpcUrl) is extracted automatically. Returns { valid: true } if the proof is valid. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| config |
TDQS
Scored across 7 tools
The step tools (prepare_inputs, request_challenge, submit_proof, verify_proof) are clearly sequenced and get_supported_circuits/get_action_approval are distinct. The main overlap is generate_proof, which deliberately duplicates the three-step flow, but the description explicitly frames it as an all-in-one shortcut so an agent can choose correctly.
All seven tools use a consistent snake_case verb_noun pattern (prepare_inputs, request_challenge, submit_proof, generate_proof, verify_proof, get_action_approval, get_supported_circuits) with no mixing of conventions or vague verbs.
Seven tools is well-scoped for a ZK proof orchestration server, cleanly covering discovery, the stepwise flow, the all-in-one path, verification, and approval status without redundant bloat.
The full proof lifecycle is covered: discover circuits, prepare inputs, fetch challenge, submit proof, verify on-chain, and check human approval. Minor gaps remain, such as no tool for listing/cancelling prior approvals or managing payment offers despite the payment messaging in descriptions.