Google Search Console integration for Model Context Protocol (MCP)
PlainRouter is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Meta Ads MCP: read ad accounts and signal health; propose governed changes under Ask or Full.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http plainrouter-mcp https://plainrouter.com/mcp
# 2 — ask your agent for something these tools do
# get_account_state, get_account_inventory, list_workspaces and 45 more
PlainRouter costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http plainrouter-mcp https://plainrouter.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
48 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Return the authorized advertising account, workspace, connection, Signal destination, and currently available account capabilities. This read-only inspection tool does not change the account.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active. |
Read the authorized workspace account inventory from the Meta mirror, with optional level, status, parent, and ID cursor filters.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | yes | Advertising account ID available to the authorized workspace. |
| level | string | no | Limit results to campaign, adset, or ad objects. |
| effective_status | string | no | Filter by Meta effective status, such as ACTIVE, PAUSED, or ARCHIVED. |
| campaign_id | string | no | Filter to objects under this parent campaign ID. |
| adset_id | string | no | Filter to objects under this parent ad set ID. |
| after_id | integer | no | Database ID cursor from the previous page; continue with its last object ID. |
| limit | integer | no | Maximum complete objects, from 1 to 200; defaults to 25 and may return fewer to fit the JSON budget. Account summary totals are present on every page. |
List the workspaces and effective access tiers in this credential scope.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Maximum workspaces; the projection budget may return fewer. |
| cursor | integer | no | Continue using next_cursor in this credential scope. |
Diagnostic 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active. |
| days | integer | no | Trailing window in days. One of 7, 30, 90. |
| months | integer | no | Trailing window of 12 calendar months, in place of days. Offered only where the workspace plan keeps that history and the workspace is set to keep it. |
Admissible proposal evidence: reconciliation meta_reported is the existing Meta-reported conversions count compared with gateway_verified accepted conversions. The separate purchases block shows Meta-reported Purchase counts under the account attribution setting beside Plainrouter accepted server-side Purchase counts, with its completed account-local window start and end dates and no purchase gap
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active. |
| days | integer | no | Number of reporting days to compare, from 1 to 90. |
Read daily Meta metrics beside counted PlainRouter arrivals 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 disabled. Optional change history is retention-clamped.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | yes | Advertising account ID available to the authorized workspace. |
| start_date | string | no | Inclusive start date in YYYY-MM-DD format. |
| end_date | string | no | Inclusive end date in YYYY-MM-DD format. |
| campaign_id | string | no | Limit metrics to this campaign ID. |
| adset_id | string | no | Limit metrics to this ad set ID. |
| ad_id | string | no | Limit metrics to this ad ID. |
| limit | integer | no | Maximum rows per collection; byte budgets may return fewer. |
| cursor | string | no | Continue all three collections using next_cursor with the same filters and include_changes. |
| include_changes | boolean | no | Include object change history within the effective date window. |
Verify server-side Signal ingestion by writing one idempotent, identity-free modeled event for the authorized workspace. This confirms ledger receipt but does not count as real arrival evidence or complete onboarding. No spend capability.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
Propose a batch of budget, status, upload, or creative-duplication actions for the approved ad account. In Ask, every policy-allowed change waits for a person to approve it. In Full, policy-allowed changes run automatically. Rule violations are blocked and shown in the Inbox, and cannot be approved. The execution kill switch stops further writes and never undoes a landed change. Dispatch still req
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Maximum complete result actions; the shared JSON byte budget can return fewer. |
| cursor | integer | no | Continue using next_cursor. Read saved proposal actions with get_action_batch to avoid another write; dry runs repeat the same inputs. |
| actions | array | yes | — |
| rationale | string | yes | — |
| idempotency_key | string | yes | — |
| evidence | array | yes | — |
| target_source | string | yes | — |
| account_id | integer | no | — |
| workspace_id | integer | no | — |
Preview policy decisions and execution diffs for a proposed Action batch without writing it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Maximum complete result actions; the shared JSON byte budget can return fewer. |
| cursor | integer | no | Continue using next_cursor. Read saved proposal actions with get_action_batch to avoid another write; dry runs repeat the same inputs. |
| actions | array | yes | — |
| rationale | string | yes | — |
| idempotency_key | string | yes | — |
| evidence | array | yes | — |
| target_source | string | yes | — |
| account_id | integer | no | — |
| workspace_id | integer | no | — |
List proposed actions for the authorized workspace and advertising account.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active. |
| limit | integer | no | — |
| cursor | integer | no | Continue using next_cursor with the same account and filters. |
| status | string | no | — |
| page | integer | no | — |
Get 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active. |
| limit | integer | no | — |
| cursor | integer | no | Continue using next_cursor with the same account and filters. |
| batch_id | string | yes | — |
Get 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active. |
| action_id | string | yes | — |
Get the persisted decision receipt for an authorized proposed action. Version 3 receipts include counted_evidence frozen at proposal time with account-currency values, coverage and the other-currency exclusion. Existing receipts are unchanged.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active. |
| action_id | string | yes | — |
Get the effective Actions policy for the authorized workspace without creating a policy row.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active. |
List stored performance rules available to this workspace key. This does not evaluate them.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| page | integer | no | — |
| per_page | integer | no | — |
| cursor | string | no | Continue using rules.next_cursor; use actions.rules.show for detail. |
Read a stored performance rule and its immutable revisions, with author type only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| rule_id | string | yes | The action rule ID. |
| limit | integer | no | Maximum latest revisions; current_revision is always returned separately. |
| cursor | string | no | Read older revisions using rule.next_cursor. Continue through actions.rules.show to avoid another write. |
| run_id | string | no | Read decisions for one run belonging to this rule. |
| decisions_cursor | string | no | Continue decisions using runs[].next_cursor; requires run_id. |
Store a performance rule disabled. Enabling requires an explicit update; this never evaluates or proposes actions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| name | string | yes | — |
| definition | object | yes | Both arrivals and cost conditions must hold over the last 3 complete days in the account timezone. Supply the complete definition when editing. |
| platform_ad_account_id | integer | yes | — |
| limit | integer | no | Maximum latest revisions; current_revision is always returned separately. |
| cursor | string | no | Read older revisions using rule.next_cursor. Continue through actions.rules.show to avoid another write. |
List judging Tests, loser pause candidate status and reason, and observed conversion event choices for the authorized workspace and ad account. Results rank variants only within each Test.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| page | integer | no | — |
| per_page | integer | no | — |
Read one Test, its stored verdict facts, and loser pause candidate status and reason. Spend per recorded conversion compares variants only within this Test.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| test_id | string | yes | The Test ID. |
Create a judging-only Test from 2 to 4 ads in one mirrored Meta ad set. It records a PlainRouter verdict and never creates a proposal or writes to Meta.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| platform_ad_account_id | integer | yes | — |
| ad_set_id | string | yes | — |
| member_ad_ids | array | yes | — |
| axis | string | yes | — |
| event_name | string | yes | — |
| arrivals_floor | integer | no | — |
| minimum_conversions | integer | no | — |
| maximum_days | integer | no | — |
| maximum_spend_minor | string/null | no | Optional positive whole number of Meta minor units in the selected account currency, using the same unit scale as Launch plan budget_amount_minor; the string form supports up to 18 digits. |
Edit a stored performance rule by appending a revision, or explicitly enable or disable it. This never evaluates or proposes actions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| rule_id | string | yes | The action rule ID. |
| limit | integer | no | Maximum latest revisions; current_revision is always returned separately. |
| cursor | string | no | Read older revisions using rule.next_cursor. Continue through actions.rules.show to avoid another write. |
| name | string | no | — |
| definition | object | no | Both arrivals and cost conditions must hold over the last 3 complete days in the account timezone. Supply the complete definition when editing. |
| enabled | boolean | no | Explicitly enable or disable the stored rule. |
List the available versioned ad templates, usage descriptions, the default choice, copy slots and supported sizes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
Render ad copy over an image already in the workspace library using a template id and version, selected sizes, and a required request_key.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| request_key | string | yes | — |
| template_id | string | yes | — |
| template_version | integer | no | Omit to use the latest published version. |
| background_creative_id | string | yes | — |
| copy | object | yes | — |
| sizes | array | yes | — |
Inspect a workspace render and its draft output creative ids.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| render_id | string | yes | — |
Inspect a workspace render and resume only a held run. Running states return inspect guidance.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| render_id | string | yes | — |
Show workspace creatives to a person in the Creative Preview app. Missing derivatives return pending and queue a bounded build. Originals and image bytes are never returned.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| creative_ids | array | yes | — |
List workspace creative metadata and Library provenance. Images are available only through preview_creatives.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| kind | string | no | Filter by the Library provenance kind. |
| status | string | no | — |
| cursor | string | no | The next_cursor returned by the previous page; keep the same filters. |
| per_page | integer | no | Number of matching creatives per page; defaults to 25. |
Return Meta image and video assets with the ads and last-30-day performance historically associated with each asset.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Required when the workspace has more than one active account. |
| asset_type | string | no | Limit results to images or videos. Defaults to all. |
| limit | integer | no | Maximum assets requested per type; capped at 10 and the projection byte budget. Use pagination to continue. |
| ads_limit | integer | no | Associated ads per asset, also capped at 30 across the requested asset pages. |
| ads_cursor | integer | no | Continue associated ads using performance.next_cursor, keeping the asset page arguments. |
| performance_cursor | string | no | Continue the provider performance scan using performance_pagination.next_cursor. |
| cursor | string | no | Opaque Meta cursor returned by a previous call. |
List creatives in the workspace bound to the authenticated execution token.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| page | integer | no | — |
| cursor | integer | no | Continue using creatives.next_cursor in the same workspace. |
| per_page | integer | no | Number of creatives to return per page. |
Show one creative in the workspace bound to the authenticated execution token.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| creative_id | string | yes | ULID of the creative to show. |
Store 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. PlainRouter’s own creative tools will set these tags on every creative they make; images enter the library by upload or launch.creatives.store-from-url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| content_base64 | string | yes | Strict standard base64 creative content, decoded to at most 5 MiB. |
| mime_type | string/null | no | Optional caller label accepted only for compatibility and ignored; creative type is derived from the bytes. |
| tags | object | no | Optional flat map of up to 32 string tags, including reserved provenance keys. For output from an outside tool set generator (lowercase slug, 1-64 letters, digits or hyphens), generator_job (1-255 pri |
| source_ref | string/null | no | Optional caller-supplied source reference. |
Fetch 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. PlainRouter’s own creative tools will set these tags on every creative they make; images enter the library by upload or launch.creatives.store-from-url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| url | string | yes | HTTPS URL of the creative to fetch. |
| tags | object | no | Optional flat map of up to 32 string tags, including reserved provenance keys. For output from an outside tool set generator (lowercase slug, 1-64 letters, digits or hyphens), generator_job (1-255 pri |
| source_ref | string/null | no | Optional caller-supplied source reference. |
Set the status of one creative in the workspace bound to the authenticated execution token.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| creative_id | string | yes | ULID of the creative to update. |
| status | string | yes | Target creative status. |
Stage a JPEG/PNG image and submit a canonical upload action through workspace policy. In Ask mode every change waits for your approval; in Full mode, changes that pass admission and workspace policy run automatically.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Required when the workspace has more than one active account. |
| asset_type | string | yes | The creative asset type. M2 supports images only. |
| filename | string | yes | Bare filename with a matching .jpg, .jpeg, or .png extension, such as spring-hero.jpg. Path separators are rejected: send a name, not a path. The asset is never written to a filesystem path built from |
| content_base64 | string | no | Raw base64 content for image uploads. Do not use a data URI prefix. |
| rationale | string | yes | Why this asset should be added to the creative library. |
| idempotency_key | string | yes | Stable key reused when retrying this upload proposal. |
Submit a canonical proposal to duplicate a source Meta ad with a different creative asset. In Ask mode every change waits for your approval; in Full mode, changes that pass admission and workspace policy run automatically. Policy-allowed copies are always created PAUSED.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| account_id | integer | no | Advertising account ID. Required when the workspace has more than one active account. |
| source_ad | string | yes | Numeric Meta ID of the ad to duplicate. |
| asset_id | string | yes | Asset ID returned by upload-asset or get-creative-library. |
| rationale | string | yes | Why this new creative variant should be created. |
| name_suffix | string | no | Optional suffix for the copied ad name. |
| idempotency_key | string | yes | Stable key reused when retrying this duplicate proposal. |
Execute 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 provider mutations are proposed through Actions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| plan_id | string | yes | The deployment plan ID. |
| intent_key | string/null | no | An optional idempotency key for this execution. |
| review_version | string | yes | The review_version from the plan read you acted on. Reload and review if the plan changed. |
Read one deployment plan and its current review_version and latest launch-intent status in the workspace and ad account bound to the execution token.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| plan_id | string | yes | The deployment plan ID. |
| limit | integer | no | — |
| cursor | integer | no | Continue plan creatives using plan.next_cursor. |
List deployment plans for the approved ad account, including each current review_version to pass when executing the reviewed plan.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| page | integer | no | — |
| per_page | integer/string | no | — |
| cursor | integer | no | Continue using plans.next_cursor with the same account. |
Create a deployment plan for the approved ad account.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string/null | no | — |
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| platform_ad_account_id | integer | yes | — |
| platform | string | yes | — |
| campaign_ref | string/null | no | — |
| campaign_spec | object/null | no | — |
| ad_set_ref | string/null | no | — |
| ad_set_spec | object/null | no | — |
| budget_type | string | yes | — |
| budget_amount_minor | integer | yes | — |
| currency | string | yes | — |
| copy | object | yes | — |
| landing_page | string | yes | — |
| utm_policy_name | string/null | no | — |
| naming_policy_name | string/null | no | — |
| creative_ids | array | no | — |
| creative_overrides | array | no | — |
Copy 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| plan_id | string | yes | The deployment plan ID. |
Update a deployment plan for the approved ad account.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| plan_id | string | yes | The deployment plan ID. |
| name | string/null | no | — |
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| platform_ad_account_id | integer | no | — |
| platform | string | no | — |
| campaign_ref | string/null | no | — |
| campaign_spec | object/null | no | — |
| ad_set_ref | string/null | no | — |
| ad_set_spec | object/null | no | — |
| budget_type | string | no | — |
| budget_amount_minor | integer | no | — |
| currency | string | no | — |
| copy | object | no | — |
| landing_page | string | no | — |
| utm_policy_name | string/null | no | — |
| naming_policy_name | string/null | no | — |
| creative_ids | array | no | — |
| creative_overrides | array | no | — |
Validate a deployment plan for the approved ad account.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| plan_id | string | yes | The deployment plan ID. |
Revoke an active workspace grant. The caller must hold the revoke_grant scope in the same workspace or be the human delegator of the granted agent.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| grant_id | string | yes | The ULID of the grant to revoke. |
Return managed-hostname Path A installation material and first-arrival state for the authorized workspace. Returns no same-origin forwarding material.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
Report a bug or a missing capability you hit while using this server. Say what you were trying to do and what happened. Nothing in the account changes and no reply is sent here.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| kind | string | yes | — |
| message | string | yes | — |
Return counted arrivals beside Meta outbound clicks for the authorized workspace and selected trailing window. The purchases block shows Meta-reported Purchase counts under the account attribution setting beside Plainrouter accepted server-side Purchase counts, with its completed account-local window end date and no purchase gap or status. Days before 2026-06-29, or not re-read by the daily sync s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| days | integer | no | Trailing window in days. One of 7, 30, 90. |
| months | integer | no | Trailing window of 12 calendar months, in place of days. Offered only where the workspace plan keeps that history and the workspace is set to keep it. |
Read the latest pre-consent cookie scan for the authorized workspace. Blocked and failed scans report findings as unavailable, never as a clean result. When bot protection blocks the start page, allowlist the PlainRouterScanner user agent before retrying.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
| limit | integer | no | — |
| cursor | integer | no | Continue using next_cursor in the same workspace. |
Read recorded consent rates and recent consent receipts for the requested authorized workspace. Rates cover the retained period and split Analytics and Marketing grants by day, country, language, and banner version. This tool does not change data or call advertising APIs.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | integer | no | Workspace ID returned by list_workspaces. Required when this credential reaches multiple workspaces. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install PlainRouter or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.4.1.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish PlainRouter can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.