← All servers

PlainRouter

warnings

plainrouter.com

Inspect an approved ad account and first-party signal health, then propose policy-gated actions.

https://plainrouter.com/mcpWebsiteOAuthMCP 2025-11-25v0.4.1last checked 18 Oct 2026spoke MCP on 100% of 84 checks (30 days)initialize in 332 ms

Will my client connect?

Decided from what the probe found at the endpoint, and from what each client's own documentation says it can complete. Every row carries the day that documentation was read.

✓Claude CodeConnects

The authorization server advertises RFC 7591 registration, so Claude Code can register itself and sign you in through the browser.

claude mcp add --transport http plainrouter https://plainrouter.com/mcp

Claude Code docs · read on 2026-08-30

✓Claude (claude.ai & Desktop)Connects

The authorization server advertises RFC 7591 registration, so Claude (claude.ai & Desktop) can register itself and sign you in through the browser.

Settings → Connectors → Add custom connector, then paste https://plainrouter.com/mcp.

Claude (claude.ai & Desktop) docs · read on 2026-08-30

✓ChatGPTConnects

The authorization server advertises RFC 7591 registration, so ChatGPT can register itself and sign you in through the browser.

Settings → Apps → Advanced settings → Developer mode, then create a connector pointing at https://plainrouter.com/mcp.

ChatGPT docs · read on 2026-08-30

✓CursorConnects

The authorization server advertises RFC 7591 registration, so Cursor can register itself and sign you in through the browser.

{
  "mcpServers": {
    "plainrouter": {
      "url": "https://plainrouter.com/mcp"
    }
  }
}

Cursor docs · read on 2026-08-30

✓VS Code (Copilot)Connects

The authorization server advertises RFC 7591 registration, so VS Code (Copilot) can register itself and sign you in through the browser.

{
  "servers": {
    "plainrouter": {
      "type": "http",
      "url": "https://plainrouter.com/mcp"
    }
  }
}

VS Code (Copilot) docs · read on 2026-08-30

How to authenticate

Checked against the endpoint by our probe on 18 Oct 2026. These are the capabilities the server advertises, not a prediction about any particular client.

Scheme
OAuth
Issuer
https://plainrouter.com
Dynamic client registration
✓Advertised (RFC 7591)
Client ID Metadata Document
✕Not advertised
PKCE
✓S256
Grant types
authorization_code, refresh_token, urn:ietf:params:oauth:grant-type:device_code
Scopes
mcp:use
Protected-resource metadata
✓Published (RFC 9728)
Anonymous access
Handshake succeeds; 15 tools listable
Credentials demanded in prose
✕propose-actions

These tools are listed anonymously and their own descriptions ask for an account or key, but no challenge is issued — so a client has nothing to act on and the refusal arrives as a tool error.

What the probe found

warningTools needing credentials are listed without a challenge

1 of the 15 tools listed anonymously say in their own descriptions that they need an account or a key (propose-actions), but the endpoint issued no WWW-Authenticate challenge. The requirement is stated only in prose, so a call reaches the tool and comes back as a tool error instead of an authorization step.

15 tools usable without signing in

The server exposes a public surface before authorization: get_account_state, get_account_inventory, list_workspaces, get_signal_health, get_performance, get_inventory_metrics, verify_signal_ingestion, propose-actions, dry_run_actions, list_actions, get_action_batch, get_action, get_action_decision_receipt, get_action_policy, actions.rules.list.

Tools

actions.rules.createactions.rules.listactions.rules.showactions.rules.updateactions.tests.createactions.tests.listactions.tests.showdry_run_actionsduplicate-ad-with-creativeget-creative-libraryget_account_inventoryget_account_stateget_actionget_action_batchget_action_decision_receiptget_action_policyget_arrivals_comparisonget_consent_ratesget_conversion_journeysget_cookie_scanget_install_instructionsget_inventory_metricsget_performanceget_renderget_signal_healthlaunch.creatives.indexlaunch.creatives.showlaunch.creatives.statuslaunch.creatives.storelaunch.creatives.store-from-urllaunch.plans.copylaunch.plans.createlaunch.plans.executelaunch.plans.listlaunch.plans.showlaunch.plans.updatelaunch.plans.validatelist_actionslist_creativeslist_templateslist_workspacespreview_creativespropose-actionsrender_adresume_renderrevoke_grantsubmit_feedbackupload-assetverify_signal_ingestion

Contract history

18 Oct 2026v0.4.12 breaking2 compatible1 cosmeticinstructions rewritten

Breaking: actions.tests.create, actions.tests.show

Instructions rewritten: actions.tests.create, actions.tests.list, actions.tests.show, get_arrivals_comparison. The description an agent follows changed; the callable contract may not have.

15 Oct 2026v0.4.15 breaking

Breaking: actions.rules.list, actions.tests.list, launch.creatives.index, launch.plans.list, list_actions

15 Oct 2026v0.4.12 breaking

Breaking: dry_run_actions, propose-actions

13 Oct 2026v0.4.11 compatible1 cosmeticinstructions rewritten

Instructions rewritten: list_templates. The description an agent follows changed; the callable contract may not have.

12 Oct 2026v0.4.19 compatible1 cosmetic
11 Oct 2026v0.4.115 compatible34 cosmeticinstructions rewritten

Instructions rewritten: actions.rules.create, actions.rules.list, actions.rules.show, actions.rules.update, actions.tests.create, actions.tests.list, actions.tests.show, dry_run_actions, duplicate-ad-with-creative, get-creative-library, get_account_inventory, get_account_state, get_action, get_action_batch, get_action_decision_receipt, get_action_policy, get_arrivals_comparison, get_consent_rates, get_cookie_scan, get_install_instructions, get_inventory_metrics, get_performance, get_signal_health, launch.creatives.index, launch.creatives.show, launch.creatives.status, launch.creatives.store, launch.creatives.store-from-url, launch.plans.copy, launch.plans.create, launch.plans.execute, launch.plans.list, launch.plans.show, launch.plans.update, launch.plans.validate, list_actions, list_workspaces, propose-actions, revoke_grant, submit_feedback, upload-asset, verify_signal_ingestion. The description an agent follows changed; the callable contract may not have.

11 Oct 2026v0.4.13 compatible
9 Oct 2026v0.4.14 compatible
8 Oct 2026v0.4.13 breaking1 compatible1 cosmeticinstructions rewritten

Breaking: get_action, get_action_batch, list_actions

Instructions rewritten: actions.tests.list, actions.tests.show. The description an agent follows changed; the callable contract may not have.

7 Oct 2026v0.4.14 compatible
6 Oct 2026v0.4.137 compatible
6 Oct 2026v0.4.12 compatible
5 Oct 2026v0.4.13 breaking4 compatible

Breaking: get_action, get_action_batch, list_actions

4 Oct 2026v0.4.14 compatible
4 Oct 2026v0.4.11 breaking6 compatibleinstructions rewritten

Breaking: launch.plans.execute

Instructions rewritten: launch.plans.execute, launch.plans.list, launch.plans.show. The description an agent follows changed; the callable contract may not have.

3 Oct 2026v0.4.13 cosmeticinstructions rewritten

Instructions rewritten: get_inventory_metrics, launch.creatives.store, launch.creatives.store-from-url. The description an agent follows changed; the callable contract may not have.

2 Oct 2026v0.4.11 compatible
1 Oct 2026v0.4.12 compatible
1 Oct 2026v0.4.02 compatible
1 Oct 2026v0.4.02 breaking2 cosmeticinstructions rewritten

Breaking: show_spend_cap_approval, ui://resources/spend-cap-approval-app

Instructions rewritten: duplicate-ad-with-creative, upload-asset. The description an agent follows changed; the callable contract may not have.

30 Sep 2026v0.4.02 cosmeticinstructions rewritten

Instructions rewritten: get_arrivals_comparison, get_performance. The description an agent follows changed; the callable contract may not have.

30 Sep 2026v0.4.02 cosmeticinstructions rewritten

Instructions rewritten: get_account_state, ui://resources/account-state-app. The description an agent follows changed; the callable contract may not have.

29 Sep 2026v0.4.03 compatible3 cosmeticinstructions rewritten

Instructions rewritten: duplicate-ad-with-creative, propose-actions, upload-asset. The description an agent follows changed; the callable contract may not have.

28 Sep 2026v0.4.02 cosmeticinstructions rewritten

Instructions rewritten: get_arrivals_comparison, get_performance. The description an agent follows changed; the callable contract may not have.

28 Sep 2026v0.4.03 breaking11 compatible1 cosmeticinstructions rewritten

Breaking: get_action, get_action_batch, list_actions

Instructions rewritten: propose-actions. The description an agent follows changed; the callable contract may not have.

27 Sep 2026v0.4.03 cosmeticinstructions rewritten

Instructions rewritten: get_arrivals_comparison, get_performance, claimed_vs_counted. The description an agent follows changed; the callable contract may not have.

27 Sep 2026v0.4.04 compatible5 cosmetic
25 Sep 2026v0.4.02 compatible
25 Sep 2026v0.4.01 compatible
24 Sep 2026v0.4.01 breaking

Breaking: propose-actions

23 Sep 2026v0.4.01 breaking5 compatible

Breaking: propose-actions

21 Sep 2026v0.4.04 compatible
20 Sep 2026v0.4.02 compatible
20 Sep 2026v0.4.07 compatible
17 Sep 2026v0.4.0no contract changes
13 Sep 2026v0.3.21 cosmeticinstructions rewritten

Instructions rewritten: get_performance. The description an agent follows changed; the callable contract may not have.

11 Sep 2026v0.3.23 cosmeticinstructions rewritten

Instructions rewritten: get_signal_health, propose-actions, ui://resources/account-state-app. The description an agent follows changed; the callable contract may not have.

10 Sep 2026v0.3.22 compatible
10 Sep 2026v0.3.24 breaking

Breaking: launcher.batch_status, launcher.draft_batch, launcher.execute_batch, launcher.preview_batch

2 Sep 2026v0.3.2first recorded contract

Watch this server

Save its public contract as a baseline and manage breaking-change email alerts.

Set up a watch

Own this server?

Sign in to claim this listing by proving control of its host.

Status badge

Status for a README, from the last probe — cached an hour, so up to seven hours behind the endpoint. Links back to this page.

MCP status badge for PlainRouter
[![MCP status](https://mcpi.app/servers/plainrouter/badge.svg)](https://mcpi.app/servers/plainrouter)