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

# The approval gate

> Why this, and not a spend cap, is the real safety mechanism for agent-driven content.

An agent with a Stratos AI API key can generate content in a loop. Spend caps and rate limits exist as a backstop, but they only bound *how much* damage a runaway loop can do — they don't stop it from happening. The approval gate is what actually stops it.

## How it works

Every piece of content created via `POST /v1/content` starts as:

```json theme={null}
{ "status": "ready", "approvalStatus": "pending" }
```

`POST /v1/schedules` checks `approvalStatus` **server-side** — not as a client convention an agent could skip, but as an actual `409 not_approved` response if it's anything other than `"approved"`:

```json theme={null}
{
  "error": {
    "code": "not_approved",
    "message": "Content must be approved before it can be scheduled — call POST /v1/content/{id}/approve first. Current approvalStatus: \"pending\"."
  }
}
```

There is no flag, no query param, no elevated scope that skips this. The only way content reaches `schedules` is through `POST /v1/content/{id}/approve`.

## What this means for how you build

An agent can generate freely — draft ten variations, try different hooks, iterate — and **nothing spends a second time and nothing posts** until a human (or you, explicitly) calls `approve`. That single call is the choke point. If you're building an agent that runs unattended, put a real human review step in front of `approve`, not in front of `content create`.

<Tip>
  `automations` has its own `approvalMode` field (`"auto"` or `"manual"`, default `"manual"`). Even a recurring automation's generated posts land as `pending` content requiring approval by default — set `approvalMode: "auto"` only when you've deliberately decided the review step isn't needed for that automation.
</Tip>

## If you're building an MCP-connected agent

The MCP tool `stratos_content_approve`'s description says the same thing explicitly: default to surfacing generated content for a human to review, don't auto-approve your own output unless the person you're working with has told you to. This is a norm the tool description states, not something the server can enforce on an MCP client's behavior — the server-side enforcement is the `409` on `schedules`, described above. The description exists so an agent reading it makes the right call before it ever gets there.
