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

# One Agent

> One agent id, two modes. One Agent answers once when a task says nothing about looping, and runs a bounded agentic loop when the task carries a turn count.


One Agent (`one-agent`) is the platform's agent runtime. It is one agent id with two modes, and the task decides which one runs. Saved bots run on it too: a bot is a saved workflow whose single task is a One Agent loop (see [Bots](/bots/overview)).

| Mode | Runs when | What you get | Page |
|---|---|---|---|
| Call mode | The task carries no loop command | One model answer: any provider and model, `persona`, `skill`, conversation history, streaming, `format` | [Call mode](/one-agent/call-mode) |
| Loop mode | The task carries a loop command | A bounded agentic run: tools inside a fence, a turn cap, memory recall, sub-agents, virtual files, approval gates | [Loop mode](/one-agent/loop-mode) |

## The mode rule

A task loops only when it carries a loop command:

- a turn count: `maxTurns`, `max_turns` or `max_iterations` of 1 or more, or
- a `type: harness` task, which the engine marks as a mission run.

`tools` and `effort` are not loop commands. With no loop command the task is answered once, in call mode.

A continue (`session_id` plus a new `prompt`, no loop command) resumes the session in the mode it started in.

## Reach it from each door

| Door | Call | Mode |
|---|---|---|
| REST agents plane | `POST /v1/agents/one-agent/execute` | Call. The loop fields (`goal`, `mission`, `allowed_tools`) are ignored on this plane. |
| REST workflows plane | `POST /v1/workflows/execute`, or a saved workflow, with a `type: harness` task and `agent: one-agent` | Loop |
| MCP | `plungeai_execute_agent` with `agent: one-agent` | Call |
| MCP | `plungeai_run_mission` (the loop runtime defaults to `one-agent`; async by default) | Loop |
| CNL | `agent: one-agent` in a `type: task`, `type: harness`, `parallel`, `sequential`, `debate`, `validate` or batch task | Call, or loop with a turn count or `type: harness` |

In a `type: harness` task the engine marks the run as a mission, so it always loops. The task's `allowed_tools` and `max_iterations` are the fence and the cap.

## Models and keys

Every model call goes through the provider layer. Loop mode needs a provider that returns tool calls: anthropic, openai, gemini, groq, xai, openrouter, cerebras, cohere, deepinfra, vercel and the other OpenAI-compatible ones. A loop on any other provider is refused with `outcome: needs_input`.

The platform key is the default. A customer who saved their own key for that provider uses it instead.

## Next steps

<CardGroup cols={2}>
<Card title="Call mode" icon="message" href="/one-agent/call-mode">
Single answers: fields, personas, skills, conversation history.
</Card>
<Card title="Loop mode" icon="robot" href="/one-agent/loop-mode">
Bounded agentic runs: the loop command, the fence, sessions and stop reasons.
</Card>
<Card title="Tools" icon="wrench" href="/one-agent/tools">
Every tool a loop can call, and which ones need a saved bot.
</Card>
<Card title="Policy and review" icon="shield" href="/one-agent/policy-and-review">
How a tool call becomes allow, ask or deny.
</Card>
</CardGroup>
