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.

  • "arc_eligibility": Coinbase KYC, optionally binding the wallet's signature to ONE EIP-712 action. Without action it signs the request signal hash. The proof carries that action's hash, so a contract can check WHICH instruction was authorised -- not merely that somebody eligible signed something. Verified on Arc Testnet (chain 5042002).

  • "giwa_attestation": GIWA attestation, optionally binding one EIP-712 action. 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.

deposit_to_gatewayA

Deposit USDC into Circle Gateway on Arc, so later proofs can be paid for with nanopayments (pay_on: "arc-testnet-nano").

Do this ONCE, not per proof. The deposit is the only on-chain step and it costs gas; every payment drawn against the balance costs almost none. Paying with "arc-testnet-nano" against an empty Gateway balance is refused.

Requires PAYMENT_PRIVATE_KEY -- the buyer signs authorizations with it and never sends a transaction per payment.

RETURNS: whether a deposit was made, its transaction hash, and the Gateway balance afterwards (in USDC's smallest units, so 1000000 is one USDC).

gateway_balanceA

What the buyer currently holds inside Circle Gateway on Arc — the balance nanopayments are drawn against. Amounts are in USDC's smallest units (1000000 = 1 USDC). Requires PAYMENT_PRIVATE_KEY.

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 9 tools

Disambiguation4/5

Each tool maps to a distinct workflow stage (deposit, challenge, submit, verify) or resource (circuits, balance, approvals). The only overlap is generate_proof bundling prepare_inputs/request_challenge/submit_proof, but its description explicitly frames it as the all-in-one alternative to the step-by-step tools.

Naming Consistency4/5

Most tools follow a verb_object pattern: prepare_inputs, submit_proof, verify_proof, request_challenge, get_supported_circuits, get_action_approval. gateway_balance breaks the pattern by omitting the verb, and deposit_to_gateway includes a preposition, but the naming is otherwise consistent and predictable.

Tool Count5/5

Nine tools is well-scoped for the domain: payment management, proof-generation steps, an all-in-one path, approval handling, and verification. Each tool has a distinct role and none feel redundant or excessive.

Completeness5/5

The set covers the full proof lifecycle: discovering circuits, depositing and checking funds, preparing inputs, requesting challenges, submitting proofs, verifying on-chain, and handling human approvals. There are no dead ends in the core workflow, and the all-in-one generate_proof covers the paid/encrypted pathway that individual steps cannot.

Maintenance

ActivityMaintained
ResponsivenessResponsive