Skip to main content
Glama

Server Details

Zero-knowledge proof generation MCP server. AI agents can prove identity claims (Coinbase KYC, Country, Google OIDC, Google Workspace, Microsoft 365) without revealing personal data.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
83.8% over 72 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.7/5.0

Scored across 3 tools

Disambiguation4/5

The three tools map to distinct steps: discover circuits (get_supported_circuits), read a circuit guide (get_guide), and initiate proof generation (prove). There is mild overlap because get_supported_circuits also enumerates guide URLs and get_guide/prove both push agents toward the same canonical guides, but boundaries are still inferable.

Naming Consistency4/5

get_guide and get_supported_circuits follow a clean verb_noun snake_case pattern, with only 'prove' deviating as a bare verb. The deviation is readable and self-explanatory, so consistency is mostly intact.

Tool Count3/5

Three tools is at the thin end for a proof-generation service, and much of the real work (payment challenge, input encryption, actual proving) is explicitly delegated to a REST endpoint rather than exposed as tools. It is defensible for a documentation/redirect wrapper, but borderline under-scoped.

Completeness3/5

The surface covers discovery, guidance, and proof initiation, but prove is described as long-running and merely redirects, with no polling/status or result-retrieval tool and no verification tool. Those notable gaps will force agents out of the MCP surface to finish the core workflow.

Available Tools

3 tools
get_guideAInspect

Read the current circuit-specific guide before proof generation. Includes witness preparation, supported signature modes, verification chain and live deployment payment configuration.

NameRequiredDescriptionDefault
circuitYesCanonical circuit id or supported alias. Read get_guide for the circuit-specific witness and verification chain.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses what content the guide returns and that the read is preparatory, but says nothing about authentication, caching, rate limits, or whether the guide is versioned/live. Adequate but incomplete for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded sentence states purpose and timing efficiently, followed by a scannable per-circuit reference list. The URL list partially duplicates the schema enum, but the endpoints are new information not present in structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required enum parameter fully documented and no output schema, the description sensibly summarizes the guide's contents so the agent knows what it will receive. Missing only peripheral operational details, which are minor for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum already lists all seven circuit ids and aliases, so the schema does the heavy lifting. The description's URL list adds partial value by hinting at canonical endpoints, but covers only four of the seven accepted values and adds no alias-mapping detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: read the circuit-specific guide, and enumerates the contents (witness prep, signature modes, verification chain, payment config). It is clearly a read-only reference lookup, distinguishable from prove, though it never names its siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Read ... before proof generation" gives a clear workflow trigger, which effectively routes the agent away from prove until this has been called. It does not state exclusions or mention get_supported_circuits as an alternative, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supported_circuitsAInspect

List every supported circuit and canonical guide URL. Hosted tools: get_supported_circuits, get_guide, prove. Read each guide for its attestation source, input schema and verification chain; payment networks are independent of circuit verification.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full behavioral burden: "List" implies a read-only, side-effect-free operation, and the caveat that "payment networks are independent of circuit verification" is a genuine semantic disclosure. However, nothing is said about authentication, rate limits, or caching, so coverage of the behavioral profile is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is well front-loaded, but the body is dominated by an inline enumeration of circuit names and URLs that reads more like response data than description prose, and the "Hosted tools: get_supported_circuits, get_guide, prove" line largely restates information already available to the agent. The trailing caveat about payment networks is also terse to the point of ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with no output schema, the description usefully compensates by naming the circuits and their canonical guide URLs, and it points onward to get_guide for the richer per-circuit details. The main remaining gap is that it never characterizes the response shape (e.g., JSON array vs. text) or any access requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. Nothing in the description misleads about inputs, and the absence of arguments is consistent with a pure enumeration endpoint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb (List) and resource (supported circuit + canonical guide URL) with unmistakable precision, and the following enumeration makes concrete exactly what a 'circuit' means here. An agent can distinguish this from get_guide (detail fetch) and prove (verification) without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Read each guide for its attestation source, input schema and verification chain" explicitly routes the agent to get_guide once the listing is obtained, which is real when-to-use-next guidance. It stops short of naming when-not-to-use this tool or stating prerequisites, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proveAInspect

