mcp-registry/com.plainrouter/mcp · v0.4.1
As of 2026-10-17 23:37 UTC, the Plainrouter MCP server is up with a Glimind reliability score of 83/100 (grade B). Over the last 30 days it answered 99.9% of Glimind's liveness checks. It had 5 outages in 90 days, with a median recovery of 7 minutes.
Inspect an approved ad account and first-party signal health, then propose policy-gated actions.
Claude Code
claude mcp add --transport http plainrouter-mcp-server https://plainrouter.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"plainrouter-mcp-server": {
"type": "http",
"url": "https://plainrouter.com/mcp"
}
}
}
Third-party server, listed as discovered. Review its source before installing.
2 tool definition(s) exceed ~1,200 tokens each (largest: propose-actions, ~3,060).
Move long reference material out of descriptions (link a doc or expose a resource), drop repeated examples, and collapse large enums. Trimming these to ~600 tokens saves ~4,807 tokens every session.
48 tools on one server. Tool-selection accuracy drops as the menu grows, and some clients (e.g. Cursor) cap the number of active tools.
Group tools by task into smaller servers or toolsets, and merge near-duplicates behind one tool with a mode parameter.
84 parameter(s) across 23 tool(s) have no description.
Add a "description" to each parameter with its format and an example ("ISO 8601 date, e.g. 2026-10-17"). This is the commonest cause of wrong arguments on the first call.
19 tool name(s) contain "." or exceed 64 characters, which OpenAI-compatible function calling rejects (^[a-zA-Z0-9_-]{1,64}$).
Use "_" or "-" instead of "." and keep names to 64 characters, so clients built on OpenAI-style tool calling don't have to rename (or drop) them.
Loading this server's tool list costs an agent ~17,607 tokens before any work — more than 95% of MCP servers.
Split rarely-used tools into a separate server or a toolset the client can enable, or expose one "search tools" entry point. Many agents load every connected server's tools into every request.
Handshake + tools/list takes ~3,746 ms.
Serve tools/list from memory, keep the process warm, and host close to your users. Every new agent session pays this before its first call.
In the last 30 days: 97 tool(s) removed and 92 schema change(s).
Add new tools or optional parameters instead of renaming or removing; deprecate first (say so in the description) and remove later. Agents cache tool contracts.
Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. 23 tool(s) still need parameter descriptions written by someone who knows the API. All of them as JSON: /v1/readiness/mcp-registry%2Fcom.plainrouter%2Fmcp/fixes
{
"name": "actions_rules_create",
"description": "Store a performance rule disabled. Enabling requires an explicit update; this never evaluates or proposes actions.",
"inputSchema": {
"type": "object",
"required": [
"name",
"definition",
"platform_ad_account_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 25,
"minimum": 1,
"description": "Maximum latest revisions; current_revision is always returned separately."
},
"cursor": {
"type": "string",
"description": "Read older revisions using rule.next_cursor. Continue through actions.rules.show to avoid another write."
},
"definition": {
"type": "object",
"required": [
"target_level",
"action",
"minimum_counted_arrivals",
"cost_comparison",
"cost_ratio"
],
"properties": {
"action": {
"enum": [
"pause",
"increase_budget",
"decrease_budget"
],
"type": "string"
},
"cost_ratio": {
"type": "number",
"maximum": 10,
"minimum": 0.1,
"description": "Target cost per counted arrival divided by whole-account cost per counted arrival."
},
"target_level": {
"enum": [
"ad",
"ad_set",
"campaign"
],
"type": "string"
},
"cost_comparison": {
"enum": [
"at_least",
"at_most"
],
"type": "string"
},
"budget_change_percent": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Required for daily-budget changes on ad sets or campaigns; omit for pause. Pause targets only ads or ad sets."
},
"minimum_counted_arrivals": {
"type": "integer",
"minimum": 50,
"description": "Counted arrivals on the target. At least 100 for a budget increase."
}
},
"description": "Both arrivals and cost conditions must hold over the last 3 complete days in the account timezone. Supply the complete definition when editing.",
"additionalProperties": false
},
"workspace_id": {
"type": "integer",
"minimum": 1,
"description": "Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces."
},
"platform_ad_account_id": {
"type": "integer",
"minimum": 1
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
},
"title": "Create action rule"
}{
"name": "actions_rules_list",
"description": "List stored performance rules available to this workspace key. This does not evaluate them.",
"inputSchema": {
"type": "object",
"properties": {
"page": {
"type": "integer",
"maximum": 10000000000000000,
"minimum": 1
},
"cursor": {
"type": "string",
"description": "Continue using rules.next_cursor; use actions.rules.show for detail."
},
"per_page": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1
},
"workspace_id": {
"type": "integer",
"minimum": 1,
"description": "Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces."
}
}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
},
"title": "List action rules"
}{
"name": "actions_rules_show",
"description": "Read a stored performance rule and its immutable revisions, with author type only.",
"inputSchema": {
"type": "object",
"required": [
"rule_id"
],
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 25,
"minimum": 1,
"description": "Maximum latest revisions; current_revision is always returned separately."
},
"cursor": {
"type": "string",
"description": "Read older revisions using rule.next_cursor. Continue through actions.rules.show to avoid another write."
},
"run_id": {
"type": "string",
"description": "Read decisions for one run belonging to this rule."
},
"rule_id": {
"type": "string",
"pattern": "^[0-7][0-9a-hjkmnp-tv-z]{25}$",
"description": "The action rule ID."
},
"workspace_id": {
"type": "integer",
"minimum": 1,
"description": "Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces."
},
"decisions_cursor": {
"type": "string",
"description": "Continue decisions using runs[].next_cursor; requires run_id."
}
}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
},
"title": "Show action rule"
}Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:
curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/com.plainrouter/mcp"],"email":"[email protected]"}'Agents: watch_tool({"toolId": "mcp-registry/com.plainrouter/mcp"}) over MCP.
propose-actions ~3,060 tokensdry_run_actions ~2,947 tokensactions.rules.update ~554 tokenslaunch.plans.update ~542 tokenslaunch.plans.create ~539 tokensStatic checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).
Operator? Fix these, then re-check live. Embed the readiness badge:
[](https://glimind.com/server/mcp-registry%2Fcom.plainrouter%2Fmcp?ref=badge)
<a href="https://glimind.com/server/mcp-registry%2Fcom.plainrouter%2Fmcp?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fcom.plainrouter%2Fmcp.svg" alt="MCP agent-readiness"></a>
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fcom.plainrouter%2Fmcp.svg :target: https://glimind.com/server/mcp-registry%2Fcom.plainrouter%2Fmcp?ref=badge :alt: MCP agent-readiness
Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:3840e120dec66ade…, first seen 2026-10-17, included at leaf 2756 of 19,139. Version history · verify what your client received.
Compare: most reliable knowledge servers · most reliable data servers · most reliable devops servers · most reliable other servers · most reliable retrieval servers
Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.
Claude Code
claude mcp add --transport http glimind https://glimind.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"glimind": {
"type": "http",
"url": "https://glimind.com/mcp"
}
}
}
As of 2026-10-17 23:37 UTC, the Plainrouter MCP server is up with a Glimind reliability score of 83/100 (grade B). Over the last 30 days it answered 99.9% of Glimind's liveness checks. It had 5 outages in 90 days, with a median recovery of 7 minutes.
Plainrouter MCP server advertises 48 tools, including actions.rules.create, actions.rules.list, actions.rules.show, actions.rules.update, actions.tests.create.
Point your MCP client at this streamable-http endpoint: https://plainrouter.com/mcp
Glimind scanned all 48 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.
Status page: 90-day uptime, every outage and how long it lasted.
Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.
Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.