Skip to main content
Actions is Plainrouter’s governed workflow for advertising changes. An authorized agent works within one approved account, cites the evidence behind a proposal, and submits every action through workspace policy. People can also pause or resume campaigns, ad sets, and ads from Campaigns through the same policy and verification checks.
New workspaces start in Ask, where admitted changes wait for human approval. In Full, admitted changes can run automatically; rule-generated budget increases still require approval. Every change gets a receipt, and the kill switch stops all changes. Both modes recheck policy before execution. New ad copies are created and verified as PAUSED. A separate governed resume proposal can unpause an eligible target under the selected policy mode; creating a copy never activates it.
Account rules can propose pauses or daily-budget changes from counted-arrival cost conditions. They start disabled and keep immutable revisions for later review.

The governed loop

1

A person authorizes the workspace

A workspace owner or member creates a Read or Write workspace key within their current role. Account-scoped tools select an eligible active account owned by that workspace; older bound keys keep their account restriction. Confirm the selected Meta ad account before proposing a change.
2

The agent reads evidence

The agent can read Signals context, retained account inventory, and the approved account’s creative library. Creative proposals cite an account-bound asset record or frozen staged-asset manifest.
3

The agent submits a proposal

Each batch includes typed actions, a plain-language rationale, exact evidence fields, a stable idempotency key, and a human-supplied target.
4

Plainrouter applies policy

Admission checks evaluate scope, authorization, evidence, provider state, supported actions, and the selected execution mode. Unknown execution-critical state blocks execution.
5

The selected mode controls approval

In Ask, a person approves every change first. Full queues admitted changes automatically except rule-generated budget increases, which still need approval. Admission refusals remain blocked and cannot be approved. Historical suggest-only approvals record agreement without execution.
6

Plainrouter executes and verifies

The execution worker rechecks current policy before any provider write. It records a durable receipt, reads the exact provider object back, and marks the action verified only when the receipt-addressed state matches.
7

The result becomes audit history

Proposals, policy decisions, approvals, provider reads, verification, compensation, outcome checks, and rollback events enter the workspace’s versioned audit chain.

Preview before creating a proposal

Use dry_run_actions or the HTTP dry-run endpoint to inspect current policy decisions and diffs. Supply the complete proposal and a properly scoped Write Workspace key. The preview may read provider state but creates no proposal and makes no Meta change. Unavailable evaluations and policy reasons need review; a preview is not approval or execution.

Supported action types

Use get-creative-library, upload-asset, and duplicate-ad-with-creative for the supported creative workflow. The convenience tools create proposals; they do not perform a Meta write inside the MCP request.

Execution modes

Ask is the default. For a human-submitted Pause or Resume from Campaigns, the click can include approval when the person has the required permission. Older suggest_only snapshots still end without execution when approved. The mode is frozen into each proposal. Before execution, Plainrouter also evaluates the current policy. Revoked authorization or unavailable critical provider state blocks the queued action before a write. The execution kill switch stops all changes, including queued batches. It does not undo a change that already landed. Inspect Inbox and receipts before retrying a refused or interrupted operation.

Verification and Landed

Landed means every action in the batch has an exact, durable provider receipt and a matching verification read. A provider write alone is not Landed. Most verification settles in the immediate bounded read window. A paused Meta ad that remains IN_PROCESS can move to Executed pending verification. Plainrouter then performs scheduled receipt-addressed reads for up to 48 hours. It remains Not Landed during that period. If verification finds contradictory state or cannot complete inside the safety window, Plainrouter fails closed and attempts verified compensation. A failed or incomplete restoration is surfaced as Rollback incomplete for operator attention. For synchronous verification, the receipt state, verification summary, terminal action state, and audit events commit atomically. If local terminal persistence fails, Plainrouter can replay its durable classified evidence without another provider mutation or provider read. If retry exhaustion occurs after durable verified-creation evidence exists, Plainrouter suppresses destructive compensation and records the case for manual remediation.

Evidence boundaries

Signals reads provide aggregate account and dataset evidence. They do not prove campaign CPA, spend, budget, learning phase, or target-level performance. get_signal_health is diagnostic and cannot support a proposal containing a budget, status, or creative-spend action. Use get_performance for admissible stored reconciliation evidence. A batch is treated as spend-affecting when any action in it can affect spend or delivery; only an upload-only asset proposal may retain signal-health context. Quantitative Signals citations must include a ledger-class numeric field. Platform-reported or derived numbers alone cannot support the measurability claim; unclassified cited fields are refused. See evidence restrictions. Modeled and portfolio-only events are excluded from reconciliation-derived proposal evidence. Plainrouter does not blend them into observed performance used by governed actions. Creative-library evidence proves the selected asset’s identity, approved-account ownership, readiness, and status. Although the library response includes last-30-day performance, that performance is excluded from the durable proposal citation and cannot be used as a winning-creative claim.
A human-supplied campaign, ad set, ad, or asset establishes selection only. Plainrouter re-reads execution-critical provider state instead of treating the supplied ID as current state.

Next steps

Connect a Meta Ads MCP client

Test Claude Code with synthetic data, then connect one Meta ad account through Plainrouter.

Use creative actions

Read assets, stage an image, and propose a paused ad copy.

Review proposals

Read evidence, policy results, and execution state before deciding.

Configure policy

Choose Ask or Full and configure outcome checks.
Review action policy before creating proposals, follow the approval guide for human decisions, and use the audit log to trace execution and verification.