Get the REST endpoint for long-running Noir proof generation. This hosted tool redirects; it does not generate a proof inside the MCP call. POST https://ai.zkproofport.app/api/v1/prove POST with {circuit} → 402 challenge with live accepts → sign the selected payment offer → retry with circuit-specific inputs and PAYMENT-SIGNATURE; include X-Payment-Nonce when supplied. Encrypt inputs only when the challenge supplies teePublicKey. Legacy X-Payment-TX requires X-Payment-Nonce. Action binding is optional for giwa_attestation: send both domain_separator and action_hash for a signed EIP-712 action, or omit both for an identity-only proof. Other circuits do not support actions. This deployment provides no hardware TEE attestation. HTTPS protects transport, but the prover receives proof inputs. Read the canonical guide before preparing inputs:

NameRequiredDescriptionDefault
inputsYesCircuit-specific prepared witness. OIDC uses jwt, jwks, scope and provider; attestation circuits use their own wallet/attestation fields. Read get_guide.
circuitYesCanonical circuit id or supported alias. Read get_guide for the circuit-specific witness and verification chain.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so impressively: it discloses the redirect (not in-call generation), the 402 payment challenge handshake, the X-Payment-Nonce requirement for legacy X-Payment-TX, conditional input encryption only when teePublicKey is present, and the absence of hardware TEE attestation with a warning that the prover sees inputs. These are exactly the behavioral traits an agent cannot infer from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and long, but front-loaded with the essential fact (endpoint retrieval, not in-call proving) and every subsequent sentence conveys protocol-critical information: payment handshake, encryption condition, action binding, security caveat, and per-circuit guide links. Nothing reads as filler; the length is justified by the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a payment-gated, multi-circuit tool with no output schema and no annotations, this is nearly complete: the return nature (REST endpoint / redirect), the request protocol, error-driven flow, and per-circuit documentation are all covered. Minor gaps remain around what the retry response actually returns and rate/expiry behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds real semantics beyond the schema: the per-circuit canonical guides, the optional action-binding rule specific to giwa_attestation (send both domain_separator and action_hash or omit both), and the rule that other circuits do not support actions. The opaque `inputs` object remains circuit-dependent, though it correctly defers to the guides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Get the REST endpoint for long-running Noir proof generation' — and immediately rejects the common misconception that the MCP call itself proves ('it does not generate a proof inside the MCP call'). This distinguishes it cleanly from the sibling guide/introspection tools get_guide and get_supported_circuits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: use this to obtain the endpoint, then follow the documented POST → 402 → sign → retry flow, and read the canonical guide before preparing inputs. It lacks an explicit 'use X instead when…' routing sentence naming siblings, but the when-to-use and prerequisite conditions are well established.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedget_guide1 field changed
      • changedInput schema / properties / circuit / enum
        Previous value: -[
        -  "coinbase_attestation",
        -  "coinbase_country_attestation",
        -  "oidc_domain_attestation",
        -  "arc_eligibility",
        -  "giwa_attestation",
        -  "coinbase_kyc",
        -  "coinbase_country",
        -  "oidc_domain"
        -]New value: +[
        +  "coinbase_attestation",
        +  "coinbase_country_attestation",
        +  "oidc_domain_attestation",
        +  "giwa_attestation",
        +  "coinbase_kyc",
        +  "coinbase_country",
        +  "oidc_domain"
        +]
    • Changedprove1 field changed
      • changedInput schema / properties / circuit / enum
        Previous value: -[
        -  "coinbase_attestation",
        -  "coinbase_country_attestation",
        -  "oidc_domain_attestation",
        -  "arc_eligibility",
        -  "giwa_attestation",
        -  "coinbase_kyc",
        -  "coinbase_country",
        -  "oidc_domain"
        -]New value: +[
        +  "coinbase_attestation",
        +  "coinbase_country_attestation",
        +  "oidc_domain_attestation",
        +  "giwa_attestation",
        +  "coinbase_kyc",
        +  "coinbase_country",
        +  "oidc_domain"
        +]
  2. 2 tool updates
    • Changedget_guide2 fields changed
      • changedInput schema / properties / circuit / description
        Previous value: -"Circuit alias to get the guide for."New value: +"Canonical circuit id or supported alias. Read get_guide for the circuit-specific witness and verification chain."
      • changedInput schema / properties / circuit / enum
        Previous value: -[
        -  "coinbase_kyc",
        -  "coinbase_country"
        -]New value: +[
        +  "coinbase_attestation",
        +  "coinbase_country_attestation",
        +  "oidc_domain_attestation",
        +  "arc_eligibility",
        +  "giwa_attestation",
        +  "coinbase_kyc",
        +  "coinbase_country",
        +  "oidc_domain"
        +]
    • Changedprove6 fields changed
      • changedInput schema / properties / circuit / description
        Previous value: -"Which circuit to use."New value: +"Canonical circuit id or supported alias. Read get_guide for the circuit-specific witness and verification chain."
      • changedInput schema / properties / circuit / enum
        Previous value: -[
        -  "coinbase_kyc",
        -  "coinbase_country"
        -]New value: +[
        +  "coinbase_attestation",
        +  "coinbase_country_attestation",
        +  "oidc_domain_attestation",
        +  "arc_eligibility",
        +  "giwa_attestation",
        +  "coinbase_kyc",
        +  "coinbase_country",
        +  "oidc_domain"
        +]
      • changedInput schema / properties / inputs / additionalProperties
        Previous value: -falseNew value: +{}
      • changedInput schema / properties / inputs / description
        Previous value: -"All circuit inputs required to generate the ZK proof."New value: +"Circuit-specific prepared witness. OIDC uses jwt, jwks, scope and provider; attestation circuits use their own wallet/attestation fields. Read get_guide."
      • removedInput schema / properties / inputs / properties
        Removed value: -{
        -  "coinbase_attester_pubkey_x": {
        -    "description": "32-byte secp256k1 X coordinate of Coinbase attester public key (0x-prefixed).",
        -    "type": "string"
        -  },
        -  "coinbase_attester_pubkey_y": {
        -    "description": "32-byte secp256k1 Y coordinate of Coinbase attester public key (0x-prefixed).",
        -    "type": "string"
        -  },
        -  "country_list": {
        -    "description": "ISO 3166-1 alpha-2 country codes. Only for coinbase_country circuit.",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "depth": {
        -    "description": "Number of levels in the Merkle tree. With 4 signers, depth = 2.",
        -    "type": "number"
        -  },
        -  "is_included": {
        -    "description": "true = prove country IS in list, false = prove it is NOT. Only for coinbase_country circuit.",
        -    "type": "boolean"
        -  },
        -  "leaf_index": {
        -    "description": "0-based index of the coinbase attester in the authorized signers array.",
        -    "type": "number"
        -  },
        -  "merkle_proof": {
        -    "description": "Array of 32-byte sibling hashes (0x-prefixed) in the Merkle tree, from leaf level to root.",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "merkle_root": {
        -    "description": "0x-prefixed 32-byte Merkle root of authorized attesters tree",
        -    "type": "string"
        -  },
        -  "nullifier": {
        -    "description": "0x-prefixed 32-byte nullifier: privacy-preserving unique identifier",
        -    "type": "string"
        -  },
        -  "raw_transaction": {
        -    "description": "0x-prefixed RLP-encoded EAS attestation transaction bytes from Base chain.",
        -    "type": "string"
        -  },
        -  "scope_bytes": {
        -    "description": "0x-prefixed 32-byte keccak256 of the scope string",
        -    "type": "string"
        -  },
        -  "signal_hash": {
        -    "description": "0x-prefixed 32-byte signal hash: keccak256(abi.encodePacked(address, scope, circuitId))",
        -    "type": "string"
        -  },
        -  "signature": {
        -    "description": "65-byte eth_sign signature (0x-prefixed hex, 134 chars). Sign signal_hash with the KYC wallet using eth_sign.",
        -    "type": "string"
        -  },
        -  "tx_length": {
        -    "description": "Actual byte length of raw_transaction before server zero-pads to 300 bytes.",
        -    "type": "number"
        -  },
        -  "user_address": {
        -    "description": "0x-prefixed 20-byte wallet address with Coinbase attestation",
        -    "type": "string"
        -  },
        -  "user_pubkey_x": {
        -    "description": "32-byte secp256k1 public key X coordinate (0x-prefixed hex). Recovered via ecrecover(signal_hash, signature).",
        -    "type": "string"
        -  },
        -  "user_pubkey_y": {
        -    "description": "32-byte secp256k1 public key Y coordinate (0x-prefixed hex). Recovered via ecrecover(signal_hash, signature).",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / inputs / required
        Removed value: -[
        -  "signal_hash",
        -  "nullifier",
        -  "scope_bytes",
        -  "merkle_root",
        -  "user_address",
        -  "signature",
        -  "user_pubkey_x",
        -  "user_pubkey_y",
        -  "raw_transaction",
        -  "tx_length",
        -  "coinbase_attester_pubkey_x",
        -  "coinbase_attester_pubkey_y",
        -  "merkle_proof",
        -  "leaf_index",
        -  "depth"
        -]
  3. 3 tool updates
    • First observedget_guide
    • First observedget_supported_circuits
    • First observedprove

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources