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

# plungeai_run_mission

> Run a bounded autonomous agent mission (loop agent): give a goal, optional tool fence and iteration cap.


Run a bounded autonomous agent mission (loop agent): give a goal, optional tool fence and iteration cap. Recalls and writes long-term memory automatically. Defaults to async — poll plungeai_get_workflow_status. Always answers with a structured outcome (never a raw error) — follow the remediation instead of retrying the identical call.

Run a bounded autonomous agent mission (a loop agent): a goal, an optional tool fence and an iteration cap. Recalls and writes long-term memory automatically. Defaults to async: poll `plungeai_get_workflow_status`. Always answers with a structured outcome, never a raw error: follow the remediation instead of retrying the identical call.

**Returns.** Async: `ok` with ``Started mission `<id>` (async). …`` and the execution id. Sync: `ok` with the mission's output (also when it stopped at `max_iterations`: a sync mission never reports `incomplete`, [7.7](https://mcp.plungeai.com/docs#77-mission-bounds)), `needs_approval` / `needs_input` when it pauses, or a classified outcome on failure.

Runs an agent loop and costs credits (not verified here):

```bash
curl -s https://mcp.plungeai.com/v1 \
  -H "Authorization: Bearer $PLUNGE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plungeai_run_mission","arguments":{"user_request":"what is notable about Sun Valley, Idaho?","goal":"Three sourced bullets on what is notable about Sun Valley, Idaho.","max_iterations":6,"success_criteria":["three bullets","a source URL per bullet"]}}}'
```

<Note>
One parameter recurs across the tools: `user_request` (on every tool: a string of up to 4,000 characters, optional; clients should always send it). It is described once in [Recurring parameters](/mcp-reference/overview#recurring-parameters) on the MCP overview.
</Note>

## Input schema

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user_request": {
      "description": "The user's original request, verbatim and in their own words, before you translated it into this call. Always include it — the platform uses it for request context, routing and support diagnostics.",
      "type": "string",
      "maxLength": 4000
    },
    "goal": {
      "type": "string",
      "maxLength": 65536
    },
    "mission": {
      "type": "string",
      "maxLength": 65536
    },
    "allowed_tools": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 256
      }
    },
    "max_iterations": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "success_criteria": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 2000
      }
    },
    "persona": {
      "type": "string",
      "maxLength": 256
    },
    "skills": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 256
      }
    },
    "mode": {
      "type": "string",
      "enum": [
        "sync",
        "async"
      ]
    }
  },
  "required": [
    "goal"
  ]
}
```
