Skip to main content
Glama

varta-mcp

Spam classification MCP server for AI agents — built from real Telegram moderation data.

Live at: https://mcp.getvarta.com/sse
Get a free API key: https://isitaspam.com/developers

Tools

Tool

Description

check_spam_text

Classify a message as SPAM / SUSPICIOUS / SAFE. Returns verdict, confidence (0–1), category, risk signals, red flags, and plain-language recommendation.

get_spam_stats

Daily spam classification statistics from isitaspam.com.

get_spam_examples

Five most recent public spam catches with links to full analysis.

Related MCP server: Straight Connect

Add to Claude Code

claude mcp add varta \
  --transport sse \
  https://mcp.getvarta.com/sse \
  --header "Authorization: Bearer varta_YOUR_KEY"

Get a free key (50 checks/day) at https://isitaspam.com/developers — instant, no credit card.

Run locally (stdio)

The hosted server above is the easiest path. If you'd rather run the server as a local process — or your MCP client only speaks stdio — use the bundled stdio entry point. Same three tools, no dependencies, Node 18+.

git clone https://github.com/DarynaFor/mcp-varta.git
cd mcp-varta
API_KEY=varta_YOUR_KEY node src/stdio.js

Or wire it into a client config:

{
  "mcpServers": {
    "varta": {
      "command": "node",
      "args": ["/path/to/mcp-varta/src/stdio.js"],
      "env": { "API_KEY": "varta_YOUR_KEY" }
    }
  }
}

initialize and tools/list work without a valid key, so registries and clients can introspect the server before you have one.

Example

curl -s -X POST https://mcp.getvarta.com/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer varta_YOUR_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "check_spam_text",
      "arguments": {
        "text": "Earn $5000/week from home! Click: bit.ly/abc123"
      }
    }
  }'

Response:

**Verdict: SPAM** (97% confidence)
**Category:** financial scam

**Why flagged:**
- Unrealistic income claim ($5000/week)
- Shortened URL hides real destination

**Recommended action:** Delete message and ban sender.

**Source:** isitaspam.com/check/financial_scam-earn-5000-week-a1b2c3d4

How it works

The classifier runs 7-layer detection:

  1. Fast pre-classifier (keyword + pattern signals)

  2. Multi-LLM consensus (GPT + Claude + Gemini) for ambiguous cases

  3. Vector similarity against 1,100+ verified scam patterns

  4. URL safety check (Google Safe Browsing + PhishTank)

  5. Crypto scam signal detection

  6. Language detection (33 languages)

  7. Stylometric analysis (urgency density, caps ratio, mixed-script patterns)

Data comes from 51 live Telegram groups protecting 29,000+ members via Varta — a Telegram anti-spam SaaS.

Endpoints

Endpoint

Transport

GET https://mcp.getvarta.com/sse

SSE (Claude Code --transport sse)

POST https://mcp.getvarta.com/mcp

HTTP (--transport http)

GET https://mcp.getvarta.com/

Info / health check

Auth

Pass your API key as a Bearer token:

Authorization: Bearer varta_YOUR_KEY

Free tier: 50 checks/day
Paid tiers: 2,000/day ($19/mo) · 10,000/day ($49/mo) — see https://isitaspam.com/developers#pricing

Rate limits & errors

Rate limiting is applied by isitaspam.com. On 429, the error body includes reset_at and upgrade_url.

Code

Meaning

invalid_api_key

Bearer token not recognised

rate_limit_exceeded

Daily or burst limit hit

text_too_long

Message exceeds 5,000 chars

REST API

If you prefer REST over MCP, the same keys work on isitaspam.com/api/check via X-API-Key header. Full OpenAPI 3.1 spec: https://isitaspam.com/openapi.yaml

License

MIT

Available Tools

3 tools
check_spam_textA

