Spam I Am MCP
An official MCP server that allows AI agents to verify if a phone number displays spam warnings (like 'Spam Risk' or 'Scam Likely') on major US carriers. The agent initiates a check, the number calls a test line, and the server returns the label, caller name, and screenshot from a real device.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://ismynumberspam.com/mcpWhat you can do with it
- Check if a phone number shows spam labels on AT&T, Verizon, or T-Mobile
- Retrieve detailed results including caller name and screenshots
- Request human approval for spending limits to perform paid checks
Source and maintenance
Protocol and capabilities
- Server
- spam-i-am 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 6 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
start_check — Start a spam label check
Start a check of what AT&T, Verizon and T-Mobile phones show when a number calls. Returns the test line to call ('dial') for each carrier and a check id (and a token for a keyless check: keep it). The number being checked must then call each test line within the window. The first check on a number is free; later ones need a key with funds.
{
"type": "object",
"required": [
"number"
],
"properties": {
"number": {
"type": "string",
"description": "US 10-digit phone number, any format, e.g. '2145550100' or '(214) 555-0100'"
},
"api_key": {
"type": "string",
"description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
},
"carriers": {
"type": "array",
"items": {
"enum": [
"AT&T",
"Verizon",
"T-Mobile"
],
"type": "string"
},
"description": "Leave out to check every carrier that's online"
},
"webhook_url": {
"type": "string",
"description": "Optional https address to POST the finished result to"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_check — Get a check's results
The check and each carrier's result: status waiting, complete or incomplete; the label shown and caller name; flagged true/false; a screenshot link. Set wait_seconds (up to 25) to wait for results to arrive before answering.
{
"type": "object",
"required": [
"check_id"
],
"properties": {
"token": {
"type": "string",
"description": "The token from start_check, for a check started without a key"
},
"api_key": {
"type": "string",
"description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
},
"check_id": {
"type": "string"
},
"wait_seconds": {
"type": "integer",
"maximum": 25,
"minimum": 0
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}get_coverage — Carriers and prices
Which carriers are online now, prices in cents, and the dialing window.
{
"type": "object",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false
}get_balance — Balance
Needs a key. The account balance, holds, and this key's spending limit.
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}request_approval — Ask your human to approve spending
Get a link (approve_url) for your human to open: they sign in, add funds if needed, set a spending limit and approve. Show them the link, then call get_approval. Use this when a check is refused with free_check_used, insufficient_funds or key_limit.
{
"type": "object",
"properties": {
"number": {
"type": "string",
"description": "US 10-digit phone number, any format, e.g. '2145550100' or '(214) 555-0100'"
},
"reason": {
"type": "string",
"maxLength": 300,
"description": "Shown to your human, e.g. 'Check our sales line before Monday's campaign'"
},
"api_key": {
"type": "string",
"description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
},
"amount_cents": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "How much you're asking for"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": false
}get_approval — Check whether your human approved
Status of an approval request: pending, approved, declined or expired. Once approved, a keyless request returns api_key (shown once): pass it as api_key to the other tools. Set wait_seconds (up to 25) to wait for a decision.
{
"type": "object",
"required": [
"approval_id"
],
"properties": {
"token": {
"type": "string",
"description": "The token from request_approval"
},
"api_key": {
"type": "string",
"description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
},
"approval_id": {
"type": "string"
},
"wait_seconds": {
"type": "integer",
"maximum": 25,
"minimum": 0
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 403 ms
- 95th percentile latency
- 403 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 403 ms · metadata changed · 6 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http spam-i-am-mcp https://ismynumberspam.com/mcpCodex
codex mcp add spam-i-am-mcp --url https://ismynumberspam.com/mcpCursor
{
"mcpServers": {
"spam-i-am-mcp": {
"url": "https://ismynumberspam.com/mcp"
}
}
}Cline
{
"mcpServers": {
"spam-i-am-mcp": {
"type": "streamableHttp",
"url": "https://ismynumberspam.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"spam-i-am-mcp": {
"type": "http",
"url": "https://ismynumberspam.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http spam-i-am-mcp https://ismynumberspam.com/mcpClaude Desktop
{
"mcpServers": {
"spam-i-am-mcp": {
"url": "https://ismynumberspam.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"spam-i-am-mcp": {
"serverUrl": "https://ismynumberspam.com/mcp"
}
}
}Let your agent find its tools
Find servers like Spam I Am MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run Spam I Am MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.