ScamVerify
ScamVerify MCP Server
AI-powered scam and threat verification MCP server. Verify phone numbers, URLs, text messages, emails, documents, and QR codes against 10M+ threat intelligence records from FTC, FCC, URLhaus, ThreatFox, and community reports.
Server URL: https://scamverify.ai/api/mcp
Transport: Streamable HTTP (stateless) or stdio (local proxy)
Authentication: API key or OAuth 2.1 (PKCE)
Tools (10)
Tool | Description |
| Look up a US phone number for scam reports, carrier info, robocall flags, and community reports. Returns risk score (0-100), verdict, and detailed signals from FTC, FCC, carrier, and community data. |
| Check a website URL for safety. Analyzes domain age, SSL certificate, redirect chains, brand impersonation, Google Web Risk, URLhaus, ThreatFox, and community reports. |
| Analyze a text/SMS message for scam indicators. Extracts and cross-references embedded phone numbers and URLs. AI identifies scam type, red flags, and risk level. |
| Analyze an email for phishing indicators. Checks sender domain, email headers (SPF/DKIM/DMARC), brand impersonation, embedded URLs and phone numbers. |
| Analyze a document image for scam indicators. Uses vision AI to extract entities (addresses, officials, citations, phone numbers) and verifies them against government databases. |
| Scan a QR code image and verify its contents. Decodes the QR code server-side and, if it contains a URL, runs full URL verification. |
| Look up multiple phone numbers in a single request (max 100). |
| Check multiple URLs in a single request (max 100). |
| Check your current API usage quota and rate limits for the billing period. |
| Check the operational status of ScamVerify API services. No authentication required. |
Related MCP server: unphurl-mcp
Prompts (4)
Prompt | Description |
| Investigate a suspicious phone number for scam indicators and provide a safety recommendation. |
| Check if a website URL is safe to visit and provide a detailed safety assessment. |
| Analyze a suspicious text message for scam indicators and explain the findings. |
| Analyze a suspicious email for phishing indicators and provide a safety assessment. |
Data Sources
FTC Do Not Call Complaints - 9.7M+ records with scam type classification
FCC Consumer Complaints - 443K+ telecom violation reports
URLhaus - 74K+ active malicious URL indicators
ThreatFox - 60K+ IOCs (indicators of compromise)
Carrier Intelligence - Line type, CNAM, VoIP detection, high-risk carrier flagging
Community Reports - User-submitted scam reports with verification
Setup
Option 1: Remote Server (Recommended)
Connect directly to the hosted ScamVerify MCP server. No installation required.
Claude Desktop:
{
"mcpServers": {
"scamverify": {
"type": "streamable-http",
"url": "https://scamverify.ai/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Claude Desktop (OAuth - no API key needed):
{
"mcpServers": {
"scamverify": {
"type": "streamable-http",
"url": "https://scamverify.ai/api/mcp"
}
}
}When using without an API key, Claude Desktop will initiate the OAuth 2.1 flow. You'll be redirected to sign in at scamverify.ai and authorize access.
Cursor / Windsurf / Other MCP Clients:
{
"type": "streamable-http",
"url": "https://scamverify.ai/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}ChatGPT:
ScamVerify is available as a ChatGPT connector. Add it through the ChatGPT plugin/connector settings using:
MCP URL:
https://scamverify.ai/api/mcpAuth: OAuth
Option 2: Local Proxy (stdio)
Run a local MCP server that proxies all tool calls to the ScamVerify API. Useful for MCP clients that only support stdio transport.
Install and run:
npm install -g @scamverifyai/scamverify-mcp
SCAMVERIFY_API_KEY=sv_live_... scamverify-mcpOr run directly with npx:
SCAMVERIFY_API_KEY=sv_live_... npx @scamverifyai/scamverify-mcpClaude Desktop (stdio):
{
"mcpServers": {
"scamverify": {
"command": "npx",
"args": ["@scamverifyai/scamverify-mcp"],
"env": {
"SCAMVERIFY_API_KEY": "sv_live_..."
}
}
}
}Docker:
docker build -t scamverify-mcp .
docker run -e SCAMVERIFY_API_KEY=sv_live_... scamverify-mcpEnvironment Variables
Variable | Required | Description |
| Yes | Your API key (prefix: |
| No | Override the API base URL (default: |
Getting an API Key
Sign up at scamverify.ai
Go to Settings > API Keys
Generate a key (prefix:
sv_live_for production,sv_test_for testing)
OAuth 2.1 Authentication
The remote server supports OAuth 2.1 with PKCE (S256). Discovery endpoints:
Authorization Server:
https://scamverify.ai/.well-known/oauth-authorization-serverProtected Resource:
https://scamverify.ai/.well-known/oauth-protected-resource
OAuth scopes: phone:lookup, url:lookup, text:analyze, email:analyze, usage:read
Development
git clone https://github.com/scamverifyai/scamverify-mcp.git
cd scamverify-mcp
npm install
npm run build
SCAMVERIFY_API_KEY=sv_test_... npm startPricing
A free tier (50 lookups/month) is automatically provisioned on first OAuth login or API key creation.
Plan | Monthly Price | Lookups/mo | Rate Limit |
Free | $0 | 50 | 10 RPM |
Starter | $19/mo | 1,000 | 30 RPM |
Growth | $49/mo | 5,000 | 60 RPM |
Pro | $149/mo | 25,000 | 120 RPM |
Scale | $499/mo | 100,000 | 300 RPM |
Enterprise | Custom | Custom | Custom |
Full API documentation: docs.scamverify.ai
Links
Website: scamverify.ai
API Docs: docs.scamverify.ai
MCP Integration Guide: docs.scamverify.ai/docs/guides/mcp-integration
OAuth Flow Guide: docs.scamverify.ai/docs/guides/oauth-flow
Status Page: status.scamverify.ai
Contact: scamverify.ai/contact
License
MIT
Available Tools
10 toolsbatch_phoneARead-onlyIdempotent
Look up multiple phone numbers in a single request (max 100). Each number is checked individually with the same analysis as check_phone. Returns results array with per-item risk scores and a summary.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_numbers | Yes | Array of US phone numbers (1-100) | |
| force_refresh | No | Force fresh lookups, bypassing cache (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, non-destructive) and idempotency. Description adds valuable behavioral context: the 100-item limit, return structure ('results array with per-item risk scores and a summary') compensating for missing output schema, and behavioral equivalence to check_phone.
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 sentences, zero waste. First sentence establishes operation and hard limit. Second sentence clarifies sibling relationship and return format. Front-loaded with essential constraints (max 100) and differentiation.
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?
Strong completeness given no output schema: description proactively explains return structure ('results array...'). Combined with 100% schema coverage and rich annotations, the description provides sufficient context for invocation. Minor gap: doesn't clarify partial failure behavior in batch operations.
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 has 100% description coverage. Description reinforces the 'max 100' constraint but adds no additional semantic depth for force_refresh beyond the schema's 'bypassing cache' description. Baseline 3 appropriate when schema carries full documentation load.
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?
Clear specific verb ('Look up') and resource ('multiple phone numbers'). Explicitly distinguishes from sibling check_phone by noting 'same analysis as check_phone', clarifying this is the batch variant. The 'max 100' constraint further defines scope.
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?
Implies clear context for batch usage ('multiple phone numbers in a single request'). References sibling tool check_phone, suggesting it as the alternative for single lookups. Could be explicit with 'use check_phone for single numbers' to reach 5, but the distinction is clear from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_urlARead-onlyIdempotent
Check multiple URLs in a single request (max 100). Each URL is analyzed individually with the same checks as check_url. Returns results array with per-item risk scores and a summary.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Array of URLs to check (1-100) | |
| force_refresh | No | Force fresh lookups, bypassing cache (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly, idempotent, non-destructive); description adds valuable behavioral context about return format ('results array with per-item risk scores and a summary') and implicitly references caching behavior via 'force_refresh' parameter, compensating for missing output 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?
Three efficient sentences with zero waste: opens with action and limits, clarifies sibling relationship, and describes return structure. Every clause conveys essential 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?
Given the simple 2-parameter input schema and strong annotations, the description adequately compensates for the missing output schema by describing the risk scores and summary structure, though it could clarify the risk score scale or summary contents.
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 has 100% description coverage for both parameters (urls array constraints and force_refresh cache behavior), so the description appropriately does not redundantly explain parameters, meeting the baseline for high-coverage schemas.
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?
Explicitly states 'Check multiple URLs' with specific scope limit (max 100), and clearly differentiates from sibling tool 'check_url' by stating it uses the 'same checks'—making the batch vs. single relationship 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?
Implies when to use versus check_url (multiple URLs) and states the 100-item limit, but lacks explicit 'when not to use' guidance or mention of alternatives for non-URL content (e.g., check_document for files).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_documentARead-onlyIdempotent
Analyze a document image for scam indicators. Upload a photo of a suspicious letter, court notice, receipt, invoice, or other document. Uses vision AI to extract entities (addresses, officials, citations, phone numbers) and verifies them against government databases. Returns risk score, verdict, red flags, and entity verification results.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | No | URL of the document image to analyze (provide either image_url or image_base64) | |
| image_base64 | No | Base64-encoded image data (provide either image_url or image_base64). Include the data URI prefix (e.g. data:image/jpeg;base64,...) or raw base64. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnly/idempotent status, the description adds valuable operational context: 'Uses vision AI to extract entities' and 'verifies them against government databases'. Crucially, it compensates for the missing output schema by disclosing return values: 'risk score, verdict, red flags, and entity verification results'.
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 well-structured sentences cover purpose, input examples, processing behavior, and output format. Every sentence earns its place with zero redundancy. Information is front-loaded with the core action ('Analyze a document image') followed by specific examples and technical details.
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?
Given the complexity (vision AI extraction, government DB verification) and lack of output schema, the description provides adequate disclosure of return structure and behavioral traits. The annotations cover safety properties (readOnly/destructive hints), while the description handles functional behavior, creating a complete picture.
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?
With 100% schema description coverage, the schema already fully documents both image_url and image_base64 parameters (including the mutual exclusivity note). The description mentions 'Upload a photo' which aligns with the parameters, but adds no additional syntax, format constraints, or semantic details 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 opens with a specific verb ('Analyze') and resource ('document image'), clearly targeting 'scam indicators'. It effectively distinguishes from siblings (check_email, check_phone, check_text) by specifying document types: 'letter, court notice, receipt, invoice'.
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?
Provides clear context on when to use ('Upload a photo of a suspicious letter...'), implicitly guiding users toward image-based document analysis. However, it lacks explicit guidance on when NOT to use (e.g., 'use check_text for plain text scams') or direct 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.
check_emailARead-onlyIdempotent
Analyze an email for phishing indicators. Checks sender domain, email headers (SPF/DKIM/DMARC), brand impersonation, embedded URLs and phone numbers. Returns unified risk score with detailed header and sender analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| email_body | Yes | Email body content to analyze (max 20000 characters) | |
| sender_email | No | Sender email address | |
| subject | No | Email subject line | |
| raw_headers | No | Raw email headers for SPF/DKIM/DMARC analysis |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Supplements annotations (readOnly/idempotent) by detailing specific security checks performed (brand impersonation, header authentication) and disclosing return format ('unified risk score'). Does not contradict annotations. Minor gap: doesn't elaborate on openWorldHint implications.
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 efficiently structured sentences: first establishes purpose and analysis scope, second describes return value. No filler content; every clause adds actionable information about capabilities or outputs.
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?
Strong coverage for a 4-parameter security tool. Compensates for missing output schema by describing return value ('unified risk score with detailed analysis'). Annotations cover safety profile. Minor gap: doesn't explicitly note that only email_body is required, though schema indicates this.
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?
With 100% schema coverage, baseline is 3. Description adds value by mapping parameters to specific analysis functions: raw_headers used for 'SPF/DKIM/DMARC' checks, sender_email used for 'sender domain' verification, email_body scanned for 'embedded URLs and phone numbers.'
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?
Description opens with specific verb 'Analyze' and resource 'email', clearly targeting phishing indicators. Distinguishes from siblings (check_url, check_phone) by mentioning email-specific elements like SPF/DKIM/DMARC headers, sender domain, and 'embedded' URLs/phone numbers.
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?
Provides clear context that this is for email analysis, and by noting it checks 'embedded URLs and phone numbers' implicitly distinguishes from standalone check_url/check_phone tools. However, lacks explicit 'when not to use' guidance or direct sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_phoneARead-onlyIdempotent
Look up a US phone number to check for scam reports, carrier info, network status, robocall flags, and community reports. Returns a risk score (0-100), verdict, and detailed signals from FTC, FCC, carrier, and community data.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number | Yes | US phone number to look up (any format: +1XXXXXXXXXX, (XXX) XXX-XXXX, etc.) | |
| force_refresh | No | Force a fresh lookup, bypassing cache (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly, idempotent, destructive), so the description adds value by detailing return values (risk score 0-100, verdict, signals) and data sources (FTC, FCC, carrier, community) that would otherwise be unknown without an output 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?
Two sentences with zero waste: first establishes purpose and checked attributes, second details return values. Every word earns its place and critical information is front-loaded.
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?
Excellent completeness given no output schema exists: the description fully compensates by detailing the risk score range, verdict structure, and data sources. Combined with comprehensive annotations and 100% param coverage, the agent has sufficient information to invoke and interpret results.
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?
With 100% schema coverage, baseline is 3. The description adds contextual meaning by reinforcing the geographic scope ('US phone number') and connecting the parameter to specific use cases (scam detection, carrier lookup), providing semantic context beyond the schema's format instructions.
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 specific verbs ('Look up') and clearly identifies the resource ('US phone number') and scope ('scam reports, carrier info, network status, robocall flags'). The singular phrasing implicitly distinguishes it from the sibling batch_phone tool.
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 description establishes clear context by specifying 'US phone number,' implying geographic limitation. However, it does not explicitly contrast with batch_phone for bulk operations or clarify when to use other check_* siblings versus this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_qrARead-onlyIdempotent
Analyze a QR code image. Decodes the QR code server-side and, if it contains a URL, runs full URL verification (domain age, SSL, brand impersonation, URLhaus, ThreatFox, Google Web Risk). Useful for verifying QR codes on parking meters, restaurant menus, mail, and packages. Consumes URL quota only when a URL is found.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | No | URL of the QR code image to scan (provide either image_url or image_base64) | |
| image_base64 | No | Base64-encoded QR code image (provide either image_url or image_base64). Supports data URI prefix. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds valuable operational details beyond annotations: specific external services queried (URLhaus, ThreatFox, Google Web Risk), conditional processing logic ('if it contains a URL'), and resource consumption rules ('Consumes URL quota only when a URL is found'). Does not contradict annotations (readOnlyHint=true aligns with 'Analyze/Decodes/verification' operations).
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 sentences with zero waste. First sentence front-loads the core action and conditional logic. Second provides usage context. Third states resource constraints. Every sentence earns its place with specific, non-redundant 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?
Comprehensive for the processing logic (decoding + verification pipeline) despite lacking output schema. Lists specific threat intelligence sources checked. Minor gap: does not describe return value structure or content (e.g., decoded string format, threat score object) which would help since no output schema exists.
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 fully documents both image_url and image_base64 parameters. The description mentions 'QR code image' generally but does not add parameter-specific semantics (e.g., format requirements, size limits) beyond what the schema already provides. Baseline 3 is appropriate for high-coverage schemas.
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?
Specific verb+resource combination ('Analyze a QR code image') with clear scope. Distinguishes from siblings like check_url by specifying QR code decoding happens first, followed by conditional URL verification. Lists specific verification checks (domain age, SSL, brand impersonation, etc.) that define the tool's unique capabilities.
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?
Provides concrete usage contexts ('parking meters, restaurant menus, mail, and packages') that clarify when to use this tool. However, lacks explicit guidance on when to use check_url directly versus this tool (e.g., 'if you already have a URL string, use check_url instead').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_textARead-onlyIdempotent
Analyze a text/SMS message for scam indicators. Extracts and cross-references embedded phone numbers and URLs. AI analysis identifies scam type, red flags, and risk level. Returns unified risk score combining AI and sub-lookup signals.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Text message content to analyze (max 5000 characters) | |
| from_number | No | Sender phone number, if known |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare read-only/idempotent properties, the description adds valuable behavioral context: it discloses the internal pipeline (extracting/cross-referencing phone numbers and URLs, AI analysis for scam types/red flags) and explains how the risk score is derived ('combining AI and sub-lookup signals'). This aligns with openWorldHint=true by implying external lookups without contradicting any annotations.
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 substantive sentences with zero waste: sentence 1 states purpose, sentence 2 describes extraction behavior, sentence 3 covers AI analysis, and sentence 4 explains return values. Information is front-loaded and every sentence earns its place.
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?
Given the absence of an output schema, the description appropriately explains return values ('unified risk score'). It adequately covers the tool's complexity (AI analysis, cross-referencing) for a scam detection utility. A score of 5 would require mentioning error conditions or score scale details.
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?
With 100% schema description coverage, the baseline is 3. The description mentions 'text/SMS message' which maps to the 'message' parameter, but does not add semantic details beyond what the schema already provides (e.g., format expectations for 'from_number' or detailed usage guidance for optional parameters).
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 opens with a specific verb ('Analyze'), resource ('text/SMS message'), and goal ('scam indicators'). It clearly distinguishes this tool from siblings like check_email, check_url, and check_document by specifying the medium as text/SMS.
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 description provides clear context that this tool is specifically for text/SMS messages, implicitly distinguishing it from check_email, check_document, and other 'check_' siblings. However, it lacks explicit when-to-use guidance regarding the optional 'from_number' parameter or explicit comparisons to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_urlARead-onlyIdempotent
Check a website URL for safety. Analyzes domain age, SSL certificate, redirect chains, brand impersonation, Google Web Risk, URLhaus, ThreatFox, and community reports. Returns risk score and detailed signals.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to check (must include protocol, e.g. https://example.com) | |
| force_refresh | No | Force a fresh lookup, bypassing cache (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations by enumerating specific data sources checked (domain age, brand impersonation, community reports) and disclosing the return format ('risk score and detailed signals') which compensates for the missing output schema. It does not contradict the readOnlyHint/idempotentHint annotations. Minor gap: no mention of caching behavior implications 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly constructed sentences with zero waste. First sentence front-loads the purpose and comprehensively lists analysis dimensions; second sentence addresses the return value. Every clause earns its place.
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?
Given the absence of an output schema, the description appropriately discloses the return format ('risk score and detailed signals'). The combination of annotations (safety hints), schema (100% coverage), and description (analysis scope) provides complete invocation context. Minor gap: return structure specifics (object fields, enum values) are not described.
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?
With 100% schema description coverage, the baseline is appropriately met. The description does not add parameter-specific semantics beyond the schema (e.g., cost implications of force_refresh, URL validation requirements), but given the comprehensive schema documentation including the protocol requirement example, additional description text is not strictly necessary.
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 clearly states the specific action ('Check') and resource ('website URL') with explicit intent ('for safety'). It effectively distinguishes from siblings like check_phone, check_email, and batch_url through its detailed enumeration of URL-specific analysis signals (SSL, redirect chains, URLhaus, etc.).
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?
While the detailed list of analysis sources (Google Web Risk, ThreatFox, etc.) implies usage context for security investigations, there is no explicit guidance on when to use this single-URL tool versus the sibling 'batch_url' tool, nor when to prefer this over 'check_document' or 'check_text' for safety analysis. Usage is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusARead-onlyIdempotent
Check the operational status of ScamVerify API services. Returns health status for each component (phone, URL, text, email, document lookups, database, AI inference). No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint, destructiveHint), so description adds valuable behavioral context: 'No authentication required' and detailed return structure (health status for each component). No contradictions with annotations.
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 efficient sentences with zero waste. Front-loaded with the action verb, followed by return value description and authentication note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter health check tool, description is complete: explains purpose, discloses authentication requirements, and enumerates all service components in the response despite lack of output schema. Aligns components with sibling tool capabilities.
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?
Zero parameters present, warranting baseline score of 4 per rubric. No parameters require semantic explanation.
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?
Specific verb 'Check' with clear resource 'operational status of ScamVerify API services'. Explicitly distinguishes from content-checking siblings (check_phone, check_url, etc.) by stating it monitors the API components themselves (database, AI inference) rather than user-submitted content.
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?
Provides clear context through 'No authentication required' and lists the specific components returned (phone, URL, text, email, document, database, AI). Lacks explicit 'when not to use' exclusions, though the component list implicitly contrasts with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageARead-onlyIdempotent
Check your current API usage quota and rate limits for the billing period. Shows per-channel usage (phone, URL, text, email, document) with limits and remaining counts. QR lookups consume URL quota.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/safe properties, lowering the burden. The description adds valuable context: the 'billing period' time scope, specific channel breakdown mapping to sibling tools, and the critical quota consumption rule that QR lookups count against URL quota—behavioral details not present in structured data.
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 sentences with zero waste: first establishes purpose, second details the channel-specific return structure, third provides critical QR quota behavior. Front-loaded with action verb and appropriately sized.
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, but the description compensates by explaining return content ('per-channel usage with limits and remaining counts'). Given zero parameters and read-only nature, this is sufficiently complete, though it could specify the exact structure or format of the returned data.
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?
Input schema contains zero parameters (empty object). Per calibration rules, zero parameters establishes a baseline score of 4, which is appropriate here as there are no parameter semantics to elaborate upon.
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 specific verb 'Check' with clear resource 'API usage quota and rate limits' and scope 'billing period'. It implicitly distinguishes from check_* siblings by focusing on quota metrics rather than validation.
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?
Provides implied usage context by mapping channels (phone, URL, text, email, document) to the sibling tools. Includes specific behavioral note that 'QR lookups consume URL quota' which guides usage of check_qr, but lacks explicit when-to-use/when-not-to-use guidance versus alternatives like get_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct, non-overlapping purpose based on input type (phone, URL, email, text, document, QR) and operation mode (single vs. batch). The 'check_' prefix clearly identifies analysis tools, while 'batch_' and 'get_' group utility functions, leaving no ambiguity about which tool to invoke for a given scam verification task.
All 10 tools follow a consistent snake_case verb_noun convention (check_phone, batch_url, get_status). The verb choices are semantically coherent: 'check' for analysis operations, 'batch' for bulk processing, and 'get' for administrative retrieval, creating a predictable naming scheme throughout the set.
With 10 tools, the server hits the sweet spot for a scam verification API. The set includes single-item checks for six input types, batch variants for high-volume channels (phone/URL), and essential administrative tools (status/usage), with no redundant or filler tools.
The surface covers all major scam vectors (voice, web, email, SMS, physical documents, QR codes) with appropriate AI and database verification. Minor gap: batch operations are only available for phone and URL lookups, not for email, text, or document analysis, though this may reflect typical usage patterns.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-powered scam and threat verification for phone numbers, URLs, texts, and emails.
Scan suspicious messages, URLs, and text for scams with AI. Free tier - no API key required.
AI-powered scam detection for suspicious texts, emails, and screenshots. US-focused.
Score an IP, email, phone, domain or device for fraud in one call, with the signals behind it.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables comprehensive threat analysis for Indicators of Compromise (IoCs) including IP addresses, file hashes, domains, and URLs. It provides detailed reputation scores, security vendor evaluations, and network metadata to facilitate security assessments and risk detection.4MIT
- AlicenseAqualityDmaintenanceURL intelligence for AI agents. One URL in, structured security and data quality signals out across 7 dimensions. 13 tools, risk score 0-100 with 23 configurable weights.161101MIT

relayshield-mcpofficial
AlicenseAqualityAmaintenanceSecurity intelligence for AI agents — breach detection, SIM swap, domain lookalikes, OAuth watchlist, and malware scanning. Subscription or x402 PAYG.11MIT- AlicenseAqualityCmaintenanceScans suspicious messages, URLs, and text for scams inside any MCP-compatible AI assistant. No signup or API key needed for anonymous use.157MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/scamverifyai/scamverify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server