Classify a text message as SPAM, SUSPICIOUS, or SAFE using multi-LLM consensus (GPT + Claude + Gemini) and vector similarity against 1,100+ verified scam patterns. Returns verdict, confidence, category, risk signals, red flags, and plain-language recommendation. Built from real Telegram moderation data.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesMessage text to classify. Max 5,000 characters.
localeNoISO 639-1 language hint (e.g. 'uk', 'ru', 'de'). Auto-detected if omitted.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the use of GPT, Claude, and Gemini, vector similarity, and the output fields (verdict, confidence, category, risk signals, red flags, recommendation). Missing are potential limitations or failure modes, but the core behavior is well described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, each earning its place: the classification action, the return values, and the data provenance. There is no unnecessary detail or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity and the absence of an output schema, the description compensates by listing the return fields. It covers purpose, method, and outputs but omits edge cases like error handling or accuracy caveats, which are minor for this use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides thorough descriptions for both 'text' (max 5000 chars) and 'locale' (ISO 639-1, auto-detected). The tool description adds no extra parameter-specific meaning, so the schema does the heavy lifting, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Classify a text message as SPAM, SUSPICIOUS, or SAFE' – a specific verb, resource, and outcome. The mention of multi-LLM consensus and vector similarity against scam patterns further differentiates it from sibling tools like get_spam_stats and get_spam_examples.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the tool is for classifying text messages, distinguishing it from sibling tools that provide stats or examples. However, it does not explicitly state when not to use this tool or directly reference alternatives, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_spam_examplesA

Get the 5 most recent public spam/scam examples caught by the isitaspam.com classifier. Each result includes verdict, category, and a link to the full analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It provides useful behavioral context: returns exactly 5 most recent public examples and includes verdict, category, and a link to full analysis. It does not discuss auth, rate limits, or pagination, but for a zero-parameter read tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the action verb 'Get', and contains no filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 0 parameters and no output schema, the description is complete for its scope. It communicates the count (5), scope (most recent public), subject (spam/scam examples), and return content (verdict, category, link).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the schema defines nothing. The baseline for zero parameters is 4, and the description adds value by describing the output fields, which is more than enough for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the 5 most recent public spam/scam examples from the isitaspam.com classifier. This distinguishes it from sibling tools like check_spam_text (checks a text) and get_spam_stats (gets statistics) by focusing on example records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. The description implies it is for fetching example records, but it does not mention check_spam_text or get_spam_stats, or specify any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_spam_statsA

Get daily spam classification statistics from isitaspam.com — total checks today, how many were classified as SPAM, how many as SUSPICIOUS. Cached 60 seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses a key behavioral trait: 'Cached 60 seconds,' indicating potential staleness. It also enumerates exactly which statistics are returned (total checks, SPAM, SUSPICIOUS), providing useful context beyond what an empty schema would imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with immediate verb-first structure. The source, key metrics, and caching behavior are all stated without any filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description covers the data source, exact statistics, time scope ('today'), and cache lifetime. This is fully sufficient for an agent to know what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema coverage (trivial). Baseline 4 applies because the description need not explain parameters that don't exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with 'Get daily spam classification statistics' – a specific verb and resource. It distinguishes itself from siblings (check_spam_text, get_spam_examples) by focusing on aggregate metrics rather than text analysis or example retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context implies use when one needs general spam stats, but it does not explicitly state when to use it over alternatives or when not to use it. Sibling tools are listed separately but not referenced in the description.

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.

  1. 3 tool updatesv1.0.0
    • First observedcheck_spam_text
    • First observedget_spam_examples
    • First observedget_spam_stats

TDQS

A4.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: check_spam_text classifies a single message, get_spam_stats provides aggregate counts, and get_spam_examples shows recent samples. There is no overlap in functionality or confusion about which tool to use for a given task.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: check_spam_text, get_spam_stats, get_spam_examples. The verbs (check, get) and nouns (text, stats, examples) are clear and predictable.

Tool Count4/5

With three tools, the server is on the lower end of the ideal range, but it is well-scoped for a narrow spam-classification utility. Each tool serves a distinct need, and the count feels appropriate rather than sparse.

Completeness4/5

The core functionality (classifying a text) is covered, along with supporting statistical and example retrieval. Minor gaps exist (e.g., batch processing or category filtering), but these are not essential for the stated purpose and can be worked around.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Content moderation and profanity detection MCP server with 19 tools, 24 language support, leetspeak/Unicode obfuscation detection, context-aware analysis, batch processing, and user tracking for AI-powered content safety.
    21 npm
    60
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for communication service connectors that currently provides multi-account Telegram integration with granular tool access and security controls. It allows AI models to manage messages, chats, and media across various accounts through a flexible, extensible routing architecture.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server enabling AI agents to interact with users via Telegram, supporting message and image sending, inline quick replies, and waiting for user responses.
    5 npm
    MIT