> ## Documentation Index
> Fetch the complete documentation index at: https://plainrouter.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Actions overview

> Understand how agents propose, execute, verify, and audit governed changes.

Actions is PlainRouter's governed workflow for AI-proposed advertising changes. An authorized agent works within one approved account, cites the evidence behind a proposal, and submits every action through workspace policy.

<Info>
  New workspaces start in **Suggest only**. Executable modes can run supported creative actions, but only after policy allows them. New ad copies are always created and verified as `PAUSED`; PlainRouter exposes no activation action in this release.
</Info>

## The governed loop

<Steps>
  <Step title="A person authorizes one account">
    A workspace owner issues an execution token for the exact Meta ad account and tier the agent may use. The agent cannot replace that account ID in a tool call.
  </Step>

  <Step title="The agent reads evidence">
    The agent can read Signals context and the approved account's creative library. Creative proposals cite an account-bound asset record or frozen staged-asset manifest.
  </Step>

  <Step title="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.
  </Step>

  <Step title="PlainRouter applies policy">
    Policy evaluates the proposal against protected entities, quiet hours, provider state, and the selected execution mode. Unknown execution-critical state blocks execution.
  </Step>

  <Step title="A person or policy approves">
    Creative proposals require a person at proposal time. In **Suggest only**, approval records agreement without execution. Executable modes queue the approved batch for a fresh policy check.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>
</Steps>

## Supported action types

| Action                     | Proposal support                                                            | Execution support                                                                             |
| -------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| Upload asset               | Image or video staged-asset shape.                                          | JPEG and PNG images submitted through `upload-asset`. Video upload execution remains blocked. |
| Duplicate ad with creative | Copy a human-selected source ad with an account-bound image or video asset. | Supported. The copy is created and verified permanently `PAUSED`.                             |
| Adjust budget              | Typed recommendation with a new daily budget.                               | Disabled in this release.                                                                     |
| Set status                 | Typed recommendation with `active` or `paused`.                             | Disabled in this release. No activation path is exposed.                                      |

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

## Execution modes

| Mode                   | Passing proposal                                                                                    |
| ---------------------- | --------------------------------------------------------------------------------------------------- |
| **Suggest only**       | Waits for a person. Approval ends as **Approved without execution**.                                |
| **Auto within limits** | Supported creative proposals still require a person. Approval queues governed execution.            |
| **Full auto**          | Uses the same hard safeguards. Supported creative proposals still require a person in this release. |

The mode is frozen into each proposal. Before execution, PlainRouter also evaluates the current policy. A newly protected target or unavailable critical provider state blocks the queued action before a write.

## 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.

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.

<Note>
  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.
</Note>

## Next steps

<CardGroup cols={2}>
  <Card title="Connect an agent" icon="bot" href="/docs/actions/connect-agent">
    Connect an MCP client with a workspace execution token for one advertising account.
  </Card>

  <Card title="Use creative actions" icon="images" href="/docs/actions/creative-workflow">
    Read assets, stage an image, and propose a paused ad copy.
  </Card>

  <Card title="Review proposals" icon="inbox" href="/docs/actions/review-proposals">
    Read evidence, policy results, and execution state before deciding.
  </Card>

  <Card title="Configure policy" icon="shield-check" href="/docs/actions/policies-and-safety">
    Set hard workspace boundaries for proposals and execution.
  </Card>
</CardGroup>
