Skip to main content
Glama

Server Details

One API, all things verified — control, delegation, human approval, anti-impersonation.

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
51.1% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
ProofHoldings/mcp-server
GitHub Stars
0
Server Listing
@proof-holdings/mcp-server

TDQS

B3.3/5.0

Scored across 176 tools

Disambiguation2/5

At 176 tools, many clusters do overlapping work: at least a dozen domain-verification tools (check_domain_verification, check_user_domain_verification, trigger_verification, verify_domain, verify_domain_with_credentials, start_domain_verification, start_user_domain_verification, get_user_domain_verification_status...) blur into each other, and the verification/session/request family (create_verification, create_session, create_account, create_multi_channel_verification, create_verification_request) has unclear boundaries. The six 2FA tools and multiple cancel/extend/handle-request variants compound the misselection risk.

Naming Consistency4/5

The dominant convention is disciplined verb_noun (add_domain, create_circle, get_verification, delete_hitl, list_assets, update_hitl, remove_phone, revoke_proof), which is remarkable at this scale. Minor deviations: bare 'search', 'render_auth_link', and the redundant wait_for_* / poll_* pair for chat_id discovery break the otherwise predictable pattern.

Tool Count1/5

176 tools is an extreme count — an order of magnitude beyond the well-scoped 3-15 range. While the server does span many subdomains (identity verification, HITL, circles, delegations, proofs, templates, webhooks, API keys), this is unmanageable for agent tool selection and forces every tool to compete for the model's attention.

Completeness3/5

Within each subdomain there is plausible lifecycle coverage (create/get/update/delete for hitl, circles, profiles, templates, DNS credentials, delegations), but the surface is uneven: authorizations and verification requests have create/get/list/revoke yet lack update operations on some paths, and several flows create dead ends (a verify_domain entry point that duplicates trigger_verification). For a stated purpose this broad, the coverage is adequate but sprawling rather than systematically complete.

Available Tools

176 tools
add_challengerAInspect

Pre-enroll a Proof-Me challenger (a trusted contact) on a HITL config. Enabling the first challenger opts the config into Proof-Me. A telegram challenger captures its chat_id later at enrollment; a whatsapp challenger must pre-declare its phone.

Agent usage: After adding a challenger, call invite_challenger to mint the single-use enrollment link the challenger taps to bind their messenger identity.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name of the challenger
channelYesMessenger channel the challenger uses
hitl_idYesHITL config ID to enroll the challenger on
whatsapp_phoneNoE.164 phone with country code (required for the whatsapp channel)

TDQS

A4.5/5.0
Behavior4/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 meaningful behavior: enabling the first challenger opts the config into Proof-Me, telegram captures chat_id later, whatsapp must pre-declare phone, and the tool requires a Proof account. It does not describe the return value or whether the operation is reversible, but the core side-effects are clearly stated.

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?

The description is compact and front-loaded with the core purpose, followed by channel-specific notes and an explicit usage workflow. Each sentence earns its place. Minor redundancy with the schema (the whatsapp phone requirement is also in the schema) but the additional context justifies it.

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?

Given the tool has no output schema and no annotations, the description provides the needed context: what the tool does, when to call it, what happens on first enrollment, channel nuances, and authentication requirements. The missing return-value description is a minor gap, but the operational context is strong enough for correct invocation.

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 schema already documents all 4 parameters. The description adds value by explaining the telegram vs whatsapp difference and the whatsapp phone requirement beyond the schema's simple field descriptions. This goes beyond baseline without fully detailing formats or constraints already in the schema.

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 description states a specific verb (pre-enroll), a specific resource (a Proof-Me challenger on a HITL config), and explains special behavior (first challenger opts the config into Proof-Me; telegram vs whatsapp enrollment differences). This clearly distinguishes the tool from siblings like invite_challenger, list_challengers, and remove_challenger.

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

Usage Guidelines5/5

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

The description gives an explicit agent-usage workflow: after adding a challenger, call invite_challenger to mint the enrollment link. It also provides an authentication directive and a negative hint (start_login does NOT open this tool), which helps the agent know when and how to use it.

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

add_circle_memberAInspect

Add a pending member to a Circle by name, with an optional pre-declared WhatsApp phone. The Telegram chat id is captured later when the member taps the enrollment deep link.

Agent usage: after adding a member, call invite_circle_member to mint the single-use enrollment link the member taps to bind their messenger identity.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID to add the member to
nameYesDisplay name of the member
whatsapp_phoneNoE.164 WhatsApp phone with a leading + (optional, declared)

TDQS

A4.3/5.0
Behavior4/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 that the Telegram chat id is captured later via the enrollment deep link, and mentions authentication requirements. It does not explicitly state side effects (e.g., creates a pending record) or idempotency, but the flow is clear enough. A slight gap is lack of detail on failure modes or return behavior, but the description goes beyond the bare minimum.

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?

The description is well-structured with a main sentence, an agent usage note, and an ACCESS block. It front-loads the core purpose and provides necessary operational context. It is not overly verbose, though the ACCESS note could be slightly more concise. Overall, it earns its place without redundancy.

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?

Given 3 parameters, no output schema, and no annotations, the description covers the tool's role, the follow-up step, and prerequisites. It doesn't detail error handling or idempotency, but for a simple add operation, this is sufficient. The flow is explained, and the agent knows exactly what to do after calling it. A small gap is not specifying what the response contains, but since there's no output schema, this is acceptable.

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 coverage is 100%, so the schema already describes each parameter (id, name, whatsapp_phone). The description adds only a minor nuance: 'by name' and 'optional pre-declared WhatsApp phone,' which aligns with the schema but doesn't add new semantic value. Given full schema coverage, the baseline of 3 is appropriate.

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?

Description clearly states the action: 'Add a pending member to a Circle by name, with an optional pre-declared WhatsApp phone.' It specifies the verb (add), the resource (Circle member), and the parameters. It also distinguishes from siblings like add_challenger and add_circle_member_channel by focusing on membership and the follow-up enrollment link.

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

Usage Guidelines5/5

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

Provides explicit sequential guidance: 'after adding a member, call invite_circle_member to mint the single-use enrollment link the member taps to bind their messenger identity.' Also states access prerequisites: 'needs a Proof account. Authenticate this client... then call this tool again. start_login does NOT open this tool.' This tells the agent exactly when and how to use it, including what not to do.

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

add_circle_member_channelAInspect

Declare a channel for a Circle member. Returns 409 if that channel type already exists on the member. The identifier is a Telegram chat id or an E.164 WhatsApp phone (per-channel format validated server-side).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID
channelYesChannel type (telegram or whatsapp)
member_idYesMember ID to add the channel to
identifierYesTelegram chat id, or E.164 WhatsApp phone with a leading +

TDQS

A4/5.0
Behavior4/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 disclose key behaviors: it returns 409 on duplicate channel type, validates the identifier format server-side, and requires a Proof account. These go beyond the basic purpose and inform the agent of error conditions and prerequisites. It does not mention the success response or side effects, but for a simple create-like operation this is adequate.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the core purpose and the most important behavioral note (409 on duplicate). The authentication instruction is practical and earns its place. No fluff or redundancy—every sentence contributes.

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 four-parameter tool with no output schema, the description covers the essential context: purpose, duplicate behavior, identifier format, and authentication requirement. It does not state what the success response looks like or whether the circle/member must already exist, but these are not critical for an agent to invoke it correctly. The description is sufficient for basic usage.

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?

The input schema already describes all four parameters with 100% coverage, so the baseline is 3. The description adds a minor nuance about the identifier ('per-channel format validated server-side'), but this largely mirrors the schema's 'Telegram chat id, or E.164 WhatsApp phone with a leading +'. It does not materially enrich parameter meaning beyond what the schema provides.

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 description states a specific verb ('Declare') and resource ('channel for a Circle member'), and immediately adds a behavioral differentiator (returns 409 on duplicate). This clearly separates it from siblings like add_circle_member (adds a member) and remove_circle_member_channel (removes a channel), so an agent can tell them apart without opening schemas.

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

Usage Guidelines3/5

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

The description implies usage by stating the action and includes a critical prerequisite (authentication: 'needs a Proof account... Authenticate this client...'). However, it does not explicitly contrast with alternatives or state when not to use it, only implicitly conveying it is the tool for adding a channel. The note that 'start_login does NOT open this tool' is a helpful exclusion but not a full comparison with siblings.

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

add_domainBInspect

Add a new domain to verify ownership. Optionally specify email sending intent and verification method.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain name to add (e.g. example.com)
for_email_sendingNoWhether this domain is for email sending
verification_methodNoPreferred verification method

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral burden. It usefully discloses that a Proof account and an authenticated/session context are required. However, it does not state what effects adding a domain has, such as whether verification starts automatically, whether adds are idempotent, or how failures surface.

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?

The tool purpose is front-loaded in one clear sentence, and the optional-parameter sentence earns its place. The access note is somewhat verbose but not redundant, as it explains a real precondition.

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

Completeness3/5

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

For a 3-parameter tool with a fully described schema, the immediate call is documented well. However, in a large domain-verification workflow, the description omits any mention of next steps or its relationship to sibling verification tools, and with no output schema there are no hints about the return or follow-up.

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%, so the baseline is 3. The description's phrase 'email sending intent and verification method' maps to the two optional parameter fields but adds no new meaning beyond the schema descriptions and enum values.

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 ('Add'), resource ('domain'), and intent ('verify ownership'), and it mentions optional email-sending and verification-method parameters. This clearly distinguishes it from sibling verification/check/delete domain tools even without naming them, because 'add new domain' is the registration step.

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

Usage Guidelines2/5

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

No guidance contrasts this tool with closely related siblings such as start_domain_verification, verify_domain, or check_domain_verification. The only operational note is the authentication prerequisite, which explains access but not when to use this tool versus alternatives.

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

add_verification_providerAInspect

Add an additional DNS provider for verification to an already-verified domain. Note: credentials will be visible in the AI conversation context.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID
providerYesDNS provider identifier
credentialsYesProvider-specific credential key-value pairs

TDQS

A4/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral burden. It usefully discloses that credentials will be visible in the AI conversation context and that authentication is required. However, it does not mention side effects, failure modes, or whether credentials are added to or replace existing provider credentials beyond the word 'additional.'

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

Conciseness5/5

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

The description is compact and front-loaded: first the operation, then a critical privacy warning, then the access/authentication requirement. Every sentence earns its place and there is no fluff.

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 mutating tool with three required parameters, a nested credentials object, and no output schema, the description covers the operation, precondition, authentication path, and a notable privacy risk. It omits possible provider identifier values and return behavior, but those are discoverable via sibling tools like get_dns_providers.

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%, so the schema already defines id, provider, and credentials. The description adds only the context that credentials are provider-specific and visible in-conversation; it does not enrich individual parameter meaning beyond the schema.

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 description states a specific verb and resource: 'Add an additional DNS provider for verification to an already-verified domain.' It clearly distinguishes itself from initial-setup tools like connect_dns_provider or add_domain by emphasizing 'additional' and 'already-verified.'

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?

It gives clear prerequisites: the domain must already be verified, and a Proof account is required. It also explains the authentication flow via start_login. It does not explicitly list alternatives or when not to use the tool, but the context strongly implies the intended use case.

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

cancel_user_requestAInspect

Cancel a pending verification request. Only the creator can cancel.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification request ID to cancel

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It discloses the auth and ownership requirements but does not state whether cancellation is reversible, what side effects occur, or what the response contains. For a mutating tool this leaves meaningful gaps.

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?

The core purpose and the key precondition are front-loaded in two short sentences. The ACCESS block is dense but each sentence adds necessary auth and onboarding context; no filler.

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

Completeness3/5

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

The description covers auth, ownership, and the target resource, which is adequate for a one-parameter cancel operation. It lacks a note distinguishing it from cancel_verification_request and says nothing about response or error behavior, so completeness is only moderate.

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?

The single id parameter is already fully described in the schema ('Verification request ID to cancel'), so the description adds no extra semantics. Schema coverage is 100%, so baseline 3 applies; no further compensation is needed.

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 clear action (cancel) and resource (pending verification request), plus an ownership constraint. However, it does not distinguish itself from the sibling cancel_verification_request, so an agent cannot tell which cancel tool to choose from the description alone.

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?

Provides explicit preconditions: only the creator may cancel, a Proof account is required, and the client must be authenticated or signed in via start_login. It does not name alternatives or explain when cancel_user_request should be preferred over cancel_verification_request.

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

cancel_verification_requestAInspect

Cancel a pending verification request. Only pending requests can be cancelled.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification request ID

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the key behavioral constraint of only-pending eligibility and the authentication gate, going beyond a mere restatement of the tool name. It does not describe side effects, irreversibility, or error behavior for non-pending requests, but for this simple cancellation action the disclosed traits are reasonably sufficient.

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

Conciseness5/5

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

The description is compact and front-loaded: the main action and constraint appear in the first sentence, followed by a concise ACCESS note. There is no fluff or redundant restatement of the tool name.

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 single-parameter mutation tool with no output schema, the description covers the essential operational context: what it does, when it applies, and the authentication prerequisite. It could be slightly more complete by explicitly distinguishing itself from cancel_user_request, but the name and pending-request wording already reduce confusion.

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?

The single parameter 'id' is already fully described in the input schema as 'Verification request ID' (100% schema description coverage). The tool description adds no extra meaning or context to the parameter, so the baseline score of 3 is appropriate.

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 description uses a specific verb 'Cancel' with the resource 'verification request' and constrains it to 'pending' requests. This clearly differentiates it from sibling tools like cancel_user_request and create_verification_request without requiring the reader to open the 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?

It explicitly states the precondition that only pending requests can be cancelled and provides an authentication requirement with a concrete instruction to re-call after authenticating. However, it does not explicitly mention alternatives such as cancel_user_request or explain when not to use this tool.

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

check_domain_credentialsAInspect

Check if stored DNS credentials have access to a domain. Use before triggering verification to confirm the credentials work.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID to check credentials for

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden. It discloses the check-only nature, the Proof-account requirement, and that a session/login may be needed before the call succeeds. It could explicitly state that no DNS changes are made, but 'Check if...' and the pre-verification framing already imply a read-only operation.

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?

The description is short and front-loaded, with purpose first, then usage, then access. The auth sentence is slightly convoluted ('a session opens this tool') and contains client-specific guidance, but every sentence contributes information and there is no redundancy.

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 one-parameter tool with no output schema, the description covers what the tool does, when to call it, and the prerequisite authentication, which is enough to invoke it correctly. The main minor gap is that it does not describe what the returned result looks like beyond implying 'confirm the credentials work.'

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?

The schema already describes the only parameter (`id`: 'Domain ID to check credentials for') at 100% coverage. The description adds little about parameter semantics beyond connecting the domain to stored credentials, so the high-schema-coverage baseline of 3 applies.

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 and resource: 'Check if stored DNS credentials have access to a domain.' It is not a tautology, and the phrase 'before triggering verification' distinguishes this preflight check from verification/check siblings such as verify_domain or check_domain_verification.

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?

It gives explicit when-to-use context: 'Use before triggering verification to confirm the credentials work.' It also spells out the authentication prerequisite and retry flow (start_login, then call again). It does not name the exact alternative tools or say when not to use it, so it does not earn a 5.

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

check_domain_email_statusAInspect

Check the email sending setup status for a domain, including DNS record configuration progress.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the auth/session prerequisite and that the result includes DNS record configuration progress, which is genuinely helpful. It still says nothing about failure modes (e.g. domain not yet configured) or whether the check is purely read-only and side-effect free.

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?

Two short blocks: purpose first, then the access prerequisite, with no filler. The trailing 'then call this tool again' is slightly redundant but frames the retry-after-auth flow clearly.

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 single-parameter read tool with no output schema and no annotations, the description covers purpose, the shape of the returned status, and the auth precondition. Only the absence of any error/edge-case behavior keeps it short of complete.

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 coverage is 100% with a single documented 'id' (Domain ID) parameter, so the schema already does the work. The description adds no syntax, format, or sourcing detail (e.g. where to obtain the domain ID) beyond what is in the schema.

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 ('Check the email sending setup status for a domain') and adds scope ('including DNS record configuration progress'), so an agent can tell it apart from write-oriented siblings like setup_domain_email or start_domain_email_verification. It does not, however, explicitly name which sibling to use instead (e.g. check_domain_verification).

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

Usage Guidelines3/5

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

