verfi-mcp-server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@verfi-mcp-serverVerify TCPA consent for lead VF-a1b2c3d4"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@verfi/mcp-server
MCP server for Verfi — TCPA consent verification tools for AI agents.
Tools
Tool | Description |
| Check if a lead has valid consent. The primary tool for compliance verification. |
| Get full machine-readable consent proof for a session. |
| Look up a session by Verfi ID with optional PII hash verification. |
| Read claim mode, availability and recording validity (not a reservation). |
| Claim with buyer gates and a persisted idempotency key. |
| Release a claimed session. |
| List your claimed sessions (paginated). |
| Update a claimed session's expiration date. |
| Get SDK integration snippet and setup instructions. |
Related MCP server: Smallest MCP Server
Setup
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"verfi": {
"command": "npx",
"args": ["-y", "@verfi/mcp-server"],
"env": {
"VERFI_API_KEY": "sk_your_secret_key_here"
}
}
}
}Cursor / Windsurf
Add to your MCP config:
{
"verfi": {
"command": "npx",
"args": ["-y", "@verfi/mcp-server"],
"env": {
"VERFI_API_KEY": "sk_your_secret_key_here"
}
}
}Environment Variables
Variable | Required | Description |
| Yes | Your Verfi secret API key ( |
| No | API base URL (defaults to |
Agent Plugin
This repo also ships a portable Agent Plugins v1.0.0 package in plugin/ that bundles this MCP server together with the Verfi consent-verification skill. Compatible clients (Cursor, Claude, OpenAI, etc.) can discover and load both from one directory. See plugin/README.md.
Quick Start
Developer: "Check if lead VF-a1b2c3d4 has valid TCPA consent"
Agent calls: verfi_verify_consent({ verfiID: "VF-a1b2c3d4" })
→ { consent_valid: true, tcpa_compliant: true, proof_url: "..." }API Key Scopes
Your API key's scopes determine which tools are available:
sessions:search→verfi_search_session,verfi_get_claim_statussessions:proof→verfi_get_proof,verfi_verify_consentsessions:claim→verfi_claim_sessionsessions:unclaim→verfi_unclaim_sessionsessions:expiration→verfi_update_expiration
Generate API keys in the Verfi dashboard under Integration > API Keys.
License
MIT
Building a lead-router integration
Start at https://verfi.io/docs/agent-plugin or read the web-session integration contract. Direct REST does not require MCP installation.
Updated source adds verfi_get_claim_status (sessions:search) and claim options requireRecording, requireVerticals, requireVerifiedScore, minQualityScore, and idempotencyKey. These require the updated server, not just new skill files. Inspect tools/list; use REST or npm install && npm run build followed by node /absolute/path/dist/index.js until the updated npm package is released/installed. PII is a separate verfi_search_session lookup before claiming. Proof summaries do not perform a combined acceptance decision; when verfi_verify_consent checks hashes it also needs sessions:search.
Available Tools
9 toolsverfi_add_sdkA
Get the Verfi SDK integration snippet and setup instructions for capturing consent on a web form.
| Name | Required | Description | Default |
|---|---|---|---|
| publicKey | No | Your Verfi public API key (pk_). If not provided, returns generic instructions. |
TDQS
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. The verb 'Get' implies a read-only operation and the description says it returns a snippet and instructions, but it does not explicitly confirm safety profile, permissions, or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the main purpose front-loaded. Every part contributes useful information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one optional, fully described parameter and no output schema, the description adequately says what is returned: an SDK integration snippet and setup instructions. Minor behavioral details are missing, but nothing critical prevents correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one optional parameter and schema description coverage is 100%, so the schema already explains publicKey and its fallback behavior. The description adds no parameter-specific details beyond what is in the schema, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: get the Verfi SDK integration snippet and setup instructions. It also scopes the purpose to consent capture on a web form, which distinguishes it from the session, proof, and claim siblings, though the name verfi_add_sdk is slightly less precise than the described action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for capturing consent on a web form' implies the intended usage context, but it does not explicitly say when to use this tool versus alternatives or mention prerequisites. No exclusions or alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verfi_claim_sessionA
Claim a web session using buyer gates. Requires sessions:claim. Validate required PII separately before calling. Only success=true and data.status=claimed indicates claim success. Reuse the same idempotencyKey and body for identical retries; wallet receipts may replay a historical success without re-evaluating gates.
| Name | Required | Description | Default |
|---|---|---|---|
| verfiID | Yes | Verfi session ID to claim | |
| expirationDate | No | Optional ISO expiration, default 3 years, maximum 5. | |
| idempotencyKey | No | Required for wallet-enrolled tenants. Persist per operation; reuse identical session/body on retries. UUID recommended. | |
| minQualityScore | No | Minimum behavioral human-confidence score, higher is more human-like. | |
| requireRecording | No | Require valid recording; failure is 409 no_recording. | |
| requireVerticals | No | Any overlap with declared verticals passes. Select the vertical for this lead type. | |
| requireVerifiedScore | No | Minimum cached metadata keyword score against declared starter verticals, not replay analysis. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the required scope, the exact success condition (success=true and data.status=claimed), idempotency/retry semantics, and the non-obvious caveat that wallet receipts can replay a historical success without re-evaluating gates. It does not say what happens to an existing owner on re-claim or what failure shapes look like beyond the 409 noted in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the action and the scope requirement, then success criteria, then retry semantics. Every sentence carries operational weight; density is high but justified for a mutation tool with no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers the critical gaps: required scope, success verification, idempotency, and replay risk. It does not describe the return payload shape in any depth, which is the main remaining omission given the absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters. The description reinforces idempotencyKey reuse ('same idempotencyKey and body for identical retries') but adds almost nothing the schema's own parameter descriptions do not already state, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Claim a web session using buyer gates.' An agent can distinguish it from the sibling verfi_unclaim_session or verfi_get_claim_status by the verb alone, though the description never explicitly contrasts with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition ('Requires sessions:claim') and a sequencing instruction ('Validate required PII separately before calling'), plus retry guidance. It stops short of naming alternatives such as verfi_get_claim_status for checking existing claims, so there is no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verfi_get_claim_statusA
Read web-session claimMode, claimable and recording validity before claiming. Requires sessions:search. Not a reservation or buyer-gate evaluation; multi mode does not check your existing claim.
| Name | Required | Description | Default |
|---|---|---|---|
| verfiID | Yes | Verfi session ID or proof URL |
TDQS
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 well: 'Read' signals a non-mutating operation, 'Requires sessions:search' discloses authorization, and the caveats explain what the tool does not evaluate. It stops short of detailing output shape or failure behavior, but it adds 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no wasted text, and the primary action is front-loaded. The caveats come after the core purpose without obscuring it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema and no annotations, the description is largely complete: it identifies what is read, the prerequisite, and key non-use cases. It could be slightly richer by describing the expected response fields or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single verfiID parameter is already documented as a session ID or proof URL. The description does not add further syntax or format guidance, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it reads a web-session's claimMode, claimable, and recording validity. It also distinguishes the tool from claiming and from reservation/buyer-gate evaluations, so an agent can tell it apart from siblings such as verfi_claim_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says to use this before claiming and explicitly excludes reservation and buyer-gate evaluation use cases. It also states the sessions:search prerequisite, though it does not name verfi_claim_session as the follow-up alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verfi_get_proofA
Get machine-readable consent proof for a session. Returns structured data including consent status, interaction metrics, form data, device info, and tamper verification. All PII is SHA-256 hashed.
| Name | Required | Description | Default |
|---|---|---|---|
| verfiID | Yes | Verfi session ID (e.g. VF-a1b2c3d4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses the return content (consent status, interaction metrics, form data, device info, tamper verification) and a meaningful behavioral trait — all PII is SHA-256 hashed. It does not explicitly state read-only semantics, permissions, or behavior for missing/invalid session IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and result, followed by the return payload and the PII-handling note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly describes the returned fields, and the PII-hashing note covers a key data-handling concern. The remaining gap is routing guidance relative to the many sibling tools, which the description omits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter, verfiID, and the schema documents it at 100% coverage with a format example (VF-a1b2c3d4). The description adds nothing about the parameter, but the schema already carries it, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get machine-readable consent proof for a session', and enumerates what the proof contains. It is clear what the tool produces, though it doesn't explicitly distinguish itself from siblings like verfi_verify_consent or verfi_get_claim_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus verfi_verify_consent, verfi_get_claim_status, or verfi_search_session. The name implies fetching a proof for an existing session, but no conditions, prerequisites (e.g., session must be completed), or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verfi_list_sessionsB
List sessions claimed by your organization. Returns paginated results with session status and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| limit | No | Results per page (1-100, default 20) | |
| status | No | Filter by this tenant's claim status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It does disclose that results are paginated and include session status and metadata, and "List" implies a read-only operation, but it says nothing about ordering, auth/tenant scoping mechanics, rate limits, or whether unclaimed sessions are truly returned despite the opening sentence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core operation front-loaded and no filler preamble. "With session status and metadata" is slightly vague and borders on generic, but it is the only part that could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list with three optional parameters, full schema coverage, and no output schema, the description covers the essentials: what is listed, the tenant scope, and that results are paginated with status/metadata. What remains missing is return ordering and the search-vs-list distinction, both of which an agent would likely want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — page, limit ranges, and the claimed/unclaimed enum are all documented in the schema itself. The description only echoes the existence of pagination and adds no syntax, defaults, or filtering semantics beyond what the schema already states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource ("List sessions") plus an organizational scope ("claimed by your organization"), so the operation itself is unambiguous. It does not differentiate from the sibling verfi_search_session, leaving an agent to guess why two session-listing tools exist. There is also mild internal tension: it says sessions are "claimed by your organization" while the status enum explicitly offers "unclaimed".
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided, and none of the eight siblings (notably verfi_search_session) are referenced as alternatives. The scope phrase hints at a tenant-wide listing, but nothing tells an agent when to pick this over searching or when to combine it with verfi_get_claim_status. Usage must be fully inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verfi_search_sessionA
Look up a consent session by Verfi ID. Optionally verify email/phone hashes match. Returns session status, metadata, and PII verification results.
| Name | Required | Description | Default |
|---|---|---|---|
| No | SHA-256 hash of email to verify against session | ||
| phone | No | SHA-256 hash of phone to verify against session | |
| verfiID | Yes | Verfi session ID (e.g. VF-a1b2c3d4) or full proof URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that this is a read-by-ID operation returning status, metadata, and PII verification results, which is useful, but says nothing about what happens on a hash mismatch, whether errors are returned or flagged, or any auth/PII-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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the primary action front-loaded, optional behavior second, and return summary last. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter read tool with no output schema, the description explains what comes back (status, metadata, PII verification results), which is the main gap it needed to fill. Missing only edge-case behavior on hash mismatch and access requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters including the SHA-256 hash semantics and the verfiID format. The description only adds that the hash parameters are optional, which is already conveyed by the required list; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Look up a consent session by Verfi ID') and states the secondary capability of hash verification, which separates it from list-oriented siblings like verfi_list_sessions. It stops short of explicitly naming which sibling to use instead, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Optionally verify email/phone hashes match' implies the verification use case, but the description never states when to prefer this over verfi_get_proof, verfi_verify_consent, or verfi_list_sessions, nor any prerequisites. Usage is inferable rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verfi_unclaim_sessionA
Release a previously claimed session. Retention drops to 30 days. Only the claiming tenant can unclaim.
| Name | Required | Description | Default |
|---|---|---|---|
| verfiID | Yes | Verfi session ID to unclaim |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a real side effect (retention drops to 30 days) plus a permission constraint. It does not cover reversibility (whether the session can be re-claimed), idempotency, or failure behavior on an unclaimed ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the action, the side effect, and the constraint in order of importance. No wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with no annotations and no output schema, the description covers purpose, side effect, and authorization. The remaining gap is error/reclaim behavior, which is minor but would help an agent recover from failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single verfiID parameter is already documented as the session to unclaim, so the description adds nothing beyond it. Baseline 3 applies since the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Release') and resource ('previously claimed session'), which clearly pairs it against the sibling verfi_claim_session. It doesn't name that sibling explicitly, but the 'previously claimed' qualifier makes the distinction unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an actionable precondition ('previously claimed session') and an authorization gate ('Only the claiming tenant can unclaim'), which tells the agent when the call is valid. It stops short of stating when not to use it or naming alternatives such as verfi_update_expiration for retention changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verfi_update_expirationA
Update the expiration date of a claimed session. Must be 30+ days from now, max 5 years from claim date. Rate limited: 3 updates/month per session.
| Name | Required | Description | Default |
|---|---|---|---|
| verfiID | Yes | Verfi session ID | |
| expirationDate | Yes | New expiration date (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does deliver real behavioral context: the 30-day minimum, 5-year maximum from claim date, and a 3-updates-per-month rate limit. However, it omits who may perform the update (ownership/authorization), whether the change is reversible, and what happens on rejection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose, then constraints, then rate limit. Every clause carries actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema and no annotations, the description covers purpose, bounds, and rate limiting — most of what an agent needs before calling. The remaining gap is authorization/ownership requirements and error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are documented there, yet the description adds genuinely new meaning: the valid range for expirationDate (30+ days out, max 5 years from claim date), which is a validation rule not present in the schema. This is the kind of semantic detail that prevents a bad call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update the expiration date of a claimed session') and scopes it to claimed sessions, which distinguishes it from claim/unclaim siblings. It does not explicitly name which sibling to use instead for other mutation needs, but the operation itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'claimed' implies the precondition that the session must already be claimed, but no explicit when-to-use/when-not guidance or alternative tool routing is given. An agent must infer that verfi_claim_session is a prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verfi_verify_consentA
Verify consent validity for a lead. Given a Verfi ID and optional PII hashes, returns whether consent was given, TCPA compliance status, and interaction quality. This is the primary tool for checking if a lead has valid consent before contacting them.
| Name | Required | Description | Default |
|---|---|---|---|
| verfiID | Yes | Verfi session ID (e.g. VF-a1b2c3d4) | |
| email_hash | No | SHA-256 hash of the consumer's email to verify binding | |
| phone_hash | No | SHA-256 hash of the consumer's phone to verify binding |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description must carry the behavioral burden; it does establish that the call is a verification returning judgment fields rather than a mutation. However, it says nothing about permission/auth requirements, rate limits, or what happens when the optional hashes fail to match, which matters for a compliance check.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and resource, then the outputs, then the use case. There is no filler and each sentence contributes new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description is right to enumerate the return values (consent status, TCPA compliance, interaction quality), and it documents all three parameters implicitly. It remains silent on failure/denied-verification behavior, which is the main residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the meaning of verfiID, email_hash, and phone_hash is already fully documented in the schema. The description only restates that a Verfi ID is required and the hashes are optional ("Given a Verfi ID and optional PII hashes"), adding no binding rules or mismatch behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ("Verify consent validity for a lead") and enumerates the returned signals (consent given, TCPA compliance, interaction quality), which separates it from siblings like verfi_get_proof or verfi_search_session. The closing sentence explicitly frames it as "the primary tool for checking if a lead has valid consent."
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear usage context — call this before contacting a lead — which tells the agent where in a workflow the tool belongs. It does not name an alternative tool or state when NOT to use it (e.g., versus verfi_get_proof), so it stops short of explicit routing guidance.
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.
9 tool updates
v0.2.0- First observed
verfi_add_sdk - First observed
verfi_claim_session - First observed
verfi_get_claim_status - First observed
verfi_get_proof - First observed
verfi_list_sessions - First observed
verfi_search_session - First observed
verfi_unclaim_session - First observed
verfi_update_expiration - First observed
verfi_verify_consent
TDQS
Scored across 9 tools
Most tools have distinct purposes: search/lookup, proof retrieval, consent verification, claim lifecycle, listing, expiration update, and SDK setup. There is some conceptual overlap among verfi_search_session, verfi_get_proof, and verfi_verify_consent because all involve retrieving or evaluating session/consent data, but descriptions clarify their different outputs and use cases.
All tools use a consistent verfi_ prefix followed by a snake_case verb_noun pattern. Names are predictable and easy to scan, with only natural variations like get_claim_status and add_sdk.
Nine tools is well-scoped for a consent/session management server. Each tool covers a distinct operation in the claim and verification workflow, with no obvious filler tools.
The surface covers session lookup, consent verification, proof retrieval, claim/unclaim, listing, expiration updates, and SDK setup, which is strong lifecycle coverage. Minor gaps may exist around explicit consent revocation or session creation, but those appear to be handled outside the MCP server via the SDK or platform.
Maintenance
Related MCP Connectors
Official MCP server for OmniDimension. Drive voice agents, dispatch calls, and run bulk campaigns.
MCP server for OnceAsk, the AI-native current-address layer for people and agents.
MCP server for medicaid-intelligence
FalaAI API MCP server: transcribe audio, diagnose conversations, audit compliance (ISO 18295-1).
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for provisioning dedicated real-SIM US phone numbers, receiving inbound SMS, and extracting OTP codes. Built for AI agents automating phone verification workflows.1229 npm1MIT

Smallest MCP Serverofficial
AlicenseAqualityAmaintenanceMCP server for the Smallest AI platform that enables managing AI voice agents, debugging calls, and viewing analytics directly from your IDE.8448 npm1MIT- AlicenseNot gradedqualityBmaintenanceMCP server for storing, managing, and analyzing IETF vCon (Virtual Conversation) data with AI assistants.30 npm4MIT
- AlicenseAqualityCmaintenanceMCP server for verifying high-impact decisions with Trust OS.2MIT