Skip to main content
Glama
scamverifyai

ScamVerify

by scamverifyai
README.md
# 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 |
|------|-------------|
| `check_phone` | 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_url` | Check a website URL for safety. Analyzes domain age, SSL certificate, redirect chains, brand impersonation, Google Web Risk, URLhaus, ThreatFox, and community reports. |
| `check_text` | 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. |
| `check_email` | Analyze an email for phishing indicators. Checks sender domain, email headers (SPF/DKIM/DMARC), brand impersonation, embedded URLs and phone numbers. |
| `check_document` | Analyze a document image for scam indicators. Uses vision AI to extract entities (addresses, officials, citations, phone numbers) and verifies them against government databases. |
| `check_qr` | 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. |
| `batch_phone` | Look up multiple phone numbers in a single request (max 100). |
| `batch_url` | Check multiple URLs in a single request (max 100). |
| `get_usage` | Check your current API usage quota and rate limits for the billing period. |
| `get_status` | Check the operational status of ScamVerify API services. No authentication required. |

## Prompts (4)

| Prompt | Description |
|--------|-------------|
| `investigate_phone` | Investigate a suspicious phone number for scam indicators and provide a safety recommendation. |
| `verify_url` | Check if a website URL is safe to visit and provide a detailed safety assessment. |
| `analyze_text` | Analyze a suspicious text message for scam indicators and explain the findings. |
| `check_email` | 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:**

```json
{
  "mcpServers": {
    "scamverify": {
      "type": "streamable-http",
      "url": "https://scamverify.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
```

**Claude Desktop (OAuth - no API key needed):**

```json
{
  "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:**

```json
{
  "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/mcp`
- **Auth:** 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:**

```bash
npm install -g @scamverifyai/scamverify-mcp
SCAMVERIFY_API_KEY=sv_live_... scamverify-mcp
```

**Or run directly with npx:**

```bash
SCAMVERIFY_API_KEY=sv_live_... npx @scamverifyai/scamverify-mcp
```

**Claude Desktop (stdio):**

```json
{
  "mcpServers": {
    "scamverify": {
      "command": "npx",
      "args": ["@scamverifyai/scamverify-mcp"],
      "env": {
        "SCAMVERIFY_API_KEY": "sv_live_..."
      }
    }
  }
}
```

**Docker:**

```bash
docker build -t scamverify-mcp .
docker run -e SCAMVERIFY_API_KEY=sv_live_... scamverify-mcp
```

### Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `SCAMVERIFY_API_KEY` | Yes | Your API key (prefix: `sv_live_` for production, `sv_test_` for testing) |
| `SCAMVERIFY_API_URL` | No | Override the API base URL (default: `https://scamverify.ai`) |

### Getting an API Key

1. Sign up at [scamverify.ai](https://scamverify.ai)
2. Go to Settings > API Keys
3. 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-server`
- **Protected Resource:** `https://scamverify.ai/.well-known/oauth-protected-resource`

OAuth scopes: `phone:lookup`, `url:lookup`, `text:analyze`, `email:analyze`, `usage:read`

## Development

```bash
git clone https://github.com/scamverifyai/scamverify-mcp.git
cd scamverify-mcp
npm install
npm run build
SCAMVERIFY_API_KEY=sv_test_... npm start
```

## Pricing

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](https://docs.scamverify.ai)

## Links

- **Website:** [scamverify.ai](https://scamverify.ai)
- **API Docs:** [docs.scamverify.ai](https://docs.scamverify.ai)
- **MCP Integration Guide:** [docs.scamverify.ai/docs/guides/mcp-integration](https://docs.scamverify.ai/docs/guides/mcp-integration)
- **OAuth Flow Guide:** [docs.scamverify.ai/docs/guides/oauth-flow](https://docs.scamverify.ai/docs/guides/oauth-flow)
- **Status Page:** [status.scamverify.ai](https://status.scamverify.ai)
- **Contact:** [scamverify.ai/contact](https://scamverify.ai/contact)

## License

MIT

TDQS

A4.4/5.0

Scored across 10 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessUnresponsive