pleamo
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pleamoCheck this URL for scam: https://example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pleamo MCP server
Exposes pleamo's AI scam/phishing URL checks as MCP tools, so any MCP client (Claude Desktop, Cursor, your own agent) can ask pleamo "is this link safe?" before opening or recommending it.
It's a thin, authenticated proxy to the hosted pleamo API — every check goes through the same per-user and global caps that protect the service.
Tools
Tool | What it does |
| Judge a URL: verdict (safe/suspicious/dangerous), severity, confidence, reason |
| Flag a wrongly-blocked domain for review |
| Your plan + today's AI-check usage |
Related MCP server: Malicious Scanner MCP Server
Setup
Get a pleamo API key (a revocable key from the dashboard at
https://dash.pleamo.app/keys).Point your MCP client at this server. For Claude Desktop, add to
claude_desktop_config.json:
{
"mcpServers": {
"pleamo": {
"command": "npx",
"args": ["-y", "pleamo-mcp"],
"env": {
"PLEAMO_TOKEN": "your-api-key-here"
}
}
}
}Restart the client. You'll then be able to say things like "check this link with
pleamo: https://paypa1-login.example" and the agent will call check_url.
Environment
Var | Default | Notes |
| — | Required. Bearer token for the pleamo API. |
|
| Override for local dev (e.g. |
Develop
npm install
npm run verify # lint + format + unit tests
npm start # runs the stdio server (expects an MCP client on stdin)Quick stdio smoke test (lists the tools):
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
| node src/server.jsRemote (hosted) alternative
If your client supports remote MCP servers, you don't need this local process at all — connect straight to the hosted endpoint:
https://dash.pleamo.app/api/mcpIt speaks JSON-RPC over HTTP (same three tools) and authenticates with a pleamo
API key as a Bearer token. Create a revocable key at
https://dash.pleamo.app/keys. This local stdio server is for clients that only
speak stdio (e.g. current Claude Desktop).
Notes
Auth / tokens — get a revocable API key from the dashboard (
/keys) and set it asPLEAMO_TOKEN. (A raw session token also works, but keys are the right, revocable option.)Transport — this package is stdio; the hosted
/api/mcpabove is the remote Streamable-HTTP variant.The other MCP direction — letting the extension route checks through the user's own agent (BYO-via-MCP) is tracked alongside the extension source at pleamo/pleamo-chrome-extension.
Available Tools
3 toolscheck_urlCheck a URL for scams / phishingA
Ask pleamo whether visiting a URL is likely a scam or phishing site. Returns a verdict (safe/suspicious/dangerous), severity, confidence, and a plain-English reason. Use before opening or recommending an unfamiliar link.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The full URL to check, e.g. https://example.com/login |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden. It discloses the return format: 'verdict (safe/suspicious/dangerous), severity, confidence, and a plain-English reason.' This covers the key behavioral aspects of a read-only analysis tool. However, it does not mention any limitations, latency, or side effects (though none are expected). Overall, it provides adequate behavioral context but not exhaustive.
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?
The description is two sentences, front-loaded with the purpose and return details, followed by a concise usage recommendation. No redundant phrasing; every sentence adds value.
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 simple tool with one parameter, no output schema, and no annotations, the description covers purpose, usage, and return format. It does not explain edge cases (e.g., invalid URL) or interpret severity/confidence, but these are minor for a single-purpose checker. The description is complete enough for an agent to invoke correctly.
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?
The input schema has complete coverage (100%) for the single parameter 'url', with a clear description and an example. The tool description adds no additional meaning beyond the schema. Since baseline for high coverage is 3, this score is appropriate.
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 a specific verb ('Ask pleamo') and resource ('URL'), and explicitly states the tool's purpose: to determine if a URL is likely a scam or phishing site. It clearly distinguishes from siblings like report_false_positive and get_status by its focus on URL safety assessment.
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 explicit guidance on when to use the tool: 'Use before opening or recommending an unfamiliar link.' This gives clear context for usage. It does not explicitly mention alternatives or when not to use it, but the siblings are obviously different (report false positive, get status), so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusGet pleamo plan + usageA
Return the signed-in account's plan and today's AI-check usage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly states that the operation returns data (plan and usage) and implies read-only behavior through the verb 'Return'. It also specifies the scope ('today's usage'), giving the agent a clear expectation. However, it does not disclose potential rate limits, error conditions, or authentication details beyond the implicit 'signed-in account' context.
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?
The description is a single, front-loaded sentence that states the purpose and scope immediately. There is no wasted verbiage or redundancy. Every word contributes to the meaning.
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 low complexity (no parameters, no output schema, no annotations), the description fully covers what an agent needs to know: what the tool returns (plan and today's usage) and the implicit requirement of being signed in. The siblings are unrelated, so no extra context is necessary. It is complete for a simple status tool.
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?
The tool has zero parameters, and the schema is empty. Per the rubric, a baseline of 4 is appropriate since there are no parameters to explain. The description adds no parameter information but doesn't need to, as none exist.
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 a clear verb ('Return') and identifies the exact resource ('signed-in account's plan and today's AI-check usage'). This unambiguously distinguishes it from siblings like check_url and report_false_positive, which serve very different purposes.
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 does not explicitly mention when to use this tool versus alternatives, nor does it provide any exclusions or conditions. It is a simple status query, so the context is implicit, but the lack of any sibling comparison or usage notes leaves this dimension at a basic level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_false_positiveReport a wrongly-flagged siteA
Tell pleamo a domain was flagged incorrectly, so it can be reviewed and corrected.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional context for the reviewer | |
| domain | Yes | The domain that was wrongly flagged, e.g. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It discloses that the action is a submission for review and correction, implying it's non-destructive and asynchronous. However, it does not state what happens after submission (e.g., response, confirmation) or any side effects, leaving some ambiguity for a mutation-like action.
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?
One sentence carries the full purpose with no wasted words. It's front-loaded with the action and intent, making it easy to scan.
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 simple reporting tool with two parameters and no output schema, the description covers the essential context: what to report and why. It doesn't explain the return value or next steps, but these are not critical for a submission action.
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 coverage is 100%, so the schema already documents both parameters. The description does not add semantic detail beyond what the schema provides, meeting the baseline for full schema coverage.
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 action ('tell pleamo a domain was flagged incorrectly') and the resource (domain), distinguishing it from siblings like check_url and get_status by its reporting intent. The title and description align without tautology.
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 gives clear context for when to use this tool (when a domain was wrongly flagged) and implies the expected outcome (review and correction). It does not explicitly name alternatives or exclusions, but the purpose is unambiguous enough to route an agent correctly.
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.
3 tool updates
v1.0.0- First observed
check_url - First observed
get_status - First observed
report_false_positive
TDQS
Scored across 3 tools
Each tool serves a clearly distinct purpose: check_url analyzes a URL, report_false_positive submits a correction, and get_status returns account information. There is no meaningful overlap or ambiguity among the three.
All tool names follow the same verb_noun pattern using snake_case: check_url, report_false_positive, get_status. This makes the tool set predictable and easy to navigate.
With only three tools, the server is tightly scoped to its purpose: URL safety checking, correction feedback, and account status. Each tool earns its place and the count is appropriate for such a focused service.
The tool set covers the core workflow: checking URLs, reporting incorrect verdicts, and checking usage/plan status. There are no obvious dead ends or missing operations for the stated domain.
Maintenance
Related MCP Connectors
PhishTank MCP — wraps PhishTank API (checkurl.phishtank.com)
Scam and phishing detection for AI agents: safe/warn/danger verdicts for URLs and messages.
URLhaus MCP — wraps abuse.ch URLhaus malware URL database (free, no auth)
A paid remote MCP for developer endpoint scanner MCP, built to return verdicts, receipts, usage logs
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides access to a malicious URL database API, enabling users to search, list, and retrieve information about potentially dangerous URLs for security analysis and threat detection.3MIT
- AlicenseBqualityDmaintenanceEnables real-time scanning of URLs for malicious content, spam/gray classification, and additional security flags like domain age through the Malicious Scanner API.1MIT

scanmalware-mcpofficial
AlicenseNot gradedqualityBmaintenanceWraps the ScanMalware.com API to enable phishing triage, malware scanning, and certificate inspection through natural language, allowing users to submit scans, retrieve results, and analyze threats via MCP tools.Apache 2.0- FlicenseNot gradedqualityBmaintenanceChecks URLs for phishing risks using URL, DNS, HTTP, HTML, and mobile rendering signals, and provides a 1024x1024 PNG visual summary of the page.-