Spam I Am: carrier spam label check

See if a phone number shows Spam Risk or Scam Likely on AT&T, Verizon and T-Mobile real phones.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
82%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_coverage' description lacks action verbin get_coverage

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~953Tokens (tool definitions)
~1013 BTypical response size
Moderate attention impact (0.74% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "spam-i-am": {
      "url": "https://ismynumberspam.com/mcp"
    }
  }
}

Remote endpoints

https://ismynumberspam.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢start_check(number, carriers, webhook_url, api_key)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "number": {
      "type": "string",
      "description": "US 10-digit phone number, any format, e.g. '2145550100' or '(214) 555-0100'"
    },
    "carriers": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "AT&T",
          "Verizon",
          "T-Mobile"
        ]
      },
      "description": "Leave out to check every carrier that's online"
    },
    "webhook_url": {
      "type": "string",
      "description": "Optional https address to POST the finished result to"
    },
    "api_key": {
      "type": "string",
      "description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
    }
  },
  "required": [
    "number"
  ]
}
🟢get_check(check_id, token, wait_seconds, api_key)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "check_id": {
      "type": "string"
    },
    "token": {
      "type": "string",
      "description": "The token from start_check, for a check started without a key"
    },
    "wait_seconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 25
    },
    "api_key": {
      "type": "string",
      "description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
    }
  },
  "required": [
    "check_id"
  ]
}
🟢get_coverage

Which carriers are online now, prices in cents, and the dialing window.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_balance(api_key)

Needs a key. The account balance, holds, and this key's spending limit.

Input Schema

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
    }
  }
}
🟡request_approval(reason, number, amount_cents, api_key)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "reason": {
      "type": "string",
      "maxLength": 300,
      "description": "Shown to your human, e.g. 'Check our sales line before Monday's campaign'"
    },
    "number": {
      "type": "string",
      "description": "US 10-digit phone number, any format, e.g. '2145550100' or '(214) 555-0100'"
    },
    "amount_cents": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100000,
      "description": "How much you're asking for"
    },
    "api_key": {
      "type": "string",
      "description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
    }
  }
}
🟢get_approval(approval_id, token, wait_seconds, api_key)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "approval_id": {
      "type": "string"
    },
    "token": {
      "type": "string",
      "description": "The token from request_approval"
    },
    "wait_seconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 25
    },
    "api_key": {
      "type": "string",
      "description": "Optional API key (sia_...), if your connection has none and you got one from get_approval"
    }
  },
  "required": [
    "approval_id"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools