MuseDirectory
All apps / Marketing & Ads
Marketing & Ads

PlainRouter

Inspect ad account health and first-party signal quality, then propose policy-gated optimizations for Meta ads.

Connects to Meta advertising accounts to diagnose event flow, match quality, and reconciliation gaps. Lets marketers review performance data, verify signal ingestion, propose budget or creative changes, and manage the approval workflow, all subject to workspace policies.

Try asking Muse: "Show me the health of my first-party conversion tracking over the last 30 days and suggest any creative tests I should run."

Useful? Vote it up. One vote per person, tap again to undo.
See the most upvoted connectors
Working now?
Working
Worked last 7 days
100% of checks
How to get it
Extra setup
Account
No account needed
Price
Not stated
Works in

Source: Found in the official MCP Registry (com.plainrouter/mcp) · First listed September 24, 2026

Last 24 hours

Each bar is one check, every 15 minutes. Green means it answered. Last checked 3 h ago.

New to Muse?Muse is Meta's AI assistant. PlainRouter is an app you add to it, and once it is on, you can ask Muse to do this for you: inspect ad account health and first-party signal quality, then propose policy-gated optimizations for meta ads. It takes about two minutes and you can turn it off any time.

Is it safe to connect?

What Muse can see: It does not ask you to sign in, so it cannot see your accounts. It only sees what Muse sends it from your request.

Before it acts: Read what Muse plans to do before you approve it, and remove the app from Muse when you stop using it.

musedirectory.ai is not part of Meta. More about how Muse handles your information

How to add it to Muse

Not in Muse's Connectors list yet, but Muse can still use it. Copy the request below and paste it into Muse. Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.

Open Muse
https://plainrouter.com/mcp

Not in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.

Also use it in ChatGPT or Claude

PlainRouter is a remote MCP server, so any assistant that can add a custom connector by link can use it. Same link, same tools.

Add it to ChatGPT
  1. 1

    Open ChatGPT settings

    In ChatGPT, open Settings, then Connectors (called Apps & Connectors on some accounts).

  2. 2

    Turn on developer mode

    Under Advanced settings, switch on Developer mode. That is what lets you add a connector by link.

  3. 3

    Create the connector

    Choose Create, give it a name, paste the link as the MCP server URL, and save. If it needs a sign-in, ChatGPT asks for it here.

  4. 4

    Use it in a chat

    Start a chat, open the tools menu, pick the connector, and ask. ChatGPT asks before it runs a tool the first time.

Custom connectors need a paid ChatGPT plan, and on Team, Enterprise and Edu accounts only an admin can add them. Our "Working" label means the server answered us; it cannot tell whether your plan lets you add it. All connectors that work in ChatGPT

Add it to Claude
  1. 1

    Open Claude settings

    In Claude, open Settings, then Connectors.

  2. 2

    Add a custom connector

    Choose Add custom connector, give it a name, and paste the link.

  3. 3

    Connect and use it

    If it needs a sign-in, Claude sends you to it. Then turn the connector on in a chat from the tools menu and ask.

Custom connectors are available on paid Claude plans; on Team and Enterprise accounts an admin may need to add them. Our "Working" label means the server answered us; it cannot tell whether your plan lets you add it. All connectors that work in Claude

https://plainrouter.com/mcp

What people ask Muse to do

Everything Muse can do

Technical details: safety screening, tools, response time and recent checks

Response time at the last check: 335ms. Worked in 99.1% of checks over 30 days.

Screening · September 24, 2026

Screened, no issues found

MCP handshake
Pass
Answered in 350ms
Domain against threat feeds (Cloudflare security DNS)
Pass
plainrouter.com not flagged
Published packages against the OSV malicious-package database
n/a
No npm or PyPI package published
Hidden instructions or invisible characters in tool text
Pass
17 tools read, nothing found
Inputs asking for passwords, card numbers or seed phrases
Pass
None found
Domain and redirects
Pass
No redirects off the domain
AI review of purpose and tool behavior
Pass
No concerns

Screening looks for known threats and hidden instructions at the time of the check, and runs again weekly and whenever the tool list changes. It cannot see the server's code, so only connect what you need and review what Muse asks to do. How screening works.

Tools · 40

get_arrivals_comparisonReturn counted arrivals beside Meta outbound clicks for the authorized workspace and selected trailing window. difference is arrivals.value minus claimed_clicks; positive means more arrivals than Meta outbound clicks. conversions.count counts retained logical conversions under th
get_conversion_journeysRead credited conversion journeys for an authorized workspace. Plainrouter counts earned from its own journeys. Earned covers every selected conversion kind; claimed covers Meta Purchases only, possibly in another currency. The two are shown side by side and are never reconciled.
get_cac_by_channelReturn Plainrouter-earned conversions by channel, with cost per earned conversion in each spend currency, using stored ad spend. Each currency's cac divides that currency's spend by all earned conversions in the row, so when a row has spend in more than one currency, no single va
get_signal_qualityRead stored conversion delivery outcomes, delivery gaps, retained identity presence, and journey coverage for an authorized workspace. The response uses stored data only and does not call advertising APIs. refused_before_delivery.consent counts undelivered events with consent_bas
get_trial_proofFollow stored trial-start cohorts to their first positive payment at 14, 30 and 60 days. Default campaign/ad-set membership is the last pre-trial touch carrying a campaign/ad-set id in the frozen trial journey. Uses integer mature samples and Wilson intervals. Stored data only; n
get_event_volumeRead weekly distinct optimization-event delivery counts by ad set, campaign or platform from stored data. Plainrouter delivery counts, not Meta's learning status. Test sends excluded; conversion kinds separate. Configurable planning benchmark, unverified live. No provider calls o
get_signal_healthDiagnostic view of first-party event flow, Meta delivery outcomes, match quality, and reconciliation gaps from Plainrouter stored measurements. Not admissible evidence for spend-affecting proposals. Does not call the Marketing API. Reconciliation compares Meta dataset event total
get_performanceAdmissible proposal evidence: reconciliation meta_reported shows Meta dataset event totals beside gateway_verified events Plainrouter sent and Meta accepted. The separate purchases block shows Meta-reported Purchase counts under the account attribution setting beside Plainrouter
get_install_instructionsReturn managed-hostname installation material and first-arrival state for the authorized workspace. Includes ordered SaaS setup steps and owner handoffs. Returns no same-origin forwarding material.
get_consent_ratesRead recorded consent rates and recent consent receipts for the requested authorized workspace. Output schema_version 2 replaces country breakdowns and the country daily dimension with geography (country, US state or Canadian province/territory). Rates cover recorded choices, not
get_cookie_scanRead the latest cookie scan for the authorized workspace. Cookie inventory includes consent phases; findings concern only pre-consent activity. Blocked and failed scans report findings as unavailable, never as a clean result. When bot protection blocks the start page, allowlist t
list_workspacesList the workspaces and effective access tiers in this credential scope.
get_account_stateReturn the authorized advertising account, workspace, connection, Signal destination, and currently available account capabilities. Includes stored Stripe subscription MRR and customer counts.
get_account_inventoryRead the authorized workspace account inventory from the Meta mirror, with optional level, status, parent, and ID cursor filters.
get_inventory_metricsReturn counted Plainrouter arrivals beside daily Meta metrics for mirrored campaigns, ad sets and ads. object_metrics contains account-timezone daily comparisons; unmatched_arrivals is one workspace/window count without unknown IDs. Counts are null when the arrivals store is disa
propose-actionsPropose a batch of budget, status, upload, or creative-duplication actions for the approved ad account. In Ask mode, agent changes never run on their own; proposals wait for a person's approval. In Custom (execution_mode auto), the Custom switches on the Agent rules page decide w
dry_run_actionsPreview policy decisions and execution diffs for a proposed Action batch without writing it.
list_actionsList proposed actions for the authorized workspace and advertising account.
get_action_batchGet a proposed action batch for the authorized workspace and advertising account. Each action’s counted_evidence contains frozen proposal-time target figures and coverage; null means not captured.
get_actionGet one proposed action for the authorized workspace and advertising account. counted_evidence contains frozen target figures and coverage captured at proposal time; null means not captured. The figures inform and never gate.
get_action_decision_receiptGet the persisted decision receipt for an authorized proposed action. Receipts can include counted_evidence frozen at proposal time with account-currency values, coverage and the other-currency exclusion.
get_action_policyGet the effective Actions policy for the authorized workspace without creating a policy row. Custom is returned as execution_mode and agent_mode auto.
actions.rules.listList stored performance rules available to this workspace key. This does not evaluate them.
actions.rules.showRead a stored performance rule and its immutable revisions, with author type only.
actions.rules.createStore a performance rule disabled. Enabling requires an explicit update; this never evaluates or proposes actions.
actions.rules.updateEdit a stored performance rule by appending a revision, or explicitly enable or disable it. This never evaluates or proposes actions.
get-creative-libraryReturn Meta image and video assets with the ads and last-30-day performance historically associated with each asset.
launch.creatives.indexList creatives in the workspace bound to the authenticated execution token.
launch.creatives.showShow one creative in the workspace bound to the authenticated execution token.
launch.creatives.storeStore one JPEG, PNG, MP4, or QuickTime creative from strict base64 content in the token-bound workspace. When supplying output from an outside tool, set tags.generator, tags.generator_job and, for a variation, tags.parent_creative. Images enter the library by upload or launch.cre
launch.creatives.store-from-urlFetch and store one creative from a vetted HTTPS URL in the token-bound workspace. When supplying output from an outside tool, set tags.generator, tags.generator_job and, for a variation, tags.parent_creative. Images enter the library by upload or launch.creatives.store-from-url.
launch.creatives.statusSet the status of one creative in the workspace bound to the authenticated execution token.
upload-assetStage a JPEG/PNG image and submit a canonical upload action through workspace policy. In Ask mode, agent changes never run on their own; proposals wait for a person's approval. In Custom (execution_mode auto), the Custom switches on the Agent rules page decide which agent changes
duplicate-ad-with-creativeSubmit a canonical proposal to duplicate a source Meta ad with a different creative asset. In Ask mode, agent changes never run on their own; proposals wait for a person's approval. In Custom (execution_mode auto), the Custom switches on the Agent rules page decide which agent ch
launch.plans.executeExecute one deployment plan in the workspace and ad account bound to the execution token; requires the review_version returned by the plan read you acted on. Changed plans are refused before any intent or staging; identical intent_key and review_version retries replay. All provid
launch.plans.showRead one deployment plan and its current review_version and latest launch-intent status in the workspace and ad account bound to the execution token.
launch.plans.listList deployment plans for the approved ad account, including each current review_version to pass when executing the reviewed plan.
launch.plans.createCreate a deployment plan for the approved ad account.
launch.plans.copyCopy a failed plan to a new draft with the same content. Validate and submit the draft afresh; the failed plan and its history stay unchanged.
launch.plans.updateUpdate a deployment plan for the approved ad account.

Recent checks

2026-11-13 11:15:53live · HTTP 200335ms
2026-11-13 04:46:03live · HTTP 200123ms
2026-11-12 22:30:50live · HTTP 200198ms
2026-11-12 16:01:04live · HTTP 200677ms
2026-11-12 09:46:07live · HTTP 2001005ms
2026-11-12 03:30:53live · HTTP 200380ms
2026-11-11 21:15:53live · HTTP 200595ms
2026-11-11 15:00:56live · HTTP 200289ms
2026-11-11 08:46:02live · HTTP 200320ms
2026-11-11 02:45:44live · HTTP 200439ms
2026-11-10 20:30:57live · HTTP 200216ms
2026-11-10 14:30:44live · HTTP 200353ms

Link

https://plainrouter.com/mcp

Questions about PlainRouter in Muse

How do I connect PlainRouter to Muse?

Not in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use PlainRouter to help me. It is a free service with an MCP server at https://plainrouter.com/mcp. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.

Is PlainRouter working right now?

At the last check (November 13, 2026, 11:15 UTC) the endpoint was working, answering in 335ms. Over the last 7 days it answered 100% of health checks. It is checked every 15 minutes.

Is PlainRouter safe to connect to Muse?

It was screened on September 24, 2026 with the result "screened, no issues found". Screening checks the domain against threat feeds and reads the tools for hidden instructions and requests for passwords or card numbers. It cannot see the server's code, so grant only the access you need.

What can PlainRouter do in Muse?

It exposes 40 tools, including get_arrivals_comparison, get_conversion_journeys, get_cac_by_channel, get_signal_quality. For example, you could ask Muse: "Show me the health of my first-party conversion tracking over the last 30 days and suggest any creative tests I should run."

Follow PlainRouter

Tell me if PlainRouter goes down, comes back, or changes its tools
One email per change. You confirm first, and every email has a link to stop.
Made this app? Claim it or get a status badge

Is this yours?

This listing was added from public sources (Found in the official MCP Registry (com.plainrouter/mcp)). If you build PlainRouter, claim it to correct the details and get your badge.

Claim this listing

PlainRouter status badge

Paste this on your site or README. It always shows the latest check.

<a href="https://musedirectory.ai/connector/plainrouter"><img src="https://musedirectory.ai/badge/plainrouter.svg" alt="PlainRouter on musedirectory.ai" width="236" height="40"></a>

More for app makers

More
List your app, free

Independent directory. Not affiliated with Meta.