get_arrivals_comparison
Get arrivals comparison
Return 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 the current workspace conversion choices, independently of arrivals and Meta acceptance; the block publishes its selection version, completed local-day period, and availability. purchases.plainrouter_accepted_purchases counts only non-test, observed, attribution-joined Purchases Plainrouter sent and Meta accepted, beside Meta-reported Purchase counts under the account attribution setting, with no purchase gap or status; its eligibility differs from conversions.count, and its account-local window ends the day before Meta's latest purchase read, so it can end earlier than conversions.period; with no purchase read it covers conversions.period and window_start_date and window_end_date are null. purchases.plainrouter_accepted_purchases is null when it was not measured: the account timezone is missing or invalid, there is no destination account, no account-local day of the purchase window is retained, or part of the window is older than retained delivery records; null means unavailable, while 0 is a measured zero. An unavailable status from missing Meta data still carries measured arrivals; only the status_message 'No complete retained day is available for this comparison period.' pairs unavailable with arrivals.value 0 by convention, not a measured zero. channel_subset.rows[].arrivals counts consented conversion events by source, not arrivals; these rows are not a breakdown of arrivals.value and need not sum to it. claimed_clicks_source of manual means a person entered the click counts; mixed means differing sources, which may include manual entries or legacy rows with unknown provenance. Unless the destination is inactive, claimed_clicks adds Meta's click counts for each account-timezone day; if a
Parametersdaysmonthsworkspace_id
get_conversion_journeys
Get conversion journeys
Read 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. The output carries no Plainrouter person or visitor identifiers. UTM labels and ad ids appear exactly as the merchant's links sent them.
basis_note explains how the two counts differ.
Parameterstofromlevellimitmodelcursorlookbackworkspace_idconversion_kinds
get_cac_by_channel
Get cost per earned conversion by channel
Return 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 value is its full cost; Meta's claimed cost counts Purchases only. Spend and conversion dates are aligned; touch time does not move spend between days.
basis_note explains how the two counts differ.
Parameterstofromlevelmodellookbackworkspace_idconversion_kind
get_signal_quality
Get signal quality
Read 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_basis=severed_measurement, not banner refusals; other undelivered opt-outs and lifecycle events whose checkout lacked consent fall under reason_unknown. Consent rates are 0-1 fractions.
Parameterstofromworkspace_idconversion_kinds
get_trial_proof
Get trial-to-paid proof
Follow 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; no provider calls or writes.
Parameterstofromlevelmodellookbackworkspace_id
get_event_volume
Get weekly event volume
Read 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 or writes.
Parameterstofromlevelmodellookbackworkspace_id
get_signal_health
Get signal health
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. Reconciliation compares Meta dataset event totals with events Plainrouter sent and Meta accepted.
performance.basis_note explains how the two counts differ.
Parametersdaysmonthsaccount_idworkspace_id
get_performance
Get performance
Admissible 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 accepted server-side Purchase counts, with its completed account-local window start and end dates and no purchase gap or status. purchases.plainrouter_accepted_purchases is null when it was not measured: the account timezone is missing or invalid, the account has no eligible destination, no account-local day of the purchase window is retained, or part of the window is older than retained delivery records; null means unavailable, while 0 is a measured zero. Includes stored daily Meta spend and delivery metrics. platform_claimed_clicks means Meta outbound clicks. Days before 2026-06-29, or not re-read by the daily sync since 2026-09-27, may still hold Meta link clicks or all clicks.
purchases.basis_note explains how the two counts differ.
basis_note explains how the two counts differ.
Parametersdaysaccount_idworkspace_id
get_install_instructions
Get install instructions
Return 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.
Parametersworkspace_id
get_consent_rates
Get consent rates
Read 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 unique visitors, over 180 days; geography and language breakdowns and their daily series show the top 50 values by recorded choices. An independent policy_class breakdown includes Policy not recorded for NULL history. Recent receipts include banner_version, raw country, nullable region and policy_class, geography and geography_label. This tool does not change data or call advertising APIs.
Parametersworkspace_id
get_cookie_scan
Get cookie scan
Read 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 the PlainRouterScanner user agent before retrying.
Parameterslimitcursorworkspace_id
list_workspaces
List workspaces
List the workspaces and effective access tiers in this credential scope.
Parameterslimitcursor
get_account_state
Get account state
Return the authorized advertising account, workspace, connection, Signal destination, and currently available account capabilities. This read-only inspection tool does not change the account.
Parametersaccount_idworkspace_id
get_account_inventory
Get account inventory
Read the authorized workspace account inventory from the Meta mirror, with optional level, status, parent, and ID cursor filters.
Parameterslevellimitadset_idafter_idaccount_idrequiredcampaign_idworkspace_ideffective_status
get_inventory_metrics
Get inventory metrics
Return 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 disabled. Optional change history is retention-clamped.
basis_note explains how the two counts differ.
Parametersad_idlimitcursoradset_idend_dateaccount_idrequiredstart_datecampaign_idworkspace_idinclude_changes
propose-actions
Propose actions
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 requires a live grant, an account in the workspace, and no duplicate write. Proposals of set_status, adjust_budget, replace_creative, shift_spend and rollback are refused; stored actions of these types never run. Meta target proposals freeze counted_evidence over the last seven completed account-local days for display only. Evidence may cite get_inventory_metrics leaf fields for the proposed target: Meta inline link clicks, counted arrivals and Purchase count/value at that target’s own level. Spend, impressions, child-object rows, containers, ratios and other action types are refused.
Parameterslimitcursoractionsrequiredevidencerequiredrationalerequiredaccount_idworkspace_idtarget_sourcerequiredidempotency_keyrequired
dry_run_actions
Preview actions
Preview policy decisions and execution diffs for a proposed Action batch without writing it.
Parameterslimitcursoractionsrequiredevidencerequiredrationalerequiredaccount_idworkspace_idtarget_sourcerequiredidempotency_keyrequired
List proposed actions for the authorized workspace and advertising account.
Parameterspagelimitcursorstatusaccount_idworkspace_id
get_action_batch
Get action batch
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.
Parameterslimitcursorbatch_idrequiredaccount_idworkspace_id
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.
Parametersaction_idrequiredaccount_idworkspace_id
get_action_decision_receipt
Get action decision receipt
Get 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.
Parametersaction_idrequiredaccount_idworkspace_id
get_action_policy
Get action policy
Get the effective Actions policy for the authorized workspace without creating a policy row.
Parametersaccount_idworkspace_id
actions.rules.list
List action rules
List stored performance rules available to this workspace key. This does not evaluate them.
Parameterspagecursorper_pageworkspace_id
actions.rules.show
Show action rule
Read a stored performance rule and its immutable revisions, with author type only.
Parameterslimitcursorrun_idrule_idrequiredworkspace_iddecisions_cursor
actions.rules.create
Create action rule
Store a performance rule disabled. Enabling requires an explicit update; this never evaluates or proposes actions.
Parametersnamerequiredlimitcursordefinitionrequiredworkspace_idplatform_ad_account_idrequired
actions.rules.update
Update action rule
Edit a stored performance rule by appending a revision, or explicitly enable or disable it. This never evaluates or proposes actions.
Parametersnamelimitcursorenabledrule_idrequireddefinitionworkspace_id
actions.tests.list
List ad tests
List judging Tests with their frozen conversion definitions, 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.
Parameterspageper_pageworkspace_id
actions.tests.show
Show ad test
Read one Test, its frozen conversion definition, stored verdict facts, and loser pause candidate status and reason. Spend per recorded conversion compares variants only within this Test.
Parameterstest_idrequiredworkspace_id
actions.tests.create
Create ad test
Create a judging-only Test from 2 to 4 ads in one mirrored Meta ad set. Omit the conversion choice to freeze the workspace default. It records a Plainrouter verdict and never creates a proposal or writes to Meta.
Parametersaxisrequiredad_set_idrequiredevent_namemaximum_daysworkspace_idmember_ad_idsrequiredarrivals_floorconversion_modemaximum_spend_minorminimum_conversionsplatform_ad_account_idrequired
get-creative-library
Get Meta creative library
Return Meta image and video assets with the ads and last-30-day performance historically associated with each asset.
Parameterslimitcursorads_limitaccount_idads_cursorasset_typeworkspace_idperformance_cursor
launch.creatives.index
List workspace creatives
List creatives in the workspace bound to the authenticated execution token.
Parameterspagecursorper_pageworkspace_id
launch.creatives.show
Show creative
Show one creative in the workspace bound to the authenticated execution token.
Parameterscreative_idrequiredworkspace_id
launch.creatives.store
Store creative
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. Images enter the library by upload or launch.creatives.store-from-url.
Parameterstagsmime_typesource_refworkspace_idcontent_base64required
launch.creatives.store-from-url
Store creative from URL
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. Images enter the library by upload or launch.creatives.store-from-url.
Parametersurlrequiredtagssource_refworkspace_id
launch.creatives.status
Update creative status
Set the status of one creative in the workspace bound to the authenticated execution token.
Parametersstatusrequiredcreative_idrequiredworkspace_id
Stage a JPEG/PNG image and submit a canonical upload action through workspace policy. In Ask mode every change waits for a person's approval; in Full mode, changes that pass admission and workspace policy run automatically.
Parametersfilenamerequiredrationalerequiredaccount_idasset_typerequiredworkspace_idcontent_base64idempotency_keyrequired
duplicate-ad-with-creative
Duplicate ad with creative
Submit a canonical proposal to duplicate a source Meta ad with a different creative asset. In Ask mode every change waits for a person's approval; in Full mode, changes that pass admission and workspace policy run automatically. Policy-allowed copies are always created PAUSED.
Parametersasset_idrequiredrationalerequiredsource_adrequiredaccount_idname_suffixworkspace_ididempotency_keyrequired
launch.plans.execute
Execute deployment plan
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.
Parametersplan_idrequiredintent_keyworkspace_idreview_versionrequired
launch.plans.show
Show deployment plan
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.
Parameterslimitcursorplan_idrequiredworkspace_id
launch.plans.list
List deployment plans
List deployment plans for the approved ad account, including each current review_version to pass when executing the reviewed plan.
Parameterspagecursorper_pageworkspace_id
launch.plans.create
Create deployment plan
Create a deployment plan for the approved ad account.
Parameterscopyrequirednamecurrencyrequiredplatformrequiredad_set_refad_set_specbudget_typerequiredcampaign_refcreative_idslanding_pagerequiredworkspace_idcampaign_spec+5 more
launch.plans.copy
Copy deployment plan
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.
Parametersplan_idrequiredworkspace_id
launch.plans.update
Update deployment plan
Update a deployment plan for the approved ad account.
Parameterscopynameplan_idrequiredcurrencyplatformad_set_refad_set_specbudget_typecampaign_refcreative_idslanding_pageworkspace_id+6 more
launch.plans.validate
Validate deployment plan
Validate a deployment plan for the approved ad account.
Parametersplan_idrequiredworkspace_id
verify_signal_ingestion
Send test signal event
Send one idempotent, identity-free test event through server-side Signal ingestion for the authorized workspace. A receipt confirms the ledger received it; it is not evidence of a real arrival and does not complete onboarding. No spend capability. It is never sent to Meta.
Parametersworkspace_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.
Parametersgrant_idrequiredworkspace_id
submit_feedback
Submit feedback
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.
Parameterskindrequiredmessagerequiredworkspace_id