The ACCESS block gives a real precondition: a Proof account is required and an authentication flow (start_login or the client's /mcp Authenticate) must complete before this call succeeds. That is useful operational guidance, but there is no when-to-use/when-not-to-use guidance relative to the many adjacent status and verification tools.

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

check_domain_verificationAInspect

Check the status of a pending domain verification. Triggers a DNS/HTTP check and returns the updated status.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain verification ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does well by revealing that the tool actively triggers a DNS/HTTP check and returns updated status, and by flagging authentication requirements. It doesn't mention rate limits, failure behavior, or exact response shape, but the core behavior is transparent.

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

Conciseness5/5

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

The description is compact and front-loaded: purpose first, then behavioral effect, then the access note. Every sentence carries useful information without padding.

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?

Given the tool's low complexity (one required parameter, no output schema), the description covers purpose, behavior, return nature, and authentication context. It could add clarity around polling lifecycle or possible domain verification statuses, but these are minor gaps for a simple check 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?

The input schema covers 100% of the single parameter, id, described as 'Domain verification ID', so the baseline is 3. The tool description adds no additional meaning beyond the schema for this parameter.

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?

The description clearly states the tool's purpose: checking the status of a pending domain verification and triggering a DNS/HTTP check to return updated status. It names a specific resource and action, though it doesn't explicitly contrast with similar siblings like check_user_domain_verification or get_user_domain_verification_status.

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?

The description provides explicit access and authentication guidance: a Proof account is required, the client must be authenticated, and start_login does not open this tool. However, it doesn't state when to use this tool versus alternative verification-status tools, so it stops short of full alternative routing.

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

check_user_domain_verificationAInspect

Trigger a check on the domain verification challenge. Call after placing DNS record or HTTP file.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesDomain verification session ID

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden and does disclose meaningful behavioral context: the call is a trigger with a sequencing dependency (must follow DNS/HTTP setup) and requires prior authentication, including a retry path. However, it doesn't disclose what happens on failure, whether the check is synchronous or asynchronous, or what a successful check returns, leaving the agent guessing about response semantics.

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?

The purpose and call timing are front-loaded in the first two sentences, and the access note is actionable. The middle section is slightly verbose with the parenthetical Claude Code path, but every sentence earns its place and the overall length is appropriate.

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

Completeness3/5

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

For a 1-param tool this is operationally close to complete: it covers what the tool does, when to call it, and how to authenticate. It falls short on return-value behavior (no output schema exists to compensate) and on differentiating from the similar siblings check_domain_verification and get_user_domain_verification_status, leaving an agent without enough information to fully interpret the result.

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 single session_id parameter is already described as 'Domain verification session ID'. The description adds no additional parameter-level meaning beyond what the schema provides, which is acceptable at the high-coverage baseline.

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 action ('Trigger a check') on a specific resource ('domain verification challenge') and gives the triggering condition (after placing DNS record or HTTP file). It stops short of 5 because it doesn't distinguish itself from the near-identical sibling check_domain_verification, leaving an agent to wonder which of the two it should pick.

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?

Explicitly states when to call ('Call after placing DNS record or HTTP file') and provides a detailed authentication prerequisite with a practical retry flow (start_login opens the tool, then call again). It doesn't name alternatives or state when not to use this tool versus check_domain_verification or get_user_domain_verification_status, but the timing and auth guidance are concrete and actionable.

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

claim_request_assetsAInspect

Claim shared assets from a completed verification request.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification request ID

TDQS

A3.7/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the burden of explaining side effects. It does disclose the authentication requirement and the completed-request precondition, which is useful. However, it does not state whether claiming transfers or revokes ownership, is one-time or idempotent, or what happens when assets were already claimed. 'Claim' is the only side-effect signal.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence states the operation, and the second provides the access prerequisite. Every sentence earns its place, and there is no padding or redundant restating of the tool name.

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

Completeness3/5

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

This is a minimal, state-changing tool with no output schema and no annotations. The description adequately explains the operation and authentication, but it omits return behavior and post-claim effectsached feet. For a one-parameter tool this is minimally viable, but there are real gaps that could affect correct invocation.

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?

The schema already describes the only parameter, id, as 'Verification request ID', and schema coverage is 100%. The description adds no extra detail about the ID format, how to obtain it, or what makes a request eligible, so the baseline score of 3 is appropriate.

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?

The description clearly identifies the action ('Claim'), the object ('shared assets'), and the source ('a completed verification request'), so an agent can understand what the tool does. It does not explicitly differentiate this from sibling tools like claim_username or get_asset, so it stops short of a 5.

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?

The description gives a clear precondition: the caller needs a Proof account and an authenticated session, and it instructs the agent to authenticate or call start_login, then retry. It does not explicitly mention when to prefer this over alternatives or what to do if the request is not yet completed, but the context is clear and actionable.

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

claim_usernameAInspect

Claim a unique username for the authenticated user's public profile. Usernames must be 3-30 characters, alphanumeric and underscores only.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUsername to claim (3-30 chars, alphanumeric and underscores)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must carry behavioral disclosure. It only mentions the action and constraints, but does not state what happens on conflict (username taken), whether it overwrites an existing username, or what the return value/error behavior is. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

Two sentences, front-loaded with the verb and resource, then constraints, then access instructions. Every sentence adds value; no redundant text.

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

Completeness3/5

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

The tool is simple (one parameter, no output schema), and the description covers access and constraints. However, it omits failure semantics and return value, which an agent needs to know to handle the call correctly. Given the lack of annotations, slightly more detail would improve completeness.

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% (the parameter is fully described in the schema), so the baseline is 3. The description adds the 'unique' and 'public profile' context, but primarily restates constraints already present in the schema. No additional syntax or behavior details beyond schema.

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+resource: claim a unique username for the authenticated user's public profile. Distinguishes clearly from sibling profile tools like create_profile or update_my_profile by focusing specifically on the username claim action.

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?

Provides clear context: requires a Proof account and authentication, with two concrete options (authenticate this client or use start_login). It does not explicitly exclude alternatives or name sibling tools, but the prerequisite flow is clear.

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

confirm_domain_email_codeAInspect

Confirm domain email verification by submitting the code sent to the corporate email address.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID
codeYesVerification code from the email

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 burden. It discloses the access requirement (Proof account) and the authentication prerequisite, which is useful. However, it doesn't disclose what happens on success or failure, whether the code is consumed, or any rate limits. The description adds some behavioral context but not comprehensive.

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?

The description is concise and front-loaded with the core action. The access note is a second sentence that adds necessary context. No wasted words, though the authentication instructions could be seen as slightly verbose.

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

Completeness3/5

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

For a two-parameter tool with no output schema, the description covers the essential flow: authenticate, get the code, submit it. It doesn't explain what happens after confirmation or how to handle errors, but the core invocation context is present. The sibling list includes related tools, and the description gives enough to distinguish this step.

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%, so the schema already documents both parameters ('Domain ID' and 'Verification code from the email'). The description adds minimal extra meaning beyond the schema, but it does clarify that the code is sent to the corporate email. Baseline 3 is appropriate.

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?

The description states a specific verb and resource: 'Confirm domain email verification by submitting the code sent to the corporate email address.' This clearly distinguishes it from related tools like start_domain_email_verification and resend_domain_email. It doesn't explicitly name sibling tools, but the action is specific enough to be understood.

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?

The description provides clear context: it is used after a code has been sent to the corporate email, and it mentions the prerequisite of authentication. It doesn't explicitly state when not to use it or name alternatives, but the flow is implied well enough for an agent to know when to invoke it.

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

connect_cloudflareAInspect

Connect a Cloudflare API token to a domain for automated DNS record management. Note: the API token will be visible in the AI conversation context.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID
api_tokenYesCloudflare API token with DNS edit permissions

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries full responsibility. It discloses the privacy risk (token visible in conversation), the account requirement, and the recovery workflow if unauthenticated. It doesn't mention reversibility or overwrite behavior, but covers the most important side effects for a secret-bearing connection tool.

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

Conciseness5/5

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

Two sentences plus an access note, all substantive. Purpose is front-loaded, the security warning follows immediately, and no filler or redundant restating of schema 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?

For a two-parameter tool with no output schema and no annotations, the description provides the necessary authentication context, prerequisite, and security caveat. Minor gap: it doesn't state what happens if the domain already has a Cloudflare connection, but this is not critical for initial invocation.

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 covers both parameters fully (id as Domain ID, api_token with DNS edit permissions), so baseline 3 applies. The description adds a behavioral note about token visibility but no new semantic detail about either parameter.

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?

Description states 'Connect a Cloudflare API token to a domain for automated DNS record management' – a specific verb, resource, and purpose. The Cloudflare-specific wording clearly differentiates it from sibling tools like connect_dns_provider and connect_godaddy.

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 explicit prerequisites: requires a Proof account, and provides two authentication paths (Claude Code authenticate or start_login then call again). It does not explicitly name alternative tools, but the Cloudflare-specific purpose makes selection obvious.

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

connect_dns_providerAInspect

Connect a generic DNS provider to a domain using provider-specific credentials. Note: credentials will be visible in the AI conversation context.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID
providerYesDNS provider identifier
credentialsYesProvider-specific credential key-value pairs

TDQS

A3.8/5.0
Behavior3/5

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

The description warns that credentials will be visible in the AI conversation context, which is crucial behavioral disclosure. It also notes the Proof account requirement and authentication steps. However, it doesn't describe side effects like whether this replaces an existing DNS connection or what happens on success.

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?

The description is compact and front-loads the purpose, followed by the security warning and the access workflow. Every sentence adds necessary information, though the access section could be slightly shorter.

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

Completeness3/5

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

For a tool with three required params and no output schema, the description covers the authentication prerequisite and credential exposure, but doesn't state expected outcome or side effects. It's adequate for a simple connect action but leaves some operational details to the agent's inference.

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 coverage is 100% and each parameter has an adequate description ('Domain ID', 'DNS provider identifier', 'Provider-specific credential key-value pairs'). The description only echoes the generic 'provider-specific credentials' phrase, adding no extra meaning beyond the schema.

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 description uses a specific verb ('Connect') and the resource ('DNS provider') plus the target ('domain'), and differentiates itself from siblings like connect_cloudflare and connect_godaddy by saying 'generic DNS provider'. An agent can immediately tell this is the fallback for providers without a dedicated tool.

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?

It gives clear context: the tool is for generic providers, and it explains the authentication flow (needs a Proof account, authenticate or sign in with start_login, then call again). It doesn't explicitly name alternatives or exclusions, but 'generic' implies it's the fallback for non-Cloudflare/GoDaddy providers.

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

connect_godaddyAInspect

Connect GoDaddy API credentials to a domain for automated DNS record management. Note: the API key and secret will be visible in the AI conversation context.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID
api_keyYesGoDaddy API key
api_secretYesGoDaddy API secret

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It usefully warns that the API key and secret will be visible in the AI conversation context and explains the authentication prerequisite. It does not disclose what happens after connection (e.g., whether credentials are validated, overwritten, or stored), but the most important side-effect and security trait are covered.

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

Conciseness5/5

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

The description is concise and front-loaded: the core purpose is in the first sentence, followed by a security-relevant warning and access instructions. Every sentence adds value and there is no redundant filler.

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 credential-connecting tool with no output schema and no annotations, the description covers the essential invocation context: purpose, required account, authentication flow, and a security caution. It is slightly incomplete in that it does not describe expected return behavior or failure modes, but the provided context is sufficient for an agent to attempt the call correctly.

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%, so all three parameters (id, api_key, api_secret) are already documented in the schema. The description adds no new parameter-level meaning beyond mentioning that API key and secret will be visible, so the baseline of 3 is appropriate.

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 description states a specific verb and resource: 'Connect GoDaddy API credentials to a domain for automated DNS record management.' It clearly identifies the provider (GoDaddy), the action (connect credentials), and the purpose (automated DNS management), and is readily distinguishable from siblings like connect_cloudflare and connect_dns_provider.

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?

The description provides explicit prerequisites and a usage sequence: it requires a Proof account, instructs the agent to authenticate the client or use start_login, and notes that a session opens the tool before calling it again. It does not explicitly state when not to use it or contrast it with connect_dns_provider/connect_cloudflare, but the context is clear enough for the GoDaddy case.

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

create_accountAInspect

Create an account-bootstrap session for agent-driven onboarding. Public endpoint (no API key required). Returns a session id, channel-specific instructions, and — FOR TELEGRAM AND WHATSAPP ONLY — deep_link, qr_code (base64 PNG) and qr_text (UTF-8 text QR).

The endpoint is safe to call regardless of whether the submitted identity is new: completing verification transparently creates a User when none exists, or logs the user in when one already does. The response is intentionally uniform — the server does NOT reveal whether the identity is already registered (this would be a user-enumeration oracle). If the agent needs to distinguish new-vs-returning users, call get_current_user after verification and inspect the user's created_at.

EMAIL CHANNEL SENDS NOTHING HERE. The response carries email_sent=false and send_required=true: confirm with the user that the address is theirs, then call send_account_email. The other channels dispatch nothing either way — the user sends the first message themselves (reverse OTP).

Agent usage: (1) Call create_account with the user's chosen channel. (2) For email, confirm with the user and call send_account_email. On telegram/whatsapp pass deep_link to render_auth_link, which prints the clickable link and a QR code beneath it. On sms deep_link is an EMPTY STRING and render_auth_link will reject it — show sms_message, which is what the user sends; this response carries no destination number, so do not invent one. Do not hand qr_text to a link renderer either — it is the link already rendered as QR art; print it verbatim inside a fenced code block if a real terminal needs the QR. (3) Call wait_for_account_creation with the session id until verification completes. (4) On verified, JWT + refresh cookies are set; proceed with whatever follow-up the agent was asked to do.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoEmail address. Required for email channel.
channelYesAuthentication channel the user will verify through
phone_numberNoE.164 phone number. Required for SMS channel (determines DID routing).

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral disclosure burden. It reveals that the endpoint is public, that it creates a user or logs one in, that the response is intentionally uniform to avoid user enumeration, that email sends nothing, that sms responses contain no destination number, and that verification sets JWT and refresh cookies. This is exceptionally transparent.

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

Conciseness5/5

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

Although lengthy, the description is dense, well-structured, and front-loaded with the core purpose before the workflow. Every paragraph and numbered step earns its place given the channel-specific caveats, and the warnings are concrete rather than generic.

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

Completeness5/5

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

There is no output schema, so the description takes on the burden of explaining return fields and follow-up expectations. It covers session id, deep_link, qr_code, qr_text, sms_message, email_sent, send_required, and the verification handoff. It also covers edge cases like sms lacking a destination number and the danger of treating qr_text as a link. This is complete for an onboarding tool with this complexity.

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 schema already covers all three parameters with 100% coverage, so the baseline is 3. The description adds meaningful channel-specific semantics: email requires confirmation and a follow-up call, sms requires a phone number with no destination in the response, and telegram/whatsapp use deep_link for rendering. It does not fully enumerate parameter formats beyond the schema, but it substantially augments the schema.

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?

The description identifies a specific verb and resource ('Create an account-bootstrap session for agent-driven onboarding') and adds the public-endpoint qualifier. It is clear, but it does not explicitly differentiate itself from closely related siblings like create_session, start_login, or create_verification, so an agent must infer the distinction from context.

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

Usage Guidelines5/5

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

The description gives an explicit numbered agent workflow, including when to call send_account_email versus relying on deep_link, when to use render_auth_link, and when to call wait_for_account_creation. It also states the condition for calling get_current_user to distinguish new vs. returning users, and warns against using sms deep_link or handing qr_text to a link renderer.

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

create_api_keyAInspect

Create a new API key. The secret key value is returned ONLY in this response — store it securely. Note: the secret will be visible in the AI conversation context. Optionally bind the key to a sub-account (project) via profile_id — outbound messages sent with the key are then branded as that project.

Agent usage: This operation requires 2FA. Before calling, complete the 2FA flow: (1) call start_2fa with action_type "api_key_create" and the user's preferred channel, (2) tell the user a code was sent and wait for them to verify, (3) poll get_2fa_status until status is "verified", (4) then call create_api_key — the backend session will be elevated. If you get a 403, the 2FA session has expired — restart the flow.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHuman-readable key name
scopesNoPermission scopes for the key
profile_idNoBind the new key to a sub-account (PublicProfile) project you own (24-hex id). Immutable after creation; omit for an unbound account-wide key.
environmentNoKey environment (default: production)

TDQS

A4.6/5.0
Behavior5/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—and it delivers. It discloses that the secret is shown only once, that it remains visible in the AI conversation context, that profile_id is immutable after creation, that 2FA must be completed first, and that a 403 means the 2FA session expired.

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?

The description is longer than average, but it is front-loaded with the core behavior and organized into clear sections for agent usage and access. Each sentence carries operational weight—security warnings, 2FA steps, and error recovery—so the length is justified by the tool's complexity.

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

Completeness5/5

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

For a complex, security-sensitive creation tool with no output schema, the description covers all critical aspects: response behavior (secret only in this response), parameter nuances, 2FA prerequisite, authentication path, and failure handling. Nothing essential for correct invocation is missing.

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 coverage is 100%, so the schema already documents name, scopes, profile_id, and environment. The description adds meaning beyond the schema by explaining how profile_id affects behavior: outbound messages sent with the key are branded as that project. This extra semantic context justifies a score above the baseline.

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 description opens with a specific verb and resource: 'Create a new API key.' It adds distinguishing details—the secret is returned only once, and the key can be bound to a sub-account via profile_id—which separate it clearly from siblings like regenerate_api_key, revoke_api_key, and list_api_keys.

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?

The description gives an explicit, numbered 2FA workflow and states the access prerequisite ('needs a Proof account', authenticate or start_login). It clearly explains when create_api_key can be called and how to recover from a 403. It does not explicitly contrast this tool with sibling API-key tools, but the usage path is unambiguous.

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

create_authorizationAInspect

Create a new authorization request. Authorizations grant permission to send confirmations to a user via a specific channel. The user must approve the authorization before confirmations can be sent.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bsuidNoWhatsApp Business-Scoped User ID (alternative to phone for WhatsApp channel)
phoneYesTarget phone number in E.164 format (e.g., +15551234567)
scopeNoAuthorization scope (default: confirmations)
channelYesChannel for sending confirmations
hitl_idYesHITL configuration ID to link this authorization to
recipientYesChannel-specific recipient identifier (chat_id for Telegram, phone/BSUID for WhatsApp)
expires_inNoExpiry in seconds (max 90 days, default 90 days)
business_nameYesBusiness name displayed to user during authorization
business_profile_idNoPublic profile ID for branding

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden and does add useful behavior: the authorization is only a request until the user approves, and authentication is required. It does not disclose the result of a successful call, error conditions, or side effects beyond creation.

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

Conciseness5/5

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

Every sentence earns its place: purpose, permission semantics, approval behavior, access prerequisite, and a clarifying exclusion about start_login. The access note is front-loaded after the core purpose and is not padding.

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

Completeness3/5

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

For a 9-parameter creation tool with no annotations and no output schema, the description covers the high-level lifecycle and authentication prerequisite but omits the return value/success response and next step after creation. This is adequate but has clear gaps.

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%, so the schema already documents all nine parameters. The description adds business context (channel-specific permissions, approval requirement) but no parameter-level detail beyond the schema.

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?

The description opens with a specific verb and resource: 'Create a new authorization request' and explains that authorizations permit sending confirmations via a channel. It does not explicitly distinguish from sibling request_hitl_authorization, so it misses the top bar.

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?

It gives clear context: the tool is for creating an authorization that requires user approval before confirmations are sent, and it must be preceded by Proof account authentication. It lacks explicit alternatives or when-not-to-use statements beyond noting start_login does not open this tool.

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

create_chat_id_discoveryAInspect

Create a Telegram chat ID discovery token. Returns a deep_link, qr_code (base64 PNG), and qr_text (UTF-8 text QR for terminal display). The user opens the link in Telegram, which reveals their chat ID for HITL config setup.

Agent usage: pass the response's deep_link to render_auth_link so the user can click or scan it. Never hand qr_text to a link renderer — it is that same link already rendered as QR art. Print it verbatim inside a fenced code block only when a real terminal needs the QR. Then poll poll_chat_id_discovery with the returned token until the chat_id appears. Use the discovered chat_id when creating a HITL config with a Telegram channel.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description takes on the full burden of behavior disclosure. It reveals the authentication prerequisite (Proof account, /mcp → Authenticate), the need to call the tool again after auth, and the special rendering behavior of qr_text. It could add token lifecycle details (e.g., expiration) but already covers the most critical behavioral traits.

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?

The description is longer than strictly necessary but is well-structured into purpose, agent usage, and access prerequisites. Every sentence contributes to correct invocation. It is front-loaded with the core purpose and return fields before deeper instructions.

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

Completeness5/5

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

For a parameterless tool with no output schema, the description effectively covers the full workflow: what it returns, how to use the returns with siblings, the authentication requirement, and the downstream use of the discovered chat_id. It even clarifies the relationship to start_login. Nothing critical is missing for an agent to invoke this tool correctly.

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 input schema has zero parameters, so the baseline is 4. The description adds useful context about the return values and how they should be consumed, but there are no parameters to clarify. It does not need to compensate for undocumented parameters since none exist.

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 description states a clear verb ('Create'), a specific resource ('Telegram chat ID discovery token'), and lists the exact return fields (deep_link, qr_code, qr_text). It also distinguishes itself from related siblings by explicitly referencing render_auth_link, poll_chat_id_discovery, and start_login.

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

Usage Guidelines5/5

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

Provides explicit agent usage instructions: pass deep_link to render_auth_link, never hand qr_text to a link renderer, print qr_text in a fenced block only for a terminal, and then poll poll_chat_id_discovery. Also states start_login does NOT open this tool, clarifying when not to use it.

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

create_circleAInspect

Create a Circle — a named group of trusted contacts (the people-primitive powering Proof-Me and Approvals-on-Circle). Optionally seed initial members; each member's declared channels are stored so they can be invited to enroll.

Agent usage: after creating a Circle, add members with add_circle_member (or seed them here), then invite_circle_member to mint the enrollment deep link each contact taps to bind their messenger identity.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable name for the Circle
membersNoInitial members (name + optional declared channels)
profile_idNoPublic profile (sub-account) to bind for branded messages — create-only
proof_me_enabledNoEnable Proof-Me drills for this Circle

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the Proof account authentication prerequisite, warns that start_login will not open the tool, and explains that declared member channels are stored for later enrollment. It does not describe the return value or other side effects, but the key operational behaviors are covered.

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

Conciseness5/5

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

Three short paragraphs with no filler: the definition is front-loaded, the workflow is isolated under 'Agent usage', and the authentication caveat is clearly separated. Every sentence contributes either to understanding the resource or calling it correctly.

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 create tool with no output schema and no annotations, the description covers the essential context: what a Circle is, how to seed members, what to do next, and the auth precondition. It falls just short of perfect because it does not mention what the tool returns, such as the Circle ID an agent would likely need for add_circle_member or invite_circle_member.

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 schema already documents 100% of the parameters, so the baseline is 3. The description adds value by explaining that members are optional initial seeds, that declared channels are stored so members can later be invited to enroll, and by linking parameters to the follow-up workflow.

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 description opens with a specific verb and resource: 'Create a Circle' and defines it as a named group of trusted contacts powering Proof-Me and Approvals-on-Circle. This clearly distinguishes it from the many sibling tools and explains the optional members-seeding behavior.

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

Usage Guidelines5/5

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

The 'Agent usage' paragraph gives an explicit workflow: create the Circle, add members via add_circle_member or seed them here, then invite_circle_member to mint the enrollment deep link. The ACCESS note also clarifies when not to use this tool, stating that start_login does NOT open it.

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

create_circle_member_drillAInspect

Fire an on-demand Proof-Me drill against one enrolled member — a real cross-channel identity challenge carrying the scheduled-safety-check label (the account owner practices confirming). Complements the automated daily drill + monthly reinforcement sweeps.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID
member_idYesMember ID to drill

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and largely delivers: it discloses the important behavioral trait that the drill carries the scheduled-safety-check label, so the account owner sees it as a practice confirmation. It also states the authentication requirement. It stops short of explaining side effects or what happens after the drill fires, but the core effect is transparent.

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

Conciseness5/5

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

The description is compact and front-loaded: action, target, key label nuance, and relationship to automated drills appear first; the access/authentication note is brief and useful. No sentence wastes space or merely restates the tool name.

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?

Given two documented parameters, no output schema, and no annotations, the description covers what the tool does, the scope (one member), the access prerequisite, and the on-demand vs. automated context. The main gap is post-call behavior (what the caller should expect after the drill fires), but the absence of an output schema reduces that burden.

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?

The input schema already documents both parameters with patterns and descriptions, providing 100% coverage. The description adds only a small semantic nuance: the member must be 'enrolled.' Since the schema does the heavy lifting, the baseline 3 applies.

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?

The description uses a specific verb ('fire') and a specific resource ('an on-demand Proof-Me drill against one enrolled member'), and clarifies the nature of the drill as a cross-channel identity challenge with a scheduled-safety-check label. It distinguishes itself from automated drills by calling out 'on-demand' and 'Complements the automated daily drill + monthly reinforcement sweeps,' though it does not explicitly name a sibling tool like trigger_drill.

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?

The description gives clear context: use this for an on-demand drill against a single enrolled member, complementing automated sweeps. It provides a concrete prerequisite ('needs a Proof account'), tells the agent to authenticate before retrying, and includes an explicit exclusion ('start_login does NOT open this tool'). It does not route among drill-related sibling tools, but enough guidance exists for correct selection.

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

create_confirmationAInspect

Create a HITL confirmation request. Sends an approval request to the channels configured on the referenced HITL config. First response wins.

Agent usage: The HITL config referenced by hitl_id must be authorized before you can create confirmations. If this returns a 403 or "not authorized" error, call request_hitl_authorization on the HITL config first, then wait for the user to approve via the messaging channel. After creating a confirmation, poll get_confirmation to check for approval/denial, or use get_confirmation_approval_link to generate a fresh link for the user.

Encryption is NOT optional: a HITL config cannot send confirmations without a keypair, the human approves by decrypting in their browser, and message must be a JSON ciphertext envelope. Plaintext is refused with 400 message_not_encrypted; an envelope sealed to another key with 400 message_key_mismatch. Choose the version by who must be able to decrypt:

  • v1 (single-recipient): wraps the content key for the config owner only. Use ONLY when there are no enrolled non-owner approvers — with approvers enrolled it is refused with 400 envelope_missing_approvers.

  • v2 (multi-recipient): additionally wraps the content key for each enrolled approver via an approver_ek map, so every approver can decrypt. Build it with the SDK encryptMessageV2(plaintext, ownerPublicKey, hitlId, approverKeys) after fetching the approvers via the SDK getApproverKeys(hitlId) (GET /api/v1/hitl/:id/approver-keys). AAD is the hitlId.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID whose channels will receive the approval request
messageYesThe client-encrypted ciphertext envelope as a JSON string (v1 or v2) — NOT the human-readable text. Encrypt the sentence the approver should read; passing it directly is refused with 400 `message_not_encrypted`, because the approval page can only decrypt an envelope.
proof_expiry_daysNoPer-request proof expiry override in days (7, 30, 90, or 365)

TDQS

A5/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 behavioral burden and meets it: it discloses destination channels, first-response-wins semantics, mandatory encryption, the 403/400 failure modes, and v1/v2 recipient behavior. The agent can predict outcomes and error handling before calling.

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

Conciseness5/5

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

The description is long but modular: summary sentence, 'Agent usage', 'Encryption' with v1/v2 bullets, and 'ACCESS'. Every sentence earns its place given the encryption complexity and auth prerequisite, and critical information is front-loaded in the first sentence.

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

Completeness5/5

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

For a state-changing tool with nuanced encryption requirements and no output schema, the description covers preconditions, post-call polling, error recovery, and authentication. An agent has enough information to invoke it successfully and handle expected failures.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds substantial meaning: message must be a ciphertext envelope, plaintext gets rejected, v1/v2 key-wrapping differences, AAD as hitlId, and how to construct v2 via SDK calls. This is exactly the kind of parameter semantics an agent cannot infer from the schema.

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 opening sentence states the precise action and object: 'Create a HITL confirmation request' and clarifies that it sends an approval request to channels on a referenced HITL config. This is specific enough to distinguish it from siblings like create_hitl and get_confirmation without needing to open their schemas.

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

Usage Guidelines5/5

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

The 'Agent usage' section is an explicit playbook: authorize the HITL config first, call request_hitl_authorization on a 403, then poll get_confirmation or use get_confirmation_approval_link. It even warns that start_login does NOT open this tool, removing ambiguity about authentication.

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

create_delegationAInspect

Create a delegation (Proof of Delegation): a control-proven domain authorizes a typed url/purl artifact for a set of capability scopes and receives a publishable signed token. The attestation is that the domain's controller authorized this artifact — nothing more; it says nothing about the artifact or the business behind it. Each mint is a billable proof. A requested lifetime longer than the control proof's remainder is rejected, never truncated. The result carries the publishable token AND the DERIVED effective_status/is_valid — the same pair the list and get tools return, so the shape does not depend on which verb produced it.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYes1-32 capability scopes: lowercase kebab-case tokens, at most 64 characters each (e.g. send-email). NOT API scopes — an API-style resource:action such as payments:read is rejected with invalid_scope.
delegateYesThe typed artifact being authorized
expires_inNoLifetime in seconds (must not exceed the control proof's remainder)
control_proofYesPublic handle (ph_ctl_<32 hex>) of YOUR active domain control proof

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral disclosure burden. It reveals that the attestation says nothing about the artifact or business behind it, that each mint is billable, that over-long lifetimes are rejected and never truncated, and that the result consistently includes the effective_status/is_valid pair across create/get/list. These are significant behavioral commitments beyond a simple 'creates X' statement.

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

Conciseness5/5

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

The description is dense but every sentence carries information: core semantics, attestation limits, billing, lifetime behavior, response shape consistency, and authentication requirements. It is front-loaded with the main definition and uses an ACCESS section for operational prerequisites. No filler or repeated schema content is present.

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

Completeness5/5

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

There is no output schema, so the description appropriately explains the return result (publishable token plus DERIVED effective_status/is_valid). It also covers authentication, proof account requirements, the key lifetime constraint, billing, and the exact scope of the attestation. Given the complexity of a billable, security-sensitive minting operation, this is remarkably complete.

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%, so the schema already documents all four parameters, including format constraints, examples, and rejection rules. The description adds useful high-level context like the control proof remainder relationship and the publishable signed token, but it does not materially add per-parameter meaning beyond the schema. This meets the baseline for high schema coverage.

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 description states a specific action ('Create a delegation'), the precise resource ('a typed url/purl artifact'), and the exact scope of the operation ('for a set of capability scopes'). It also clarifies what the attestation does and does not mean, which distinguishes it from a generic create tool. This is far beyond a tautology or vague restatement.

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?

The description gives clear prerequisites and a when-not condition: it requires a Proof account and explicit authentication, and states that start_login does NOT open this tool. It also frames the operation around control-proven domains, which implies when it is appropriate. It does not explicitly compare against related tools like create_authorization or verify_delegation, but the access guidance is concrete and actionable.

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

create_dns_credentialAInspect

Store DNS provider credentials for automated domain verification. Note: credentials will be visible in the AI conversation context.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYesDNS provider identifier (e.g. cloudflare, route53, digitalocean)
credentialsYesProvider-specific credential key-value pairs

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full transparency burden. It usefully warns that credentials will be visible in the AI conversation context and explains that authentication is required before the tool can be called. It does not address overwrite or idempotency semantics, so it is not a 5.

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?

The purpose and privacy warning are front-loaded in two compact sentences, and the access note is operationally relevant. The phrasing of the start_login flow is slightly awkward, but there is no wasted text.

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 simple two-parameter creation tool, the description covers the operation's purpose, the sensitive-data caveat, and the required authentication flow. It does not describe return values, but there is no output schema and the invocation path is otherwise sufficiently complete.

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?

The input schema already provides 100% coverage for both parameters, including examples for provider and a description for credentials. The description adds no parameter-level detail beyond the schema, so baseline 3 is appropriate.

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?

Clearly identifies a specific action ('Store DNS provider credentials') and its purpose ('automated domain verification'). It is distinguishing enough at a glance, though it does not explicitly differentiate itself from similar siblings like connect_dns_provider or add_verification_provider.

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?

The description gives clear contextual guidance: this tool is for storing credentials for automated domain verification, and it explains the required access preconditions ('needs a Proof account', authenticate via /mcp or start_login). It does not name alternatives or state when not to use it, so it stops short of full routing guidance.

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

create_hitlAInspect

Create a HITL (Human-in-the-Loop) config. Defines which messaging channels receive approval requests and the default timeout.

Agent usage: After creating a HITL config, you must call request_hitl_authorization before it can be used with create_confirmation. For Telegram channels, use create_chat_id_discovery first to discover the user's chat ID, then include it in the channel config.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable name for this HITL config
channelsYesMessaging channels for approval requests (telegram or whatsapp)
timeout_secondsNoDefault timeout in seconds (60–86400, default: 3600)

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does well: it discloses the authentication requirement, that account access is needed, and that creating a config is not sufficient on its own—authorization must be requested before use. It doesn't describe return values or side effects, but the workflow and prerequisite context are strong.

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

Conciseness5/5

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

The description is organized into three clear paragraphs: core purpose, agent workflow, and access note. Every sentence adds operational value, the purpose is front-loaded, and there is no redundant or vague filler.

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?

The description covers the key contextual needs: prerequisites, authentication, sequencing with sibling tools, and channel-specific setup. It does not explain what the tool returns after creation, but there is no output schema and the steps needed to invoke it correctly are sufficiently complete.

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 coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining that channels are for approval requests, and specifically instructs how to obtain and include the Telegram chat_id via create_chat_id_discovery, which is not implied by the schema alone.

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 description opens with 'Create a HITL config', a specific verb and resource, then clarifies the config's role: defining messaging channels and default timeout. This clearly distinguishes it from related siblings like update_hitl, delete_hitl, get_hitl, and request_hitl_authorization.

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

Usage Guidelines5/5

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

The 'Agent usage' section explicitly tells the agent what to do before and after calling this tool: call request_hitl_authorization after creation and create_chat_id_discovery first for Telegram. It also states access requirements and that start_login does NOT open this tool, giving clear when-to-use and when-not-to-use guidance.

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

create_identity_challengeAInspect

Create a Proof-Me cross-channel identity challenge (CONFIRM) for an enrolled challenger. The account holder approves/denies on a channel different from the one the suspicious contact reached the challenger on.

Agent usage: poll get_identity_challenge with the returned ID until it reaches a terminal state (active = confirmed, denied, expired).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config that holds the challenger
challenger_idYesEnrolled challenger initiating the check
suspicious_channelNoChannel the suspicious contact reached the challenger on; defaults to the challenger channel

TDQS

A4.1/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 discloses key behavior: it creates an asynchronous challenge, requires polling get_identity_challenge until terminal states (confirmed, denied, expired), and needs an authenticated Proof account. It also clarifies that start_login does not open this tool, preventing a common auth mistake.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, then agent usage, then access notes. Every sentence earns its place with no filler.

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 tool with no annotations and no output schema, the description covers the critical operational details: auth requirements, polling flow, and terminal states. It could go further by describing the non-ID fields in the initial response or error cases, but it is largely complete.

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%, so the schema already documents all three parameters. The description adds context for why suspicious_channel matters, but does not add syntax or format details beyond what the schema provides.

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?

The description states a specific verb ('Create') and resource ('Proof-Me cross-channel identity challenge'), plus scope ('for an enrolled challenger'). It does not explicitly distinguish this from creation siblings like create_confirmation or create_multi_channel_verification, so sibling differentiation is missing.

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?

It gives a clear usage scenario: the account holder approves/denies on a different channel than the suspicious contact. It also tells the agent to poll get_identity_challenge with the returned ID. However, it does not state when to prefer this over sibling creation tools.

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

create_multi_channel_verificationAInspect

Create a multi-channel phone verification: one phone number challenged over several channels at once (OR / first-wins). The first channel the user completes wins, yields a single proof token, and cancels the losing siblings. Exactly one proof is billed, at the winning channel's completion — not one per channel, and nothing at creation.

Agent usage: the response includes a group_id (format vg_) and a channels array — each block carries a deep_link (WhatsApp/Telegram) or an sms_message to present to the user — pass the deep_link to render_auth_link. A block's qr_text is that same link already rendered as QR art, not an alternative address: print it verbatim inside a fenced code block or leave it out. Poll get_multi_channel_verification_status with the group_id to track completion and retrieve the proof token when a channel verifies.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesAsset type — only "phone" is supported
channelsYes1-4 unique channels attempted in parallel (first to complete wins)
identifierYesPhone number in E.164 format
client_metadataNoCustom key-value metadata
external_user_idNoYour application user ID for grouping verifications
proof_expiry_daysNoPer-request proof expiry override in days (1-365)

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly: it discloses the first-wins cancellation behavior, single-billing at the winning channel's completion, the response structure (group_id, channels array with deep_link/sms_message, qr_text semantics), and the polling requirement. No behavioral trait is left ambiguous.

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?

The description is well-structured and front-loaded with the core semantics, then a clearly labeled 'Agent usage' block. Every sentence earns its place, though it is somewhat dense. It avoids fluff and redundancy, making it easy to parse.

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

Completeness5/5

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

With no output schema, the description compensates fully: it explains the response format (group_id, channels array with deep_link/sms_message, qr_text), how to present links, and how to poll for completion. It also covers access requirements. Nothing an agent needs to call and handle this tool correctly is missing.

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 coverage is 100%, so the schema already documents all six parameters. The description adds no additional meaning to the parameters themselves; the 'first to complete wins' behavior for the channels array is already in the schema description. Baseline 3 is appropriate.

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 description opens with a specific verb and resource ('Create a multi-channel phone verification') and immediately distinguishes its semantics (OR/first-wins) from any single-channel alternative. It clearly differentiates from sibling tools like create_verification by the parallel-channels behavior and the explicit mention of group_id and cancellation of losing siblings.

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

Usage Guidelines5/5

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

Provides an explicit 'Agent usage' section that tells the agent exactly how to handle the response (pass deep_link to render_auth_link, print qr_text verbatim or omit, poll with get_multi_channel_verification_status). It also warns that start_login does NOT open this tool and requires a Proof account, giving clear when-to/not-to guidance.

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

create_profileAInspect

Create a new profile with optional display name, bio, avatar, business info, and theme settings.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bioNoProfile bio
themeNoProfile theme settings
is_publicNoWhether the profile is publicly visible
avatar_urlNoAvatar as base64 data URI or URL (~75KB limit)
is_primaryNoSet as primary profile
is_businessNoWhether this is a business profile
display_nameNoDisplay name
business_nameNoBusiness name

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must stand alone, and it does add useful operational context by requiring prior authentication and explaining the retry step. It does not disclose side effects (e.g., is_primary behavior), whether creation is idempotent, or what the success/error contract looks like.

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

Conciseness5/5

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

The action is stated in the first sentence, and the access note is a separate short block. There is no filler, and each sentence contributes either the purpose or a critical precondition.

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

Completeness3/5

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

The description includes the key gating information (account needed, authentication flow) and a high-level field summary, which is meaningful. However, with no output schema and no annotations, it leaves out return values, error behavior, and profile management semantics, so an agent still has to infer several important calling details.

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?

The input schema already describes all 8 parameters (100% coverage), so the baseline is 3. The description only groups the parameters into categories and adds no semantics beyond the schema, such as constraints or interactions between is_primary, is_public, and is_business.

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 description opens with 'Create a new profile' and names the supported payload areas (display name, bio, avatar, business info, theme settings), giving a specific verb, resource, and scope. The word 'new' distinguishes it from profile-update and profile-deletion siblings.

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

Usage Guidelines3/5

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

It clearly states the access precondition (Proof account, authenticate the client) and warns that start_login does not open the tool, which prevents a known wrong workflow. However, it never says when to choose create_profile over related tools like update_profile, set_primary_profile, or list_profiles.

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

create_sessionAInspect

Create a new phone verification session. Returns deep_link, qr_code (base64 PNG), and qr_text (UTF-8 text QR for terminal display). Sessions provide a hosted verification flow with callbacks.

Agent usage: After creating a session, pass the response's deep_link to render_auth_link so the user can open or scan it. Never hand qr_text to a link renderer — it is that link already rendered as QR art. Print it verbatim inside a fenced code block only when a real terminal needs the QR. Then use wait_for_session to poll until the session reaches a terminal state (verified, failed, or expired).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesVerification channel
metadataNoCustom key-value metadata
template_idNoCustom template ID
callback_urlNoURL to redirect after verification
phone_numberYesPhone number in E.164 format
external_user_idNoYour application user ID

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full disclosure burden. It names the three return artifacts and their formats, explains that sessions are hosted with callbacks, warns about the qr_text misuse trap, and calls out the Proof account authentication prerequisite. This goes well beyond what the schema alone reveals.

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

Conciseness5/5

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

The description is well-organized with clear sections: purpose/returns, agent usage, and access. Every sentence adds operational value, from the terminal-state polling hint to the authentication note. It is longer than average but not padded, and the scoping information is front-loaded.

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 tool with 6 parameters, no output schema, and no annotations, the description is remarkably complete: it covers return format, next steps, auth requirements, and lifecycle states. It does not detail error handling or channel-specific behavior, but the schema already documents the channel enum. A small gap remains around side effects like message delivery, which are implied but not explicit.

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%, so the baseline is 3. The description does not add parameter-level details beyond what the schema already documents, but it does contextualize some outputs (like qr_text) that relate indirectly to channel and phone_number. It neither harms nor materially enhances parameter understanding.

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 description states a specific verb and resource: 'Create a new phone verification session', and immediately distinguishes it from sibling tools by naming render_auth_link and wait_for_session as downstream consumers. It also clarifies what the tool returns (deep_link, qr_code, qr_text), leaving no ambiguity about its role.

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

Usage Guidelines5/5

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

The 'Agent usage' section gives an explicit orchestration sequence: pass deep_link to render_auth_link, never render qr_text with a link renderer, and poll with wait_for_session. It also explicitly states a when-not-to-use condition: 'start_login does NOT open this tool.' This is exemplary usage guidance.

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

create_user_requestAInspect

Create a new verification request to ask another user to share verified assets.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetsYesAsset type identifiers to request (e.g. email, phone, identity)
partial_okNoWhether partial asset sharing is acceptable (default: false)
action_typeNoPurpose of the request (default: verification)
callback_urlNoWebhook URL for request status updates
redirect_urlNoURL to redirect the subject after completing the request
reference_idNoExternal reference ID for tracking
action_contextNoAdditional context about why assets are needed
expires_in_hoursNoHours until request expires (default: 24)
public_profile_idNoPublic profile ID for branding
validity_requirementNoRequired validity level for shared assets

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 full behavioral disclosure. It does disclose the authentication prerequisite and session dependency, which is useful, but it does not describe the side effects of creation, such as whether the request is cancellable, how it is delivered to the other user, or what happens after submission.

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

Conciseness5/5

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

Two succinct sentences with zero filler. The purpose is front-loaded)Skip, and the ACCESS note is directly actionable for an agent that may hit an auth wall on the first call.

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

Completeness2/5

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

The description does not explain how the 'other user' is addressed, given that the schema has no recipient identifier parameter. It also does not clarify the post-creation flow (e.g., sharing a link, claim step, cancellation), and there is no output schema to compensate. For a 10-parameter tool with no annotations, this is a significant gap.

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?

The input schema already documents all 10 parameters with descriptions (100% coverage), so the baseline is 3. The description adds only a general sense that 'assets' refers to what is requested, which does not go beyond the schema.

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?

The description clearly states the action (create a new verification request) and the resource (asking another user to share verified assets). It is specific but does not explicitly differentiate itself from similar siblings like create_verification_request, relying mostly on the word 'user' in the name.

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?

Provides concrete usage context: requires a Proof account, and tells the agent exactly how to authenticate if it is not yet authenticated (via start_login). It does not mention alternatives or exclusions, so it misses the top rung.

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

create_verificationAInspect

Create a new identity verification. Initiates a verification flow for an asset identifier (phone number, email, domain, social handle, wallet address, account, or Telegram bot).

Agent usage: pass the asset type, the delivery channel, and the identifier (e.g. type "phone", channel "sms", identifier "+37060000000"; or type "email", channel "email", identifier "user@example.com"). The response carries a challenge object with the instruction for the chosen channel — except a telegram_bot verification made with a LIVE key, which the server completes on the spot and answers with status: verified plus a proof token and no challenge at all; with a pk_test_ key that same call stays pending and does carry a challenge. On the messenger channels it also carries challenge.deep_link — pass THAT to render_auth_link to give the user a clickable link and a QR code. This endpoint returns no qr_text at all. For OTP-based flows (sms/email), the user receives a code — poll get_verification or use wait_for_verification to track completion. For Telegram/WhatsApp, the user clicks the deep link to verify.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesAsset type being verified
channelYesVerification channel (must match the asset type, e.g. sms/whatsapp/telegram for phone)
bot_tokenNoTelegram bot token (required for channel "telegram_bot_token")
identifierYesThe asset identifier to verify (E.164 phone, email address, domain, handle, wallet address, ...)
dns_providerNoDNS provider credentials (required for channel "auto")
email_prefixNoMailbox prefix for domain email verification
client_metadataNoCustom key-value metadata
external_user_idNoYour application user ID for grouping verifications
proof_expiry_daysNoPer-request proof expiry override in days (1-365)

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and does so thoroughly. It details the response shape (challenge object, status, proof token), the critical LIVE vs pk_test_ telegram_bot difference, the presence of deep_link on messenger channels, the absence of qr_text, and the OTP vs deep-link interaction model. This is genuinely transparent about non-obvious behavior.

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?

The description is long but dense with necessary operational detail: required parameters, examples, response variations, downstream tool usage, and authentication prerequisites. Every sentence earns its place for a tool with this many branching behaviors, though it could be more scannable with bullet points.

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 complex 9-parameter tool with nested objects and no output schema, the description is unusually complete: it covers required inputs, key response fields, channel-specific flows, follow-up tools, and access requirements. It does not elaborate on less common optional parameters like dns_provider or email_prefix, but the schema descriptions cover those, so nothing critical is missing.

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 schema already covers all 9 parameters with descriptions, so the baseline is 3. The description adds meaningful value beyond the schema by giving concrete type/channel/identifier examples, explaining the relationship between type and channel, and clarifying response semantics per channel (challenge vs verified, deep_link vs OTP code). This goes beyond what the schema alone conveys.

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?

The description opens with a specific verb and resource ('Create a new identity verification') and immediately explains it initiates a verification flow for an asset identifier, listing the asset types. It is clear about what the tool does, though it does not explicitly differentiate it from similarly named siblings like create_verification_request or create_multi_channel_verification.

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?

The 'Agent usage' section gives explicit instructions on what to pass (type, channel, identifier) and includes concrete examples. It also gives clear context on follow-up behavior — polling get_verification, using wait_for_verification, and passing deep_link to render_auth_link — plus a when-not signal: start_login does NOT open this tool. It stops short of naming sibling alternatives for similar creation flows.

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

create_verification_requestAInspect

Create a multi-asset verification request. Allows verifying multiple assets (phone, email, domain, social, wallet, account, telegram_bot) in a single flow.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetsYesArray of assets to verify (1-10)
expires_inNoRequest expiry in seconds (default: 86400, max: 604800)
partial_okNoAllow partial completion (default: false)
action_typeNoPurpose of the verification (default: verification)
callback_urlNoWebhook URL for status updates (HTTPS only)
redirect_urlNoURL to redirect user after verification completes (HTTPS only)
reference_idNoYour unique reference ID for this request
action_contextNoContext displayed to user during verification
proof_expiry_daysNoPer-request proof expiry override in days (7, 30, 90, or 365)
public_profile_idNoPublic profile ID for branding

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds useful access-related behavior: authentication is required, and start_login will not open this tool. However, it does not disclose the lifecycle effect of creating a request—whether it is asynchronous, whether user action is required afterward, or what the response contains—so transparency 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.

Conciseness5/5

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

The description is front-loaded with purpose and stays tight. The first paragraph states the core behavior, and the second delivers actionable auth guidance plus a non-obvious warning. No sentence is wasted, and it avoids repeating schema details.

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

Completeness3/5

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

For a 10-parameter nested-object tool with no output schema and no annotations, this description is functional but not fully complete. It covers authentication and asset scope well, and the rich schema covers parameters, but it doesn't describe the response shape, the asynchronous verification flow, or how redirect/webhook behavior fits into the overall request lifecycle. These gaps are noticeable but not fatal.

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%, so the schema already documents all parameters including assets, expires_in, partial_ok, action_type, callback_url, redirect_url, and reference_id. The description only adds the high-level 'multi-asset in a single flow' framing, which doesn't add parameter-level meaning beyond the schema. Baseline 3 is appropriate.

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 description opens with a specific verb+object: 'Create a multi-asset verification request' and enumerates the supported asset types. This clearly defines the tool's scope and distinguishes it from single-purpose alternatives like create_verification or start_login without needing to open the 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?

The ACCESS section gives an explicit prerequisite and call sequence: a Proof account is required, the client must authenticate via /mcp, then call the tool again. It also warns that start_login does NOT open this tool, which prevents a common misuse. It doesn't name alternative request-creation tools, but the context is still clear.

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

delete_circleAInspect

Archive a Circle (soft delete — sets status to archived). It stops appearing in the default list but is recoverable via list_circles with status="archived".

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID to archive

TDQS

A4.3/5.0
Behavior4/5

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

Since there are no annotations, the description must disclose behavior. It does so clearly: soft delete sets status to archived, it stops appearing in the default list, and it is recoverable via list_circles. It also states the access requirement (Proof account) and that authentication is needed. This goes beyond a simple 'archives a circle' and covers key behavioral aspects an agent needs to know. It lacks details on return value or error cases, but these are less critical for such a simple operation.

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

Conciseness5/5

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

The description is two well-structured sentences plus a two-line access note. The main action and key behavior are front-loaded ('Archive a Circle (soft delete — sets status to archived)'), followed by the recovery context and access requirement. There is no redundant or extraneous text; every sentence adds value.

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

Completeness5/5

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

For a tool with a single parameter, no output schema, and no annotations, the description is remarkably complete. It covers purpose, behavior (soft delete, visibility change), recovery usage (list_circles with status filter), and access prerequisites (Proof account, authentication, and the note that start_login does not open this tool). An agent has all necessary information to decide whether and how to invoke this tool correctly.

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?

The input-schema provides a 100% description coverage for the single parameter 'id' ('Circle ID to archive'), including a regex pattern. The tool description adds no additional semantics or details about the parameter beyond what the schema already states. Per the rubric, with high schema coverage, a baseline of 3 is appropriate, and the description does not enhance it.

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 description states a clear, specific action: 'Archive a Circle (soft delete — sets status to archived)' with the resource 'Circle'. It clarifies the behavior (soft delete) and distinguishes it from any other sibling (there is no other delete_circle). The purpose is unambiguous and self-contained.

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?

The description provides context for when to use this tool: to archive (soft-delete) a circle, and explicitly notes recoverability via list_circles with status='archived', implying an alternative recovery path. It also includes an access precondition (Proof account, authentication) and explicitly states that start_login does NOT open this tool, giving a clear exclusion. It does not name a direct alternative to this tool because none exists among siblings, but the recovery path and access note constitute reasonable guidance.

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

delete_dns_credentialAInspect

Delete a stored DNS provider credential. Domains using this credential will need new credentials for automated verification.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDNS credential ID to delete

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly notes the destructive impact on dependent domains and includes authentication prerequisites, which goes beyond simply saying 'delete.' It does not mention all possible side effects, but the core consequence is disclosed.

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?

The description is concise and front-loaded with the core action and impact. The access/auth note is slightly verbose but relevant, and no filler sentences detract from the structure.

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?

Given this is a single-parameter delete operation with no output schema, the description covers the action, the consequence, and the authentication requirement. It could mention how to find the credential ID, but that is a minor gap for a tool this simple.

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?

The schema already fully describes the single parameter: 'DNS credential ID to delete.' The description adds no additional parameter-level meaning, but the 100% schema coverage means the baseline of 3 is appropriate.

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 description states a specific verb and resource: 'Delete a stored DNS provider credential.' This clearly distinguishes it from siblings like create_dns_credential and list_dns_credentials by calling out both the action and the object.

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?

The description provides useful context: it warns that domains using this credential will need new credentials for automated verification, which implies this is a consequential action. It does not explicitly name alternatives or when-not-to-use, but the purpose is specific enough that the usage context is clear.

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

delete_domainAInspect

Remove a domain from the account. This cannot be undone.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID to delete

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It openly states that deletion cannot be undone, and it explains the authentication/session requirement. It does not detail cascading effects or response behavior, but the major risks are surfaced.

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?

The description is economically written and front-loads the core action and irreversibility before the access instructions. The auth note is slightly verbose but every sentence contributes necessary information for invoking the tool successfully.

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 simple one-parameter delete operation with no output schema, the description adequately covers what an agent needs to know: what is deleted, that it is irreversible, and how to obtain the required session. It could mention how to find the domain ID, but the sibling list_domains tool makes that discoverable.

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?

The schema already documents the single parameter as 'Domain ID to delete,' and the description does not add much beyond that. Since schema description coverage is 100%, the baseline of 3 applies; the description simply reinforces the parameter's purpose without adding new semantic detail.

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?

The description clearly states the action ('Remove a domain from the account') with a specific verb and resource. It is unambiguous and distinct from siblings like add_domain or list_domains, though it does not explicitly name an alternative to differentiate from.

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?

The description gives explicit context for use: a Proof account is required, and it directs the agent to authenticate or use start_login to establish a session before calling the tool again. It does not discuss alternative tools, but the auth prerequisite is clear and actionable.

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

delete_hitlAInspect

Delete (archive) a HITL config. Sets status to archived. Cannot be used for new confirmations after deletion.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHITL config ID to delete

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that deletion is an archive operation that sets status to archived and that the config cannot be used for new confirmations after deletion. It also notes the authentication requirement. This provides meaningful context about the tool's effects and consequences, going beyond a simple 'deletes a config'.

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?

The description is concise, with the main action front-loaded. The ACCESS note is useful and not excessive. Every sentence contributes information: the action, the consequence, and the auth prerequisite. It is appropriately sized for a simple tool.

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 single-parameter tool with no output schema, the description covers the essential behavioral and consequence information. It explains the archive nature, the post-deletion limitation, and the auth requirement. Nothing critical for an agent to call it correctly is missing.

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%, so the id parameter is already documented. The description does not add any additional detail about the parameter beyond what the schema provides. According to the rubric, a baseline of 3 is appropriate when the schema covers the parameters, and the description doesn't compensate further.

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?

The description states a clear verb ('Delete') and resource ('HITL config'), with the parenthetical 'archive' clarifying the operation is a soft delete. It distinguishes from delete_hitl_keys by naming the resource specifically, though it doesn't explicitly contrast with update_hitl or other siblings. The action is unambiguous and specific enough for an agent to understand the tool's purpose.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like update_hitl or delete_hitl_keys. The ACCESS note about authentication is a prerequisite, not a usage directive. It implies usage when you need to archive a HITL config, but there are no exclusions or comparisons to sibling tools.

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

delete_hitl_keysAInspect

Delete the encryption keypair from a HITL config. WARNING: Existing ciphertexts will become permanently unreadable.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID

TDQS

A4.4/5.0
Behavior5/5

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

No annotations are present, so the description must carry the behavioral load. It does so strongly by warning that existing ciphertexts will become permanently unreadable, disclosing the destructive consequences, and clear access requirements.

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?

The description is compact and front-loaded: first the purpose, then the warning, then access instructions. No sentence is wasted, though the authentication workflow could be slightly tightened without losing information.

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

Completeness5/5

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

For a one-parameter destructive tool with no output schema, the description covers the essential information: what is deleted, the permanent consequence, and the authentication prerequisite. The agent has enough to decide whether to call it and what to expect.

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?

The input schema covers hitl_id fully with 100% schema description coverage, so the description does not need to add parameter detail. It adds no extra meaning beyond the schema, which is acceptable for this simple one-parameter tool.

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 description states a specific action and resource: deleting the encryption keypair from a HITL config. It is distinct from the sibling delete_hitl, which likely deletes the whole config, and from upload_hitl_keys / get_hitl_keys, which manage keys for reading or writing.

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?

The description gives clear context for use: requires a Proof account, requires authenticating the client, and explicitly warns that start_login does NOT open this tool. It does not name alternative key-management tools, but the access instructions and exclusion of start_login provide solid usage guidance.

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

delete_profileBInspect

Delete a profile by ID. Cannot delete the primary profile if it is the only one.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idYesProfile ID

TDQS

B3.4/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 behavioral disclosure burden. It adds useful context: the primary-profile restriction and the requirement to authenticate with a Proof account rather than relying on start_login. Still, it doesn't disclose irreversibility, side effects, or what a successful/failed deletion returns.

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?

The description is compact and front-loaded: core action first, constraint second, access instructions last. Each sentence adds a distinct piece of information without unnecessary padding.

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

Completeness3/5

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

For a simple one-parameter destructive tool, the key constraint and authentication requirement are covered. However, with no output schema and no annotation coverage, the description leaves the deletion's permanence, side effects, and expected return behavior to inference.

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?

There is only one parameter, profile_id, and the schema already describes it as 'Profile ID' with 100% coverage. The description adds no additional parameter meaning beyond saying deletion is by ID, so the baseline score of 3 applies.

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 ('Delete'), resource ('profile'), and lookup key ('by ID'). It is clear and unambiguous, though it doesn't explicitly differentiate itself from sibling deletion tools like delete_profile_template.

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

Usage Guidelines3/5

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

The description implies the tool is used when a profile needs to be deleted and gives one important exclusion (cannot delete the primary profile if it is the only one). However, it does not name alternatives or provide explicit when-to-use versus when-not-to-use guidance beyond that constraint.

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

delete_profile_templateAInspect

Delete a custom profile template, reverting to the default template for that channel and message type.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesMessage type (e.g. verification_request, login_request)
channelYesMessage channel
profile_idYesProfile ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of exposing behavior and does so by stating the destructive effect, the fallback to the default template, and the authentication prerequisite. It could add whether the deletion is permanent or how errors are surfaced, but the core behavior is transparent.

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

Conciseness5/5

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

The description is two short paragraphs with the core behavior first and the access warning second. Every sentence adds information, and there is no filler or repetition of the tool name.

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 three-parameter delete tool with no output schema, the description covers what happens, the required authentication, and a common failure path (unauthenticated use). It is slightly incomplete in not spelling out that profile_id selects the profile whose custom template is deleted, but the overall context is sufficient.

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 coverage is 100%, so the baseline is 3; the description does not add detail about profile_id beyond the schema. The prose 'channel and message type' mirrors the channel and type fields, and profile_id is left generic while it plausibly refers to the profile whose template is being removed.

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 description states a specific action (Delete) on a specific resource (custom profile template) and describes the consequence: reverting to the default template for the given channel and message type. The qualifier 'custom' distinguishes it from sibling tools like delete_template and delete_profile without relying on the name alone.

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

Usage Guidelines3/5

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

The description gives practical invocation guidance: a Proof account is required, the client must be authenticated, and start_login does not make this tool reachable. However, it does not explicitly say when to choose this over update_profile_template or delete_template, nor does it state conditions under which it should not be used.

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

delete_templateAInspect

Delete a custom template, reverting to the default template for that channel and message type.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesMessage channel
message_typeYesMessage type (e.g. verification_request, login_request)

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the key side effect (reverting to the default template) and the Proof account requirement, and even warns that start_login does NOT open this tool. It does not state permanence or behavior when no custom template exists, but it provides meaningful behavioral context beyond 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.

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, followed by directly useful access instructions. Every sentence earns its place, including the specific 'start_login does NOT open this tool' warning, which prevents a common wrong path.

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 simple two-parameter tool with no output schema, the description covers what the tool does, the resulting state, and the access prerequisite. It is slightly incomplete only in not mentioning alternative template-management tools or the no-custom-template edge case, but these are not critical for a correct call.

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 coverage is 100%, so the schema already documents channel and message_type. The description adds the useful connection that these parameters identify the template to delete and its channel/message-type scope, but it does not need to add more since the schema is complete.

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: 'Delete a custom template, reverting to the default template for that channel and message type.' This names the action, the target, and the consequence, and the channel/message-type scoping distinguishes it from sibling tools like delete_profile_template.

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

Usage Guidelines3/5

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

The first sentence implies the use case: call this when a custom template should be removed and the default restored. The ACCESS note gives an operational precondition ('Authenticate this client... then call this tool again'), but no explicit alternatives or when-not-to-use guidance are provided, so it is inferred rather than stated.

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

export_authorizationsAInspect

Export authorizations as CSV or JSON. Supports date range and status filtering. Maximum 10,000 records.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date filter (ISO 8601)
fromNoStart date filter (ISO 8601)
formatNoExport format (default: json)
statusNoFilter by status

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It adds valuable non-schema behaviors: the 10,000-record maximum, the Proof account requirement, and the authentication caveat about start_login. It does not disclose what happens if the limit is exceeded or whether the export has side effects, but it covers the most critical operational constraints.

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

Conciseness5/5

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

The description is compact and front-loaded: the core purpose and formats appear in the first sentence, followed by filtering and the record limit, then the access note. Every sentence contributes actionable information with no filler or repetition.

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 four-parameter export tool with no output schema and no annotations, the description covers the essential information: export purpose, formats, filters, record cap, and authentication prerequisite. The main gap is that it does not describe how the exported data is returned (file, content, URL) or what happens over the 10,000-record limit, but the description is still operationally sufficient.

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%, so the schema already fully documents to, from, format, and status. The description only restates that date range and status filtering are supported without adding syntax, defaults, or parameter interactions beyond the schema. This meets the baseline but adds no extra semantic value.

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?

The description states a specific action and resource: 'Export authorizations as CSV or JSON.' This clearly distinguishes it from read/list tools like list_authorizations and get_authorization by emphasizing bulk export with format options. However, it does not explicitly name or contrast sibling tools such as export_data, so it falls just short of full differentiation.

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?

The description gives concrete usage context: a Proof account is required, the client must be authenticated via /mcp, and the tool should be called again after authentication. It also explicitly warns that start_login does NOT open this tool, providing a useful exclusion. It does not, however, explain when to choose this over list_authorizations or export_data.

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

export_dataAInspect

Export all account data (GDPR Article 20 - Right to Data Portability). Rate limited to 1 export per 24 hours.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden. It discloses a strict rate limit (1 export per 24 hours), the account-access requirement, and the fact that this tool is not reachable via start_login. It does not say how the export is delivered, but the operational constraints are unusually explicit for a zero-parameter tool.

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

Conciseness5/5

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

The description is compact and front-loaded: purpose first, rate limit second, access flow third. Every sentence earns its place, and the authentication warning is concrete and actionable.

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 no-parameter tool in a huge sibling set, it covers the main invoke-blocking factors: what is exported, the legal scope, the rate cap, and the authentication prerequisite with a retry instruction. The only open question is the response/delivery format, but the description gives enough for safe selection and first invocation.

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 has zero parameters and schema description coverage is 100%, so there is no parameter ambiguity. The description reinforces this by focusing entirely on action and access prerequisites rather than arguments.

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 description opens with a specific verb and resource: 'Export all account data', and ties it to GDPR Article 20. This clearly distinguishes it from narrower siblings like export_authorizations and from list_* retrieval tools.

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?

It gives explicit preconditions: a Proof account is required, and the client must be authenticated before calling, with a concrete remediation path: 'Authenticate this client ... then call this tool again'. It also warns that start_login does NOT open this tool, though it does not explicitly name alternatives for scoped data exports.

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

extend_requestAInspect

Extend the expiration time of a pending verification request.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification request ID to extend

TDQS

A3.8/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 the authentication requirement (needs a Proof account, authenticate or sign in) and the sequence to follow. However, it does not disclose other behavioral aspects such as whether the operation is idempotent, what happens if the request is not pending, or any side effects. Given it's a mutation, more disclosure would be helpful, but the authentication note is valuable.

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

Conciseness5/5

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

The description is concise with two sentences. The purpose is front-loaded, and the authentication note is directly relevant and placed after the purpose. No fluff or redundancy.

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 simple one-parameter mutation with no output schema, the description includes the critical authentication prerequisite. It doesn't detail error conditions or result expectations, but given the simplicity and full schema coverage, it is reasonably complete.

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?

The schema covers 100% of the parameter (id) with a clear description. The tool description does not add extra meaning beyond the schema, so the baseline of 3 is appropriate.

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 description clearly states the action (extend) and the target (expiration time of a pending verification request). It distinguishes itself from siblings like cancel_verification_request and get_verification_request, which have different purposes.

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

Usage Guidelines3/5

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

The description implies usage from its purpose (when you want to extend expiration) but does not explicitly compare to alternatives or state when not to use it. There is no mention of when to choose a different tool, so guidance is only implicit.

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

get_2fa_statusAInspect

Check the status of a 2FA session by session ID. Returns whether the challenge has been completed, is pending, or has expired.

Agent usage: Poll this after calling start_2fa. Check every few seconds. Terminal states: "verified" (proceed with protected operation), "expired" (restart with start_2fa). While "pending", the user has not yet entered their code.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes2FA session ID

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full disclosure burden. It clearly defines all possible states, explains what 'pending' means, specifies terminal-state behavior, and includes access/auth prerequisites. This is well beyond a minimal description.

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

Conciseness5/5

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

The description is organized into a concise summary, agent usage instructions, and access requirements. Every paragraph serves a distinct purpose, and critical operational details are front-loaded.

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

Completeness5/5

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

For a simple one-parameter polling tool with no annotations and no output schema, the description is remarkably complete. It covers how to invoke, response states, terminal state handling, and authentication requirements, so an agent can call it correctly.

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%, so the schema already documents session_id as '2FA session ID.' The description adds context that this is used after start_2fa, but doesn't add substantial semantics beyond the schema baseline.

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 description uses a specific verb and resource: 'Check the status of a 2FA session by session ID.' It also enumerates the possible return states, making the tool's function unambiguous and clearly distinct from siblings like start_2fa and verify_2fa.

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?

It explicitly tells the agent to poll after calling start_2fa, to check every few seconds, and what to do at each terminal state ('expired' → restart with start_2fa, 'verified' → proceed). It lacks an explicit comparison to alternatives like wait_for_2fa, so it doesn't fully cover when-not-to-use.

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

get_add_email_statusAInspect

Check the status of an in-progress email addition by session ID.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesAdd-email session ID

TDQS

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden. It adds useful access context and the 'in-progress' constraint, but it does not explicitly state that this is a read-only/idempotent operation or describe session lifecycle or return behavior.

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?

The description is short and front-loaded with the core purpose, followed by an access note. The access note is slightly awkward ('a session opens this tool') but still earns its place by covering an important prerequisite.

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

Completeness3/5

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

For a simple status-check tool with one parameter and no output schema, the description is mostly adequate. It could be improved by naming start_add_email as the session-creation counterpart and by hinting at what status values the caller might expect.

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 coverage is 100% and the single parameter is documented as 'Add-email session ID.' The description adds minimal extra meaning beyond 'by session ID,' which matches the baseline for fully covered schemas.

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 description states a specific verb and resource: 'Check the status of an in-progress email addition by session ID.' This is precise and distinguishes the tool from related siblings like get_add_phone_status and list_emails.

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?

The description clearly implies this tool is used after an email-addition flow has been initiated and provides explicit auth prerequisites ('needs a Proof account', 'Authenticate this client... or sign in with start_login'). It does not explicitly name alternatives, but the usage context is clear.

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

get_add_phone_statusAInspect

Check the status of an in-progress phone addition by session ID. Poll until terminal state.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesAdd-phone session ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It usefully reveals that the tool requires an authenticated Proof account and that it is meant to be polled repeatedly. However, it does not describe what terminal states look like, what the response contains, or what happens with an invalid session ID.

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?

The description is compact and front-loaded: the purpose appears in the first sentence, followed by a needed access note. The parenthetical '(Claude Code: /mcp → Authenticate)' is somewhat environment-specific, but it does not make the description bloated.

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

Completeness3/5

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

For a simple one-parameter tool, this is close to sufficient: it explains what to call, with what key, and the authentication prerequisite. The main gap is the absence of return-value or terminal-state details, which matters because there is no output schema to fill that gap.

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?

The only parameter, session_id, is already fully described in the schema ('Add-phone session ID'), so schema coverage is 100%. The description's 'by session ID' simply restates the parameter and adds no extra meaning about format, origin, or lifecycle.

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 ('Check'), the resource ('status of an in-progress phone addition'), and the lookup key ('by session ID'). This makes the tool's purpose unambiguous and clearly separates it from sibling tools like start_add_phone or get_add_email_status.

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?

The description provides clear operating context: it is a polling tool ('Poll until terminal state') and it explicitly warns that authentication is required, including how to authenticate or sign in via start_login. It does not explicitly name alternatives or when-not-to-use conditions, but the invocation context is clear enough.

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

get_api_key_usageAInspect

Get per-API-key usage for a given key id: verification counts by type/channel/status, plus verification-request/confirmation/authorization totals, and attribution context (attribution_cutoff_at, attributed_fraction). Counts only — no recipient identifiers. Scoped to the authenticated account; an API-key caller may read only its own key.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe API key id to fetch usage for
environmentNoScope metrics to test or production data (default: production)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and delivers: it discloses the auth precondition, the access restriction to one's own key, the privacy guarantee ('Counts only — no recipient identifiers'), and the retry-after-login failure path. It does not cover error semantics for invalid/inactive key ids, but the safety and access profile is substantially disclosed.

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?

Two well-organized paragraphs: the first front-loads purpose, response contents, and restrictions; the second adds the access prerequisite with a concrete remedy. Every sentence earns its place, though the ACCESS guidance is slightly verbose.

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 2-parameter read tool with no output schema, the description enumerates the expected response fields well enough to compensate for the missing schema, and the auth requirement plus counts-only privacy note close the main usage gaps. Minor omissions — specific error behavior and exact failure mode of an unauthenticated call — are acceptable at this complexity.

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%, so both parameters (id, environment) are already documented in the schema; baseline 3 applies. The description adds only marginal context — it echoes 'key id' and implies that passing another account's key will fail given the own-keys-only scoping — but does not exceed what the schema provides.

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 per-API-key usage for a given key id' — and enumerates the exact response components (verification counts by type/channel/status, request/confirmation/authorization totals, attribution context). The 'per-API-key' framing plus the 'Counts only — no recipient identifiers' clarification distinguishes it from siblings like get_usage and get_self_api_key.

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?

Provides clear context: scoped to the authenticated account, API-key callers may read only their own key, and a Proof account with authentication is required — including a concrete recovery path (start_login, then call again). It does not explicitly name alternatives or when-not-to-use conditions relative to get_usage, but the usage envelope is well defined.

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

get_assetAInspect

Get a single verified asset by ID. Returns details including type, value, status, and verification timestamps.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID

TDQS

A3.5/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 burden. It discloses the authentication requirement and clarifies that start_login won't open the tool, which is useful. However, it doesn't state whether the operation is read-only, what happens on missing IDs, or any rate limits – though the word 'Get' implies a read. It adds some behavioral context but not deep transparency.

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?

The description is two paragraphs: a concise purpose sentence and a focused access note. It is front-loaded with the main action and keeps the access instruction separate. No redundant phrasing; each sentence earns its place.

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 no output schema, the description names what it returns (type, value, status, verification timestamps). It also covers the access prerequisite and the start_login caveat. Minor gaps exist – error behavior for non-verified or nonexistent IDs isn't mentioned – but for a single-get tool this is largely sufficient.

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 coverage is 100% (id is described as 'Asset ID'). The tool description adds minimal extra meaning – it refers to 'by ID' but doesn't elaborate on ID format, required type, or validation rules. The schema already documents the parameter sufficiently, so the description doesn't compensate beyond the baseline.

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?

The description clearly states 'Get a single verified asset by ID' – a specific verb, resource, and scope. It distinguishes from list_assets (list vs single) and other get_* tools by asset resource, but it doesn't explicitly name an alternative or contrast with a sibling. The term 'verified' adds precision.

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

Usage Guidelines3/5

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

The description provides actionable context: requires a Proof account, how to authenticate, and explicitly warns that start_login does not open this tool. However, it doesn't give guidance on when to choose this over list_assets or other asset-related tools, leaving alternative selection to the agent.

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

get_authorizationAInspect

Get an authorization by ID. Returns the current state of the authorization including status and usage statistics.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAuthorization ID

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It clearly signals a read-only operation ('Get', 'Returns the current state'), discloses the access requirement, and notes the authentication step. It doesn't overpromise or hide side effects; for a getter this is sufficient transparency.

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

Conciseness5/5

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

Three dense sentences: the first defines the operation and return data, the second gives the access prerequisite and concrete authentication steps, the third eliminates a common wrong path (start_login). No fluff or repetition.

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 single-parameter getter with no output schema, the description covers the essential return content (status and usage statistics) and the access prerequisite. It doesn't describe where the authorization ID comes from, but the sibling list_authorizations implies the discovery path. Minor omission, otherwise complete.

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%, with 'id' described as 'Authorization ID.' The tool description adds no further meaning about the ID format or how to obtain it. Since the schema already documents the only parameter, the baseline 3 applies.

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 description opens with a specific verb and resource: 'Get an authorization by ID.' It distinguishes itself from list_authorizations (which lists all) and revoke_authorization by clarifying it returns the current state, not a mutation. The scope is unambiguous.

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?

The description provides clear operational context: requires a Proof account, instructs the agent to authenticate first and then call again, and explicitly warns that start_login does NOT open this tool. It doesn't name alternatives like list_authorizations for finding IDs, but it gives actionable preconditions and an exclusion.

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

get_circleAInspect

Get a Circle by ID. Returns the Circle including its members and per-member channel presence booleans (an identifier is NEVER returned — SEC-PM-006).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses a meaningful security behavior ('an identifier is NEVER returned — SEC-PM-006') and the authentication prerequisite, which are not visible in the schema. The read-only nature is only implied by 'Get' rather than stated, but the added privacy and access context is substantial.

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

Conciseness5/5

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

The description is compact and front-loaded: the core purpose and return shape appear in the first sentence, followed by a tight access note. Every sentence contributes either behavioral disclosure or routing guidance; there is no filler.

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 single-parameter lookup with no output schema, the description explains what is returned, highlights a key privacy constraint, and states the authentication prerequisite. It does not specify error behavior or the exact member data shape, but the essential calling context is covered.

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?

There is one parameter, id, and schema description coverage is 100%: the schema already documents it as a Circle ID with a regex pattern. The description adds only 'by ID', which maps directly to the schema, so it does not meaningfully extend parameter semantics beyond the baseline.

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 description opens with 'Get a Circle by ID', naming a specific verb and resource, and then specifies what is returned (members and per-member channel presence booleans). It is clearly distinguishable from siblings like list_circles, create_circle, update_circle, and delete_circle.

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?

The description gives a clear access context: a Proof account is required, the client must be authenticated first, and 'start_login does NOT open this tool' is an explicit when-not. It does not explicitly name alternatives like list_circles for discovering the ID, so it falls short of full usage routing.

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

get_confirmationAInspect

Get a confirmation by ID. Returns the full confirmation including status, response, and proof token.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfirmation ID

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It discloses that authentication is required and that the tool returns the full confirmation with specific fields. However, it does not mention error handling, idempotency, or any side effects (though read-only is implied). This is adequate but not rich.

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

Conciseness5/5

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

The description is extremely concise: two sentences plus an access note. The main purpose is front-loaded, and the access requirement is clearly separated. No unnecessary words.

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 simple get-by-ID tool with one parameter and no output schema, the description covers purpose, return fields, and access prerequisites. It doesn't explain what a 'confirmation' is or potential error scenarios, but given the simplicity and sibling context, it is sufficiently complete for an agent to call it correctly.

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% because the only parameter (id) is described as 'Confirmation ID'. The description adds nothing beyond the schema's meaning, only reiterating that it fetches by ID. Baseline 3 is appropriate when schema fully documents the parameter.

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 description states a specific verb ('Get'), a resource ('confirmation by ID'), and the return content ('full confirmation including status, response, and proof token'). It clearly distinguishes from siblings like get_confirmation_approval_link and list_confirmations by specifying retrieval by ID and the returned fields.

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?

Explicitly states the access prerequisite (needs a Proof account) and provides concrete authentication steps (Claude Code: /mcp → Authenticate) before using the tool. It also clarifies that start_login does NOT open this tool, which helps the agent avoid a wrong path. It doesn't explicitly name alternative tools like list_confirmations, but the context is clear enough.

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

get_current_userAInspect

Get the current authenticated user. Returns account details, plan, and settings for the API key owner.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does provide crucial context: it reveals that authentication is required and implies a session dependency. However, it does not describe the exact return format or error behavior (e.g., what happens if not authenticated). The description starts to cover behavioral traits but is not exhaustive, so a 3 is appropriate.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, then immediately addressing the access requirement. Every word earns its place; there is no fluff. It efficiently communicates both function and usage-critical constraints.

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?

The tool is simple (no params, no output schema), so the description is nearly complete: it states what it returns and how to authenticate. It lacks explicit detail on the return schema, but with no output schema, the agent might appreciate a hint about the structure; however, the description of 'account details, plan, and settings' is sufficient for a basic understanding. Minor gap, hence 4.

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 has zero parameters, so parameter semantics are N/A. The baseline for 0 parameters is 4, and since the description provides context about what the tool returns and its preconditions, it contributes meaningfully beyond the schema. There is no schema coverage issue; the description adds value by explaining the tool's purpose and access requirements.

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 description clearly states the verb ('Get') and the resource ('current authenticated user'), and explicitly lists what it returns (account details, plan, settings). It is distinct from siblings like get_my_profile and get_verified_user by focusing on the API key owner rather than a profile or another user. No ambiguity remains about what the tool does.

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

Usage Guidelines5/5

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

The description explicitly states the prerequisite (needs a Proof account) and provides specific authentication steps, including naming the alternative tool (start_login) and describing the session flow. It tells the agent exactly when to use this tool (after authentication) and what to do if not authenticated (sign in with start_login, then call again). This is exemplary guidance.

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

get_default_templatesAInspect

Get all default message templates. These are the built-in templates used when no custom template is set.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden, and it discloses the key behavioral constraint: authentication is required and start_login won't unlock it. The verb "Get" implies a read-only operation, and no side effects are suggested. Minor gaps like error behavior are not covered, but the essential access-dependent behavior is transparent.

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

Conciseness5/5

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

The definition is compact and front-loaded: the first sentence states the tool's purpose, and the second paragraph gives the required access steps. Every sentence adds relevant information without repetition or fluff.

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

Completeness5/5

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

For a zero-parameter read-only listing tool with no output schema, the description covers the necessary context: what is returned (all default message templates), their role, and the prerequisite to call it successfully. No important context is missing.

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 has zero parameters, so the baseline is 4. The description doesn't need to explain parameter meaning because there are none to document.

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 description opens with a specific verb and resource: "Get all default message templates," and further clarifies these are "built-in templates used when no custom template is set." This clearly differentiates the tool from siblings like get_template and list_templates by scoping it to defaults.

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?

It provides concrete invocation context: a Proof account is required, the client must be authenticated, and the tool should be called again after authentication. It also warns that start_login does not open this tool. It doesn't explicitly name alternatives, but the access conditions and exclusion are actionable.

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

get_delegationAInspect

Get one of your delegations by Mongo id or ph_dlg_* handle. Returns the stored publishable token plus the DERIVED effective_status/is_valid — the delegation is only as live as the control proof it stands on (a revoked, suspended or expired domain proof invalidates it) and never outlives its own expires_at, whichever comes first.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDelegation ID (24-hex Mongo id or ph_dlg_<32 hex> handle)

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 this well. It discloses that effective_status/is_valid is derived from the underlying control proof, that revoked/suspended/expired domain proofs invalidate the delegation, and that the delegation never outlives its own expires_at. This is meaningful behavioral context beyond 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.

Conciseness5/5

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

The description is well organized: purpose and return value first, then the derivation rule, then access requirements. Every sentence carries useful information and there is no padding or repetition.

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

Completeness5/5

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

For a one-parameter read tool with no output schema, the description is fully sufficient. It explains what is returned, the meaning of derived fields, the dependency on proof validity, and the authentication prerequisite. No critical missing information prevents correct invocation.

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 pattern already documents the two accepted formats. The description reinforces this by mentioning 'Mongo id or ph_dlg_* handle,' but adds no fundamentally new parameter semantics beyond what the schema provides.

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 description states a specific verb and resource: 'Get one of your delegations by Mongo id or ph_dlg_* handle.' It also clarifies what is returned (publishable token plus effective_status/is_valid), making the tool's role distinct from list or verification siblings.

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?

The description clearly explains the authentication precondition: a Proof account is required, and start_login does NOT open this tool. It does not explicitly name alternatives like list_delegations or verify_delegation, but the single-item retrieval purpose and the exclusion of start_login provide good context.

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

get_dns_providersAInspect

Get metadata for all supported DNS providers, including required credential fields and documentation links.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden, and it discloses the access requirement, the need to authenticate, and the call-after-session behavior. It also states the returned content (metadata, credential fields, docs links), making the read-only nature clear for a getter with no side-effect warnings.

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

Conciseness5/5

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

The purpose is front-loaded in the first sentence, and the access note is a compact second paragraph with no filler. The structure makes the primary action and prerequisite immediately visible.

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

Completeness5/5

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

For a zero-parameter metadata getter with no output schema, the description covers what it returns, the account requirement, and the exact authentication path. Nothing essential is missing.

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 has zero parameters and 100% schema coverage, so there is nothing for the description to add. The phrase 'all supported DNS providers' usefully confirms the unparameterized, unfiltered scope.

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 metadata for all supported DNS providers,' and specifies the content (required credential fields, documentation links). This differentiates it from sibling tools like list_dns_credentials, which would cover user-created DNS credentials rather than the catalog of supported providers.

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?

Provides clear context: a Proof account is required and explains the authentication flow via /mcp authenticate or start_login before calling the tool. It does not explicitly name alternatives or exclusions, but the prerequisite instructions are enough for correct use.

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

get_domainAInspect

Get details of a specific domain by ID, including verification status, DNS records, and provider connections.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the authentication requirement and the data returned, but does not explicitly state that the operation is read-only and side-effect free. This is an implication from the verb, but not explicitly stated; the auth note is useful.

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

Conciseness5/5

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

The description is a single focused sentence on purpose followed by a concise authentication note. No filler; the most important information is front-loaded. Efficient and well-structured.

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 simple one-parameter getter with no output schema or annotations, the description is nearly complete. It states what is returned and how to authenticate, but does not explicitly mention it is a safe read-only call or what happens if the domain doesn't exist. Minor gaps, but largely sufficient.

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 coverage is 100% for the single 'id' parameter, so the schema already documents it. The description only repeats that it's 'by ID' without adding extra context like where to find the ID or format constraints. Baseline 3 is appropriate.

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 description clearly states the tool fetches details of a specific domain by ID, listing the returned information (verification status, DNS records, provider connections). This is a specific verb-resource combination and distinguishes it from siblings like list_domains or get_user_domain_verification_status.

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?

It implicitly indicates this is for a single known domain (by ID) and provides explicit authentication prerequisites (Proof account, authenticate via /mcp or start_login). It does not explicitly mention alternatives like list_domains for discovery, but the usage intent is clear enough.

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

get_hitlAInspect

Get a HITL config by ID. Returns the config including channels, timeout, and status.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHITL config ID

TDQS

A3.7/5.0
Behavior4/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 add value: it discloses the return shape (channels, timeout, status) and an important auth behavior. The note that 'start_login does NOT open this tool' is a genuinely useful non-obvious trait that prevents a wrong remediation path.

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?

Two tight sentences front-load the purpose and return shape, followed by a clearly separated ACCESS block. No filler, though the auth mechanics are somewhat verbose.

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 single-parameter read tool with no output schema, the description usefully enumerates the returned fields and covers the auth prerequisite. Nothing critical is missing for correct invocation.

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 coverage is 100% for the single 'id' parameter, and the schema already documents it as 'HITL config ID'. The description's 'by ID' adds no format, source, or lookup detail beyond the schema, so the baseline of 3 applies.

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 ('Get a HITL config by ID') and enumerates the returned fields (channels, timeout, status). It implicitly distinguishes itself from list_hitls by requiring an ID, but never names the sibling alternative explicitly.

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

Usage Guidelines3/5

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

The 'by ID' phrasing implies you call this when you already have a config ID, and the ACCESS note tells the agent it must authenticate first. However there is no explicit guidance on when to prefer this over list_hitls or other HITL siblings.

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

get_hitl_keysAInspect

Get the encryption keypair for a HITL config. Returns public key, encrypted private key, KDF salt, and key ID (kid).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the auth prerequisite, implies a first-call failure if unauthenticated by saying 'then call this tool again,' and documents the returned key material. It could add a note that the keypair is sensitive, but the read-only nature is clear from 'Get' and 'Returns.'

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

Conciseness5/5

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

The description is tight: one sentence for purpose and return value, one short block for access. Every sentence earns its place, including the caveat about start_login.

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

Completeness5/5

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

For a one-parameter read tool with no output schema, the description supplies the return shape and the prerequisite auth flow. There is no obvious missing information that would prevent an agent from invoking it correctly.

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 coverage is 100% and the single parameter hitl_id is documented as 'HITL config ID.' The description adds no deeper meaning beyond the schema, but none is really needed for a single, well-named parameter.

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 description uses a specific verb and resource: 'Get the encryption keypair for a HITL config,' and states the exact return fields (public key, encrypted private key, KDF salt, key ID). This clearly separates it from related HITL siblings like upload_hitl_keys or delete_hitl_keys.

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?

It gives clear conditions for calling: a Proof account is required, the client must be authenticated first, and the tool should be called again after authentication. It also warns that start_login does not open this tool. It stops short of explicitly comparing with alternatives such as upload_hitl_keys, but the access guidance is actionable.

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

get_identity_challengeAInspect

Get a Proof-Me identity challenge by ID. Returns status, the channel the CONFIRM ran on, and the proof token once confirmed. Poll this for resolution.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesIdentity challenge ID

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses authentication needs, the fact that the proof token appears only once confirmed, and that polling is expected. It does not cover not-found/error handling or status values, but these are minor for a simple getter.

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?

The first paragraph is front-loaded and directly describes behavior. The second ACCESS paragraph is extra operational context, somewhat verbose with all-caps formatting, but it earns its place by warning about auth and the start_login pitfall.

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 one-parameter read with no output schema, the description covers the essential selection/invocation needs: what the tool does, auth prerequisite, and what it returns. It leaves some ambiguity about source of the ID and exact status values, but those are not blockers.

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?

The schema already describes the only parameter (Identity challenge ID) at 100% coverage, and the description adds no additional semantics beyond restating lookup-by-ID. Baseline 3 is appropriate when the schema documents the parameter fully.

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 opening sentence uses a specific verb and resource: 'Get a Proof-Me identity challenge by ID.' It also states what is returned (status, the CONFIRM channel, and proof token once confirmed), which clearly distinguishes it from the create/list siblings and other get_* tools.

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?

It gives clear use context: 'Poll this for resolution' identifies this as the polling/read step, and the ACCESS note states an authentication prerequisite before calling again. It excludes start_login as a way to open this tool, though it does not name alternative tools beyond that path.

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

get_multi_channel_verification_statusAInspect

Get the status of a multi-channel verification group by its group_id. Returns the aggregate status (pending/verified/expired), the winning_channel once one completes, per-channel statuses, and the proof token (with expires_at) when the group is verified.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesMulti-channel verification group ID (format vg_<hex>)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently describes the returned payload, including conditional fields (winning_channel, proof token with expires_at) and the authentication prerequisite. It does not mention error cases or explicitly state non-destructiveness, but the read-only nature is clear from 'Get the status'.

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

Conciseness5/5

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

The description is two tight paragraphs: the first specifies the operation and return values, the second provides essential access instructions. No filler or repetition, and the most important scoping information is front-loaded.

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 single-parameter read tool, the description covers the necessary inputs, return fields, and authentication requirement. It does not explain error behavior when the group_id is invalid or the group is not found, but this is a minor omission given the clear access instructions and return format.

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 schema already documents group_id as the multi-channel verification group ID with format vg_<hex>. The description does not add additional parameter meaning beyond what the schema provides, so the baseline of 3 is appropriate.

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 description states a specific verb ('Get') and resource ('status of a multi-channel verification group') with a clear identifier ('group_id'). It enumerates the exact returned fields (aggregate status, winning_channel, per-channel statuses, proof token), which distinguishes it from sibling get_* tools like get_verification or get_user_domain_verification_status.

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?

The description gives explicit access context: a Proof account is required, the client must be authenticated first, and it explicitly warns that start_login does NOT open this tool. This is clear when-to-use direction, though it does not name alternative tools for comparison.

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

get_my_profileAInspect

Get the current user's primary profile. Returns profile details, theme, custom links, and public proof display settings.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Because no annotations are provided, the description carries the transparency burden. It discloses the auth requirement, the need to re-call after authentication, and the start_login caveat, and it describes the returned data. It doesn't mention error conditions or explicit read-only guarantees, but 'Get' and the return statement make the behavior clear for a zero-parameter tool.

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

Conciseness5/5

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

The purpose and return payload are front-loaded in the first sentence, and the ACCESS note is compact and specific. No sentence is wasted; the auth flow and start_login exclusion both earn their place.

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

Completeness5/5

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

For a simple zero-parameter getter with no output schema, the description covers the essential context: what it returns, that authentication is required, and how it relates to the start_login flow. An agent has enough information to invoke it correctly.

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 has zero parameters and the input schema covers 100% of the parameter surface, so there is no additional parameter meaning for the description to add. This matches the 0-parameter baseline for the dimension.

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 operation ('Get'), a precise resource ('current user's primary profile'), and the return payload (profile details, theme, custom links, public proof display settings). The phrase 'current user's primary' separates it from siblings such as get_current_user, get_profile, and list_profiles.

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: this tool requires a Proof account and an already-authenticated client, and it explicitly warns that start_login does NOT open this tool. It doesn't enumerate alternatives, but 'current user's primary profile' plus the auth caveat is enough to route an agent to the correct call.

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

get_platform_summaryAInspect

Get a one-call account snapshot: quota with end-of-month projection, request health (pending/completed/expired counts + success rate), per-channel completion rates, HITL counts, and active API key count. The same data the dashboard home renders. The hitl_channels sub-object requires the hitl:read scope.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNoScope request/channel/HITL metrics to test or production data (default: production)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does disclose the key non-obvious behaviors: a Proof account is required, the hitl_channels sub-object requires the hitl:read scope, and start_login does NOT open this tool. It stops short of explicitly stating the call is read-only with no side effects, though 'snapshot' and 'dashboard renders' strongly imply it.

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?

The core purpose is front-loaded in the first sentence, followed by a compact bullet-like contents list. The ACCESS block is the only longer section, but every clause earns its place: account requirement, exact auth path, and the corrective note that start_login does not grant access. No filler.

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 no output schema, the description carries the return-value burden and handles it well by enumerating all major snapshot components; the schema fully documents the environment scoping parameter. The remaining gap is that the failure mode when unauthenticated is only implied ('then call this tool again') rather than stated, but this is a minor omission for a parameter-light 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%: the single environment parameter is fully documented with enum values, default, and scoping semantics. The description adds no parameter-level information beyond the schema, so the baseline 3 applies.

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-resource pair ('Get... account snapshot') and enumerates the exact contents: quota with end-of-month projection, request health counts plus success rate, per-channel completion rates, HITL counts, and active API key count. Anchoring it to 'the same data the dashboard home renders' makes the resource concrete and distinguishes it from sibling getters like get_usage or list_api_keys that fetch individual slices.

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

Usage Guidelines3/5

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

The 'one-call account snapshot' framing implies when to use it (a broad overview rather than a single metric), and the ACCESS block gives actionable auth preconditions ('Authenticate this client... then call this tool again'). However, it never names alternative tools such as get_usage, list_hitls, or list_api_keys, nor states when to prefer those, leaving sibling selection to inference.

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

get_profileAInspect

Get a specific profile by ID. Returns full profile details including theme, custom links, and verification display settings.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idYesProfile ID

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description bears the full behavioral burden. It discloses the auth requirement, directs the agent to re-call after authentication, and notes that start_login does not open the tool. The read-only nature is implied by 'Get' and the return-details wording, and no contradictions exist.

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

Conciseness5/5

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

The description is two short, focused paragraphs: the first front-loads purpose and return details, the second delivers a necessary auth note. Every sentence earns its place with no redundancy.

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 single-parameter getter with no output schema, the description covers the core purpose, highlights return contents, and explains the critical authentication flow. It does not explain how to obtain a profile_id or behavior on invalid IDs, but these are minor gaps for such a simple 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?

The input schema already provides 100% coverage with 'profile_id' described as 'Profile ID'. The description restates that the tool gets a profile by ID but adds no extra formatting, source, or validation details, so it stays at the baseline for high schema coverage.

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 description states a specific verb ('Get'), a clear resource ('profile'), and the key discriminator ('by ID'). It also lists what is returned (theme, custom links, verification display settings), making it immediately distinguishable from siblings like list_profiles and get_my_profile.

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?

The description gives clear context by specifying the access prerequisite (Proof account, authenticated client) and instructs the agent to authenticate before retrying. It also warns that start_login does NOT open this tool, which is a useful exclusion. However, it does not explicitly mention when to prefer this over get_my_profile or list_profiles.

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

get_profile_assetsAInspect

Get available verified assets that can be displayed on the user's profile. Returns assets eligible for public proof display.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/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 behavioral burden. It discloses the authentication prerequisite and the 'start_login does NOT open this tool' nuance, which is useful. However, it does not explain the response format, pagination, empty-result behavior, or what happens when auth is missing.

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?

The description is short and mostly front-loaded with the core purpose. The first two sentences are slightly redundant ('displayed on profile' vs 'public proof display'), but the access note is well-structured and earns its place. No filler.

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 read-style tool with no output schema, the description covers the essential context: what the tool returns, eligibility criteria, and authentication requirements. The lack of an explicit output shape is a minor gap but not critical for such a simple tool.

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 has zero parameters and 100% schema description coverage, so parameter semantics are trivially satisfied. The description does not need to add parameter meaning since there are none.

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?

The description clearly states the operation: 'Get available verified assets that can be displayed on the user's profile'. It adds scope by noting assets are 'eligible for public proof display', which helps distinguish this from generic asset tools like list_assets or get_asset. However, it does not explicitly name or differentiate among those sibling tools.

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?

The ACCESS section gives concrete usage context: a Proof account is required, the client must be authenticated, and the tool should be called again after authentication. It also explicitly warns that 'start_login does NOT open this tool', preventing a likely misuse. It does not mention alternative listing tools, but the given guidance is clear.

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

get_proof_statusAInspect

Get the status of a proof by its public handle (ph_ctl_* / ph_dlg_*) or a verification ID. Returns whether the proof is active, suspended, expired, or revoked — a live proof reads "active".

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPublic proof handle (ph_ctl_* / ph_dlg_*) or verification ID

TDQS

A4.1/5.0
Behavior4/5

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

Annotations are not provided, so the description carries the burden. It discloses the need for authentication and that the tool requires a Proof account, which is crucial behavioral context. It also explains that a live proof reads 'active', clarifying the return value. However, it doesn't detail what happens if the ID is invalid or the exact response structure, which could be improved.

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?

The description is concise and front-loaded with the core purpose and return information. The access note is valuable but could be seen as a bit of an aside, though it's essential for successful invocation. It doesn't waste words and is easy to parse.

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 simple single-parameter tool with no output schema, the description covers what the tool does, what it returns, and the necessary access conditions. It's complete enough for an agent to know whether to call it and what to expect, but could be slightly enhanced with error handling or response format details, though not strictly required.

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?

The schema description for the single parameter is 100% covered, as the description repeats the same information about the ID format. This repetition adds little beyond the schema, so the baseline of 3 is appropriate. The description of the parameter in the schema is already clear and specific.

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 description clearly states the tool's purpose: to get the status of a proof by its public handle or verification ID, and what statuses are returned. It distinguishes itself from siblings by specifying its unique input type and that it returns proof status, which is distinct from list_revoked_proofs or validate_proof.

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?

The description provides clear context on when to use the tool and includes an explicit access requirement: needing a Proof account and authentication via the 'Authenticate' flow. It also notes that start_login does not open this tool, which helps avoid incorrect usage. However, it doesn't explicitly name alternatives or say when not to use it in favor of another tool, but the context is sufficient for basic routing.

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

get_request_by_referenceAInspect

Get a verification request by its reference ID (your unique identifier).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
reference_idYesYour unique reference ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It reveals the authentication prerequisite and an interaction note about start_login, but it does not mention whether the operation is read-only, what happens if the reference ID does not exist, or any error behavior. This is partial, not comprehensive.

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

Conciseness5/5

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

The description is compact, front-loaded with the core action, and includes only the essential access warning in a separate block. Every sentence earns its place and there is no filler.

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 simple single-parameter lookup, the description covers the crucial access context and the limitation about start_login. It does not describe the return value or structure, but the tool name and the absence of an output schema make the expected result reasonably inferable.

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 coverage is 100% with a clear description of reference_id, so the baseline is 3. The description repeats the same idea ('your unique identifier') without adding syntax, format constraints, or examples, so it adds no meaningful semantic value beyond the schema.

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?

The description clearly states the action ('Get a verification request') and the lookup key ('its reference ID'). It does not explicitly differentiate from the sibling get_verification_request, so it stops short of a 5, but the resource and method are unambiguous.

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?

The description provides explicit access guidance: a Proof account is needed, the client must authenticate, and the tool should be called again after authentication. It also warns that start_login does not open this tool. However, it does not state when to prefer this over alternative get/list tools, so it is not a full 5.

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

get_request_proofsAInspect

Get proof tokens for verified assets in a verification request. Returns proof tokens that can be used for offline verification.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification request ID

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden. It discloses an access prerequisite (Proof account), an authentication requirement, and a retry instruction, while 'Returns proof tokens' implies a non-mutating read operation. It does not cover rate limits or error behavior, but the auth caveat adds meaningful transparency.

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

Conciseness5/5

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

Two short, purposeful sections: one for purpose/return value and one for access requirements. No filler, and the most important operational caveat (authentication) is clearly separated and front-loaded.

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 one-parameter read tool, the description covers what the tool returns, its purpose, and the required authentication flow. It doesn't detail the proof token format or response structure, but those details are not essential for an agent to invoke it correctly.

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 single id parameter is documented as 'Verification request ID'. The description adds no additional meaning beyond the schema, so the baseline 3 applies.

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 proof tokens for verified assets in a verification request') and clarifies the tokens are for offline verification. This semantically distinguishes it from siblings like get_verification_request, get_proof_status, or validate_proof.

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?

Provides clear context for when to use the tool by describing the offline-verification use case and specifying the required Proof account and authentication flow. It explicitly says start_login does NOT open this tool, which prevents a likely misstep, but it does not explicitly name alternative tools for other conditions.

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

get_self_api_keyAInspect

Get the calling API key's own redacted metadata (id, name, key_prefix, environment, scopes, last_used_at, revoked_at, created_at) for agent self-inspection. Never returns the key hash or full secret. Requires API-key auth — a JWT session has no single-key context (returns 400 api_key_required).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/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 behavioral burden and does so well: it discloses that metadata is redacted, that the key hash/full secret is never returned, that API-key auth is required, and that JWT auth yields a specific error. These details go beyond what the empty schema or annotations provide.

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

Conciseness5/5

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

The description is compact and front-loaded: purpose first, then behavioral guarantees, then auth requirements and access instructions. Every sentence adds useful information, and the ACCESS block is a clear, separated directive.

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

Completeness5/5

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

For a zero-parameter, no-output-schema tool, the description is complete: it lists the returned fields, explains auth failure modes, and tells the agent how to remediate the access issue. An agent can invoke it correctly without further documentation.

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 has zero parameters and schema coverage is 100%, so the baseline is 4. There are no parameters to explain, and the description appropriately focuses on behavior instead of inventing parameter details.

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 description opens with a specific verb and resource: 'Get the calling API key's own redacted metadata', followed by an explicit field list. It clearly distinguishes itself from siblings like list_api_keys or get_current_user by scoping to the current API key's metadata.

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?

It states the intended use case ('for agent self-inspection') and gives a clear precondition: requires API-key auth, while a JWT session returns 400. It also warns that start_login does not open this tool, providing an exclusion. However, it does not explicitly name alternative tools for user or key-list scenarios.

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

get_sessionAInspect

Get a session by ID. Returns the session status, verification details, and proof token if verified.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSession ID

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the authentication requirement, the conditional return of a proof token, and that start_login has no side effect on this tool. It doesn't mention error behavior or non-verified sessions, but for a simple read it's reasonably transparent.

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

Conciseness5/5

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

The description is concise and front-loaded: the purpose and return content are in the first sentence, and the access note is separated clearly. Every sentence contributes value, with no filler.

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 single-parameter get tool with no output schema, the description covers the essential context: what it returns, that auth is needed, and a specific workflow. It doesn't cover error handling or session ID format, but those are either covered by schema or minor for this type of 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 coverage is 100% and the description adds no new meaning to the 'id' parameter beyond what the schema already states ('Session ID'). The mention 'by ID' simply restates the schema, so a baseline 3 is appropriate.

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 description states a clear verb ('Get'), a specific resource ('a session by ID'), and the return content ('session status, verification details, and proof token if verified'). This distinguishes it from siblings like create_session or wait_for_session, which are about creation or polling.

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?

The description provides explicit access prerequisites (a Proof account and authentication) and clarifies that start_login does NOT open this tool, which is a useful negative instruction. It doesn't explicitly name alternative tools for retrieving session info, but the workflow context is clear enough.

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

get_settingsAInspect

Get account settings: branding (business name, logo, colors, support email, email theme), the outbound webhook endpoint with its event subscriptions, and the default proof lifetime. The webhook signing secret is NOT returned to an API key — the response reports webhook.secret_set instead, and the value itself is visible only in the dashboard or in the update_settings response that created or rotated it.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/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 handles it well. It discloses that the signing secret is not returned to API keys, that the response reports webhook.secret_set instead, where the secret is visible, and the authentication prerequisite. This goes well beyond a generic 'Get settings'.

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?

The description is front-loaded and organized into purpose, security behavior, and access. It is slightly lengthy with environment-specific authentication instructions, but every sentence adds useful information.

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

Completeness5/5

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

For a zero-parameter getter with no output schema, the description gives the agent everything needed: the returned categories, the sensitive-secret behavior, and the prerequisite/auth path. Nothing important is missing.

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 has zero parameters and 100% schema coverage, so there is no parameter semantics burden; the baseline 4 applies. The description appropriately spends no space on parameters.

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 opening phrase 'Get account settings' names a specific verb and resource, and the description enumerates exactly what is included: branding fields, webhook endpoint and event subscriptions, and default proof lifetime. This is sufficient to distinguish it from settings-adjacent siblings like update_settings, get_webhook_stats, and get_webhook_delivery.

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?

It gives clear access context: requires a Proof account, tells the agent to authenticate then call again, and explicitly states that start_login does NOT open this tool. It stops short of a full when-to-use vs alternatives mapping for the whole tool, though it does point to update_settings and the dashboard as the only places the signing secret is visible.

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

get_subscriptionAInspect

Get the current subscription details including plan, status, billing period, and usage limits.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It reveals the authentication prerequisite, the re-invocation workflow, and the fact that start_login will not satisfy the requirement. It does not describe error behavior or response shape, but the key access behavior is transparent.

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

Conciseness5/5

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

The description is compact and front-loaded: the core purpose appears first, followed by the essential access instruction. Every sentence earns its place, and there is no redundant or speculative wording.

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, read-only-style tool with no output schema, the description is nearly complete: it states what the tool returns, the access requirement, and the authentication workflow. It stops short of explicitly guiding an agent to choose this over get_usage or describing the response format, but the tool's simplicity keeps this gap minor.

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 has zero parameters and schema coverage is 100%, so no parameter documentation is needed. The description adds value by naming the returned fields (plan, status, billing period, usage limits), which helps an agent infer what the output will contain.

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 description opens with a specific verb and resource: 'Get the current subscription details' and enumerates concrete fields (plan, status, billing period, usage limits). This clearly distinguishes it from sibling tools like get_usage or get_platform_summary, which focus on different aspects.

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?

The description provides clear usage context: a Proof account is required, the client must be authenticated via the MCP authentication flow, and the tool should be called again after authenticating. It also warns that start_login does not open this tool, acting as a when-not signal, though it does not compare against other subscription/usage siblings.

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

get_templateAInspect

Get a specific template by channel and message type. Returns the custom template if set, otherwise the default.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesMessage channel
message_typeYesMessage type (e.g. verification_request, login_request)

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It adds meaningful behavior beyond the schema: the fallback to the default when no custom template is set, the Proof account requirement, and the explicit warning that start_login does NOT open this tool. It does not describe error behavior or output format, but for a simple getter this is a strong disclosure set.

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?

The description is compact and front-loaded: the main purpose is stated in the first sentence, followed by the access caveat. The authentication note is wordy but earns its place because it prevents a common failure mode. No filler or redundant restatement of the schema is present.

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 simple two-parameter getter with no output schema, the description covers the key operating details: what the tool returns, how it selects templates, and what authentication state is required. It is complete enough for an agent to invoke it correctly, though it omits explicit contrast with get_default_templates and any description of error cases.

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 coverage is 100%, with both channel and message_type already documented and channel constrained via enum. The description reuses these parameter concepts but adds no new semantic detail beyond re-stating them in prose, so the schema carries the weight and the baseline of 3 is appropriate.

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: 'Get a specific template by channel and message type.' It clearly identifies the two selection dimensions and sets expectations around custom-vs-default behavior. It does not explicitly name or contrast sibling tools like get_default_templates, preview_template, or render_template, so it stops short of full sibling differentiation.

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

Usage Guidelines3/5

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

The description implies the tool should be used when you need a concrete template for a known channel and message type, and it adds useful operational guidance about authentication and the start_login flow. However, it never states when to prefer this tool over related siblings such as get_default_templates or list_templates, nor does it give explicit exclusions or alternatives.

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

get_usageAInspect

Get usage metrics for the authenticated account. Shows verification counts, API calls, and quota usage.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoNumber of months of history
periodNoMonth to query in YYYY-MM format (e.g. 2026-01)

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses that the tool operates on the authenticated account, lists the types of usage data returned, and states the authentication requirement. It does not discuss error cases or rate limits, but this is acceptable for a simple read-style tool.

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

Conciseness5/5

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

The description is compact and front-loaded with purpose, then expands on returned metrics and access requirements. Every sentence adds useful information, and the ACCESS block is directly relevant to correct invocation.

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 simple read-only metrics tool with only optional parameters and no output schema, the description provides sufficient context: what it returns, account scope, and authentication prerequisites. It could mention default behavior or interplay between months and period, but these are minor gaps.

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%, with both months and period already documented with types, constraints, and descriptions. The tool description adds no additional parameter semantics beyond what the schema provides, so a baseline score of 3 is appropriate.

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?

The description clearly identifies the tool's purpose: retrieving usage metrics for the authenticated account, listing specific metric categories. It is specific enough to convey the resource and scope, but it does not explicitly differentiate itself from similar siblings like get_api_key_usage or get_platform_summary.

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?

The ACCESS block provides explicit context on when the tool can be used: the client must have a Proof account and be authenticated, with a note that start_login does not open this tool. It gives clear prerequisites but does not discuss when to prefer this tool over alternatives.

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

get_user_domain_verification_statusAInspect

Get the current status of a domain verification session, including challenge details.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesDomain verification session ID

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It usefully discloses the authentication requirement and the stateful flow ('sign in with start_login — a session opens this tool — then call this tool again'). However, it does not describe return shape, error behavior, or whether repeated calls are safe.

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

Conciseness5/5

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

The description is compact and front-loaded: one clear purpose sentence followed by a concise access note. Every sentence adds useful information, and there is no filler or repetition of the tool name.

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

Completeness3/5

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

For a single-parameter getter, the description covers purpose, parameter context, and access prerequisites. However, no output schema exists, and the description only vaguely says 'including challenge details,' leaving the actual response format and possible status values unspecified.

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 schema already documents session_id as 'Domain verification session ID.' The description reinforces that the tool concerns a domain verification session, but it does not add meaning beyond the schema.

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?

The description states a specific verb and resource: 'Get the current status of a domain verification session, including challenge details.' This clearly identifies what the tool does. However, it does not differentiate this tool from nearby siblings like check_domain_verification, check_user_domain_verification, or get_multi_channel_verification_status.

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?

The description gives explicit usage context: a Proof account is required, authentication must happen first, and signing in with start_login opens a session before this tool is called again. This is clear practical guidance, though it does not explicitly state when to choose this tool over alternatives or when not to use it.

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

get_verificationAInspect

Get a verification by ID. Returns the full verification object including status, channel, and proof token if verified.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the return behavior (full verification object, fields included, conditional proof token if verified) and the access requirement. It does not mention error behavior or explicitly state that the operation is read-only, but the 'Get' verb and return-focused wording make the read nature reasonably clear.

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

Conciseness5/5

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

The description is compact and front-loaded: the core action and return behavior appear in the first sentence, followed by a succinctly formatted access note. Every sentence adds distinct value, including the start_login clarification, with no filler or redundant phrasing.

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 simple getter with one required parameter and no output schema, the description is largely complete: it states what it returns, the access prerequisite, and a common mistaken path. It omits details about invalid/missing ID behavior and any rate limits, but those are minor given the tool's simplicity.

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 only parameter, id, is already documented as 'Verification ID'. The description restates that the tool gets a verification by ID but adds no extra detail about id format, validation, or how it maps to the returned object. This is the baseline score for a simple, well-covered single parameter.

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?

The description states a clear verb ('Get'), a specific resource ('a verification by ID'), and the expected return content ('full verification object including status, channel, and proof token if verified'). It distinguishes itself from list-oriented siblings like list_verifications, but does not explicitly contrast with similarly named tools like get_verification_request or get_multi_channel_verification_status, so it stops short of full sibling differentiation.

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?

The description gives clear access context: it requires a Proof account and tells the agent to authenticate then retry, and it explicitly warns that start_login does not open this tool. This is helpful when-to-use guidance, though it does not compare against alternative get/list verification tools.

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

get_verification_requestAInspect

Get a verification request by ID. Returns the request with all its asset verification statuses.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification request ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It discloses the authentication requirement and that start_login does not open this tool, and states it returns the request with asset verification statuses. However, it does not mention whether it is read-only, any error conditions, or response format details. It adds some value but could be more explicit about the read-only nature and potential failures.

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

Conciseness5/5

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

The description is extremely concise: two sentences with no filler. The purpose is front-loaded in the first sentence, and the second provides crucial access instructions. Every word earns its place, making it highly efficient.

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 simple getter with one parameter, the description covers the purpose, return content, and access requirements. It does not describe the response structure, but there is no output schema, so that is not required. The authentication caveat adds completeness. The only minor gap is lack of explicit error behavior or a note that it is read-only, but these are not critical for this tool's simplicity.

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?

The schema already provides 100% coverage for the single 'id' parameter with the description 'Verification request ID'. The description only says 'by ID', which confirms the parameter's role but adds no additional semantic detail such as format, validation, or examples. Since schema coverage is high, the baseline is 3, and the description does not exceed that.

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 description clearly states the verb 'Get', the resource 'verification request', and the return value 'all its asset verification statuses'. It distinguishes itself from sibling tools like list_verification_requests (which lists) and get_verification (which likely gets a different entity). The mention of 'by ID' adds specificity.

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

Usage Guidelines3/5

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

The description provides access instructions (needs a Proof account, authenticate, and warns that start_login does not open this tool), which is useful context. However, it does not explicitly state when to use this tool versus alternatives like get_verification or list_verification_requests. The use case is implied by 'by ID' but not explicitly contrasted with siblings.

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

get_verified_userAInspect

Get a single verified user and their verifications by external user ID.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
external_user_idYesThe external user ID

TDQS

A3.5/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 burden. It does disclose that a Proof account is required and that client authentication must happen before the tool will work. It does not mention error behavior, whether verifications are embedded in the response, or any other runtime characteristics.

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?

The purpose is front-loaded in one crisp sentence, and the access note is written in three short, direct sentences. It is compact and contains no filler, though the auth instruction is somewhat tool-specific to Claude Code.

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 simple one-parameter read tool, the description plus schema covers what the tool does, how to authorize it, and the key input. Since no output schema exists, the first sentence's promise of returning the user and their verifications is adequate; a minor gap is that unknown-ID behavior is not described.

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 coverage is 100%, so the schema already documents the only parameter. The description simply restates 'by external user ID' without adding format, provenance, or validation details beyond the schema, matching the baseline.

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?

The description clearly states a specific action and resource: 'Get a single verified user and their verifications by external user ID.' The word 'single' helps separate it from list_verified_users, but it never explicitly names or contrasts a sibling tool, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description gives a clear auth precondition and explicitly says that start_login does not open this tool, which is useful context. However, it does not tell the agent when to choose this tool over alternatives such as list_verified_users or get_current_user.

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

get_webhook_deliveryAInspect

Get details of a single webhook delivery attempt including request/response payloads and retry history.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWebhook delivery ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It adds useful context: it returns payloads and retry history, and it requires a Proof account with a specific authentication workflow. However, it does not state whether the operation is read-only, what happens for an invalid/nonexistent ID, or any response format details, which a full disclosure would include.

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

Conciseness5/5

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

The description is two sentences, both purposeful: the first defines the tool's behavior and scope, the second provides a necessary authentication prerequisite. There is no wasted wording, and the most important behavioral information is front-loaded.

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

Completeness3/5

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

For a simple one-parameter read tool, the description is adequate: it states what the tool does and the access requirement. However, it lacks any guidance on when to choose this over sibling webhook tools, does not describe the return structure (no output schema exists), and omits error/edge-case behavior. These are notable gaps for an agent invoking the 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 coverage is 100% and the description adds no information about the 'id' parameter beyond the schema's 'Webhook delivery ID.' Since the schema already documents the only parameter, the baseline score of 3 applies; there is no additional semantic enrichment in the description.

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 description states a specific verb ('Get details') and resource ('a single webhook delivery attempt'), and explicitly scopes the content to 'request/response payloads and retry history.' The word 'single' differentiates it from sibling tools like list_webhook_deliveries and get_webhook_stats, so an agent can identify what this tool uniquely does.

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

Usage Guidelines2/5

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

The description gives an ACCESS note that authentication is required and that start_login does not open this tool, but it does not explain when to use this tool versus alternatives such as list_webhook_deliveries or retry_webhook_delivery. There is no explicit when-to-use or alternative selection guidance, leaving that to inference.

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

get_webhook_statsAInspect

Get webhook delivery statistics including total deliveries, success/failure counts, and recent activity.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full responsibility for behavioral disclosure. It implies a read-only operation ('get') and states the access prerequisite, but it does not elaborate on whether the tool is idempotent, what scopes are needed, or how 'recent activity' is time-bounded. This is acceptable but not comprehensive.

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?

The description is two sentences, with the main purpose front-loaded. The second sentence contains essential access instructions but is somewhat verbose; it could be tightened without losing information. Still, every part earns its place, and there is no padding.

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 simple read-only tool with no parameters and no output schema, the description is reasonably complete. It states what the tool returns and the required authentication. It does not specify the output format, but since no output schema exists, the description provides a sufficient overview for a correctly invoke.

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 has zero parameters, so the schema coverage is vacuously 100%. Per calibration, 0 parameters merits a baseline of 4. The description adds useful detail about the kind of statistics returned (total, success/failure counts, recent activity), which enhances understanding beyond the empty schema.

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?

The description clearly states the tool's purpose: 'Get webhook delivery statistics including total deliveries, success/failure counts, and recent activity.' It names a specific verb and resource, and the phrase 'statistics' differentiates it from sibling tools like get_webhook_delivery or list_webhook_deliveries, though not 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?

The description provides concrete usage context: it requires a Proof account, instructs the user to authenticate before calling, and explicitly warns that 'start_login does NOT open this tool,' which is a useful exclusion. However, it does not mention alternative tools for individual delivery details, so some room remains.

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

invite_challengerAInspect

Mint a single-use Proof-Me enrollment invite for a challenger. Returns Telegram + WhatsApp deep links and a QR code; the challenger taps the channel-matched link to bind their messenger identity to the config.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID
challenger_idYesChallenger ID to invite

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden and largely meets it: it reveals the invite is 'single-use', states the returned artifacts (deep links + QR code), and describes the binding side effect ('challenger taps... to bind their messenger identity to the config'). It does not detail persistence, failure modes, or whether existing invites are invalidated.

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

Conciseness5/5

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

The purpose is front-loaded in the first sentence, followed by a compact return/flow sentence and a separated ACCESS note. No filler; every sentence contributes actionable information.

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 2-parameter tool with no output schema, the description explains what is returned and why, and gives auth/usage context. It falls short of full completeness by not specifying the response shape (property names for the links/QR) or error/precondition behavior such as whether challenger_id must already exist.

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?

Input schema descriptions already cover both parameters completely ('HITL config ID', 'Challenger ID to invite'), so the baseline is 3. The description's references to 'the config' and 'challenger' add narrative context, but no new semantic meaning beyond the schema.

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 description opens with 'Mint a single-use Proof-Me enrollment invite for a challenger' – a specific verb and target resource. It also states the deliverables ('Telegram + WhatsApp deep links and a QR code'), and the 'start_login does NOT open this tool' note helps distinguish the tool from a sibling flow.

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?

The ACCESS block gives explicit prerequisites and a call sequence: 'needs a Proof account', 'Authenticate this client ... then call this tool again'. It also supplies a when-not instruction ('start_login does NOT open this tool'), though it does not contrast with add_challenger or other challenger-management alternatives.

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

invite_circle_memberAInspect

Mint a single-use enrollment invite for a Circle member. Returns Telegram + WhatsApp deep links and a QR code; the member taps the channel-matched link to bind their messenger identity to the Circle.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID
member_idYesMember ID to invite

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the invite is single-use, returns specific artifacts (Telegram/WhatsApp deep links, QR code), and binds messenger identity. The warning that start_login does not open this tool is a useful behavioral caveat beyond 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?

The description is compact and structured in two clear paragraphs — one for functionality and one for access requirements. It avoids redundancy while including necessary context, though the access note could be folded in more tightly.

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 simple 2-parameter tool with no output schema or annotations, this description covers the essentials: purpose, return artifacts, user behavior, and auth prerequisite. It omits edge cases (e.g., member already in circle, invite expiration), but these are not required for a call to succeed.

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 parameter descriptions ('Circle ID', 'Member ID to invite') already convey the meaning. The description text does not add additional nuance about the parameters, so the baseline of 3 applies.

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 description opens with a specific verb and resource: 'Mint a single-use enrollment invite for a Circle member.' It also explains the mechanism (deep links and QR code) and how the recipient uses it, which clearly distinguishes this from sibling tools like add_circle_member or add_circle_member_channel.

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?

The description provides an explicit prerequisite ('needs a Proof account', 'Authenticate this client') and an exclusion ('start_login does NOT open this tool'). While it does not explicitly contrast with alternative invite/add tools, the enrollment-invite framing implies when it should be used, and the auth note gives concrete operational guidance.

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

list_api_keysAInspect

List all API keys for the authenticated account. Returns key metadata (not the secret key values).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that only key metadata is returned, not secret values, and that authentication is required. It could also mention read-only status or error behavior, but the listed details are meaningful and non-obvious.

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

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, followed by a clearly labeled access note. Every sentence adds value, and there is no redundant or filler text.

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 list tool with no output schema, the description provides the essential information: what it lists, what it does not return, and how to authenticate. It does not enumerate exact metadata fields, but this is a minor gap given the simple invocation 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 has zero parameters and the schema coverage is 100%, so the schema fully defines the input surface. The description adds no parameter-specific meaning because none is needed; the baseline of 4 for no-parameter tools applies.

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 description clearly states a specific action ('List all API keys') and a specific scope ('for the authenticated account'). It also clarifies that it returns metadata and not secret values, distinguishing it from related tools like get_self_api_key or revoke_api_key.

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?

It gives clear context on when to use the tool and explicitly explains the prerequisite Proof account and authentication flow. It does not explicitly name alternative tools or exclusion cases, but the access guidance is actionable and sufficient for correct usage.

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

list_assetsAInspect

List all verified assets for the authenticated user. Assets are verified identities (phones, emails, domains).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
typeNoFilter by asset type
limitNoItems per page
statusNoFilter by status

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It clearly indicates a read-style operation, states the authentication prerequisite, and warns about a misleading alternative flow (start_login). It does not cover response format or errors, but for a simple list tool the access behavior is the most important context and is present.

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?

The description is compact and front-loaded: a one-sentence purpose followed by a short definition of assets and a focused ACCESS block. Every sentence earns its place, though the access instructions are slightly verbose with repeated references to authentication.

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 read-only listing tool with four optional, fully documented parameters and no output schema, the description is largely complete: it defines the resource, states auth requirements, and warns against a wrong invocation path. It could be richer by noting response shape or default paging behavior, but these are not critical gaps.

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%, so the schema already documents all four optional parameters. The description adds high-level context about "verified assets" but does not add per-parameter meaning beyond what the input schema provides, which matches the baseline of 3.

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?

The description uses a specific verb and resource: "List all verified assets for the authenticated user," and clarifies what assets are (verified identities like phones, emails, domains). It does not explicitly contrast itself with sibling list tools such as list_emails or list_phones, so it stops short of full sibling differentiation.

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?

The ACCESS note gives clear context: a Proof account is required, the client must be authenticated via /mcp → Authenticate, and start_login does not open this tool. This provides actionable when/how guidance, though it does not explain when to choose list_assets over the more specific list_phones, list_emails, or list_domains tools.

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

list_authorizationsAInspect

List authorizations with optional filters. Returns paginated results.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoItems per page
phoneNoFilter by phone number
statusNoFilter by authorization status
channelNoFilter by channel

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does well: it discloses pagination behavior, an account requirement, and that start_login won't open this tool. It doesn't mention response shape or explicitly say read-only, but 'List' plus the details provided are sufficient for a safe read operation.

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

Conciseness5/5

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

Two concise sentence groups front-load the core purpose and pagination, then provide the actionable ACCESS note. Every sentence adds useful information with no filler.

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 list tool with no required parameters and fully documented optional inputs, the description plus schema allow correct invocation. It covers auth and page-based results, though it omits the response envelope and default pagination values — minor gaps given no output schema.

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 coverage is 100%, so the schema fully describes all five parameters. The description only restates 'optional filters' and paginated results, adding no meaning beyond what the input schema already provides.

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: 'List authorizations with optional filters.' The pagination note adds scope. It doesn't explicitly contrast with siblings like export_authorizations or get_authorization, so it stops short of a 5.

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

Usage Guidelines3/5

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

Gives clear context around authentication: 'needs a Proof account', 'Authenticate this client...', and warns 'start_login does NOT open this tool.' However, it doesn't explain when to choose this over get_authorization, export_authorizations, or list_auth_sessions, so usage vs alternatives is mostly implied.

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

list_auth_sessionsAInspect

List all active authentication sessions for the current user. Shows session details including channel, user agent, and expiry. When called via API key, no session is marked as is_current.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and uses it well: it restricts results to 'active' sessions, lists sample return fields, and calls out the non-obvious behavior that API-key calls mark no session as is_current. It could also explicitly state that the operation has no side effects, but 'list'/'shows' already imply a read-only call.

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?

The core purpose is front-loaded in the first sentence, and the API-key caveat and access note follow in four compact sentences. The ACCESS block is client-specific but earns its place because it is a hard prerequisite for calling the tool successfully.

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 parameterless list tool with no output schema or annotations, the description covers purpose, scope, sample fields, access requirements, and a runtime caveat. The only minor gaps are the exact full response shape and behavior when unauthenticated, which are not critical for tool selection.

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 input schema is empty and schema description coverage is 100%, so there are no parameter semantics for the description to add. The 0-parameter baseline applies, and the text introduces no parameter-related confusion.

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 description opens with a specific verb and resource: 'List all active authentication sessions for the current user', and names the relevant output fields (channel, user agent, expiry). This scope plus the plural 'all' distinguishes it from sibling tools like get_session, list_api_keys, and revoke_auth_session even though none is named.

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?

It gives explicit when-to-call context: authenticate the MCP client first, then call the tool. It also states a clear when-not/operational caveat: 'start_login does NOT open this tool.' It stops short of a 5 because it does not point to an alternative tool for single-session lookups or other similar cases.

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

list_challengersAInspect

List the Proof-Me challengers enrolled on a HITL config.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID

TDQS

A3.8/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 burden. It discloses the authentication prerequisite and the fact that start_login does not open this tool, which is useful behavioral context. However, it doesn't disclose what happens if unauthenticated, whether it returns an empty list vs error, or any rate limits. The description adds some value but not rich behavioral detail.

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

Conciseness5/5

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

The description is two short sentences with zero waste. The core purpose is front-loaded, and the access note is separated clearly. Every sentence earns its place.

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 simple list tool with one parameter and no output schema, the description is nearly complete. It covers the purpose, the required parameter, and the authentication prerequisite. It could mention what the response contains (e.g., challenger details), but the tool's simplicity and the 100% schema coverage make the missing return-format detail minor.

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%: the only parameter, hitl_id, is described as 'HITL config ID' with a regex pattern. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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?

The description states a specific verb ('List') and resource ('Proof-Me challengers enrolled on a HITL config'), which clearly identifies what the tool does. It doesn't explicitly distinguish from sibling tools like invite_challenger or remove_challenger, but the resource and scope are clear enough.

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?

The description provides clear access context: requires a Proof account, authentication via /mcp → Authenticate, and explicitly notes that start_login does NOT open this tool. It doesn't explicitly name alternatives or when-not-to-use, but the access guidance is actionable and specific.

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

list_circle_member_channelsAInspect

List a Circle member's channels. Returns channel metadata only (channel, status, verified_at) — an identifier is NEVER returned (SEC-PM-006).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID
member_idYesMember ID

TDQS

A4.1/5.0
Behavior4/5

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

There are no annotations, so the description carries the full transparency burden. It discloses the exact return content, the deliberate omission of identifiers (SEC-PM-006), and the authentication precondition. It doesn't mention pagination or error behavior, but the disclosed security constraint is valuable.

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?

Two compact sections: one for behavior/return constraints and one for access instructions. The 'ACCESS:' marker makes the operational requirement scannable, though the authentication hint is slightly verbose relative to the rest.

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 only two well-documented parameters and no output schema, the description supplies the essential missing context: what is returned, what is never returned, and what precondition must be met. It omits pagination and failure modes, but those are less critical for this simple metadata list.

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?

The input schema already has 100% description coverage for both parameters, including types and patterns, so the description does not need to repeat them. It adds no deeper semantic layer beyond implying that the member belongs to the specified circle.

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 precise verb and resource: 'List a Circle member's channels.' It further clarifies the scope by noting that only metadata is returned, which distinguishes it from related member/channel tools like list_circle_members and add_circle_member_channel.

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?

Provides explicit access prerequisites (Proof account) and a clear authentication workflow, including the warning that start_login does NOT open this tool. It does not explicitly compare against sibling alternatives, but it gives strong contextual guidance for when the tool can be invoked.

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

list_circle_membersAInspect

List a Circle's members. Each member carries channel-presence booleans only (has_telegram / has_whatsapp) — an identifier is NEVER returned (SEC-PM-006).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the disclosure burden and does well: it reveals the surprising behavior that an identifier is NEVER returned and that only has_telegram/has_whatsapp booleans are provided. It also flags the access requirement. It could go slightly further with return shape or error behavior, but the key behavioral quirks are disclosed.

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

Conciseness5/5

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

The description is compact and front-loaded: the core purpose appears first, followed by the return-data constraint, then the access instructions. Every sentence adds necessary information; there is no filler or repetition.

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 one-parameter list operation with no output schema, the description covers the essential context: what is returned, what is not returned, and how to authenticate before invoking. It could be slightly more explicit about pagination or the shape of the returned list, but nothing critical is missing for correct invocation.

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 schema already names the parameter, describes it as 'Circle ID', and enforces a 24-hex pattern. The description adds no new parameter-level meaning beyond referring to 'a Circle', so the baseline of 3 applies.

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 description opens with a specific verb and resource: 'List a Circle's members.' It also states exactly what data each member carries (presence booleans only), which distinguishes it from related tools like list_circle_member_channels or remove_circle_member.

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?

The description gives clear context: a Proof account is required, the client must be authenticated, and start_login does NOT open this tool. It does not explicitly name an alternative for when to use it, but for this tool the main usage blocker is the auth prerequisite, which is addressed directly.

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

list_circlesAInspect

List Circles with optional filters. Archived Circles are excluded by default; pass status="archived" to surface them. Returns paginated results.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
limitNoItems per page (default 20, max 100)
statusNoFilter by status (archived excluded unless requested)
profile_idNoFilter by bound public profile (sub-account)
environmentNoFilter by environment (production or test)

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It discloses that the tool returns paginated results, requires an authenticated Proof account, and has a default filtering behavior. For a simple listing operation, this is meaningful context beyond the raw schema, though it does not detail rate limits or exact response shape.

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

Conciseness5/5

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

The description is compact and front-loaded, with no filler. The core purpose and default filter behavior appear first, followed by essential access notes. Every sentence contributes useful information.

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 tool with five optional parameters, no required parameters, and no output schema, the description covers the essential operational context: pagination, archived-filter behavior, and authentication requirements. It is slightly light on what a 'Circle' is and does not describe the return shape, but the provided guidance is sufficient for an agent to make a reasonable first call.

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 parameter descriptions already explain page, limit, status, profile_id, and environment. The description's mention of archived-by-default behavior and pagination mostly restates information already present in the schema. It adds little semantic value beyond what the structured schema provides.

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?

The description clearly states the verb and resource: 'List Circles with optional filters.' It also adds a scope detail (archived excluded by default) that helps clarify intent. However, it does not explicitly differentiate this tool from sibling tools like get_circle or list_circle_members, so it does not fully achieve the highest rating.

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?

The description gives clear context on when the tool is useful and how to handle archived circles: 'Archived Circles are excluded by default; pass status="archived" to surface them.' It also provides the required authentication prerequisite and warns that start_login does NOT open this tool. It does not explicitly compare against alternative list/detail tools, so it stops 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.

list_confirmationsAInspect

List confirmations with optional filters. Returns paginated results with status and HITL config filtering.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoItems per page
statusNoFilter by confirmation status
hitl_idNoFilter by HITL config ID

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that results are paginated and that filtering by status and HITL config is supported, plus the auth prerequisite. However, it does not describe the return format, default pagination limits, or any side effects (it is a read-only list, but that is not explicitly stated). Moderate coverage for a simple list tool.

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

Conciseness5/5

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

The description is two sentences: the first states purpose in compact form (filters, pagination), and the second delivers a necessary auth/access instruction. No filler or redundancy; both sentences earn their place and are front-loaded.

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

Completeness3/5

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

The tool has no output schema and no annotations, so the description must carry return-format information. It mentions 'paginated results' but does not describe what fields each confirmation contains, sorting behavior, or error conditions. For a straightforward list tool with 4 optional, fully documented parameters, this is a minor but noticeable gap.

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%, with each parameter already documented individually. The description adds minimal extra meaning by summarizing the filters ('status and HITL config filtering') and mentioning pagination, which maps to page/limit. This is the baseline 3 for full schema coverage; the description does not substantially enrich the parameter semantics.

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?

The description states a clear verb and resource ('List confirmations') and notes it supports optional filters, pagination, status filtering, and HITL config filtering. This distinguishes it from sibling tools like get_confirmation (singular) and list_hitls (different resource), though it does not explicitly name those siblings.

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?

The description provides clear access prerequisites ('needs a Proof account', authenticate then call again) and an explicit exclusion ('start_login does NOT open this tool'). It does not name alternative tools or specify when to prefer them, but the context is clear enough for an agent to know when this tool can be invoked.

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

list_delegationsAInspect

List your own delegations with optional filters. Each item carries the DERIVED effective_status/is_valid beside its stored status — read effective_status, since status records only whether the owner revoked the delegation themselves, so a delegation still reads active there after its domain control proof was revoked, suspended or expired, and after its OWN lifetime ran out. effective_status accounts for all of those: it reports expired once either lifetime has passed, whichever is earlier. Tokens are not included in the list — use get_delegation for the stored token. There is no public enumeration of third-party delegations.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoItems per page
statusNoFilter by the delegation's OWN stored status (active|revoked). Does NOT filter the derived effective_status — status=active still returns delegations whose control proof died, and ones that simply ran out.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries full behavioral burden and succeeds. It explains the distinction between stored status and derived effective_status, clarifies why status can appear active after revocation, and discloses that tokens are excluded and third-party delegations are not enumerable. Access requirements are also stated explicitly.

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

Conciseness5/5

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

Every sentence earns its place. The description front-loads the core purpose, then layers essential caveats about effective_status, token retrieval, third-party enumeration, and authentication without redundancy. It is dense but well-organized.

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

Completeness5/5

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

For a list tool with no output schema and no annotations, the description covers the essential return semantics (effective_status/is_valid beside stored status), authentication prerequisites, exclusions, and the correct alternative for token retrieval. Nothing critical is missing for an agent to call it correctly.

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 coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema by explaining that status filters only the stored status and does not filter effective_status, meaning status=active can still return delegations whose control proof died or lifetime expired. Page and limit need no further explanation.

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 precise verb and resource: 'List your own delegations with optional filters.' It explicitly limits scope to the caller's own delegations and distinguishes itself from get_delegation, which retrieves a single delegation with its token.

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

Usage Guidelines5/5

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

Provides explicit routing guidance: 'Tokens are not included in the list — use get_delegation for the stored token.' It also states there is no public enumeration of third-party delegations and gives concrete authentication steps, including a warning that start_login does NOT open this tool.

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

list_dns_credentialsAInspect

List all stored DNS provider credentials for the authenticated account. Returns credential metadata (not secret values).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description must carry safety and side-effect disclosure. It clearly says this is a listing operation, that only metadata is returned and secrets are not exposed, and that a session/login prerequisite must be satisfied. This is useful behavioral context, though it does not mention response pagination or rate limits.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core purpose is front-loaded, and the authentication prerequisite is placed as a clearly labeled ACCESS note.

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 no-parameter list operation, the description covers what is listed, the non-secret nature of the return, and the authentication prerequisite. A fuller return-shape example would help since no output schema is provided, but the description is sufficient for basic invocation.

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 has zero parameters, so the 100% schema coverage makes the schema sufficient. The description adds no parameter detail because none is needed; by the 0-parameters baseline, this is appropriate.

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 description states a specific verb ('List'), a precise resource ('all stored DNS provider credentials'), and a scoping context ('for the authenticated account'). It also distinguishes itself by clarifying it returns metadata, not secret values, which differentiates it from credential-creation and provider-connect tools.

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?

The ACCESS note gives clear when-to-call context: a Proof account is required, and the agent is told to authenticate or run start_login and then retry. It does not explicitly contrast with list/get_dns_providers or check_domain_credentials, so it stops short of a full alternatives comparison.

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

list_domainsAInspect

List all domains for the authenticated account. Returns domain metadata including verification status.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/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 well. It discloses the scope of results (only the authenticated account's domains), the return content (metadata with verification status), and — most valuably — that the tool is gated on an authenticated session, including the exact auth path and the 'then call this tool again' re-invocation behavior. It doesn't cover error behavior when unauthenticated or pagination, but for a read-only list the key traits are disclosed.

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?

The structure is front-loaded: purpose first, return content second, and the ACCESS prerequisite last. Each sentence earns its place, including the auth workflow which is genuinely actionable. The ACCESS block is slightly verbose with the inline em-dash clause, but it remains organized and scannable.

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, read-only list with no output schema and no annotations, the description covers everything needed to call it correctly: what it lists, whose domains it lists, what it returns, and the session prerequisite with a resolution path. Minor omissions — no pagination note and no explicit routing to get_domain for single-domain lookups — keep it just short of fully complete.

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 has zero parameters, which sets the baseline at 4 — there is nothing for the description to document. The phrase 'for the authenticated account' usefully clarifies the implicit scope of the empty parameter set, so the description adds what little meaning is possible beyond the schema.

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 description opens with a specific verb and resource — 'List all domains' — and immediately scopes it ('for the authenticated account') and states the return payload ('domain metadata including verification status'). This clearly distinguishes it from siblings like get_domain (singular lookup), add_domain, and delete_domain without needing to open their schemas.

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?

The description gives explicit context for when the tool is appropriate (enumerate the authenticated account's domains) and states a concrete prerequisite: a Proof account and an authenticated session. It even provides the resolution workflow (authenticate via MCP, or start_login then call again). The only gap is that it never names an alternative tool to use instead, so when-versus-alternatives is only implicitly conveyed by the 'list' verb.

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

list_emailsAInspect

List all email addresses associated with the authenticated account.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that the operation is scoped to the authenticated account and explicitly describes the authentication/session prerequisite. It does not detail output shape or rate limits, but 'list all email addresses' reasonably conveys a read-only collection.

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?

The core purpose is stated in one clear sentence, and the access requirement is separated as a short note. There is minor redundancy in 'then call this tool again' after mentioning that a session opens this tool, but overall the description is compact.

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 simple zero-parameter list operation, the description covers the return concept, the account scope, and the authentication prerequisite. An explicit output schema would strengthen it, but nothing critical is missing for calling the tool correctly.

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 has zero parameters, so the description need not document parameter semantics. The phrase 'all email addresses' also clarifies that no filtering is applied. This matches the baseline for a no-parameter tool.

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 description states a specific verb and resource: 'List all email addresses associated with the authenticated account.' This clearly distinguishes it from sibling list_* tools like list_phones and list_assets.

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?

The description provides clear context: a Proof account is required, and the caller must authenticate either via the client or through start_login, then call this tool again. It names start_login as an alternative path, though it does not explicitly address when to prefer this tool over other list_* tools.

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

list_hitlsAInspect

List HITL configs with optional filters. Returns paginated results.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoItems per page
statusNoFilter by status (active or archived)
environmentNoFilter by environment (production or test)

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It discloses auth requirements, instructs the agent to authenticate and retry, and clarifies that start_login is not a substitute. It also states 'Returns paginated results.' This goes well beyond the bare 'List HITL configs', though it stops short of describing the exact response shape.

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

Conciseness5/5

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

The description front-loads the primary purpose in the first sentence, then adds pagination and an access note. Every sentence carries useful information, with no filler; the authentication step is presented clearly.

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 simple list tool with no output schema, the description covers purpose, filters, pagination, and the critical authentication prerequisite. The main missing piece is the exact return format/pagination metadata, but an agent can infer an array of HITL configs, and the schema fully documents all parameters.

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?

All four parameters already have descriptions in the schema (page, limit, status, environment), and the tool description's 'optional filters' only restates that they are optional. The schema coverage is 100%, so the baseline applies; the description adds no extra semantic meaning.

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?

The description uses a specific verb and resource ('List HITL configs'), notes optional filters, and states pagination, so an agent understands exactly what the tool does. It doesn't explicitly differentiate from sibling get_hitl, but the list-vs-get convention makes the scope unambiguous. This is clear, though not maximally differentiated.

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

Usage Guidelines3/5

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

The description gives access context ('needs a Proof account', authentication steps, and that start_login does NOT open this tool) but says nothing about when to prefer it over siblings like get_hitl or other list_* tools. The intended use is therefore implied by the action rather than explicitly guided.

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

list_incoming_requestsAInspect

List incoming verification requests where the authenticated user is the subject.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/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 burden. It discloses the auth requirement and the session-opening behavior of start_login, which is useful. However, it does not describe pagination, ordering, or what happens when the user is not authenticated beyond the instruction to authenticate.

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?

The description is compact and front-loaded with the core purpose, then adds the access note. The auth instructions are necessary given the tool's dependency on an authenticated session, though the phrasing is slightly dense.

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

Completeness3/5

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

For a zero-parameter list tool, the description covers the main requirement (authentication) and the subject scope. It lacks details on response shape or pagination, but with no output schema and no annotations, the description is reasonably complete for an agent to attempt the call correctly.

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 has zero parameters, so the schema provides no parameter semantics. The description adds meaning by defining the implicit filter: requests where the authenticated user is the subject. This is the only meaningful semantic content, and it is present.

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?

The description states a specific verb ('List') and resource ('incoming verification requests') and clarifies the scope ('where the authenticated user is the subject'). This distinguishes it from list_verification_requests and list_my_requests, though it does not explicitly name those siblings.

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?

The description gives clear context: it requires a Proof account and authentication, and it tells the agent to authenticate via /mcp or start_login, then call again. It does not explicitly state when to prefer this over list_verification_requests or list_my_requests, but the subject-scoping is implied.

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

list_my_requestsAInspect

List verification requests created by the authenticated user.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It explicitly discloses an authentication requirement, the need for a Proof account, and a retry-after-login sequence. The read-only nature is implied by 'List' and the scoped resource, and the description adds meaningful auth-related behavior beyond 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.

Conciseness5/5

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

The purpose is stated in one front-loaded sentence, followed by a compact ACCESS section. The auth instructions are specific and actionable, with no redundant phrasing or filler.

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

Completeness5/5

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

For a zero-parameter list operation with no output schema, the description is complete: it states the resource, scope, authentication prerequisite, and the alternative auth flow. An agent has enough information to select and invoke the tool correctly.

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 has zero parameters, so there is no parameter ambiguity for the description to resolve. The 100% schema coverage is trivially satisfied, and the baseline of 4 applies because no parameter semantics are needed.

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 description uses a specific verb ('List'), a clear resource ('verification requests'), and a precise scope ('created by the authenticated user'). This distinguishes it from sibling tools like list_incoming_requests and list_verification_requests without needing to open their schemas.

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?

The description provides clear context for when this tool is usable: after authentication with a Proof account. It also gives a fallback workflow using start_login and says to call the tool again after a session opens. It does not explicitly compare against sibling list tools, but the user-scoped wording makes the intended use clear.

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

list_phonesAInspect

List all phone numbers associated with the authenticated account.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden. It discloses the access-control behavior (requires authentication) and the workflow detail that start_login 'opens this tool,' which is genuinely useful beyond what the name implies. It does not explicitly state read-only semantics or return format, but 'List' strongly implies a non-mutating read.

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

Conciseness5/5

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

Two short paragraphs, front-loaded with the core purpose, followed by a single packed sentence covering auth prerequisite and remediation. Every sentence earns its place and there is no filler or repetition of schema content.

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 covers purpose, authentication prerequisite, and the retry workflow. The only gap is the unspecified result shape, which the absent output schema leaves to the agent, but this is minor for such a simple tool.

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 the baseline is 4. The description adds that the results are scoped to 'the authenticated account,' which defines the effective query context in place of any filter parameters.

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 description states a specific verb and resource ('List all phone numbers') plus the scope ('associated with the authenticated account'). This clearly distinguishes it from sibling list_* tools, which target different entities like emails, assets, or domains.

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?

The ACCESS note provides clear context: the tool requires a Proof account and prior authentication, and it names the exact remediation path ('sign in with start_login') before retrying. It does not explicitly contrast with alternatives such as list_emails or get_add_phone_status, but the precondition guidance is actionable and situation-specific.

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

list_profilesAInspect

List all profiles for the authenticated account. Returns all profiles including primary and secondary.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations present, the description carries the full behavioral disclosure burden. It warns that the client must be authenticated and that start_login is not a shortcut, which addresses the most likely failure mode. It does not describe response details, but for a zero-parameter list tool the access behavior is the key risk.

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

Conciseness5/5

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

The description is compact: two short paragraphs, three sentences total, all load-bearing. The core purpose is front-loaded, and the access note adds necessary operational context without repeating schema or annotations.

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 no-parameter tool with no output schema, the description adequately covers the return scope, authentication requirement, and a critical non-behavior. It does not explicitly contrast with get_my_profile or list_profile_templates, but an agent has enough information to invoke it correctly.

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 has zero parameters and schema description coverage is 100%, so there is nothing for the description to add about parameter semantics. The baseline of 4 applies because no parameter documentation is needed.

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 description uses the specific verb 'List' with the resource 'profiles' and scopes it to the authenticated account, clarifying that it returns all profiles including primary and secondary. This clearly distinguishes it from singular-profile siblings like get_my_profile or get_profile.

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?

The description states the prerequisite clearly: a Proof account and authentication are required before the tool will work. It also gives an explicit exclusion—start_login does NOT open this tool—which helps an agent avoid a common wrong path, though it does not name alternative list/get tools.

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

list_profile_templatesAInspect

List all templates for a profile. Returns templates organized by channel and message type, merged with defaults.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idYesProfile ID

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It discloses the need for a Proof account and authentication, and notes that start_login is not sufficient. It also describes the return structure. However, it does not explicitly state that the operation is read-only, nor mention any error conditions, rate limits, or side effects.

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?

Two concise sentences convey purpose and return format, with a separate ACCESS note for authentication. The information is front-loaded and every sentence earns its place, though the access note could arguably be integrated more smoothly.

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?

Given a simple list tool with one parameter and no output schema, the description covers the core needs: what it returns, how it organizes data, and authentication requirements. It does not clarify the meaning of 'merged with defaults' or mention pagination, but these are minor gaps for this tool type.

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% because profile_id already has a description ('Profile ID'). The description adds no further meaning, such as format, constraints, or examples, so it provides minimal value beyond the schema.

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 ('List') and resource ('templates for a profile'), with details on organization (by channel and message type) and merging with defaults. Clearly distinguishes from siblings like list_templates and get_default_templates by indicating profile-specific scope.

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

Usage Guidelines3/5

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

Provides authentication context and a caveat that start_login does not open this tool, but does not explicitly mention when to use this over alternatives such as list_templates or get_default_templates. Usage is implied by the purpose, but no explicit exclusions or sibling references.

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

list_revoked_proofsAInspect

Get the revocation list for offline proof validation. Returns a signed list of all revoked proof IDs, cacheable for 5 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/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 of behavioral disclosure. It usefully states that the return value is a signed list of all revoked proof IDs and that it is cacheable for 5 minutes, and the verb 'Get' implies a non-mutating read operation.

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

Conciseness5/5

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

Two sentences with no filler. The purpose is stated first, followed by the return content and caching behavior, making it efficiently scannable for an agent.

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

Completeness5/5

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

For a zero-parameter, read-only list tool, the description is complete: it states what is returned, the signed nature of the list, and the caching window. There is no output schema, so the description's return-value disclosure is essential and present.

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 has zero parameters and the schema already documents this with an empty properties object. The description adds no parameter-specific meaning, but with no parameters to document, the baseline of 4 is appropriate.

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 description uses a specific verb ('Get') and resource ('revocation list'), and immediately clarifies its purpose with 'for offline proof validation'. This distinguishes it from related sibling tools like revoke_proof and validate_proof, making the tool's role clear.

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?

The phrase 'for offline proof validation' provides clear context on when this tool should be used. However, it does not explicitly name alternative tools or state when not to use it, so it falls just short of full routing guidance.

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

list_templatesAInspect

List all custom message templates for the authenticated account. Returns templates organized by channel and message type.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the authentication requirement, the account-scoped read behavior, and the return organization ('by channel and message type'). It does not explicitly state read-only-ness, but 'List' strongly implies a non-mutating operation.

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

Conciseness5/5

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

The description is compact and front-loaded: it states the core purpose first, then the return format, then essential access instructions. Every sentence earns its place, and the access note is directly actionable.

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

Completeness5/5

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

For a zero-parameter read-only listing tool with no output schema, the description covers everything needed to invoke it correctly: what it returns, authentication requirements, and the fact that start_login does not authorize it. It also sets correct expectations about the data scope.

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 has zero parameters and the schema is empty, so there is nothing for the description to clarify. Per the baseline for 0-param tools, this is adequate without additional parameter detail.

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: 'List all custom message templates for the authenticated account.' The 'custom' qualifier distinguishes it from default templates, and the scope ('for the authenticated account') is precise. This clearly differentiates it from related siblings like get_template and get_default_templates.

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?

Provides explicit access prerequisites and a clear when-not: 'start_login does NOT open this tool.' It tells the agent to authenticate first and retry after doing so. It does not name alternative listing tools, but the auth warning is strong, actionable guidance.

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

list_verification_requestsBInspect

List verification requests with optional filters. Returns paginated results.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoItems per page
statusNoFilter by status. 'active' = live (not-yet-expired) pending or partial requests; persisted statuses are time-aware.
reference_idNoFilter by reference ID

TDQS

B3.2/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 burden. It discloses the authentication requirement and the start_login behavior, which is useful. However, it does not state whether the operation is read-only, any side effects, or error behavior. Minimal behavioral context beyond the access note.

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?

Two concise sections: a clear purpose statement and an access note. Front-loaded with the primary function, no filler. Efficient and well-structured.

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

Completeness3/5

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

For a list tool with well-documented parameters, it is mostly complete, but lacks differentiation from similar list tools and does not describe the scope of 'verification requests' (all vs. user's). The access note is helpful but does not fill the usage gap.

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 descriptions fully cover all 4 parameters (page, limit, status with enum explanations, reference_id). The description adds no extra meaning beyond the schema, but since coverage is 100%, the baseline of 3 is appropriate.

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 clear verb (list) and resource (verification requests), and mentions optional filters and pagination. However, it does not differentiate from sibling list tools like list_my_requests or list_verifications, leaving ambiguity about the exact scope (e.g., all requests vs. user-specific).

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

Usage Guidelines2/5

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

Provides an authentication prerequisite and notes that start_login does not open this tool, but offers no guidance on when to use this tool versus alternatives. No mention of scope (e.g., all requests vs. user's own) or when to prefer other list tools.

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

list_verificationsAInspect

List verifications with optional filters. Returns paginated results.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoItems per page
statusNoFilter by status
channelNoFilter by channel
external_user_idNoFilter by external user ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses pagination behavior, the Proof account requirement, and that start_login does not authenticate this tool, but it does not explicitly state that listing is read-only or describe defaults, ordering, or rate limits.

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

Conciseness5/5

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

The description is appropriately short and front-loaded: the purpose sentence comes first, followed by a useful pagination note and then a concise ACCESS instruction. Every sentence earns its place without repetition or unnecessary detail.

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

Completeness3/5

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

For a straightforward list tool, the description covers the essential invocation context: what is listed, optional filters, pagination, and authentication requirements. However, since there is no output schema, it omits the shape of verification entries and default pagination details, which an agent would need for robust result handling.

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%, so the schema already documents all five optional parameters in detail. The description only adds the generic phrase 'optional filters', which reinforces the schema's optionality but does not add new meaning beyond what the structured input schema provides.

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?

The description opens with a specific verb and resource, 'List verifications', and adds that optional filters are supported and results are paginated, which clearly conveys the core function. It does not explicitly name sibling tools like list_verification_requests, but the resource wording distinguishes it from list_verification_requests and get_verification well enough.

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

Usage Guidelines3/5

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

The ACCESS note provides a clear operational prerequisite: a Proof account is required and the agent must authenticate via /mcp before calling the tool. It also explicitly warns that start_login does NOT open this tool, an exclusion of one alternative path, but it gives no guidance on when to choose list_verifications over list_verification_requests or other related list tools.

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

list_verified_usersAInspect

List verified users grouped by external_user_id. Shows all verifications per user.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoItems per page

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and it adds real behavioral details: results are grouped by external_user_id, all verifications per user are returned, and authentication is a prerequisite. But it stops short of describing what a verification entry contains, pagination behavior, or whether the list is scoped to the current account.

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?

The description is tight: one sentence for function, one for scope, one for access/auth. The access warning is useful and not redundant. It could be slightly more compact, but every sentence earns its place.

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

Completeness3/5

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

For a simple two-parameter paginated list with no output schema, it covers the main behavioral contract and auth prerequisite. It leaves gaps around the shape of the returned users/verifications and the effect of page/limit, which an agent would need for reliable invocation and parsing.

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 coverage is 100%, so the schema already fully describes page and limit. The description adds no extra parameter-level details such as defaults or pagination behavior, which is acceptable because the baseline is 3 when the schema covers everything.

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 description opens with a specific verb and resource ('List verified users') and adds an unambiguous grouping rule ('grouped by external_user_id'). It also states the tool's scope ('Shows all verifications per user'), so an agent can distinguish it from simple list or single-get siblings without opening schemas.

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?

It gives explicit context for when the call will work: requires a Proof account, authenticates the client, and can be retried after auth. It also explicitly warns that start_login does NOT open this tool, which prevents a common wrong flow. However, it never names list_verifications or get_verified_user as alternatives for narrower queries.

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

list_webhook_deliveriesAInspect

List webhook delivery attempts with pagination and filtering. Shows delivery status, response codes, and timestamps.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoItems per page
statusNoFilter by delivery status
event_typeNoFilter by event type (e.g. verification.completed)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It adds useful context beyond the schema: the tool requires authentication, has an access prerequisite, and the start_login flow is explicitly not a path to this tool. It also states that results include status, response codes, and timestamps. It does not mention rate limits or error behavior, but for a read-only list operation the coverage is solid.

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

Conciseness5/5

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

The description is compact and front-loaded: the core purpose is stated in one sentence, and the access warning is separated into a short, actionable block. Every sentence earns its place, and no information is repeated.

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 list tool with no output schema, the description adequately names the returned fields (status, response codes, timestamps) and the pagination/filtering behavior. The access/auth caveat is also covered. It could go further by describing the response envelope or pagination metadata, but nothing critical is missing for calling the tool correctly.

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%, so the schema already documents page, limit, status, and event_type. The description only reinforces that filtering and pagination exist without adding parameter-level meaning beyond the schema. Baseline 3 is appropriate.

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 description states a specific verb ('List') and resource ('webhook delivery attempts') and immediately clarifies scope: pagination, filtering, and the fields shown (status, response codes, timestamps). This distinguishes it from singular get_webhook_delivery and from retry_webhook_delivery without needing to inspect siblings.

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?

The ACCESS note gives concrete usage context: a Proof account is required, the client must be authenticated first, and start_login does NOT open this tool. It clearly tells the agent when it can be used, though it does not explicitly compare to sibling list/get tools.

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

poll_chat_id_discoveryAInspect

Poll a chat ID discovery token. Returns the discovered Telegram chat ID, user ID, and username once the user interacts with the bot.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesDiscovery token from create_chat_id_discovery

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It adds useful context about return values and the authentication prerequisite, but leaves a critical polling behavior unspecified: what happens if the user has not interacted yet (error, empty result, retry guidance). It also never states whether the operation is read-only, leaving the safety profile unstated.

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?

Two tight paragraphs with the main action and return values front-loaded. The ACCESS paragraph earns its place with concrete authentication instructions and a relevant exclusion. Slightly dense but no wasted sentences.

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

Completeness3/5

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

Reasonable for a single-parameter tool: purpose, returns, and auth precondition are covered. However, without an output schema, the description should clarify poll termination semantics (timeout, repeated-call behavior, non-interaction response) and the relationship to wait_for_chat_id_discovery for an agent to use it reliably.

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%; the token parameter is already documented in the schema as 'Discovery token from create_chat_id_discovery,' which is sufficient. The tool description adds no additional parameter semantics beyond the schema, so the baseline of 3 is appropriate.

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?

Uses a specific verb ('Poll') with a clear resource (a chat ID discovery token) and states the return values (Telegram chat ID, user ID, username once the user interacts). It distinguishes itself from start_login with an explicit 'does NOT open this tool' note, though it does not differentiate from the closely related sibling wait_for_chat_id_discovery.

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?

Provides clear when-to-use context: requires a Proof account, must authenticate first, and the tool should be called after obtaining a discovery token. It also gives an explicit when-not signal ('start_login does NOT open this tool'). However, it does not articulate the choice between this polling tool and the wait_for_chat_id_discovery sibling.

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

preview_profile_templateAInspect

Preview a profile template with sample data before saving. Shows how the message will look with placeholder variables filled in.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTemplate body text
channelYesMessage channel
subjectNoEmail subject line
profile_idYesProfile ID
button_textNoButton text
message_typeYesMessage type
button_url_templateNoButton URL template

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses that this is a non-saving preview using sample data, that a Proof account is required, and that start_login does not open the tool. It could be more explicit that no mutation occurs, but 'before saving' and 'preview' make the read-only intent clear.

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?

The description is short, front-loaded with the purpose, and each block earns its place, including the access warning. The 'ACCESS' paragraph is a little environment-specific but is not bloated.

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 preview tool with fully documented parameters and no output schema, the description covers what it does, when it should be used, and the authentication prerequisite. It does not spell out the return format or error cases, but the stated behavior is enough for correct invocation.

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%, so the schema already documents all seven parameters including enums and length constraints. The description adds only the generic notion that placeholder variables are filled in, which is not enough to move above the baseline.

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 description states a specific verb ('Preview') and resource ('profile template') and adds the key purpose 'with sample data before saving', plus the effect 'Shows how the message will look with placeholder variables filled in.' This distinguishes it from generic siblings like preview_template and render_template.

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?

It gives a clear usage context ('before saving') and a concrete access requirement: authenticate the client, then call again; start_login does NOT open this tool. It does not explicitly route to alternatives such as preview_template or render_template, so it stops 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.

preview_templateAInspect

Preview a template with sample data before saving. Shows how the message will look with placeholder variables filled in.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTemplate body text
channelYesMessage channel
subjectNoEmail subject line
button_textNoButton text
message_typeYesMessage type
button_url_templateNoButton URL template

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 must carry the disclosure burden. It discloses the Proof account requirement, the authentication prerequisite, and that start_login is not an entry path. However, it does not state whether the preview is fully non-mutating beyond 'before saving', nor does it describe any output format or side effects.

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?

The description is concise and front-loaded with the core purpose in the first sentence. The access paragraph is useful and earns its place, though embedding client-specific authentication instructions slightly reduces the elegance of the tool definition.

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

Completeness3/5

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

With no annotations and no output schema, the description covers the key prerequisite and intended use phase, but it leaves ambiguity about what 'sample data' is, what the preview return looks like, and how this tool differs from render_template or preview_profile_template. An agent can likely invoke it correctly, but selection confidence would be better with a sibling comparison.

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%, so the baseline is 3. The description adds only high-level context by mentioning placeholder variables being filled in, which helps understand the body/message_type relationship, but it does not add field-level meaning beyond the schema.

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?

The description states a clear action ('Preview a template') and a concrete expected result ('Shows how the message will look with placeholder variables filled in'). The qualifier 'before saving' helps distinguish it from template creation/update or final rendering, though it does not explicitly name sibling tools.

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?

It gives an explicit usage context—use it to preview before saving—and includes a practical access workflow: authenticate via /mcp, then call again. It also warns that start_login does NOT open this tool, which prevents a likely misuse. It does not compare against render_template or preview_profile_template, but the context is reasonably clear.

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

regenerate_api_keyAInspect

Regenerate an API key, issuing a new secret while keeping the same ID and settings. The old key stops working immediately. The new secret is returned ONLY in this response. Note: the secret will be visible in the AI conversation context.

Agent usage: This operation requires 2FA. Before calling, complete the 2FA flow: (1) call start_2fa with action_type "api_key_regenerate", (2) wait for user to verify the code, (3) poll get_2fa_status until "verified", (4) then call regenerate_api_key.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAPI key ID to regenerate

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it excels: it discloses that the old key stops working immediately, the new secret is returned only once, and the secret becomes visible in the AI conversation context. It also reveals the 2FA requirement and access prerequisites, giving the agent a complete picture of side effects and constraints.

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?

The description is front-loaded with the core purpose and then adds necessary operational details (2FA flow, access). It is longer than ideal but well-organized with explicit 'Agent usage' and 'ACCESS' sections, ensuring every sentence contributes value. The structure helps the agent parse prerequisites quickly.

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

Completeness5/5

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

Given the complexity (2FA dependency, security implications, access control), the description is remarkably complete. It tells the agent exactly how to prepare (call start_2fa, poll, then call), what to expect (secret only in this response), and what access is needed. Without an output schema, it still covers all operational essentials.

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?

The input schema already documents the single parameter 'id' as 'API key ID to regenerate', achieving 100% schema description coverage. The description reiterates that the ID and settings are preserved but adds no new meaning beyond the schema. Thus, the baseline of 3 is appropriate.

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 description clearly states the action: 'Regenerate an API key, issuing a new secret while keeping the same ID and settings.' It specifies the verb, resource, and key differentiator (preserves ID/settings) that separates it from sibling tools like create_api_key or revoke_api_key. The added detail that the old key stops working immediately further clarifies the operation.

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?

The description provides explicit usage context: it requires 2FA and gives a step-by-step prerequisite flow (start_2fa, wait, poll, then call). It also mentions access requirements (Proof account, authentication). However, it does not explicitly state when to use this over create_api_key or revoke_api_key beyond the inherent semantics, so it lacks a direct 'when-not' comparison to siblings.

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

remove_challengerAInspect

Remove a Proof-Me challenger from a HITL config. Removing the last challenger disables Proof-Me on the config.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID
challenger_idYesChallenger ID to remove

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description covers required authentication and the side effect of disabling Proof-Me when removing the last challenger, which is useful. However, it doesn't mention whether removal is reversible, if there are cascading effects on other entities, or what the return value is. This is adequate but could be richer.

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

Conciseness5/5

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

Two sentences with no filler. The main action is front-loaded, and the critical side effect is immediately stated. The authentication note is placed after the action, making the most important information first.

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 simple two-parameter mutation with no output schema, the description covers the what, when, and the likely failure condition (auth). The only gap is the lack of behavioral details like idempotency or error cases, but given the tool's simplicity, this is nearly complete.

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 coverage is 100%, so the schema already describes both parameters with clear names and IDs. The description adds context about the 'hitl_id' referring to the config and the 'challenger_id' identifying the challenger, but this is minimal beyond the schema. Baseline 3 applies.

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 description states a specific verb ('Remove') and resource ('a Proof-Me challenger from a HITL config'), and distinguishes it from related tools like list_challengers, invite_challenger, and add_challenger. It also notes the consequence of removing the last challenger, making the purpose unambiguous.

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?

The description clearly explains the prerequisite (needs a Proof account, authenticate) and explicitly states that start_login does not open this tool, preventing misuse. However, it does not explicitly compare with alternatives like remove_circle_member or update_hitl, so it's clear but not exhaustive.

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

remove_circle_memberAInspect

Remove a member from a Circle. Deletes the member's channels and revokes any live authorizations that routed through them.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID
member_idYesMember ID to remove

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states the destructive consequences: 'Deletes the member's channels and revokes any live authorizations that routed through them.' This is more transparent than a simple 'removes member' and gives the agent a concrete mental model of side effects. It does not mention irreversibility or response format, but the delete/revoke language is sufficient for a 2-param tool.

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

Conciseness5/5

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

The description is two sentences with a clear front-loaded action, followed by side effectsqb and then a necessary access note. Every sentence earns its place; there is no filler or redundancy.

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

Completeness5/5

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

For a destructive two-parameter tool with no output schema, the description covers purpose, side effects, authentication prerequisite, and an explicit exclusion. The agent has everything needed to decide to call it and to execute the call correctly.

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 coverage is 100%, with each parameter described ('Circle ID' and 'Member ID to remove'). The tool description adds no additional parameter semantics beyond the schema, so the baseline score of 3 applies. The schema definitions are adequate for an agent to know what values to supply.

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 description opens with a specific verb and resource: 'Remove a member from a Circle.' It then clarifies the scope by listing consequences (deletes channels, revokes authorizations), which distinguishes it from add/invite/list circle-member tools. No ambiguity remains about what this tool does.

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

Usage Guidelines5/5

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

The ACCESS section explicitly states a prerequisite (Proof account), instructs the agent to authenticate before retrying, and gives an exclusion: 'start_login does NOT open this tool.' This tells the agent when to call it and when not to route through start_login, which is clear usage guidance beyond the obvious purpose.

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

remove_circle_member_channelAInspect

Remove a channel from a Circle member. Removing the last channel is allowed (the member simply becomes unreachable).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID
member_idYesMember ID
channel_idYesChannel ID to remove

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses a non-obvious side effect (removing the last channel makes the member unreachable) and specifies the access requirement and authentication flow, including that start_login does not open this tool. It doesn't mention reversibility or error behavior, but the key behavioral context is covered.

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

Conciseness5/5

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

The description is four sentences with no filler. The core purpose is front-loaded, the last-channel side effect is parenthesized, and the ACCESS block is clearly separated. Every sentence contributes essential operational or behavioral information.

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 simple mutation with three well-described parameters and no output schema, the description adequately covers the purpose, an important side effect, and authentication prerequisites. It lacks error semantics and explicit post-conditions, but an agent has enough to invoke it correctly.

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 each parameter already has a clear description (Circle ID, Member ID, Channel ID to remove). The tool description adds nothing beyond the schema, so the baseline score of 3 is appropriate.

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?

Description begins with a specific verb+resource: 'Remove a channel from a Circle member.' It distinguishes the tool from siblings like add_circle_member_channel and list_circle_member_channels by stating the removal action and the nuance that removing the last channel is allowed. The edge-case note adds precision.

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

Usage Guidelines3/5

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

The description implies usage through its purpose statement but gives no explicit guidance on when to use this tool versus alternatives such as add_circle_member_channel or list_circle_member_channels. The only contextual note is about authentication, not tool selection.

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

remove_emailAInspect

Remove an email address from the account by ID. May require 2FA verification for sensitive operations.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEmail record ID

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and does reasonably well. It discloses a conditional 2FA requirement, the need for a Proof account, and the retry flow after start_login opens a session. It does not mention irreversibility or failure modes, but the destructive nature is clear from 'remove'.

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?

The description is front-loaded with the core purpose and remains compact. The access/auth paragraph is useful but somewhat verbose with the specific 'Claude Code: /mcp → Authenticate' instruction; each sentence contributes, but it could be tightened.

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 simple one-parameter tool with no output schema, the description covers the essential context: what it does, how to authenticate, and the 2FA caveat. It does not describe what happens on success/failure or how to obtain the email record ID, but list_emails exists as a sibling and the omission is minor.

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?

The input schema already describes the single parameter as 'Email record ID' (100% coverage). The description's 'by ID' adds no new semantic detail beyond the schema, so the baseline score of 3 applies.

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 description states a specific verb and resource: 'Remove an email address from the account by ID.' This clearly differentiates the tool from siblings like start_add_email, list_emails, set_primary_email, and remove_phone.

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

Usage Guidelines3/5

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

The description provides clear access context (Proof account required, authentication prerequisite, 2FA possibility) but does not explicitly discuss when to use this tool versus alternatives. Usage is implied by the verb and resource, and there is no competing remove-email tool among siblings, but no exclusions or alternate routing are given.

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

remove_phoneAInspect

Remove a phone number from the account by ID. May require 2FA verification for sensitive operations.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPhone record ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations are absent, so the description carries the burden. It discloses that the operation 'may require 2FA verification' and mentions authentication requirements, which is useful. However, it does not specify the effect on the account, reversibility, or what happens if the phone is primary. Lack of output schema also limits info.

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?

The description is concise and front-loaded: the core action is in the first sentence, followed by an access note. The access note is somewhat verbose but relevant. No wasted words.

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

Completeness3/5

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

For a simple tool with one parameter, the description covers the core, but the 2FA requirement and authentication steps are important and included. However, without annotations, it misses potential details like idempotency, error cases, or impact on primary phone, which could be critical for correct invocation.

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?

The schema covers 100% of parameters with the description 'Phone record ID' for the id parameter. The description doesn't add much beyond that, but the schema is adequate. Baseline 3 is appropriate.

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?

The description clearly states the verb 'Remove', the resource 'phone number from the account', and the identifier 'by ID'. It is distinguishable from sibling tools like remove_email, remove_challenger, etc., though it doesn't explicitly differentiate. However, the name itself is clear enough.

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?

The description provides clear context for when to use: removing a phone number by ID. It mentions a prerequisite: needing a Proof account and authentication. However, it doesn't explicitly state when NOT to use it or name alternative tools, but the context is sufficient.

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

render_templateBInspect

Render a template with provided variables. Returns the fully rendered message content.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesMessage channel
variablesNoVariables to substitute into the template
message_typeYesMessage type

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does disclose an access prerequisite and the return behavior, but it does not state whether rendering is side-effect-free, how missing variables are handled, or whether anything is sent or persisted. The word 'Render' implies a read-like operation, but it is not made explicit.

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

Conciseness5/5

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

The description is short, front-loaded with the core purpose, and every sentence earns its place. The return value is stated in the first line, and the access note is compact yet specific.

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

Completeness2/5

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

The description is incomplete for a tool with no output schema and no annotations. It explains return value and access, but it leaves critical call-time information undocumented: valid message_type values, how the template is selected, and what happens when variables are missing or incomplete. An agent cannot confidently construct correct input from this description alone.

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%, so the structured schema already documents channel, message_type, and each variable key. The description adds only generic phrasing ('provided variables') and no additional parameter meaning, which matches the baseline of 3.

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?

The description states a specific verb ('Render') with a specific resource ('a template') and explicitly says what it returns ('fully rendered message content'). It is understandable in isolation, but it does not differentiate from closely related siblings such as preview_template or render_auth_link.

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

Usage Guidelines3/5

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

The description gives actionable access guidance ('needs a Proof account', authenticate then call again, 'start_login does NOT open this tool'), which helps the agent sequence the call correctly. However, it never explains when to use render_template versus preview_template or render_auth_link, so the choice among sibling tools is left implicit.

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

request_hitl_authorizationAInspect

Request authorization for a HITL config. Sends consent requests to all configured channels (Telegram/WhatsApp). Users must approve before confirmations can be sent.

Agent usage: This must be completed before create_confirmation will work for this HITL config. The consent request is DELIVERED to each channel — the response carries no link to show. It returns authorizations — one entry per resolved recipient, each with its channel, recipient, authorization_id and status — plus a message. Read the entries rather than assuming: status: 'pending' means consent was just sent and the user must approve in Telegram/WhatsApp itself, while status: 'active' means that recipient had already authorized and nothing was sent to them. An EMPTY array does not mean everyone is authorized — it means no recipient could be resolved at all (usually a HITL config bound to a missing or inactive circle, or channels whose recipient is blank), so nobody was asked and waiting for an approval would hang forever. Do not relay message on that branch: it reads 'All channels already have active or pending authorizations', which is exactly the wrong conclusion. Read the array. After requesting, you can proceed once the user confirms they have approved.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHITL config ID to request authorization for

TDQS

A4.6/5.0
Behavior5/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 — and it delivers richly: it discloses the response shape (`authorizations` entries with `channel`, `recipient`, `authorization_id`, `status`), the subtle status semantics ('pending' vs 'active'), and the critical empty-array edge case (means no recipient resolved, NOT everyone authorized). It also discloses the auth requirement and that the message on the empty branch is misleading.

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?

The description is long, but every section earns its place: purpose, prerequisite, response-format semantics, and the dangerous empty-array trap are all critical for correct calling. It is front-loaded with purpose and structured into clear sections. Slightly verbose but justifiably dense — no filler.

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

Completeness5/5

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

For a tool with no annotations and no output schema, the description covers everything an agent needs: purpose, the prerequisite step, response format details, status interpretation, the empty-array edge case (which would otherwise cause a hang), and the Proof-account authentication prerequisite. Nothing necessary is missing.

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 single `id` parameter is already documented as 'HITL config ID to request authorization for.' The description does not add meaning beyond the schema — it focuses on behavior rather than the parameter. Baseline 3 is correct.

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 description states a specific verb ('Request authorization') and resource ('a HITL config'), and clarifies it sends consent requests to configured channels. It distinguishes itself from siblings like create_confirmation and get_hitl by framing the authorization flow explicitly.

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

Usage Guidelines5/5

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

Explicitly names the prerequisite dependency: 'This must be completed before create_confirmation will work for this HITL config.' It also warns what not to do (relaying `message` on the empty-array branch) and clarifies that start_login does NOT open this tool. Strong when-to-use and when-not-to guidance.

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

resend_domain_emailAInspect

Resend the domain verification email. Rate limited to 3 requests per minute.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID
email_prefixNoEmail prefix to resend verification to

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and discloses a concrete rate limit of 3 requests per minute, plus the requirement that a session must exist before the call succeeds. This gives an agent useful behavioral expectations, though it does not mention side effects or return behavior.

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

Conciseness5/5

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

The description is three short sentences with no filler: the action is front-loaded, then the rate limit, then the access instructions. Each sentence earns its place and is easy to parse quickly.

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 simple two-parameter resend tool, the description covers the core action, the rate limit, and the required authentication flow. The main gap is not explaining how it differs from the many sibling verification/resend tools, which is a minor completeness issue.

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%, with both 'id' and 'email_prefix' already described in the input schema. The description adds no parameter-specific meaning, so the baseline of 3 is appropriate.

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?

The description clearly identifies the action ('Resend the domain verification email') and the resource it operates on. It does not explicitly differentiate from sibling tools like resend_verification or resend_email_otp, but the domain-verification-email target makes the purpose clear enough.

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?

The description provides explicit access prerequisites and an authentication flow: the caller needs a Proof account, must authenticate the client, or use start_login to open a session and then retry. It does not name alternatives or state when not to use this tool, so it stops short of full sibling routing.

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

resend_email_otpAInspect

Resend the OTP code for an in-progress email addition.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesAdd-email session ID

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the core action and an access requirement but does not reveal potential side effects like invalidating a previous OTP, rate limits, or error behavior for invalid sessions.

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

Conciseness5/5

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

The description is compact and front-loaded. The first sentence states the purpose, and the second block clearly labels access requirements. No filler or redundancy; every sentence contributes necessary context.

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

Completeness3/5

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

For a one-parameter tool with full schema coverage, the description is mostly adequate but omits how the add-email session is created (presumably via start_add_email). It also provides no guidance on expected output or failure modes, which is notable since there is no output schema.

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?

The input schema already defines session_id as 'Add-email session ID' with 100% coverage, so the baseline is 3. The description references 'in-progress email addition' and mentions session creation via start_login, but it does not add substantive detail about how to obtain or format the session_id beyond the schema.

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 description states a specific verb and object: 'Resend the OTP code for an in-progress email addition.' This precisely identifies the action and resource, and the 'email addition' context distinguishes it from siblings like verify_email_otp or resend_verification.

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

Usage Guidelines3/5

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

The description gives clear access prerequisites (needs a Proof account, authenticate or sign in with start_login) but does not provide explicit when-to-use versus alternative tools. It implies usage for an in-progress email addition but never names siblings or exclusion conditions.

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

resend_verificationAInspect

Resend a verification message (email channel only). Generates and sends a new code.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden, and it does meaningful work: it states the email-only channel, that a new code is generated and sent, that a Proof account is required, and that authentication must happen before calling. It doesn't mention side effects like invalidating a previous code or rate limits, but the core behavioral traits are disclosed.

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

Conciseness5/5

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

The description is compact and efficient: two short sentences plus an access note. Every sentence earns its place, and the most important constraints (email-only, new code, authentication prerequisite) are front-loaded with no filler.

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 tool with one required parameter and no output schema, the description covers the essential invocation context: what the tool does, which channel it uses, what access is needed, and how to proceed after authentication. It doesn't detail the return value or specify valid sources of the verification ID, but those are either in the schema or inferable from the surrounding flow.

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?

The schema already documents the single required parameter id as 'Verification ID' with 100% coverage. The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

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?

The description opens with a specific verb and resource: 'Resend a verification message (email channel only)' and explains that it 'Generates and sends a new code.' This clearly distinguishes it from generic login or domain-email flows, but it does not explicitly name sibling resend tools like resend_email_otp, so it falls short of full sibling differentiation.

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?

The description gives concrete usage context: it requires a Proof account, the client must be authenticated first, and it explicitly warns that start_login does NOT open this tool. This provides both a when-to-use condition and a when-not-to-use exclusion, though it doesn't name alternative resend-style tools explicitly.

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

retry_webhook_deliveryAInspect

Retry a failed webhook delivery. Creates a new delivery attempt with the same payload to the configured endpoint.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWebhook delivery ID to retry

TDQS

A4.1/5.0
Behavior4/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 transparently discloses that the tool creates a new delivery attempt with the same payload, which is a meaningful behavioral effect beyond the tool name. It also flags an authentication prerequisite and warns that start_login does not open this tool. It could mention potential duplicate-delivery side effects, but the core behavior is disclosed.

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?

The main purpose is front-loaded in the first sentence, and the access note is compact and relevant. The authentication instructions add useful context rather than filler, though the phrasing around 'start_login does NOT open this tool' is slightly awkward.

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 one-parameter tool with no output schema, the description is nearly complete: it explains what the tool does, what happens, and the authentication requirement. It does not specify expected return values or failure modes, but those are not essential for a simple retry operation.

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 only parameter 'id' is already documented as 'Webhook delivery ID to retry.' The description does not add extra parameter-level detail such as where to obtain the ID, but with full schema coverage the baseline of 3 is appropriate.

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 description uses a specific verb and resource: 'Retry a failed webhook delivery' and clarifies the concrete effect: 'Creates a new delivery attempt with the same payload to the configured endpoint.' This clearly distinguishes it from read-only siblings like get_webhook_delivery and list_webhook_deliveries.

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?

The description states the tool is for failed deliveries and gives explicit access prerequisites: needing a Proof account and authenticating before calling again. It does not explicitly name alternatives or when-not-to-use conditions, but the sibling context makes the intended use reasonably clear.

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

revoke_api_keyAInspect

Revoke an API key by ID. The key will immediately stop working. This action cannot be undone.

Agent usage: This operation requires 2FA. Before calling, complete the 2FA flow: (1) call start_2fa with action_type "api_key_revoke", (2) wait for user to verify the code, (3) poll get_2fa_status until "verified", (4) then call revoke_api_key.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAPI key ID to revoke

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 succeeds. It discloses that the key will immediately stop working, that the action is irreversible, that 2FA is required, that a Proof account is needed, and that session authentication must be established first. These are meaningful behavioral facts beyond 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.

Conciseness5/5

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

The description is front-loaded with the core action and effect, then uses labeled sections ('Agent usage', 'ACCESS') to organize prerequisites and procedure. Every sentence conveys necessary information; there is no filler or redundancy.

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

Completeness5/5

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

For a single-parameter, no-output-schema tool with no annotations, this description is complete. It covers purpose, side effects, irreversibility, authentication, and the exact 2FA sequence needed before invocation. An agent has everything required to call this tool correctly.

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%, so the baseline is 3. The description's 'by ID' mirrors the schema's 'API key ID to revoke' without adding extra semantic detail, format, or source guidance. It does not harm, but it also does not improve on the schema.

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 description opens with a specific verb and resource: 'Revoke an API key by ID.' This clearly distinguishes it from sibling revoke_* tools that target other resources (authorization, delegation, proof) and from create_api_key/regenerate_api_key. The scope and target are unmistakable.

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?

The description provides explicit, step-by-step usage guidance: complete the 2FA flow via start_2fa, wait for user verification, poll get_2fa_status, then call revoke_api_key. It also gives an authentication workflow with start_login. It does not explicitly mention when-not-to-use or alternatives, but the procedural context is strong and clear enough to place this tool correctly.

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

revoke_assetAInspect

Revoke a verified asset by ID. The asset will be marked as revoked and associated proofs will no longer validate.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the postcondition: the asset will be marked as revoked and associated proofs will no longer validate. It also discloses the account/authentication requirement. It stops short of mentioning irreversibility, return value, or error behavior, so it is transparent on the core effect but not every operational detail.

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

Conciseness5/5

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

The description is compact and front-loaded: the purpose and consequences appear in the first sentence, followed by a succinct access note. Every sentence earns its place, including the start_login warning, which prevents a common authentication misunderstanding. There is no redundancy or filler.

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 simple one-parameter mutation with no annotations and no output schema, the description covers the essential context: what is revoked, what the side effect is, and how to authorize the call. It is slightly incomplete because it does not mention alternative revoke tools or whether revocation is reversible, but the core facts needed to call it correctly are present.

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?

There is only one parameter, id, and the schema already describes it as 'Asset ID' with 100% coverage. The description's 'by ID' adds no new semantic detail beyond the schema. This is the baseline 3 case where the schema does the heavy lifting and the description does not need to compensate.

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 description opens with a specific verb and resource: 'Revoke a verified asset by ID.' It immediately distinguishes this from sibling revoke tools by naming the asset as the target and by stating the consequence for associated proofs. The scope is unambiguous and well differentiated from revoke_proof, revoke_authorization, and similar mutations.

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?

The access note gives clear preconditions: a Proof account is required, the client must be authenticated, and the caller should invoke this tool again after authenticating. It also usefully warns that start_login does NOT open this tool. However, it does not explicitly name an alternative tool for related cases (e.g., revoke_proof), so the guidance is clear but not exhaustive.

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

revoke_authorizationAInspect

Revoke an active or pending authorization. Only authorizations with status "active" or "pending" can be revoked.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAuthorization ID to revoke
reasonNoReason for revocation

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It does add useful constraints: only active or pending authorizations can be revoked and authentication is required. However, it does not disclose side effects, reversibility, or error behavior for this destructive revoke operation.

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 description is short and front-loaded, but the first two sentences repeat the same status restriction. The ACCESS paragraph is useful but also somewhat redundant with the authentication instruction. It is compact, though not maximally tight.

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

Completeness3/5

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

For a two-parameter revoke tool with full schema coverage, the description is nearly sufficient: status eligibility and authentication steps are covered. It lacks explicit guidance on what happens after revocation or why an agent should choose this over a sibling revoke 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%, so id and reason are already documented in the input schema. The tool description adds no parameter-level meaning, which is acceptable but not an enhancement over the schema.

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?

The description clearly states the action and resource: 'Revoke an active or pending authorization.' It also adds a status constraint that helps define what the tool operates on. It does not explicitly differentiate itself from sibling tools such as revoke_auth_session or revoke_delegation, so it stops short of a top score.

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?

The description gives concrete invocation guidance: a Proof account is required, the client must be authenticated first, and start_login does not open this tool. It does not compare this tool to sibling revoke tools, but the authentication flow and status precondition provide clear usage context.

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

revoke_auth_sessionAInspect

Revoke a specific authentication session by ID. When called via JWT, cannot revoke the current session. When called via API key, any session can be revoked.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID to revoke

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals a key auth-dependent constraint (via JWT cannot revoke current session; via API key any session can be revoked) and explains the access workflow. It does not mention irreversibility or response behavior, but covers the most critical nuance.

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

Conciseness5/5

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

The description is compact and front-loaded with the core purpose-truth. The second 'ACCESS' section earns its place by providing necessary authentication contextasiw, and every sentence contributes actionable information without redundancy.

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 single-parameter, no-output-schema tool, the description is quite complete: it covers the core action, auth constraints, and access workflow. It omits how to discover session IDs (e.g., via list_auth_sessions) and does not state whether revocation is permanent, but these are secondary given the low complexity.

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 only parameter (session_id) is already described as 'Session ID to revoke.' The description adds no parameter-specific detail beyond that, so the schema does the heavy lifting and the baseline of 3 applies.

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 description states a specific verb and resource: 'Revoke a specific authentication session by ID.' This unambiguously identifies the action and object, and the added JWT/API key constraints help distinguish it from related session operations like get_session or revoke_api_key.

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

Usage Guidelines3/5

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

The description gives important access guidance: requires a Proof account, how to authenticate, and explicitly warns that start_login does NOT open this tool. However, it does not state when to use this tool vs alternatives such as revoke_api_key or list_auth_sessions, so usage context is mostly implied.

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

revoke_delegationAInspect

Revoke ONE delegation. The domain control proof and sibling delegations stay valid; the revocation is mirrored into the proof registry so the CRL, status list and public status lookup all see it. Idempotent: a repeat revoke answers success with the same body, both here and through revoke_proof with the ph_dlg_ handle — unlike a PROOF, where a repeat answers already_revoked. The result carries the DERIVED effective_status/is_valid beside the stored status.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDelegation ID (24-hex Mongo id or ph_dlg_<32 hex> handle)
reasonNoReason for revocation

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it delivers: it states side effects (domain control proof and sibling delegations stay valid), propagation into the proof registry/CRL/status lookup, idempotency semantics on repeat calls, the difference from proof revocation, and the derived fields in the result.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: scope, side effects, idempotency, result fields, and authentication are each covered without filler. It is front-loaded with the core action and uses formatting to separate access guidance.

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?

Given no output schema and no annotations, the description covers the essential operational context: authentication, side effects, idempotency, registry propagation, and key result fields. It does not specify the exact response body or error behavior for unauthorized calls, but it provides enough for an agent to invoke the tool correctly.

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%, so the schema already fully documents both id and reason. The description adds context around the ph_dlg_ handle but does not meaningfully extend parameter-level semantics beyond what the schema provides, keeping this at the baseline.

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 opening phrase 'Revoke ONE delegation' gives a specific verb, resource, and scope in one line. It also explicitly contrasts the tool with revoke_proof and clarifies it operates on delegations, not proofs, which distinguishes it from relevant siblings.

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?

The description provides clear operational guidance: the tool requires a Proof account, the client must be authenticated first, and start_login does not enable this tool. It also explains how this tool relates to revoke_proof, though it stops short of an explicit 'use this instead of X when...' rule.

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

revoke_proofAInspect

Revoke a proof by its public handle (ph_ctl_* / ph_dlg_*) or a verification ID — the same addresses get_proof_status takes. The proof token will no longer validate anywhere: the status endpoint, the public validator, the revocation list and the Token Status List all report it revoked. This action is irreversible. It revokes the PROOF only — the asset, consent or delegation the proof is about is not withdrawn.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPublic proof handle (ph_ctl_* / ph_dlg_*) or verification ID
reasonNoReason for revocation

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that the action is irreversible, that the proof token will no longer validate anywhere (status endpoint, public validator, revocation list, Token Status List), and that only the proof is revoked—not the underlying asset/consent/delegation. It also mentions the access requirement. This is thorough and transparent about the tool's side effects.

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?

The description is well-structured: the first paragraph states the core action and effects, and the second handles access. It is longer than minimal but every sentence contributes either to purpose, scope, or usage. It front-loads the essential 'what it does' and 'what happens' before the access note. No filler.

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 mutation tool with irreversible effects and an access requirement, the description covers: what it does, how to identify the target, the full impact across all validation endpoints, irreversibility, scope limitation, and authentication steps. It does not have an output schema, so return values are not needed. The only minor gap is not specifying what the response looks like, but that is not critical for correct invocation.

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% — both parameters are described in the schema. The description repeats the id format exactly as the schema does ('Public proof handle (ph_ctl_* / ph_dlg_*) or verification ID') without adding new meaning. It does not elaborate on the 'reason' parameter. Since the schema already carries the semantics, the description adds no extra value, earning the baseline 3.

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 description opens with a clear verb and resource: 'Revoke a proof' and specifies the exact identifier formats (ph_ctl_* / ph_dlg_* or verification ID). It explicitly distinguishes itself from sibling revoke tools (revoke_asset, revoke_authorization, revoke_delegation) by stating it revokes only the PROOF, not the underlying asset/consent/delegation, making the tool's scope unmistakable.

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?

It provides clear context: the tool takes the same addresses as get_proof_status, and clarifies the scope (only the proof, not the underlying object). It also gives an explicit exclusion ('start_login does NOT open this tool') and authentication prerequisites. It does not name alternative tools explicitly, but the scope statement implies when to use this vs. related revoke tools.

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

send_account_emailAInspect

Deliver the verification email for an account-bootstrap session created with channel "email". Public endpoint (no API key required).

Why this is a separate call: create_account deliberately sends NOTHING. A message from proof.holdings arriving in someone's inbox is an act with a person on the other end, so it takes an explicit second step rather than being a side effect of creating a session. ASK THE USER to confirm the address is theirs before calling this — do not call it automatically after create_account.

The other channels (telegram, whatsapp, sms) never need this: the user sends the first message themselves (reverse OTP), so nothing is dispatched to them at all.

One session sends at most one email, including under concurrent calls. A repeat answers 410 already_sent, which means the material backing the send is gone: usually because the email went out, occasionally because an attempt was interrupted mid-send and nothing was delivered. Do not tell the user a message was sent on the strength of a 410 — create a new session instead. (A session the recipient cancelled via the decline link, or an expired one, answers 404, not 410.) If delivery fails the response carries email_sent=false and the call can be retried.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAccount session id from create_account

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries full behavioral burden and does so thoroughly: it discloses the real-world effect of sending a message, concurrency limits, 410 vs 404 semantics, and the email_sent=false retry signal. This goes far beyond a basic action statement and prepares the agent for non-obvious outcomes.

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

Conciseness5/5

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

The description is longer than average, but every sentence earns its place: core purpose first, then rationale, user-confirmation requirement, channel exceptions, and edge-case response semantics. Front-loading the essential action and the 'do not call automatically' warning makes it highly usable despite the length.

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

Completeness5/5

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

Even with no output schema, the description covers all critical operational aspects: when a call is valid, what a 410 means, what a 404 means, how to handle delivery failure, and the one-session-one-email invariant. For a sensitive send action, this is complete enough for an agent to act correctly.

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 schema already fully describes the single parameter, so the baseline is 3. The description adds meaningful context by specifying that the id must come from an email-channel account-bootstrap session, which refines what value is valid even though it does not introduce new parameter syntax.

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 action ('Deliver the verification email') and a specific resource ('account-bootstrap session created with channel email'), and explicitly distinguishes itself from create_account, which sends nothing. This makes it immediately clear what the tool does and how it differs from its most relevant sibling.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance: only for email-channel sessions, only after user confirmation, and never automatically after create_account. It also explains when not to use it for other channels and how to interpret repeat-call results, leaving no ambiguity about invocation conditions.

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

set_primary_emailAInspect

Set an email address as the primary email for the account.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEmail record ID to set as primary

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 burden. It discloses the access requirement (Proof account) and the authentication prerequisite, which is useful. However, it doesn't disclose whether this is a mutating operation, whether it affects other emails, or what the response looks like. The mutation is implied by 'set' but not explicitly stated.

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?

The description is concise and front-loaded with the core purpose. The access/authentication note is useful but slightly verbose with the parenthetical example. Still, every sentence earns its place.

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

Completeness3/5

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

For a single-parameter mutation tool with no output schema, the description covers the main prerequisite (authentication) and the parameter is fully documented in the schema. However, it doesn't mention what happens after setting primary email (e.g., whether the old primary is demoted) or any error conditions, which would be useful for a mutating operation.

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%, so the schema already documents the 'id' parameter as 'Email record ID to set as primary.' The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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?

The description states a specific verb and resource: 'Set an email address as the primary email for the account.' This clearly distinguishes it from sibling tools like set_primary_phone and set_primary_profile, though it doesn't explicitly name those siblings.

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?

The description provides clear context on when to use the tool: after authentication, and it mentions the alternative start_login for opening a session. It doesn't explicitly state when not to use it or name alternatives like list_emails, but the access requirement and workflow are clear.

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

set_primary_phoneBInspect

Set a phone number as the primary phone for the account.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPhone record ID to set as primary

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the action and access needs but does not mention side effects (e.g., what happens to the previous primary phone), prerequisites (phone must exist), or reversibility. This is a significant gap for a mutation 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?

The description is short and front-loads the purpose in the first sentence. The access note is useful but slightly verbose (mentions Claude Code path); overall it is concise and well-structured.

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

Completeness3/5

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

For a single-parameter tool with no output schema or annotations, the description is acceptable but not complete. It covers purpose and access, but omits behavioral details like whether the phone must already exist or what happens to the prior primary. An agent could call it correctly with schema help, but the description could do more.

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%, so the parameter 'id' is already documented as 'Phone record ID to set as primary'. The description adds nothing beyond the schema, so the baseline of 3 is appropriate.

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 description states a specific verb and resource: 'Set a phone number as the primary phone for the account.' This clearly distinguishes it from siblings like set_primary_email and set_primary_profile by naming the target resource (phone number) and the intent (primary for account).

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

Usage Guidelines3/5

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

The description provides access prerequisites (needs a Proof account, authentication options) but does not explicitly explain when to use this tool versus alternatives. It implies usage from the purpose but lacks explicit routing or exclusions, so it is minimally adequate.

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

set_primary_profileAInspect

Set a profile as the primary profile. The previous primary profile becomes secondary.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idYesProfile ID to set as primary

TDQS

A3.9/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 a genuinely useful side effect (previous primary becomes secondary) and the authentication prerequisite, which goes beyond the schema. However, it does not disclose mutation reversibility, behavior if the target profile is already primary, or the return value. It adds meaningful context but is not exhaustive.

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?

The purpose is front-loaded in the first sentence with the side effect immediately following. The access note is a separate block that earns its place by preventing a failed call, though it is slightly verbose relative to the tool's simplicity.

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 single-parameter tool with no output schema and no nested objects, the description covers the action, the key side effect, and the access prerequisite. The main gaps (already-primary behavior, response format) are minor for this level of complexity.

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 coverage is 100% — profile_id is already documented as 'Profile ID to set as primary'. The description reinforces the primary/secondary semantics but adds no syntax or format detail beyond the schema. At 100% coverage, baseline 3 is appropriate.

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 (Set) and resource (profile as primary), and adds the key behavioral side effect that the previous primary becomes secondary. This distinguishes it from siblings like update_profile, create_profile, set_primary_email, and set_primary_phone.

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 access context: requires a Proof account and explicit authentication via /mcp → Authenticate before the tool works. It also names an exclusion (start_login does NOT open this tool), which helps the agent avoid a wrong path. It doesn't explicitly contrast with siblings like update_my_profile or set_primary_email, but the primary-vs-secondary framing makes the intended use clear.

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

setup_domain_emailBInspect

Set up email sending for a verified domain. Configures the domain for sending verification emails from a custom address.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID
from_emailNoCustom from email address for the domain

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does state that the tool configures the domain and imposes an auth requirement, but it omits effects such as whether domain email settings are overwritten, whether a confirmation step follows, or whether the operation is reversible.

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?

The description is short, action-first, and the access block is relevant rather than filler. It could be slightly cleaner, but every sentence earns its place.

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

Completeness3/5

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

For a two-parameter configuration tool with no annotations and no output schema, the description covers the key prerequisites and auth path. It is still incomplete around post-call behavior and how this step fits with sibling verification/confirmation tools.

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 coverage is 100%, so the baseline is 3. The description's 'custom address' phrase reinforces from_email, but it adds no format or relationship detail beyond the schema's Domain ID and Custom from email address descriptions.

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?

The description uses a specific verb ('set up') and resource ('email sending for a verified domain'), and clarifies the action further by saying it configures the domain for sending verification emails from a custom address. It does not explicitly name sibling tools, but the action is distinguishable from check/start/confirm domain email operations.

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

Usage Guidelines3/5

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

It states clear prerequisites: the domain must be verified and a Proof account is needed, and it describes the authentication flow required before calling. It does not explain when to choose this over nearby siblings such as check_domain_email_status, start_domain_email_verification, or confirm_domain_email_code, so the usage context is implied but not explicit.

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

share_request_emailAInspect

Send an email notification to the subject of a verification request.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification request ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must disclose side effects and constraints. It does mention the need for a Proof account and the authentication flow (start_login) before this tool can be called, which is useful. However, it does not describe what happens on success or failure, whether the operation is idempotent, or any rate limits. It also does not clarify that the email is sent to the subject's registered email address. It adds some value but lacks depth.

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?

The description is concise, with the primary purpose stated in the first sentence. The second sentence provides necessary authentication context. There is no fluff or repetition, though the access guidance is slightly verbose with the 'Claude Code: /mcp → Authenticate' detail. Overall it is well-structured and front-loaded.

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?

The tool is simple with a single parameter, so the description need not be extensive. It covers the essential requirement of authentication and identifies the recipient (subject of a verification request). It lacks details about return values or error handling, but since there is no output schema and the operation is straightforward, the description is adequate for an agent to call it correctly.

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?

The schema already describes the only parameter (id) as 'Verification request ID' with 100% coverage. The description does not add any additional detail about how to obtain the id or what format it should be in. Baseline of 3 is appropriate since the schema covers the parameter and the description does not contradict it.

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 description clearly states the tool sends an email notification to the subject of a verification request. The verb is specific ('send'), the resource is explicit ('email notification to the subject of a verification request'), and it distinguishes from siblings like send_account_email or resend_verification by specifying the recipient and context.

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

Usage Guidelines2/5

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

The description does not explain when to use this tool over alternatives such as send_account_email or resend_verification. It only mentions authentication requirements, which is about how to use the tool, not when. No context about prerequisites (e.g., that a verification request must exist) or when this is the appropriate action is provided.

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

start_2faAInspect

Start a two-factor authentication challenge for a sensitive operation. Sends a verification code via the chosen channel. Returns a session ID, and for messaging channels: deep_link, qr_code (base64 PNG), and qr_text (UTF-8 text QR for terminal display).

Agent usage — full 2FA flow: (1) Call start_2fa with the appropriate action_type and channel. (2) Present the challenge, and do NOT announce a message the server did not send: email is the ONLY channel it dispatches on. On telegram/whatsapp the user opens deep_link and sends the message themselves; on sms they send sms_message to a number from sms_dids; the response's own instructions field says which. On email, a 200 carrying requires_email_selection: true and available_emails means nothing was sent and no session exists — ask which address and call again with email_id. For telegram/whatsapp, pass deep_link to render_auth_link; for sms, show sms_message. Never hand qr_text to a link renderer — it is the link already rendered as QR art, so print it verbatim inside a fenced code block only when a real terminal needs the QR. (3) Poll get_2fa_status with the returned session_id until status is "verified" (the user enters the code on their device) or "expired". (4) If verified, proceed with the protected operation (e.g. create_api_key). If expired, inform the user and offer to restart. Typical channels: "telegram" or "email". For email, the user may receive a magic link instead of a code — the backend handles this automatically.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel to receive the verification code
email_idNoSpecific email ID for email channel (optional)
action_typeYesThe sensitive action requiring 2FA

TDQS

A4.3/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 succeeds exceptionally: it reveals that email is the only dispatched channel, explains channel-specific user actions (deep_link, sms_message, sms_dids), warns about qr_text semantics, and notes the email magic-link possibility. It also discloses access and authentication requirements, going far beyond minimum disclosure.

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?

The description is long but well-structured: the core purpose and return values are front-loaded, followed by a numbered operational flow and warnings. Every sentence carries functional content for the agent (channel behavior, protocol steps, auth). While it could be tightened, the length is justified by the tool's complexity.

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

Completeness5/5

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

Despite having no output schema, the description thoroughly explains return fields and conditional outcomes (session_id, deep_link, qr_code, qr_text, instructions, requires_email_selection, available_emails), as well as the polling and completion flow including expiration handling. It also covers authentication prerequisites operable within the MCP environment. For this complex tool, the description is effectively complete.

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 input schema already covers 100% of parameters with descriptions and enums. The description adds value by explaining the situational role of `email_id` (needed when `requires_email_selection` is true) and by framing `action_type` as the sensitive operation being protected. It does not redefine enums, but that is unnecessary given the schema.

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?

The description clearly states that the tool starts a 2FA challenge, sends a verification code, and lists its return values (session ID, deep_link, qr_code, qr_text). It is specific and unambiguous, but it never distinguishes this tool from the sibling `start_2fa_for_action`, so it loses the full 5 for sibling differentiation.

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?

The description contains an explicit numbered 'Agent usage' flow that tells exactly when to call the tool, how to handle each channel, and what to avoid (e.g., not announcing unsent messages, not passing qr_text to a link renderer). However, it does not mention alternative 2FA-starting tools or conditions in which a different tool should be used, so it provides clear context but no exclusions.

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

start_2fa_for_actionAInspect

Start a 2FA challenge that grants the authenticated user permission to perform a sensitive action. The 2FA must complete on a channel DIFFERENT from the user's last login channel (the backend enforces this). On success a grant is stored keyed by the user id and action_type; middleware on the protected endpoint reads the grant and allows the mutation.

Destructive action types (api_key_create, api_key_revoke, api_key_regenerate, api_key_view, account_delete, phone_remove, email_remove, revocation_bulk) are capped at 5min TTL and forced single-use by server policy. Configuration scopes (settings_write, profile_update, templates_write) allow up to 24h TTL and caller-chosen single_use — useful for agents making multiple settings mutations in one session.

Agent usage: (1) Attempt the sensitive call; if you get 403 2fa_required note the action_type. (2) Call start_2fa_for_action with that action_type and a channel different from the login channel. (3) Present the challenge: on telegram/whatsapp pass deep_link to render_auth_link; on sms show sms_message and the number to send it to; on email check the response first: with more than one verified email and no email_id given, it answers 200 with requires_email_selection: true and available_emails — NO session was started and nothing was sent, so ask the user which address and call again with email_id rather than telling them to open a mailbox. Never hand qr_text to a link renderer — it is the link already rendered as QR art. Print it verbatim inside a fenced code block only when a real terminal needs the QR. (4) Call wait_for_2fa until the session is verified. (5) Retry the original sensitive call.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel for the 2FA challenge — must differ from the user's last login channel
email_idNoOptional: specific UserEmail id for email-channel 2FA
phone_idNoOptional: specific UserPhone id for phone-channel 2FA
single_useNoWhether the grant is consumed on first use. Server forces true for destructive action types. Defaults to true.
action_typeYesThe sensitive action the 2FA grant will authorize. Destructive scopes (api_key_*, account_delete, phone_remove, email_remove, revocation_bulk) are capped at 5 min TTL + forced single-use. Configuration scopes (settings_write, profile_update, templates_write) allow up to 24h TTL with caller-chosen single_use. See config/twoFAPolicy.ts on the backend for the canonical policy.
ttl_secondsNoRequested grant lifetime in seconds. Server caps to 300s for destructive action types, 86400s for configuration scopes. Defaults to 300 if omitted.

TDQS

A4.7/5.0
Behavior5/5

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

With zero annotations, the description carries the full burden, and it delivers exceptional behavioral disclosure: TTL caps (5min destructive vs 24h config), server-forced single-use, grant storage keyed by user id + action_type, backend-enforced channel-difference rule, and the critical gotcha that a 200 with requires_email_selection: true means NO session was started and nothing was sent. The qr_text warning ('it is the link already rendered as QR art') prevents a subtle misuse. This far exceeds the minimum viable transparency for a mutation-style 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?

The description is long (~300 words), but nearly every sentence carries high-value information that prevents real failure modes: the channel rule, the email-selection trap, the QR handling, and the retry sequence. It is well-structured with a front-loaded purpose statement, policy summary, then a numbered agent workflow. Minor redundancy exists—TTL caps and the channel constraint are repeated in the schema—so it is not perfectly lean, but no sentence is filler.

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 high-complexity tool with 6 params, no output schema, and subtle edge cases, the description is notably complete: it covers access prerequisites (Proof account, authentication), the trigger condition, channel-specific response payloads (deep_link, sms_message, qr_text), the polling handoff to wait_for_2fa, and non-success response semantics. The main gap is that it never specifies the full success-path response structure (e.g., challenge identifier fields) beyond the named payload fragments, which an agent would need to inspect the actual response for. Given the complexity and zero annotations, this is a minor omission.

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 coverage is 100% with already-rich parameter descriptions, placing the baseline at 3. The description adds meaningful context beyond the schema: it explains when email_id becomes necessary (the requires_email_selection multi-email edge case), why channel must differ (backend enforcement with consequence), and how single_use/ttl interact with the agent's multi-mutation session workflow. It doesn't fully detail every response field, but the added workflow context justifies a score above baseline.

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 and resource: 'Start a 2FA challenge that grants the authenticated user permission to perform a sensitive action.' This clearly distinguishes it from login-oriented siblings like start_2fa and verify_2fa, and the closing line 'start_login does NOT open this tool' reinforces the differentiation. The purpose is unambiguous and actionable.

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

Usage Guidelines5/5

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

The 'Agent usage:' section provides an explicit 5-step protocol: trigger on 403 2fa_required, call with the noted action_type, present the challenge per channel (routing telegram/whatsapp deep_link to render_auth_link, sms to sms_message, email with the multi-address requires_email_selection fallback), poll wait_for_2fa, then retry. It also names alternatives (render_auth_link, wait_for_2fa) and gives a when-not-to guidance ('Never hand qr_text to a link renderer'). This is explicit when-to-use and when-not-to-use with no inference required.

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

start_add_emailAInspect

Start adding a new email address. Sends an OTP code to the email. Returns a session ID to verify with.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address to add

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the side effect of sending an OTP and the return of a session ID, but it does not mention rate limits, idempotency, or that this only initiates the addition without completing it (though 'start' implies it). This is adequate but not comprehensive.

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?

The description is efficient: two concise sentences stating purpose and access requirements, with no redundancy or unnecessary detail. It is front-loaded with the main action and return value.

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 simple single-parameter tool that initiates an email addition, the description covers the essential information: what it does, what it returns, and prerequisite access. It could mention the next verification step, but that is implied by the session ID return and sibling tools like verify_email_otp.

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?

The schema already describes the email parameter with 100% coverage. The description adds a minor contextual note that the OTP is sent to this email, but it does not add significant meaning beyond what the schema provides. Baseline 3 is appropriate.

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 description clearly states the tool's purpose: 'Start adding a new email address' and specifies it sends an OTP code and returns a session ID. This distinguishes it from siblings like start_add_phone and verify_email_otp, making it easy for an agent to select the right tool.

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?

The description provides usage context by stating the requirement of a Proof account and the authentication flow via start_login. It implicitly tells the agent to call this tool only after authentication, but it does not explicitly mention when not to use it or alternatives beyond the general 'start_add' pattern.

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

start_add_phoneAInspect

Start adding a new phone number. Uses reverse OTP: the system sends a message and the user replies. Returns a session ID, deep_link, qr_code (base64 PNG), and qr_text (UTF-8 text QR for terminal display).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel for phone verification

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals the interactive nature ('the system sends a message and the user replies'), lists the return payload (session ID, deep_link, qr_code, qr_text), and states the access requirement. This goes well beyond the schema and informs the agent that the tool initiates a user-interactive process, though it does not mention potential timeouts, error conditions, or that the session needs polling via a status 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?

The description is organized into two focused paragraphs: the first explains the operation and output, the second covers access prerequisites. It is appropriately sized for the tool's interactive complexity and front-loads the core purpose. The access instructions are slightly verbose but necessary for correct invocation, and every sentence adds value.

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

Completeness3/5

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

The description covers the immediate call purpose, return values, and authentication prerequisite. However, it does not mention what to do after obtaining the session ID and QR code (e.g., share with user, wait for reply, then check status via get_add_phone_status). Given the tool is part of a multi-step OTP flow and no output schema exists, this omission leaves an agent without clear next-step guidance, making the description not fully complete.

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?

The schema already covers the single parameter fully with an enum and description ('Channel for phone verification'). The tool description adds no additional detail about the channel values or their implications, but given 100% schema coverage, the baseline of 3 applies. The description does implicitly tie the channel to the OTP message, but this is marginal.

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 description states a specific verb and resource: 'Start adding a new phone number.' It further clarifies the mechanism (reverse OTP) and return values, which distinguishes it from sibling tools like start_add_email or set_primary_phone. An agent can clearly identify the tool's purpose without needing to open the 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?

The description explicitly provides a prerequisite ('needs a Proof account') and a usage path: authenticate the client or sign in with start_login, then call this tool again. This gives concrete guidance on when to use the tool and references the relevant sibling for authentication. It does not, however, mention when not to use it (e.g., if a phone is already added) or point to get_add_phone_status for follow-up, leaving a small gap.

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

start_domain_email_verificationAInspect

Start domain verification via corporate email. Sends a verification code to a standard admin email address at the domain.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID
email_prefixNoEmail prefix to send verification to (default: admin)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It discloses the side effect of sending a verification code to an admin email, the authentication prerequisite, and the need to call again after establishing a session. It does not cover potential errors or response behavior, but the disclosed traits are accurate and useful.

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?

The action is front-loaded in one clear sentence, and the ACCESS block provides necessary authentication guidance without excessive verbosity. It is slightly longer than strictly necessary, but every sentence contributes operational value.

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?

Given moderate tool complexity, no annotations, and no output schema, the description covers purpose, mechanism, and authentication prerequisite adequately. It does not describe the response or next steps (e.g., confirming the code), but the schema covers parameters and an agent has enough information to invoke it correctly.

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 coverage is 100% with descriptions for both id and email_prefix, including the enum and default. The description adds only marginal context ('standard admin email address') beyond what the schema already documents, so the baseline score of 3 applies.

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?

Description states a specific verb ('Start'), resource ('domain verification'), and method ('via corporate email'), with a concrete behavioral detail: sends a verification code to a standard admin email at the domain. This clearly distinguishes it from siblings like start_domain_verification or start_user_domain_verification by its email-specific mechanism.

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?

The description clearly implies when to use it: to start domain verification specifically through corporate email. It also provides important prerequisite context by explaining the access requirements (needs a Proof account, authenticate or sign in via start_login, then retry). It does not explicitly name alternative tools or exclusions, but the context is unambiguous enough for an agent.

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

start_domain_verificationCInspect

Start a B2B domain verification. Creates a verification record and returns DNS/HTTP instructions for the customer to complete.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to verify (e.g. example.com)
customer_idNoCustomer identifier for B2B tracking
verification_methodNoVerification method (default: manual_dns)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior on its own. It discloses that the operation creates a verification record and returns instructions, which implies a state change, but it does not mention side effects (e.g., whether an email is sent), idempotency, failure modes (e.g., domain already verified), or any destructive potential. The access note is useful but does not cover behavioral traits.

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?

The description is brief and front-loads the core purpose in the first sentence. The second sentence adds a necessary access instructionants, though slightly verbose with the parenthetical. No redundant information is included.

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

Completeness3/5

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

The description conveys the basic action and access requirement, and the schema covers parameters. However, it does not explain the B2B domain context, how this tool relates to numerous domain-verification siblings, what the returned instructions look like (no output schema), or what might happen if prerequisites (like an existing domain) are not met. For a moderately straightforward tool, this is adequate but not fully complete.

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%, so all three parameters (domain, customer_id, verification_method) are already described in the input schema. The tool description adds no additional meaning or examples beyond the schema, so the baseline 3 applies.

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?

The description clearly states the action ('Start a B2B domain verification') and the outcome ('Creates a verification record and returns DNS/HTTP instructions'). The B2B qualifier hints at a distinction from user-level verification, but it does not explicitly name or contrast any sibling tool, so it falls short of full differentiation.

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

Usage Guidelines2/5

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

The description provides an authentication prerequisite (needs a Proof account, authenticate via /mcp) and a cryptic warning that 'start_login does NOT open this tool.' However, it gives no guidance on when to use this tool versus alternatives like start_user_domain_verification or check_domain_verification. No when-to-use, no exclusions of siblings.

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

start_loginAInspect

Start a login session by sending an authentication challenge to the user's chosen channel (Telegram, WhatsApp, SMS, or email). Returns a session ID and, FOR TELEGRAM AND WHATSAPP ONLY, deep_link, qr_code (base64 PNG) and qr_text (UTF-8 text QR for terminal display); on sms it returns sms_message with sms_dids instead, and on email nothing to display.

Agent usage: (1) Call start_login with the desired channel and phone_number (for SMS) or email (for email). (2) Present the challenge, and WHICH FIELD depends on the channel. On telegram/whatsapp pass deep_link to render_auth_link, which prints the clickable link and a QR code; in a chat client the link is what the user acts on, since they are usually on the same machine. On sms deep_link is an EMPTY STRING and render_auth_link will reject it — show sms_message and let the user pick a number from sms_dids. suggested_region is always set, but the matching ENTRY in sms_dids may be missing (europe and israel appear only when a number is configured) or present with an empty did, so offer that region first only when sms_dids[suggested_region] exists and carries a number, and otherwise offer whatever the object does. On email there is nothing to display at all, and nothing to check either: a result means the mail was accepted for delivery, so tell the user to open their inbox. A delivery failure is an ERROR here, not a field — the tool answers challenge_delivery_failed and NO session exists, so do not call wait_for_login; retry, or offer another channel. Never hand qr_text to a link renderer — it is the link already rendered as QR art, so print it verbatim inside a fenced code block or not at all, because its rows stop scanning the moment one wraps or a blank line lands between them. (3) Call wait_for_login with the returned session ID to poll until the user completes authentication. Terminal states: "verified" (login succeeded), "failed", "expired".

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoEmail address (required for email channel)
channelYesAuthentication channel
phone_numberNoPhone number in E.164 format (required for SMS channel)

TDQS

A4.9/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 transparency burden and does so thoroughly: it discloses channel-dependent return fields, that SMS deep_link is an empty string and will be rejected by render_auth_link, that delivery failure is an error with no session, and the QR-text formatting constraint. This is far beyond a minimal restatement.

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

Conciseness5/5

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

The description is long but every block earns its place: it is front-loaded with the core purpose, then organized into clear channel-specific branches and a follow-up workflow. The density supports an otherwise multi-variant tool.

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

Completeness5/5

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

Given no output schema and no annotations, the description fully compensates by documenting the response variants, the next-step wait_for_login call, failure semantics, and edge cases like missing sms_dids entries. An agent has enough context to invoke the tool correctly in every channel.

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 coverage is 100%, so the baseline is 3. The description adds value by tying channel choice to concrete behavioral consequences, such as which response fields appear and which parameter is required for SMS versus email, though the schema already documents the element requirements.

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 description opens with a specific verb and resource: Start a login session by sending an authentication challenge to the user's chosen channel, listing the exact channels and naming the returned session ID. This clearly separates it from siblings like wait_for_login, render_auth_link, or start_2fa.

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

Usage Guidelines5/5

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

It provides a numbered agent workflow, telling the agent to call start_login, present the challenge in a channel-specific way, then call wait_for_login. It explicitly handles negative cases, such as not calling wait_for_login when challenge_delivery_failed is returned, and routes Telegram/WhatsApp versus SMS versus email behavior.

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

start_user_domain_verificationAInspect

Start a self-service domain verification session. The user proves ownership of a domain via DNS or HTTP challenge.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain name to verify (e.g. example.com)
channelNoVerification channel (default: dns)

TDQS

A3.6/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden. It does disclose that this starts a stateful session and requires prior authentication, but it does not explain side effects (e.g. whether a pending verification is created), idempotency, or what happens if verification is already in progress.

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?

The description is compact and front-loads the core action before the access note. The access wording is slightly convoluted, but no sentences are wasted and the structure is easy to scan.

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

Completeness3/5

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

For a stateful starter with no output schema and no annotations, the description should explain what the caller receives and what to do next (e.g. polling check_user_domain_verification). It covers authentication well and parameters completely, but the missing post-call workflow leaves a real gap.

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 coverage is 100%, with both domain and channel already described in the schema, so the baseline is 3. The description's mention of DNS/HTTP loosely maps to the channel enum but adds no new parameter-level detail beyond the schema.

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?

The description states a specific action ('start a self-service domain verification session') and the mechanism (proof via DNS or HTTP challenge). It clearly identifies the resource, but it never explicitly distinguishes this from closely named siblings like start_domain_verification or start_domain_email_verification, so it earns a 4 rather than 5.

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?

The ACCESS note gives concrete context: the caller needs a Proof account and an authenticated client, and says to call start_login first if not authenticated. This is clear usage guidance, but it stops short of stating when to choose this tool over alternative verification tools or when not to use it.

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

submit_verification_codeAInspect

Submit an OTP/challenge code for a pending verification. Accepted ONLY where we delivered the code out-of-band to the party being verified: type "email", and type "domain" with channel "email". Any other pair answers 400 unsupported_for_type and completes elsewhere — use trigger_verification (POST /verifications/:id/verify) for a domain over dns/http/auto; a phone completes when the code reaches us FROM that number; social completes through its OAuth callback; a telegram_bot is already verified at creation.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification ID
codeYesThe OTP or challenge code to submit

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the 400 unsupported_for_type error for unsupported pairs, the authentication prerequisite, and the fact that start_login does not open this tool. It does not explicitly state that submission is a mutating action, but that is implied. It also doesn't describe the success response, but that is not required. Overall, it is quite transparent about constraints and prerequisites.

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

Conciseness5/5

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

The description is dense and efficient, with no filler. It leads with the core purpose, then immediately states the strict acceptance criteria, then lists alternatives, and finally the access requirement. Every sentence earns its place and the structure is logical, making it easy for an agent to parse.

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

Completeness5/5

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

For a tool with no output schema, the description covers all essential aspects: supported inputs, error conditions, alternatives, and authentication. An agent can correctly determine when to call this tool and what to expect. Nothing critical is missing.

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?

The input schema already provides descriptions for both parameters (id and code) at 100% coverage. The tool description does not add any additional parameter-level semantics beyond what the schema states, so it does not improve on the baseline of 3.

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 description clearly states a specific verb ('Submit') and resource ('OTP/challenge code for a pending verification'), and immediately specifies the supported type/channel pairs. It explicitly distinguishes itself from other verification completion methods (trigger_verification, phone, social, telegram_bot), leaving no ambiguity about what it does.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use and when-not-to-use guidance, naming the exact conditions (type 'email', and type 'domain' with channel 'email') and listing alternative tools for other cases. It also clarifies that start_login does not open this tool, and that authentication is required. This is exemplary routing.

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

test_verifyAInspect

Auto-complete a verification in test mode (pk_test_* API keys only). Useful for testing flows without real OTP delivery.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification ID

TDQS

A4/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It discloses test-mode-only behavior, the need for a Proof account, client authentication, and the start_login caveat. However, it does not explain side effects (e.g., whether the verification becomes permanently marked complete) or expected return behavior, leaving some behavioral ambiguity.

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

Conciseness5/5

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

The description is compact and front-loaded: the core purpose and constraint appear in the first sentence. The ACCESS note is purposeful and adds necessary operational context without unnecessary elaboration. Every sentence earns its place.

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 tool with one parameter and no output schema, the description covers the essential operational context: test-mode restriction, authentication prerequisite, and a common misuse warning. It could be slightly more complete by explaining where the verification ID comes from or what a successful call returns, but these are minor given the tool's simplicity.

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 coverage is 100%, and the only parameter 'id' is adequately described as 'Verification ID.' The description adds no additional detail about how to obtain or format the ID, but the schema already carries the meaning, so baseline 3 is appropriate.

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 description clearly states a specific action ('Auto-complete a verification'), the resource involved, and a critical scoping constraint ('pk_test_* API keys only'). It also explains the practical purpose (testing without real OTP delivery), which distinguishes it from normal verification submission tools.

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?

The description explicitly says when to use this tool: for testing flows without real OTP delivery, and only in test mode. It also adds a clear exclusion by warning that 'start_login does NOT open this tool.' It does not name a specific alternative tool for non-test verification, but the mode-based guidance is sufficient.

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

trigger_drillAInspect

Fire an on-demand Proof-Me drill against one enrolled challenger — a real cross-channel identity challenge carrying the scheduled-safety-check label. Complements the automated daily drill + monthly reinforcement sweeps.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID
challenger_idYesChallenger ID to drill

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden and does disclose several traits: the drill is on-demand, real, cross-channel, and carries a scheduled-safety-check label, and it requires account authentication. It does not state what side effects occur (e.g., whether repeated calls create multiple challenges) or what the response looks like, so transparency is adequate but incomplete.

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

Conciseness5/5

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

The description packs purpose and scope into two tight sentences and adds a three-sentence ACCESS note, with no filler. The action is front-loaded and the critical authentication caveat is placed where it will be noticed before invocation.

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 two-parameter tool with no output schema or annotations, the description provides the needed operational context: what the drill is, how it relates to scheduled drills, and how to recover before calling. It could be more complete by describing what is returned or how to confirm the drill fired, but it is sufficient for an agent to begin.

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 coverage is 100%, so the two parameters are already documented by ID patterns and brief descriptions. The description adds the useful constraint that the challenger must be 'enrolled' and that the drill targets one challenger, but it does not elaborate on hitl_id or how to obtain valid IDs.

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 description names a specific action ('Fire an on-demand Proof-Me drill') and a specific target ('one enrolled challenger'), plus labels the result as a 'real cross-channel identity challenge.' It also distinguishes this tool from the automated daily and monthly sweeps, so an agent can tell what it is for.

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?

It gives a clear when-to-use signal: on-demand drills complement the automated daily drill and monthly sweeps. The ACCESS section supplies an explicit prerequisite (authenticate the client, then call again) and a negative instruction (start_login does NOT open this tool), although it does not name alternative drill/verification siblings.

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

trigger_verificationCInspect

Trigger a DNS/HTTP verification check for a pending domain verification.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It names the action and access requirement but does not explain whether the check is asynchronous, what state changes occur, whether repeated calls are safe, or what the response looks like. The start_login warning adds context but little behavioral transparency.

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?

The purpose sentence is front-loaded and concise. The access note is compact and actionable, though 'then call this tool again' and the start_login warning are slightly awkward. Overall there is minimal waste.

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

Completeness3/5

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

For a simple one-parameter trigger with no output schema, the description provides the purpose and the authentication prerequisite. However, it omits expected outcomes, side effects, and what a successful trigger returns, leaving an agent unable to fully predict the post-call state.

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 coverage is 100% and the single parameter id is already described as 'Verification ID.' The description does not add meaning beyond the schema, but with full coverage the schema carries the weight, so the baseline 3 is appropriate.

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?

The description states a specific verb and resource: 'Trigger a DNS/HTTP verification check for a pending domain verification.' This clearly identifies the action and target. However, it does not explicitly distinguish itself from sibling tools like check_domain_verification or verify_domain, which could overlap in intent.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many verification-related siblings. The only usage note is an authentication prerequisite and a warning that start_login does not open this tool, which addresses authentication flow rather than tool selection.

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

update_circleAInspect

Update a Circle's name. Only the display name is mutable — the profile/identity binding is create-only.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCircle ID
nameNoNew name for the Circle

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the authentication requirement, the mutation scope (name only), and warns that start_login will not grant access to this tool. This is meaningful context beyond the schema, though it does not describe success/error responses.

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

Conciseness5/5

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

The description is compact and front-loaded, with the core purpose stated in the first sentence. Every sentence earns its place: the second sentence prevents misuse by clarifying immutability, and the ACCESS paragraph gives a necessary authentication instruction and a clear warning about start_login.

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 simple two-parameter update tool with no output schema, the description covers the essential operational context: what can be updated, what cannot be changed, and the authentication prerequisite. It is complete enough for an agent to call the tool correctly, though it doesn't elaborate on return values or error cases.

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. The description adds value by clarifying that the name parameter is the display name and is the only mutable field, while the profile/identity binding cannot be changed through this tool. This enriches the meaning of the name parameter beyond the schema's short 'New name for the Circle.'

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 description opens with a specific verb and resource: 'Update a Circle's name.' It further distinguishes itself by stating that only the display name is mutable and that profile/identity binding is create-only, which separates it from creation or other update operations among the sibling tools.

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?

The description provides clear context by requiring a Proof account and explicit authentication steps. It also gives an exclusion by warning that start_login does NOT open this tool, helping the agent avoid an incorrect access path. It does not explicitly name alternatives for other update scenarios, but the create-only binding note implies the boundary.

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

update_hitlBInspect

Update a HITL config. Can change name, channels, or timeout.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHITL config ID
nameNoNew name (null to clear)
channelsNoUpdated channels
timeout_secondsNoUpdated timeout in seconds (60–86400)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral traits on its own. It only mentions the access requirement and that start_login does not open the tool. It does not disclose whether the update is partial or full (e.g., whether passing only name preserves other fields), the effect of null name, or what happens to existing channels when a new array is provided. For a mutation tool, this is insufficient.

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?

The description is compact and front-loaded with the core purpose. The access note is a separate block, which is useful but slightly tangential. Overall, it is efficient with no redundant phrasing.

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

Completeness2/5

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

Given no output schema and no annotations, the description carries the full burden of explaining usage. It lacks key details such as whether the update replaces the entire channels array, whether only specified fields are updated, and the behavior when an invalid id is provided. The tool has multiple parameters and a nested channels structure, so more guidance is needed for correct invocation.

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 schema already explains each parameter (e.g., 'New name (null to clear)', 'Updated channels', 'Updated timeout in seconds'). The description merely lists the same fields without adding nuance or clarifying interactions between them, so it adds no value beyond the schema.

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 description clearly states the tool updates a HITL config and lists the exact fields that can be changed (name, channels, timeout). This distinguishes it from sibling tools like create_hitl, delete_hitl, and get_hitl without needing to compare schemas.

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

Usage Guidelines2/5

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

The description provides only an authentication prerequisite ('needs a Proof account... start_login does NOT open this tool') but does not explain when to use this tool versus alternatives such as create_hitl or update_settings. There is no explicit guidance on when to choose this tool over a sibling.

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

update_my_profileAInspect

Update the current user's primary profile. Supports display name, bio, avatar, theme, custom links, and verification display settings.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bioNoProfile bio
themeNoProfile theme settings
is_publicNoWhether the profile is publicly visible
avatar_urlNoAvatar (HTTPS URL or base64 data URI, null to remove)
custom_linksNoCustom links (max 20)
display_nameNoDisplay name
show_proof_channelsNoShow proof channels
show_verification_datesNoShow verification dates

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden; it discloses the access requirement, the need to authenticate before retrying, and that start_login will not lead into this tool. It stops short of stating whether updates are partial or how the mutation affects the public profile, but the core write behavior and prerequisite are explicit.

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

Conciseness5/5

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

The core purpose is front-loaded in the first sentence, the supported fields are a compact list, and the access note is separated visually. No filler or redundant restatement of the parameter names exists.

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 tool with 8 optional parameters and nested objects, the definition supplies the missing non-schema context: authentication, account requirement, and the fact that the target is the caller's primary profile. It does not explain the difference from update_profile in depth, but the schema covers optionality and the main invocation path is clear.

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 coverage is 100%, so the schema already documents every parameter. The description's field list groups parameters into semantic categories (e.g., 'verification display settings' for show_proof_channels and show_verification_dates), which is marginal added value, so the baseline of 3 is appropriate.

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 description names a precise operation—'Update the current user's primary profile'—and enumerates exactly which fields it touches (display name, bio, avatar, theme, custom links, verification display settings). The 'current user's primary profile' qualifier distinguishes it from the generic sibling update_profile and from read-only get_my_profile.

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?

It gives a clear precondition (Proof account), a required auth step, and an explicit when-not: 'start_login does NOT open this tool.' It does not name the alternative tool for updating non-primary profiles, so the guidance is strong but not fully exhaustive.

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

update_profileBInspect

Update a profile by ID. Supports changing display info, theme, custom links, and verification display settings.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bioNoProfile bio
themeNoProfile theme settings
is_publicNoWhether the profile is publicly visible
avatar_urlNoAvatar (base64 or URL, null to remove)
is_primaryNoSet as primary profile
profile_idYesProfile ID
is_businessNoWhether this is a business profile
custom_linksNoCustom links (max 20)
display_nameNoDisplay name
business_nameNoBusiness name
show_proof_channelsNoShow proof channels on public profile
show_verification_datesNoShow verification dates on public profile

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It communicates that the tool mutates a profile and adds an access constraint, but it does not state whether the update is partial or full replacement, what happens to omitted fields, whether prior settings are overwritten, or any side effects. For a mutation tool, this is a significant gap.

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

Conciseness5/5

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

The description is concise and well-structured. It front-loads the core purpose in the first sentence, then adds necessary access instructions in a short second paragraph. Every sentence earns its place.

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

Completeness3/5

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

The tool is a complex mutation (12 params, nested objects, no annotations, no output schema). The description gives access context and accepts fields but omits behavioral semantics like partial update semantics, idempotency, or effects on existing data. It also doesn't clarify how this differs from update_my_profile announced by siblings. Complete enough for a first attempt but not fully robust.

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%, so the schema already documents each parameter. The description adds high-level grouping ('display info, theme, custom links, and verification display settings') but no additional meaning or syntax beyond the schema. Baseline 3 applies because the schema does the heavy lifting.

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?

The description states a specific verb ('Update a profile by ID') and resource ('profile'), and lists the categories of updatable content ('display info, theme, custom links, and verification display settings'). It is clear but does not explicitly distinguish it from the sibling 'update_my_profile', which likely targets the caller's own profile.

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

Usage Guidelines3/5

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

Provides access and authentication context: requires a Proof account, tells you to authenticate then call again, and notes that start_login does NOT open this tool. However, it does not mention when to use this tool versus alternatives like update_my_profile or set_primary_profile, leaving the routing decision to the agent.

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

update_profile_proofsAInspect

Update which verified assets (proofs) are displayed on a specific profile. Controls visibility, privacy masking, ordering, and labels.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
proofsYesProofs to display on profile
profile_idYesProfile ID

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are present, so the description carries the full disclosure burden. It does disclose the operation's effect, the access requirement, and a start_login caveat. But it does not state whether the proofs array is a full replacement or a partial update, what happens to omitted proofs, what permissions beyond having an account are needed, or what response/error behavior to expect.

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?

The purpose is front-loaded in one clear sentence, followed by a compact control enumeration and a terse access note. Each sentence earns its place, and the structure is easy to scan, though the ACCESS block could be tightened slightly.

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

Completeness3/5

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

For a mutation tool with two parameters and complete schema coverage, the definition is mostly workable, and the authentication flow is a valuable addition. It is incomplete because it never clarifies replacement semantics, sibling differentiation, or expected return behavior, which matters given no output schema and no annotations.

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%, so the baseline is 3. The description's mention of visibility, privacy masking, ordering, and labels maps conceptually to is_visible, mask_level, display_order, and label, which adds framing but no new technical detail beyond what the schema already documents.

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?

The description states a specific verb ('Update') and resource ('verified assets/proofs displayed on a specific profile'), and enumerates the controlled aspects: visibility, privacy masking, ordering, and labels. It is clear on its own, but it does not explicitly differentiate itself from nearby siblings like update_public_proofs, update_profile, or update_my_profile, so it stops short of a 5.

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?

The description gives a concrete prerequisite (Proof account), an explicit authentication flow (Claude Code: /mcp → Authenticate, then call again), and a useful caveat that start_login does NOT open this tool. However, it does not explain when to prefer this tool over update_public_proofs or update_profile, so selection guidance among alternatives is incomplete.

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

update_profile_templateBInspect

Create or update a custom template for a specific profile, channel, and message type.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTemplate body text with variable placeholders
typeYesMessage type (e.g. verification_request, login_request)
channelYesMessage channel
subjectNoEmail subject line (email channel only)
is_activeNoWhether the template is active
profile_idYesProfile ID
button_textNoButton text (email channel only)
button_url_templateNoButton URL template with placeholders

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It clearly states that the operation creates or updates a template and that authenticated Proof account access is required. It does not describe return values, overwrite semantics, or side effects on existing templates, but the core mutation behavior is transparent.

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?

The description is compact and front-loaded: one sentence states the purpose, and a second provides an important access warning. There is no wasted content, though the access note could have been integrated more cleanly.

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

Completeness3/5

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

The schema covers parameters and the description covers the auth requirement, which is essential for invocation. However, the description omits upsert semantics, return behavior, and any guidance on how this differs from the generic update_template tool, leaving the agent to infer some context.

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?

The input schema already describes all 8 parameters, so the baseline is 3. The description broadly maps to profile_id, channel, and type but adds no detail beyond what the schema provides.

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?

The first sentence names a specific resource (a custom template), the key dimensions (profile, channel, message type), and the action (create or update). It is clear enough to identify the tool's target, though it does not explicitly contrast it with sibling tools like update_template or list_profile_templates.

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

Usage Guidelines2/5

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

The description provides an access prerequisite and instructs the agent to authenticate before retrying, which is useful. However, it does not explain when to choose this tool over alternatives such as update_template or preview_profile_template, and it gives no exclusion criteria.

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

update_public_proofsBInspect

Update which verified proofs are visible on the user's public profile, including visibility, masking, and display order.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
proofsYesArray of proof display configurations (max 50)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It identifies the operation as an 'update' (implying mutation) and gives access context, but it does not explain whether the update is a full replacement or incremental, what happens to proofs omitted from the array, any side effects, idempotency, or the response format. For a mutating tool, this is a significant gap.

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?

The description is two sentences: the first clearly states the purpose, the second provides essential access instructions. It is front-loaded with the main action and avoids unnecessary filler. The access note is relevant and earns its place. Overall efficient and well-structured.

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

Completeness3/5

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

For a mutation tool with a nested array parameter and no output schema, the description covers the operation's purpose and access requirements, but omits what the caller should expect on success (e.g., return value or confirmation), any constraints beyond the schema's maxItems, and how the update interacts with existing profile state. The absence of response details and partial-update semantics leaves the definition incomplete.

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?

The input schema already describes the single 'proofs' parameter thoroughly (each sub-property like label, asset_id, is_visible, mask_level, display_order has a description, and mask_level has an enum). Schema coverage is 100%, so the description adds little beyond restating these fields. It mentions 'visibility, masking, and display order' which map to the schema, but does not add new meaning or constraints not already present.

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?

The description states a clear action ('Update which verified proofs are visible') with a specific resource ('user's public profile') and lists the aspects covered (visibility, masking, display order). It is not a tautology and conveys the core functionality. However, it does not explicitly differentiate from siblings like 'update_profile_proofs', which could cause ambiguity for an agent choosing between them.

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

Usage Guidelines3/5

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

The description includes practical access prerequisites ('needs a Proof account', authentication via /mcp or start_login), which is helpful. But it provides no guidance on when to choose this tool over alternatives such as 'update_profile_proofs' or 'update_my_profile', and does not state any exclusions. The access information is useful but incomplete as usage guidance.

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

update_settingsAInspect

Update account settings: branding, the outbound webhook endpoint with its event subscriptions, and the default proof lifetime. Setting the first webhook endpoint creates the signing secret and returns it in this response; the value is returned only when this call created or rotated it, so record it then.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhookNoOutbound webhook configuration. Deliveries carry an HMAC-SHA256 X-Proof-Signature over "<X-Proof-Timestamp>.<body>".
brandingNoBranding settings to update
proof_expiry_daysNoDefault proof-token lifetime in days for newly issued proofs

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the non-obvious secret lifecycle: setting the first webhook endpoint creates the signing secret, it is only returned when created or rotated, and the agent must record it at that time. It also states the authentication requirement. It does not describe other response contents, but the critical caveat is covered.

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

Conciseness5/5

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

The description is compact and well-organized into two functional paragraphs: scope plus the critical secret caveat, then access guidance. Every sentence contributes actionable information with no filler or repetition of schema content.

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?

Given the complex nested schema and absence of an output schema, the description covers the most important contextual gaps: the authentication gate and the one-time-only secret return. It does not enumerate the full response shape, but for an update operation the provided caveats are the parts most likely to cause agent error.

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. The description adds meaningful cross-parameter behavior beyond the schema: the webhook secret creation/rotation and one-time return semantics, which is not inferable from the parameter definitions alone. It does not redundantly repeat the schema's field-level descriptions.

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 description uses the specific verb 'Update' with a clear resource: account settings, and enumerates the exact scopes: branding, outbound webhook endpoint with event subscriptions, and default proof lifetime. This distinguishes it from related siblings like get_settings and start_login without needing to inspect the 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?

The ACCESS note provides a concrete prerequisite (Proof account, authenticate via /mcp), instructs the agent to retry after authentication, and explicitly says start_login does NOT open this tool. It gives clear context but does not explicitly name sibling alternatives like get_settings or update_profile, so it stops short of full when-not guidance.

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

update_templateAInspect

Create or update a custom template for a specific channel and message type. Replaces the default template.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTemplate body text with variable placeholders
channelYesMessage channel
subjectNoEmail subject line (email channel only)
button_textNoButton text (email channel only)
message_typeYesMessage type (e.g. verification_request, login_request)
button_url_templateNoButton URL template with placeholders

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden. It does well by stating the side effect that the tool 'Replaces the default template' and by disclosing the access requirement and the start_login caveat. It does not mention response behavior, reversibility, or conditional effects like whether email-only parameters apply, but the core behavioral trait of overwriting the default template is explicitly surfaced.

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

Conciseness5/5

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

The description is compact and front-loaded: the main purpose is stated in the first sentence, the key side effect in the second, and the access requirement plus the important start_login caveat in the final block. Every sentence earns its place, and the structure makes the most critical information immediately visible.

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

Completeness3/5

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

The description is solid for a mutation tool with full schema coverage, but there is no output schema and no mention of what the tool returns or confirms after success. It also does not explain what happens if a template already exists beyond the 'Create or update' phrasing. Given the lack of return-value documentation, a 3 reflects that it is adequate but not fully complete.

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%, so the baseline is 3 even without additional parameter details in the description. The description adds only general context about 'specific channel and message type,' which is already reflected in the schema. It does not clarify non-obvious semantics like placeholder syntax or conditional subject/button requirements beyond what the schema already provides.

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?

The description clearly identifies the verb and resource: 'Create or update a custom template for a specific channel and message type.' It also adds the meaningful detail that it 'Replaces the default template,' which distinguishes its effect. However, it does not explicitly distinguish this from sibling template tools like update_profile_template or preview_template, so it stops short of a 5.

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?

The description gives clear operational context: a Proof account is required, the client must be authenticated before retrying, and it explicitly warns that 'start_login does NOT open this tool.' This gives the agent a concrete when-and-how-to-use signal. It does not name alternative tools for template editing or previewing, so it lacks the full 'when-not/alternatives' detail needed for a 5.

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

upload_hitl_keysAInspect

Upload an encryption keypair for a HITL config. The server validates the RSA-4096 public key and computes the key ID. Note: the encrypted_private_key is already encrypted client-side with the user's password — the server never sees the password.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID
kdf_saltYesBase64url-encoded PBKDF2 salt
public_keyYesPEM-encoded RSA-4096 SPKI public key
encrypted_private_keyYesJSON-serialized encrypted private key envelope (PBKDF2-SHA256+AES-256-GCM)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden. It discloses that the server validates the RSA-4096 public key, computes the key ID, and never sees the password because the private key is already encrypted client-side. It does not mention whether uploading replaces existing keys or what the return payload is, but the security-critical behavior is well covered.

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

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, followed by two essential context blocks: the security note and the access/auth instruction. Every sentence earns its place; no filler or redundant repetition of the schema.

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 mutating tool with no annotations and no output schema, the description covers purpose, validation behavior, security posture, and authentication requirements. It could be more complete by stating that the HITL config must already exist or by describing the result of a successful upload, but the provided context is sufficient for correct invocation in most cases.

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 coverage is 100%, so the schema already documents all four parameters. The description adds context about RSA-4096 and client-side encryption, but largely reinforces what the parameter descriptions already say rather than introducing new semantics.

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 description states a specific action ('Upload an encryption keypair') and a specific target ('for a HITL config'), with concrete details about validation and key ID computation. This clearly distinguishes it from related siblings like get_hitl_keys and delete_hitl_keys.

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?

The description gives explicit access context: a Proof account is needed, the client must authenticate first, and start_login does NOT open this tool. It does not explicitly state the ordering relative to create_hitl or when to use it instead of other HITL tools, but the auth flow guidance is clear and useful.

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

validate_proofAInspect

Validate a proof token online. Checks the token signature, expiry, and revocation status against the server, and optionally that the proof is about the identifier you expect. Public endpoint — no API key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierNoOptional: the identifier this proof should be about (phone, email, domain, ...). When supplied, a proof about anything else answers valid:false with reason "identifier_mismatch"; a proof of an encrypted decision answers "identifier_unverifiable".
proof_tokenYesThe JWT proof token to validate

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and it does well, disclosing that the tool checks signature, expiry, and revocation status server-side, and optionally validates the identifier. It also reveals the public endpoint nature, adding useful behavioral context. It doesn't mention response details, but the core behavior is clearly disclosed.

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

Conciseness5/5

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

The description is three concise sentences with the primary action front-loaded. The second sentence adds the key validation details, and the third notes the auth requirement. Every sentence earns its place with no superfluous content.

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 simple two-parameter validation tool with no output schema, the description covers the main operation and the public-auth requirement. Parameter details are fully handled by the schema. The only minor gap is the lack of explicit return-value information, but this doesn't prevent an agent from calling the tool correctly.

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%, with proof_token and identifier already well-documented. The description adds no additional parameter meaning beyond what the schema provides, so the baseline of 3 is appropriate.

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?

The description uses the specific verb 'Validate' with the resource 'proof token' and lists the exact checks performed (signature, expiry, revocation status). It is clear and unambiguous, though it does not explicitly differentiate from sibling tools like get_proof_status or verify_delegation.

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

Usage Guidelines3/5

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

The description implies usage when full validation of a proof token is needed by listing the checks, and notes it is public with no API key required. However, it does not explicitly state when to use this tool versus alternatives, nor does it give exclusions or comparison to sibling tools.

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

verify_2faAInspect

Submit a verification code to complete a 2FA challenge. Rate limited to 10 attempts per minute.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesVerification code
session_idYes2FA session ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It reveals a useful rate limit (10 attempts per minute) and an access prerequisite (Proof account, session from start_login), which go beyond the schema. It does not describe failure modes, code consumption, or return values, but it does disclose two important behavioral constraints.

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

Conciseness5/5

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

The description is compact and action-first, with no filler. The rate-limit and access instructions are each purposeful, and the structure makes it easy to scan quickly.

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 two-parameter tool with no output schema, the description covers the main non-obvious constraints (rate limit, authentication prerequisite) and provides a mapping to start_login. It omits any information about the response or what a successful/failed verification returns, so a callable agent is not fully briefed on outcomes.

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%: both code and session_id are already described in the input schema. The description adds no parameter-level details, so the baseline of 3 is appropriate.

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?

The description clearly states a specific action ('Submit a verification code') and its goal ('complete a 2FA challenge'), making the tool's purpose unmistakable. However, it does not differentiate from the sibling tool submit_verification_code, which appears to do nearly the same thing, nor does it clarify the relationship with verify_2fa_magic_link.

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?

The description gives concrete usage guidance: a Proof account is required, and the agent should authenticate this client or sign in via start_login to obtain a session before calling verify_2fa. It does not explicitly name alternative tools or state when NOT to use this tool, but the access workflow is clear.

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

verify_delegationAInspect

Verify a Proof of Delegation — the attestation that a domain authorized a specific agent artifact. Pass either the artifact's card (MCP server.json / A2A agent card) or a raw delegation token, PLUS two facts you established yourself: the artifact identity you resolved (the package you are installing, the endpoint you are calling) and the domain you expect to stand behind it. Both are required — a token can be copied into someone else's card, and any domain owner can mint a valid delegation naming someone else's package, so a verdict without both pins would mean 'some domain said something about some artifact'. WHERE THE IDENTITY MAY COME FROM: it is the artifact you are acting on, and never a value read from inside the artifact you are checking. A name in the artifact's own package.json, card or manifest is self-declared and editable by whoever ships it, so checking it against the delegation compares the artifact with itself. Resolve it afresh at call time instead of reusing a value from earlier in this conversation, which may already be stale. When no independently resolvable identity exists — a local or unpublished artifact — you have nothing to compare against, and that is the honest answer: report it rather than a mismatch, because a mismatch here reads as an accusation against the domain named in the delegation. The verifier walks signature → principal → delegate → revocation status, including the cascade down to the domain control proof. Requires no API key. What a verified result means: the expected domain's controller authorized this artifact for these scopes — NOT that the artifact is safe, audited or endorsed.

ParametersJSON Schema
NameRequiredDescriptionDefault
cardNoThe MCP server card or A2A agent card to read the delegation from
tokenNoA raw delegation token, when you already have it instead of a card
delegateYesThe artifact identity you resolved independently. Required: this comparison is what defeats a copied token.
check_statusNoDefault true. When false the signature and claims are checked but revocation is NOT — treat the result as "not revoked-checked", never as "not revoked".
required_scopesNoCapability scopes the delegation must grant
expected_principalYesRequired. The domain you expect to have authorized this artifact (e.g. postmarkapp.com) — an issuer binds the artifact to nothing, so any domain owner can mint a valid delegation for someone else's package. Without this pin the answer is only "some domain claims this".

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden and delivers thoroughly: it spells out the verification chain (signature → principal → delegate → revocation status, including the cascade to domain control proof), states that no API key is required, and explicitly bounds what a verified result means — authorization for scopes, NOT safety, audit, or endorsement. It also discloses edge-case behavior honestly (local/unpublished artifact → report the absence of a comparable identity rather than emit a mismatch).

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 with the core purpose in the first sentence, and nearly every sentence earns its place given the subtle failure modes (copied tokens, self-declared identity, stale resolution). The trade-off is a dense unbroken wall of text with heavy ALL-CAPS emphasis; paragraph breaks would materially improve scannability for an agent.

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 6-parameter tool with nested objects, no annotations, and no output schema, the input semantics, identity-resolution rules, and verdict semantics are thoroughly covered. The notable gaps are the absence of any description of the return shape (no output schema exists, so an agent cannot predict what a verdict looks like) and no differentiation from the plural sibling verify_delegations.

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 coverage is 100% and the schema's per-parameter descriptions are already unusually rich (delegate: 'never a value read from inside the artifact... resolved afresh'; expected_principal: 'any domain owner can mint a valid delegation for someone else's package'). The description reinforces the attack model and why both pins are required together, but adds only marginal meaning beyond what the schema already states, so the high-coverage baseline of 3 applies.

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: 'Verify a Proof of Delegation — the attestation that a domain authorized a specific agent artifact.' The clarifying definition of what a proof of delegation is distinguishes this from sibling tools like verify_domain, validate_proof, and get_proof_status without needing to open their schemas.

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?

Provides unusually detailed invocation guidance: pass either a card or a raw token PLUS two independently established pins, resolve the artifact identity afresh and never from inside the artifact, and report rather than return a mismatch when no independent identity exists. However, it never explicitly names alternative tools or exclusion conditions (e.g., when to use verify_delegations or validate_proof instead), so the routing to siblings remains implicit.

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

verify_delegationsAInspect

Batch-verify up to 50 Proof of Delegation artifacts in one call — the inventory half of the checker (h-proof-checker-mcp): re-check everything you already trust instead of one verify_delegation call per artifact. Each item takes the same shape verify_delegation requires (card XOR token, delegate, expected_principal, optional required_scopes) and follows the same rule about where identity comes from: each delegate is the artifact you are acting on, never a value read from inside the artifact you are checking, and resolved afresh at call time. Items are verified INDEPENDENTLY — no cross-item state, nothing persisted, one item failing never affects another item's result. This tool does NOT discover what you have installed and does NOT fetch anything on your behalf: it verifies material you already hold, the same trust boundary verify_delegation draws. Revocation is always checked (there is no check_status:false here — the point of a batch re-check is to see what changed since you last looked). Each result carries an outcome: confirmed_valid (verified), confirmed_invalid (a genuine negative verdict — revoked, expired, mismatched, malformed, and similar), no_claim_found (the artifact publishes no delegation at all — an absence, never an accusation), or unconfirmed (we could not reach the issuer or otherwise get a confident answer right now — NEVER treat this as a bad verdict). Requires no API key. checked_at on each result is the moment THAT item's own check completed, not one timestamp shared across the call.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes1-50 artifacts to verify in this call, each shaped like a verify_delegation call

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full disclosure burden — and it delivers extensively: no cross-item state, no persistence, independence of results, no API key required, per-item checked_at timestamps, and a full outcome taxonomy (confirmed_valid, confirmed_invalid, no_claim_found, unconfirmed) complete with the critical warning to never treat unconfirmed as a bad verdict. This is far beyond minimal disclosure.

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?

The description is long (~230 words) but every segment earns its place given the tool's complexity: four outcome semantics, a trust-boundary caveat, a timing subtlety, and an independence guarantee all need stating. The core purpose is front-loaded, and the density is purposeful rather than padded, though a few clauses could be tightened.

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

Completeness5/5

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

For a tool with no output schema and no annotations, the description is exceptionally complete: it covers the 50-item limit, the outcome vocabulary that substitutes for an output schema, per-item timing, authentication requirements, the trust boundary, and what the tool explicitly does NOT do. An agent has everything needed to decide when to call it and how to interpret results.

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 coverage is 100%, so the baseline is 3 — the schema already documents the items array and its nested requirements thoroughly. The description adds genuine value on top: the 'card XOR token' relationship, the identity rule (delegate must be resolved afresh, never read from inside the artifact), and the batch-shape parallel to verify_delegation. It reinforces rather than repeats the schema.

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 description opens with a specific verb-object pair ('Batch-verify up to 50 Proof of Delegation artifacts in one call') and immediately names the sibling it complements ('instead of one verify_delegation call per artifact'), making the tool's scope and identity unmistakable. The 'inventory half of the checker' framing sharpens the distinction from its namesake.

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

Usage Guidelines5/5

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

Explicit when-to-use guidance appears throughout: use it to re-check material you already trust en masse, not for discovery ('does NOT discover what you have installed and does NOT fetch anything on your behalf'). It names the alternative (verify_delegation) and the selection condition (batch vs single), and clarifies behavioral constraints like items being verified independently and revocation always being checked.

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

verify_domainBInspect

Trigger domain verification. Checks DNS records or other verification method to confirm domain ownership.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID to verify

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the general action (checks DNS or other verification) and the auth requirement, but it does not reveal potential side effects, whether verification is asynchronous, or what happens if the domain is already verified or DNS is missing.

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?

The description is short, front-loaded with the core action, and includes a separate ACCESS line for prerequisites. It could be slightly more structured, but every sentence is informative and there is no fluff.

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

Completeness2/5

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

The description does not explain what the tool returns or whether it is synchronous/asynchronous, and there is no output schema to fill that gap. Given the large sibling set, it also fails to route to or away from related verification tools, leaving the agent under-informed for a correct invocation.

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?

The input schema already fully documents the single parameter ('Domain ID to verify') and schema coverage is 100%. The description adds no additional semantics beyond that, so baseline 3 is appropriate.

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?

The description states a clear action ('Trigger domain verification') and resource (domain), and elaborates that it checks DNS records or another verification method to confirm ownership. However, it does not distinguish this from sibling tools like start_domain_verification or check_domain_verification, so an agent must infer the exact role.

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

Usage Guidelines3/5

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

The description includes a clear prerequisite: a Proof account and authenticated session, with instructions to authenticate or sign in first. It does not, however, provide any when-to-use guidance versus the many sibling verification tools (e.g., verify_domain_with_credentials), so an agent may select the wrong tool.

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

verify_domain_with_credentialsAInspect

Verify a pending domain using previously stored DNS credentials. Use when credentials are already connected.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID to verify

TDQS

A3.8/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 the auth requirement, the need for a proof account, and a recovery path (start_login then call again), plus the prerequisite of stored credentials. However, it doesn't disclose whether verification is mutating, idempotent, or what failure/success responses look like.

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?

The core purpose and usage condition are front-loaded in the first sentence. The ACCESS note is slightly verbose but contains necessary auth workflow steps. Overall it is efficient with no redundant filler.

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

Completeness3/5

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

For a one-parameter tool with no output schema and no annotations, the description covers the key prerequisites (stored credentials, auth flow, pending domain) but doesn't say what the tool returns or what happens on failure. It is adequate but leaves the outcome unspecified.

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% — the only parameter 'id' is documented as 'Domain ID to verify'. The description adds no further parameter-level detail, so the baseline of 3 is appropriate since the schema already fully documents the parameter.

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 description states a specific action ('Verify a pending domain'), the resource ('domain'), and the distinguishing method ('using previously stored DNS credentials'). This clearly separates it from sibling tools like verify_domain, check_domain_verification, or start_domain_verification.

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?

The description explicitly says 'Use when credentials are already connected,' which is a clear precondition for selecting this tool. It doesn't name alternative tools or state when not to use it, but the context is clear enough for an agent to route correctly.

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

verify_email_otpAInspect

Submit the OTP code to verify an email addition. Completes the add-email flow if the code is correct.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesOTP code received via email
session_idYesAdd-email session ID

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the success condition ('if the code is correct') and the authentication requirement, but doesn't mention failure behavior, response format, or whether the code becomes invalid after use. This is a moderate gap for a mutation-like verification tool.

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

Conciseness5/5

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

The description is concise and front-loaded with the core action, followed by an essential access note. Each sentence serves a purpose—action and authentication context—with no redundant wording. It's appropriately sized for the tool's simplicity.

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

Completeness3/5

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

The description explains the flow and authentication but omits details about the response (no output schema) and failure behavior. Since there's no output schema, the agent has no expectation of return values. It also doesn't explicitly state that a prior start_add_email call is required, though it's implied by 'add-email flow'. These gaps make it only moderately complete for a two-parameter verification 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 coverage is 100%, so both parameters have descriptions in the schema. The tool description adds no additional meaning beyond what the schema provides; it merely references the parameters indirectly. Thus, baseline of 3 is appropriate.

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 description clearly states the action (submit OTP), the resource (email addition), and the outcome (completes add-email flow). It distinguishes itself from siblings like verify_2fa and confirm_domain_email_code by specifying the email context.

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?

Explicitly states the prerequisite of having a Proof account and provides two authentication paths (client authenticate or start_login). It implies the add-email flow context and instructs to call again after starting a session, which gives clear when-to-use guidance. It doesn't explicitly mention alternatives like submit_verification_code, but the flow is sufficiently specific.

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

wait_for_2faAInspect

Poll a 2FA session until the user completes the challenge. Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.

Agent usage: Call this after start_2fa with the returned session_id. Terminal states: "verified" (challenge completed — proceed with the protected operation), "expired" (offer to restart with start_2fa). Before polling, present start_2fa's challenge: pass its deep_link to render_auth_link on telegram/whatsapp, or show its sms_message on sms.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes2FA session ID from start_2fa
timeout_secondsNoMaximum wait time in seconds (default: 50, max: 600). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier.

TDQS

A4.7/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 well: it discloses exponential backoff (2s initial, 1.5x, 30s max) with jitter, terminal states, the auth prerequisite/setup needed before the tool can be called, and the pending behavior via the timeout parameter. This goes well beyond the structured fields.

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

Conciseness5/5

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

The description is moderately long but every section earns its place: core behavior, agent workflow, terminal states, pre-poll rendering steps, and access requirements. It is front-loaded with the most important behavioral information and structured in clear paragraphs.

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

Completeness5/5

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

Given no annotations and no output schema, the description covers what an agent needs to invoke this tool correctly: when to call it, what prerequisite action to take, how to present the challenge, what terminal states mean, and the auth barrier. Nothing essential is missing for a polling tool of this complexity.

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%, so the schema already documents both session_id and timeout_seconds thoroughly. The description reinforces session_id's origin ('returned session_id') and the retry behavior on timeout, but it does not add significant meaning beyond the schema. Baseline 3 is appropriate.

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: 'Poll a 2FA session until the user completes the challenge.' This clearly distinguishes it from siblings like start_2fa (which starts the challenge) and get_2fa_status (which likely returns a one-time status). The scope is unambiguous.

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

Usage Guidelines5/5

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

Provides explicit sequencing: call after start_2fa with the returned session_id, present the challenge via render_auth_link or sms_message before polling, and restart with start_2fa if the state is 'expired'. Also names an exclusion: 'start_login does NOT open this tool.' This is strong when-to-use/when-not-to-use guidance.

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

wait_for_account_creationAInspect

Poll an account-bootstrap session until the user completes verification. Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.

Agent usage: Call this after create_account with the returned session id. Terminal states: "verified" (this server keeps the session for this connection; the user_id field in the terminal body identifies the authenticated user), "expired". A result with status "pending" means the wait ran out before the user finished — call this tool again with the same id. Works identically whether the underlying flow created a new User or logged in an existing one.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAccount session id from create_account
timeout_secondsNoMaximum wait time in seconds (default: 50, max: 600). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses exponential backoff with jitter, terminal states, the connection-scoped session behavior, the user_id field in the terminal body, and the equivalence of new-user vs existing-user flows.

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

Conciseness5/5

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

The description is dense but every sentence adds value: core behavior, retry policy, lifecycle semantics, and usage context are all covered without unnecessary filler. The 'Agent usage' section front-loads the most actionable guidance.

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

Completeness5/5

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

Despite having no output schema, the description gives an agent everything needed to call and interpret the tool correctly: how to start, what terminal states mean, what the user_id field indicates, and how to handle a pending timeout. It is complete for a polling tool of this complexity.

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 coverage is 100% and both parameters already have solid descriptions. The tool description adds operational context by saying the id comes from create_account and that a pending result should be retried with the same id, which slightly exceeds the baseline.

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 description names a specific verb and resource — 'Poll an account-bootstrap session' — and clearly ties it to 'after create_account with the returned session id.' This distinguishes it from the many sibling wait_* tools by identifying the exact flow it serves.

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?

It gives explicit when-to-use guidance: 'Call this after create_account with the returned session id' and explains what to do on a 'pending' result. It does not explicitly state when not to use it or name alternatives like wait_for_login or wait_for_session, so it stops 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.

wait_for_chat_id_discoveryAInspect

Poll a chat ID discovery token until the user interacts with the Telegram bot. Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.

Agent usage: Call this after create_chat_id_discovery. Present the discovery response's deep_link with render_auth_link first, then poll with the returned token. Terminal states: "completed" (chat_id discovered — use it when creating a HITL config with a Telegram channel), "expired". While "pending", the user has not yet opened the Telegram link.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesDiscovery token from create_chat_id_discovery
timeout_secondsNoMaximum wait time in seconds (default: 50, max: 600). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It details polling behavior (backoff, jitter, timeouts), response states, and the requirement for authentication. This is thorough, though it could mention potential side effects or error conditions, but overall strong.

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?

Well-structured with clear sections: a concise summary, then detailed usage and access notes. Slightly verbose but each sentence adds value, and key information (backoff, terminal states) is highlighted.

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

Completeness5/5

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

For a polling tool with a simple schema, the description is thorough: it specifies the polling algorithm, terminal states, timeout handling, authentication, and dependency on create_chat_id_discovery. It effectively covers all aspects an agent needs to call it correctly.

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 covers 100% of parameters, but the description adds value by explaining timeout implications and how to handle the 'pending' status, providing context beyond the schema's basic descriptions.

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 description clearly states the tool's function: polling a chat ID discovery token until the user interacts with the Telegram bot. It provides specific details like exponential backoff parameters and terminal states, distinguishing it from siblings like poll_chat_id_discovery and create_chat_id_discovery.

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

Usage Guidelines5/5

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

Offers explicit guidance: call after create_chat_id_discovery, present the deep_link with render_auth_link first, then poll. It also clarifies what to do in each terminal state, making the usage context very clear.

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

wait_for_confirmationAInspect

Poll a confirmation until the approver responds. Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.

Agent usage: Call this after create_confirmation with the returned confirmation ID. Terminal states: "approved" (action authorized — check the proof_token), "denied" (action rejected). While "pending", the approver has not yet responded. This poll returns no link — the approval request is delivered to the approver's own channel. If the approver needs one anyway, call get_confirmation_approval_link for a fresh approval_url; it needs the confirmation to be still pending — the state this tool waits in — and also refuses once timeout_at has passed, so a long wait can outlive the link even while the status has not moved.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfirmation ID from create_confirmation
timeout_secondsNoMaximum wait time in seconds (default: 50, max: 600). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier.

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: it defines terminal states ('approved'/'denied'/'pending'), warns to check proof_token, states that no link is returned, and discloses that polling is cut off client-side at the SDK's 60s default while server-side polling continues. It even calls out the auth prerequisite and that start_login does not unlock this 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?

Purpose and backoff policy are front-loaded, and an explicit 'Agent usage:' block separates operational guidance from the mechanics. The sentence about get_confirmation_approval_link is dense, with two nested em-dash clauses, but every sentence carries decision-relevant content.

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?

There is no output schema and no annotations, yet the description covers return states, the proof_token to inspect, timeout semantics, and the authentication requirement. It stops short of enumerating the rest of the response payload, but the operational essentials are covered for a long-poll 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 coverage is 100%, so the baseline is 3: both parameters (id, timeout_seconds) are already documented in the schema, including the timeout's default/max and client-cutoff rationale. The description adds no parameter meaning beyond tying the id back to create_confirmation, which the schema itself already states.

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 ('Poll a confirmation until the approver responds') and immediately adds the polling mechanics (exponential backoff, 2s initial, 1.5x, 30s max, jitter). An agent can tell this apart from get_confirmation (one-shot read) and get_confirmation_approval_link (fetches a URL) 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 Guidelines5/5

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

Explicit sequencing: 'Call this after create_confirmation with the returned confirmation ID.' It names the alternative get_confirmation_approval_link and the exact conditions under which it is or isn't usable (still pending, before timeout_at), which is when-to-use guidance at its most concrete.

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

wait_for_loginAInspect

Poll a login session until the user completes authentication. Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.

Agent usage: Call this after start_login with the returned session ID. Terminal states: "verified" (login succeeded — this server keeps the session for this connection and signs your own account records with it: emails, phones, domains, API keys, 2FA, DNS credentials, verification requests, your public profile's username and proof list), "failed", "expired". A result with status "pending" means the wait ran out before the user finished — call this tool again with the same id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAuth session ID from start_login
timeout_secondsNoMaximum wait time in seconds (default: 50, max: 600). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier.

TDQS

A4.7/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 behavioral burden, and it delivers: exponential backoff parameters, terminal states, timeout semantics, retry guidance, and the side effect that a verified login keeps the session and signs account records. This is unusually transparent.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then organizes agent guidance, terminal states, and retry behavior into compact, purposeful sentences. No filler or repetition of schema content.

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

Completeness5/5

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

Even without an output schema or annotations, this description tells an agent everything needed: when to call it, what statuses to expect, what each outcome means, and what to do on timeout. The side-effect explanation for 'verified' is especially valuable for a session-related tool.

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 coverage is 100%, so the baseline is 3. The description adds real value beyond the schema by explaining timeout_seconds' default, maximum, client-timeout interaction, and pending retry behavior, while also reinforcing that id comes from start_login.

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 description opens with a specific verb and resource: 'Poll a login session until the user completes authentication.' It clearly distinguishes this from sibling wait_* tools by focusing on login sessions and explicitly tying it to start_login.

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?

It explicitly instructs agents to call this after start_login with the returned session ID, and it explains the pending-status retry behavior. It does not explicitly name alternatives or say when not to use it, but the context is clear enough for correct invocation.

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

wait_for_requestAInspect

Poll a verification request until it reaches a terminal state (completed, expired, or cancelled). Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification request ID to poll
timeout_secondsNoMaximum wait time in seconds (default: 50, max: 300). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries full responsibility for behavioral disclosure and does so thoroughly. It reveals terminal states, exponential backoff parameters, jitter, timeout behavior, the 'pending' status returned on timeout, and the auth requirement. This is strong, actionable transparency for an agent.

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

Conciseness5/5

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

The description is compact and front-loaded: the primary behavior is stated in the first sentence, followed by backoff details and a concise access warning. Every sentence earns its place, and nothing is redundant with the schema.

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 poll tool with no output schema and no annotations, the description supplies the essential contract: terminal states, timeout re-invocation, backoff, and authentication requirements. It could be slightly more complete by describing the shape of the terminal response, but it is sufficient for an agent to invoke and re-invoke correctly.

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%, so the schema already documents both id and timeout_seconds, including default, min, max, and the timeout semantics. The tool description itself does not add parameter-level meaning beyond the schema, so the baseline 3 is appropriate.

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 description opens with a precise verb and resource: 'Poll a verification request until it reaches a terminal state (completed, expired, or cancelled).' This clearly distinguishes it from one-shot lookup tools like get_verification_request and destructive tools like cancel_verification_request. The terminal-state enumeration adds useful clarity beyond the tool name.

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?

The description gives clear invocation guidance: poll until terminal, call again with the same id on timeout, and keep timeout_seconds under the MCP client request timeout. It also states the access prerequisite and explicitly warns that start_login does not open this tool. It does not explicitly name alternatives, but the polling usage context is unambiguous.

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

wait_for_sessionAInspect

Poll a session until it reaches a terminal state (verified, failed, or expired). Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSession ID to poll
timeout_secondsNoMaximum wait time in seconds (default: 50, max: 300). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully covers behavior: polling with exponential backoff (2s initial, 1.5x, 30s max) and jitter, timeout behavior returning 'pending' and allowing re-call, and the auth requirement. It is transparent about what happens on timeout and that it's a polling tool, providing all necessary behavioral context.

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?

The description is well-structured, starting with the core purpose, then backoff details, and an ACCESS note. It is slightly long but every sentence carries necessary information—backoff, auth, and timeout nuance. The structure is logical and front-loaded with the primary function.

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

Completeness5/5

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

For a polling tool with auth requirements and timeout behavior, the description covers all essential aspects: what it does, how it behaves, authentication steps, and parameter guidance. No output schema exists, but the behavior on timeout and terminal states is clearly described, making it complete for correct invocation.

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 coverage is 100% for both parameters, but the description adds valuable context: timeout_seconds has a default of 50, max of 300, and is tied to the MCP client's request timeout (60s default), with explicit guidance to keep it under that limit and note about pending on timeout. This goes beyond the schema's basic descriptions.

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 description clearly states it polls a session until a terminal state (verified, failed, or expired), specifying the verb, resource, and outcome. It distinguishes from other wait_for_* tools by explicitly naming the session and terminal conditions, and even clarifies that start_login does not open this tool, leaving no ambiguity.

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

Usage Guidelines5/5

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

It provides explicit when-to-use context by requiring authentication and telling the agent to authenticate first, then call again. It also warns that start_login does not open this tool, guiding the agent away from a potential misuse. Timeout guidance relative to MCP client limits is practical and helps the agent decide parameters.

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

wait_for_verificationAInspect

Poll a verification until it reaches a terminal state (verified, failed, expired, revoked, or cancelled). Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.

A multi-channel verification that lost the race is "cancelled" and one whose proof was withdrawn is "revoked"; both are final, so the wait returns rather than polling on.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVerification ID to poll
timeout_secondsNoMaximum wait time in seconds (default: 50, max: 300). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier.

TDQS

A4.4/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 thoroughly. It discloses the backoff algorithm (2s initial, 1.5x, 30s max, jitter), the semantics of 'cancelled' vs 'revoked', the fact that both are final, the auth requirement, and the timeout behavior (returns status 'pending'). This goes far beyond a minimal description.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then gives edge-case semantics, then an access note. Every sentence earns its place; there is no fluff or redundant restating of the tool name.

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?

Covers purpose, terminal states, polling behavior, auth, and timeout retry, which is nearly everything an agent needs to invoke it correctly. The only notable gap is the lack of a description of the return payload when a terminal state is reached, especially since there is no output schema.

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%, so the schema already fully explains both id and timeout_seconds. The description adds behavioral context about polling but doesn't add parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate.

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 action ('Poll a verification') and a concrete resource ('a verification'), and enumerates the exact terminal states (verified, failed, expired, revoked, cancelled). This clearly distinguishes it from sibling wait_for_* tools and from get_verification, which does a one-time lookup.

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?

Provides clear context for when to call it (poll until terminal, retry after timeout) and a specific exclusion ('start_login does NOT open this tool'). It also states the authentication prerequisite and instructs to call again after auth. It doesn't explicitly contrast with alternative tools like get_verification, but the guidance is sufficient.

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. 1 tool update
    • Changedcreate_confirmation2 fields changed
      • changedInput schema / properties / message / description
        Previous value: -"Human-readable description of what needs approval"New value: +"The client-encrypted ciphertext envelope as a JSON string (v1 or v2) — NOT the human-readable text. Encrypt the sentence the approver should read; passing it directly is refused with 400 `message_not_encrypted`, because the approval page can only decrypt an envelope."
      • changedInput schema / properties / message / maxLength
        Previous value: -2000New value: +10000
  2. 176 tool updates
    • First observedadd_challenger
    • First observedadd_circle_member
    • First observedadd_circle_member_channel
    • First observedadd_domain
    • First observedadd_verification_provider
    • First observedcancel_user_request
    • First observedcancel_verification_request
    • First observedcheck_domain_credentials
    • First observedcheck_domain_email_status
    • First observedcheck_domain_verification
    • First observedcheck_user_domain_verification
    • First observedclaim_request_assets
    • First observedclaim_username
    • First observedconfirm_domain_email_code
    • First observedconnect_cloudflare
    • First observedconnect_dns_provider
    • First observedconnect_godaddy
    • First observedcreate_account
    • First observedcreate_api_key
    • First observedcreate_authorization
    • First observedcreate_chat_id_discovery
    • First observedcreate_circle
    • First observedcreate_circle_member_drill
    • First observedcreate_confirmation
    • First observedcreate_delegation
    • First observedcreate_dns_credential
    • First observedcreate_hitl
    • First observedcreate_identity_challenge
    • First observedcreate_multi_channel_verification
    • First observedcreate_profile
    • First observedcreate_session
    • First observedcreate_user_request
    • First observedcreate_verification
    • First observedcreate_verification_request
    • First observeddelete_circle
    • First observeddelete_dns_credential
    • First observeddelete_domain
    • First observeddelete_hitl
    • First observeddelete_hitl_keys
    • First observeddelete_profile
    • First observeddelete_profile_template
    • First observeddelete_template
    • First observedexport_authorizations
    • First observedexport_data
    • First observedextend_request
    • First observedget_2fa_status
    • First observedget_add_email_status
    • First observedget_add_phone_status
    • First observedget_api_key_usage
    • First observedget_asset
    • First observedget_authorization
    • First observedget_circle
    • First observedget_confirmation
    • First observedget_confirmation_approval_link
    • First observedget_current_user
    • First observedget_default_templates
    • First observedget_delegation
    • First observedget_dns_providers
    • First observedget_domain
    • First observedget_hitl
    • First observedget_hitl_keys
    • First observedget_identity_challenge
    • First observedget_multi_channel_verification_status
    • First observedget_my_profile
    • First observedget_platform_summary
    • First observedget_profile
    • First observedget_profile_assets
    • First observedget_proof_status
    • First observedget_request_by_reference
    • First observedget_request_proofs
    • First observedget_self_api_key
    • First observedget_session
    • First observedget_settings
    • First observedget_subscription
    • First observedget_template
    • First observedget_usage
    • First observedget_user_domain_verification_status
    • First observedget_verification
    • First observedget_verification_request
    • First observedget_verified_user
    • First observedget_webhook_delivery
    • First observedget_webhook_stats
    • First observedinvite_challenger
    • First observedinvite_circle_member
    • First observedlist_api_keys
    • First observedlist_assets
    • First observedlist_auth_sessions
    • First observedlist_authorizations
    • First observedlist_challengers
    • First observedlist_circle_member_channels
    • First observedlist_circle_members
    • First observedlist_circles
    • First observedlist_confirmations
    • First observedlist_delegations
    • First observedlist_dns_credentials
    • First observedlist_domains
    • First observedlist_emails
    • First observedlist_hitls
    • First observedlist_incoming_requests
    • First observedlist_my_requests
    • First observedlist_phones
    • First observedlist_profile_templates
    • First observedlist_profiles
    • First observedlist_revoked_proofs
    • First observedlist_templates
    • First observedlist_verification_requests
    • First observedlist_verifications
    • First observedlist_verified_users
    • First observedlist_webhook_deliveries
    • First observedpoll_chat_id_discovery
    • First observedpreview_profile_template
    • First observedpreview_template
    • First observedregenerate_api_key
    • First observedremove_challenger
    • First observedremove_circle_member
    • First observedremove_circle_member_channel
    • First observedremove_email
    • First observedremove_phone
    • First observedrender_auth_link
    • First observedrender_template
    • First observedrequest_hitl_authorization
    • First observedresend_domain_email
    • First observedresend_email_otp
    • First observedresend_verification
    • First observedretry_webhook_delivery
    • First observedrevoke_api_key
    • First observedrevoke_asset
    • First observedrevoke_auth_session
    • First observedrevoke_authorization
    • First observedrevoke_delegation
    • First observedrevoke_proof
    • First observedsearch
    • First observedsend_account_email
    • First observedset_primary_email
    • First observedset_primary_phone
    • First observedset_primary_profile
    • First observedsetup_domain_email
    • First observedshare_request_email
    • First observedstart_2fa
    • First observedstart_2fa_for_action
    • First observedstart_add_email
    • First observedstart_add_phone
    • First observedstart_domain_email_verification
    • First observedstart_domain_verification
    • First observedstart_login
    • First observedstart_user_domain_verification
    • First observedsubmit_verification_code
    • First observedtest_verify
    • First observedtrigger_drill
    • First observedtrigger_verification
    • First observedupdate_circle
    • First observedupdate_hitl
    • First observedupdate_my_profile
    • First observedupdate_profile
    • First observedupdate_profile_proofs
    • First observedupdate_profile_template
    • First observedupdate_public_proofs
    • First observedupdate_settings
    • First observedupdate_template
    • First observedupload_hitl_keys
    • First observedvalidate_proof
    • First observedverify_2fa
    • First observedverify_2fa_magic_link
    • First observedverify_delegation
    • First observedverify_delegations
    • First observedverify_domain
    • First observedverify_domain_with_credentials
    • First observedverify_email_otp
    • First observedwait_for_2fa
    • First observedwait_for_account_creation
    • First observedwait_for_chat_id_discovery
    • First observedwait_for_confirmation
    • First observedwait_for_login
    • First observedwait_for_request
    • First observedwait_for_session
    • First observedwait_for_verification

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Identity infrastructure for the agent economy. Mint an agent ~handle in two free calls with no human account, then verify anyone and read inferred traits under the consent the person set in advance.
    16
    47 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform pay-per-call security verification of wallets, tokens, contracts, dApps, agents, and more via a remote endpoint with no installation.
    2
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables agents and apps to verify end-user identity through company API keys, human login links with multi-channel notifications, OIDC client registration, and budget-aware billing.
    13
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables agents to prove and verify that a real, unique human performed an action, issuing machine-readable signed credentials with public verification.
    2
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.