Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoExpress server port4002
BB_PATHNoBarretenberg CLI pathbb
NODE_ENVNoNode environmentdevelopment
TEE_MODENoTEE mode: disabled / nitrodisabled
REDIS_URLYesRedis connection string
NARGO_PATHNoNargo CLI pathnargo
ENCLAVE_CIDNoNitro Enclave CID (required when TEE_MODE=nitro)
A2A_BASE_URLYesPublic-facing service URL (for Agent Card)
BASE_RPC_URLYesBase chain RPC endpoint
CIRCUITS_DIRNoCircuit artifacts directory/app/circuits
ENCLAVE_PORTNoNitro Enclave port5000
PAYMENT_MODEYesPayment mode: disabled / testnet / mainnet
AGENT_VERSIONNoAgent version string1.0.0
CHAIN_RPC_URLYesRPC for proof verification
GEMINI_API_KEYNoGemini API key for chat
OPENAI_API_KEYNoOpenAI API key for chat
PAYMENT_PAY_TONoOperator wallet (required when payment enabled)
TEE_ATTESTATIONNoEnable attestation verificationfalse
CIRCUITS_REPO_URLNoCircuit artifacts download URL
PROVER_PRIVATE_KEYYesAgent wallet private key (64 hex chars, no 0x)
PAYMENT_PROOF_PRICENoPrice per proof (USD)$0.10
EAS_GRAPHQL_ENDPOINTYesEAS GraphQL endpoint for attestation queries
ERC8004_IDENTITY_ADDRESSNoERC-8004 Identity contract
ERC8004_REPUTATION_ADDRESSNoERC-8004 Reputation contract
PHOENIX_COLLECTOR_ENDPOINTNoPhoenix 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

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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:

  • "coinbase_kyc": Proves the user passed Coinbase KYC verification.

  • "coinbase_country": Proves the user's country of residence is (or is not) in a given list. Requires country_list and is_included.

  • "oidc_domain": Proves the user authenticated via OIDC and their email belongs to a specific domain. Requires jwt and scope.

  • "giwa_attestation": GIWA attestation, optionally binding the wallet's signature to ONE EIP-712 action. Without action it signs the request signal hash. With one, the proof carries that action's hash, so a contract can check WHICH instruction was authorised -- not merely that somebody eligible signed something. Uses a GIWA-attested wallet; verified on GIWA Sepolia (chain 91342).

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
config

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessResponsive