zkproofport-ai
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.
- Status
- Healthy
- Uptime
- 83.8% over 72 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
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.
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.
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.
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 toolsget_guideAInspect
Read the current circuit-specific guide before proof generation. Includes witness preparation, supported signature modes, verification chain and live deployment payment configuration.
coinbase_attestation: https://ai.zkproofport.app/api/v1/guide/coinbase_attestation
coinbase_country_attestation: https://ai.zkproofport.app/api/v1/guide/coinbase_country_attestation
oidc_domain_attestation: https://ai.zkproofport.app/api/v1/guide/oidc_domain_attestation
giwa_attestation: https://ai.zkproofport.app/api/v1/guide/giwa_attestation
| Name | Required | Description | Default |
|---|---|---|---|
| circuit | Yes | Canonical circuit id or supported alias. Read get_guide for the circuit-specific witness and verification chain. |
TDQS
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.
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.
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.
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.
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.
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.
coinbase_attestation: https://ai.zkproofport.app/api/v1/guide/coinbase_attestation
coinbase_country_attestation: https://ai.zkproofport.app/api/v1/guide/coinbase_country_attestation
oidc_domain_attestation: https://ai.zkproofport.app/api/v1/guide/oidc_domain_attestation
giwa_attestation: https://ai.zkproofport.app/api/v1/guide/giwa_attestation
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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:
coinbase_attestation: https://ai.zkproofport.app/api/v1/guide/coinbase_attestation
coinbase_country_attestation: https://ai.zkproofport.app/api/v1/guide/coinbase_country_attestation
oidc_domain_attestation: https://ai.zkproofport.app/api/v1/guide/oidc_domain_attestation
giwa_attestation: https://ai.zkproofport.app/api/v1/guide/giwa_attestation
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | Yes | Circuit-specific prepared witness. OIDC uses jwt, jwks, scope and provider; attestation circuits use their own wallet/attestation fields. Read get_guide. | |
| circuit | Yes | Canonical circuit id or supported alias. Read get_guide for the circuit-specific witness and verification chain. |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
- Changed
get_guide1 field changed- changed
Input schema / properties / circuit / enumPrevious 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" +]
- Changed
prove1 field changed- changed
Input schema / properties / circuit / enumPrevious 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 tool updates
- Changed
get_guide2 fields changed- changed
Input schema / properties / circuit / descriptionPrevious 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." - changed
Input schema / properties / circuit / enumPrevious 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" +]
- Changed
prove6 fields changed- changed
Input schema / properties / circuit / descriptionPrevious value: -"Which circuit to use."New value: +"Canonical circuit id or supported alias. Read get_guide for the circuit-specific witness and verification chain." - changed
Input schema / properties / circuit / enumPrevious 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" +] - changed
Input schema / properties / inputs / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Input schema / properties / inputs / descriptionPrevious 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." - removed
Input schema / properties / inputs / propertiesRemoved 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" - } -} - removed
Input schema / properties / inputs / requiredRemoved 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 tool updates
- First observed
get_guide - First observed
get_supported_circuits - First observed
prove
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables 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.1618 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs113 npm55 PyPIMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.