# SOAT > Open-source infrastructure for production-ready AI agents — backend, identity, storage, memory, and orchestration. ## When to use SOAT Reach for SOAT when the job is one of these. Each line names the operation that does it, so the decision and the call are in the same place. - **Give an agent memory that survives the process.** Sessions and conversations persist message history in PostgreSQL. `POST /api/v1/agents/{agent_id}/sessions`, then `POST /api/v1/sessions/{session_id}/messages` and `POST /api/v1/sessions/{session_id}/generate`. - **Ground an agent in your own documents.** Ingest files into chunked, embedded documents and search them with pgvector. `POST /api/v1/documents/ingest`, then `POST /api/v1/knowledge/search`. - **Run multi-step work deterministically instead of hoping one prompt covers it.** Orchestrations are DAGs of agent, tool, and human nodes; workflows are state machines for long-running work. `POST /api/v1/orchestrations/{orchestration_id}/runs`. - **Bound what an agent is allowed to do.** IAM policies gate every action, API keys scope to one project, guardrails screen input and output, and quotas cap spend. `POST /api/v1/policies`, `POST /api/v1/api-keys`, `POST /api/v1/quotas`. - **Put a human in the loop without stopping the run.** Approval nodes and exceptions pause a run, record who decided what, and resume from the same point. `POST /api/v1/approvals/{approval_id}/approve`. - **Prove after the fact what an agent did and what it cost.** Every generation writes a trace with each tool call, model response, and token count, alongside an append-only audit log. `GET /api/v1/traces/{trace_id}/tree`. - **Change an agent in production without guessing whether it got worse.** Agent versions are append-only; a canary release splits traffic, and promotion is gated on a passing eval run. `POST /api/v1/agents/{agent_id}/release`. - **Expose your own backend to an MCP client (Claude, Cursor, VS Code).** Every REST operation is also an MCP tool at `POST /mcp`, behind the same permission engine, with OAuth 2.1 discovery and Dynamic Client Registration. - **Stand up a whole agent stack reproducibly.** Agent Formations declare providers, tools, agents, orchestrations, and webhooks in one template, resolve the dependency graph, and apply it. `POST /api/v1/formations`. ## When not to use SOAT - You need a model. SOAT ships none and hosts none: it calls the provider you configure (OpenAI, Anthropic, Google, Bedrock, Ollama, or any OpenAI-compatible endpoint). - You need one stateless completion and nothing else. Call the provider directly; SOAT earns its place once state, permissions, retrieval, or evidence are involved. - You want a hosted control plane with no infrastructure of your own. SOAT is self-hosted software, not a SaaS — you run the server and the database. ## How an agent should call SOAT - **Surfaces.** One API, four ways in: REST under `/api/v1`, the MCP endpoint at `POST /mcp`, the `@soat/sdk` TypeScript client, and the `soat` CLI. The last three are generated from the same OpenAPI documents, so an operation that exists in one exists in all of them. - **Contract.** Read — every operation, schema, and security scheme in one OpenAPI 3.0 document. MCP tool names are the kebab-cased `operationId`. - **Base URL.** Your own deployment (`http://localhost:5047` out of the box). `soat.ttoss.dev` serves documentation only — there is no API behind it, so do not send calls there. - **Authentication.** Send `Authorization: Bearer `: a project API key (`sk_…`), a user JWT from `POST /api/v1/users/login`, or an OAuth 2.1 access token. OAuth clients discover the server at `/.well-known/oauth-authorization-server` (RFC 8414) and `/.well-known/oauth-protected-resource` (RFC 9728), and can register themselves at `/register` (RFC 7591) with no operator step. - **Field casing.** snake_case on the wire, everywhere — REST, MCP, webhooks, and the audit export. Unknown fields are rejected rather than ignored, so a typo fails loudly. - **Errors.** Every failure answers `{ "error": { "code", "message", "hint", "docs_url", "meta"? } }`. Branch on `code`, act on `hint`. The full catalog is at . - **Long operations.** Anything that can outlast a request takes one toggle, `wait`, defaulting to background: you get `202` (or `201`) plus a handle to poll. Pass `wait=true` to block for the result instead. - **Pagination.** Every list endpoint takes `limit` and `offset` and returns the same envelope, so one paging loop works for all of them. ## Getting access - **Nothing to sign up for.** SOAT is Apache-2.0 licensed and self-hosted. There is no account to create, no key to request, no trial to start, and no quota you have to ask anyone to raise. - **Run the stack.** Copy the Compose file from the quick start and run `docker compose up -d`. It brings up PostgreSQL with pgvector, a local Ollama for models, and the SOAT server on port 5047 — so the whole platform runs offline, with no third-party credential. - **Get the first credential.** `POST /api/v1/users/bootstrap` creates the first admin. It is open only until that admin exists, then closed for good, so the same call cannot be replayed against a running deployment. - **Issue your own API key.** `POST /api/v1/api-keys` (or `soat create-api-key`) mints a project-scoped `sk_…` key with exactly the actions of the policy you attach. Keys are self-serve and rotatable — `POST /api/v1/api-keys/{api_key_id}/rotate`. - **The sandbox is the same software.** There is no separate sandbox tier to request: a local instance is the product, so throwaway projects, seeded data, and destructive tests all run against your own deployment. Delete the volumes to reset. Full agent instructions: ## Table of Contents - [Key Concepts](https://soat.ttoss.dev/docs/getting-started/concepts.md): The mental model behind SOAT and how its core resources — projects, agents, sessions, and more — fit together. - [Quick Start](https://soat.ttoss.dev/docs/getting-started.md): Get SOAT running locally with Docker Compose in under five minutes. - [Activity](https://soat.ttoss.dev/docs/modules/activity.md): Cursor-paginated feed of every autonomously executed action, for 'what did agents do today' auditability in SOAT. - [Actors](https://soat.ttoss.dev/docs/modules/actors.md): The Actors module represents people, bots, and external participants within a SOAT project, correlating them with external systems via external_id. - [Agents](https://soat.ttoss.dev/docs/modules/agents.md): Agents are persistent configurations for multi-step AI workflows that run reasoning-and-acting loops with tools in SOAT. - [AI Providers](https://soat.ttoss.dev/docs/modules/ai-providers.md): Register and manage LLM provider configurations — model, base URL, and API-key secret — per project in SOAT. - [API Keys](https://soat.ttoss.dev/docs/modules/api-keys.md): Long-lived programmatic credentials that authenticate as their owning user, optionally scoped to a project, with optional policy restrictions. - [Approvals](https://soat.ttoss.dev/docs/modules/approvals.md): Human-decision approval queue with frozen evidence and server-enforced expiry in SOAT. - [Audit Log](https://soat.ttoss.dev/docs/modules/audit-log.md): Append-only record of who did what to the SOAT platform — one entry per mutating administrative or resource action. - [Chains](https://soat.ttoss.dev/docs/modules/chains.md): Continuation chains — the linked tree of generations a resumed turn grows into, how large it has grown, and the ceilings that stop it. - [Chats](https://soat.ttoss.dev/docs/modules/chats.md): LLM completions with optional persistent configuration, supporting both stateless and per-chat modes in SOAT. - [Conversations](https://soat.ttoss.dev/docs/modules/conversations.md): Multi-party dialogues that group ordered, role-tagged messages with optional actor authorship within a SOAT project. - [Deciders](https://soat.ttoss.dev/docs/modules/deciders.md): Deciders: versioned question sets in the OpenAI Decisions API shape, answered by an agent or a tool, producing append-only decisions. - [Docs](https://soat.ttoss.dev/docs/modules/docs.md): MCP-only tools that give agents direct access to SOAT platform documentation. - [Documents](https://soat.ttoss.dev/docs/modules/documents.md): Store documents with per-chunk embedding vectors for semantic search across project content in SOAT. - [Embeddings](https://soat.ttoss.dev/docs/modules/embeddings.md): Generate numeric vector representations of text using SOAT's configured embedding model. - [Evaluations](https://soat.ttoss.dev/docs/modules/evaluations.md): Evaluations — datasets, scorers, and scored runs that turn 'did this change make the agent better?' into a pass/fail verdict in SOAT. - [Exceptions](https://soat.ttoss.dev/docs/modules/exceptions.md): Triageable failure and anomaly queue with severity, occurrence dedup, and an acknowledge/resolve lifecycle in SOAT. - [Files](https://soat.ttoss.dev/docs/modules/files.md): File upload, download, metadata, and deletion over a pluggable storage backend — local filesystem, S3, or GCS. - [Formations](https://soat.ttoss.dev/docs/modules/formations.md): A CloudFormation-inspired declarative layer that provisions an entire AI agent stack from a single JSON or YAML template. - [Generations](https://soat.ttoss.dev/docs/modules/generations.md): Generation records track individual LLM runs started by agents, including lifecycle status and failure details. - [Guardrails](https://soat.ttoss.dev/docs/modules/guardrails.md): Policies that classify each agent tool call as execute, require approval or block, with non-LLM guard expressions composed stricter-wins. - [IAM](https://soat.ttoss.dev/docs/modules/iam.md): SOAT's AWS-inspired IAM engine for authentication and fine-grained authorization with Effect, Action, Resource, and Condition policy statements. - [Platform](https://soat.ttoss.dev/docs/modules.md): Overview of SOAT platform modules exposed through the REST API, MCP server, CLI, and SDK. - [Ingestion Rules](https://soat.ttoss.dev/docs/modules/ingestion-rules.md): Route a file content_type to a converter tool so images, audio, and scanned PDFs can be ingested into searchable documents. - [Knowledge](https://soat.ttoss.dev/docs/modules/knowledge.md): Unified hybrid search across a project's documents and memories: a vector and a full-text query per store, fused by reciprocal rank and tagged by s... - [Memories](https://soat.ttoss.dev/docs/modules/memories.md): Memory stores and the memories they hold: the facts an agent learns, retrieves and writes back. - [Metadata Schemas](https://soat.ttoss.dev/docs/modules/metadata-schemas.md): Declare what a resource's metadata must satisfy in a project, enforced at every write path that stores it. - [Model Routes](https://soat.ttoss.dev/docs/modules/model-routes.md): Ordered provider+model failover for SOAT completions: a named route with retry, per-target timeouts, and a circuit breaker, recorded on the generat... - [OAuth](https://soat.ttoss.dev/docs/modules/oauth.md): SOAT as a first-party OAuth 2.1 Authorization Server for its MCP endpoint. - [Orchestrations](https://soat.ttoss.dev/docs/modules/orchestrations.md): DAG-based pipeline definitions that chain agents, tools, and knowledge lookups into repeatable pipelines. - [Policies](https://soat.ttoss.dev/docs/modules/policies.md): Global, reusable IAM policy documents attached to users and API keys, defining fine-grained rules evaluated at request time. - [Projects](https://soat.ttoss.dev/docs/modules/projects.md): Multi-tenant namespaces in SOAT; every document, file, actor, and conversation belongs to a project. - [Quotas](https://soat.ttoss.dev/docs/modules/quotas.md): Hard, fail-closed enforcement of request rates, token/cost budgets and the stored corpus per project, API key, agent, or end user in SOAT. - [Secrets](https://soat.ttoss.dev/docs/modules/secrets.md): Encrypted storage for sensitive values such as API keys and credentials in SOAT. - [Sessions](https://soat.ttoss.dev/docs/modules/sessions.md): A simplified one-user-to-one-agent conversational interface owned by an agent. - [Shares](https://soat.ttoss.dev/docs/modules/shares.md): Grant another project actions on one of your tools or agents, with per-consumer acceptance, suspension and revocation in SOAT. - [Tools](https://soat.ttoss.dev/docs/modules/tools.md): Standalone, reusable tool definitions that SOAT agents call during generation. - [Traces](https://soat.ttoss.dev/docs/modules/traces.md): Traces record the full execution history of agent generations — every reasoning step and tool call. - [Triggers](https://soat.ttoss.dev/docs/modules/triggers.md): Bind a starter — manual, webhook, schedule, or event — to an executable target in SOAT. - [Usage](https://soat.ttoss.dev/docs/modules/usage.md): Usage events record the cost of every metered occurrence (generations, orchestration compute, API requests, stored bytes) per project and agent. - [Users](https://soat.ttoss.dev/docs/modules/users.md): Human identities within a SOAT instance, authenticated via username and password. - [Webhooks](https://soat.ttoss.dev/docs/modules/webhooks.md): HTTP callbacks that deliver signed event notifications when project resources change. - [Workflows & Tasks](https://soat.ttoss.dev/docs/modules/workflows.md): State-machine definitions (workflows) and the durable, stateful work items that live in them (tasks). - [Bound an Agent with a Boundary Policy](https://soat.ttoss.dev/docs/tutorials/agent-boundary-policy.md): Cap what an agent can do with a boundary policy, so a sub-agent holding a caller's full token still cannot exceed its own ceiling. - [Agent SOAT Tools and Preset Parameters](https://soat.ttoss.dev/docs/tutorials/agent-soat-tools.md): Give an agent access to platform documents with builtin tools, and lock a tool to a document ID using preset parameters. - [Agent Versioning and Canary Rollout](https://soat.ttoss.dev/docs/tutorials/agent-versioning-and-canary-rollout.md): Treat an agent's prompt like deployable code: version every config change, roll a new prompt out to a slice of traffic, and promote or roll back. - [Agent over a Library of PDFs](https://soat.ttoss.dev/docs/tutorials/agent-with-pdfs.md): Build a SOAT agent that answers questions from a library of PDFs using ingestion and knowledge search. - [Answer a Decider with OpenAI's Decisions API](https://soat.ttoss.dev/docs/tutorials/answer-a-decider-with-openai.md): Point a decider at OpenAI's Decisions API through an http tool: versioned questions in SOAT, calibrated probabilities from OpenAI, no adapter. - [Approval Gates: Human-in-the-Loop with the `approval` Node](https://soat.ttoss.dev/docs/tutorials/approval-gate.md): Pause an orchestration for a human decision with an approval node, then approve or reject it from the approvals queue. - [Automate a Flow with Triggers](https://soat.ttoss.dev/docs/tutorials/automate-a-flow-with-triggers.md): Automate a SOAT flow by binding a manual, webhook, or schedule starter to an executable target with Triggers. - [Build an Agent Harness](https://soat.ttoss.dev/docs/tutorials/build-an-agent-harness.md): Build an agent harness on SOAT: client tools for what the agent can reach, a policy for what its runner may do, and the pause-and-resume loop. - [Call AWS and GCP APIs from an Agent](https://soat.ttoss.dev/docs/tutorials/call-aws-and-gcp-apis-from-an-agent.md): Give an agent a tool that calls a real AWS or Google Cloud API, SigV4-signed or with a cached service account token, without writing a proxy. - [Cap Spend Per End User](https://soat.ttoss.dev/docs/tutorials/cap-spend-per-end-user.md): Attribute agent spend to individual end users with Actors, then cap each user's monthly budget with one actor-scoped quota. - [Chat with an LLM](https://soat.ttoss.dev/docs/tutorials/chat-with-llm.md): Build a multi-turn LLM chat with managed conversation history on your own infrastructure, via CLI, SDK, or REST. - [Execute Agent Tool Calls in Your Own App (Client Tools)](https://soat.ttoss.dev/docs/tutorials/client-tools.md): Function calling with SOAT client tools: the agent pauses at requires_action, your app runs the function, then submits the output to resume. - [Close the Monthly Books](https://soat.ttoss.dev/docs/tutorials/close-the-monthly-books.md): Compose an orchestration, a workflow, a trigger, and an approval into one governed month-end close process. - [Conditional Branching in Orchestrations](https://soat.ttoss.dev/docs/tutorials/conditional-orchestration.md): Build a branching orchestration with condition nodes and see skipped nodes recorded in the execution trace. - [Connect Third-Party LLMs](https://soat.ttoss.dev/docs/tutorials/connect-third-party-llms.md): Connect SOAT to hosted LLM providers such as xAI, OpenAI, Anthropic, and Amazon Bedrock. - [Create an Agent Squad](https://soat.ttoss.dev/docs/tutorials/create-an-agent-squad.md): Build and deploy a coordinated agent squad — researcher, writer, reviewer, and human approval — as a single Formation stack. - [Data Retention and Zero-Retention](https://soat.ttoss.dev/docs/tutorials/data-retention-and-zero-retention.md): Erase prompt and completion content from agent logs on demand, expire it with a retention window, or never store it, while cost and audit records s... - [Debug Session, Generation, and Trace History](https://soat.ttoss.dev/docs/tutorials/debug-session-generation-trace-history.md): A practical workflow for debugging SOAT by mapping sessions, generations, and traces together. - [Generating Embeddings](https://soat.ttoss.dev/docs/tutorials/embeddings.md): Use the SOAT Embeddings endpoint to convert text into vectors and compute cosine similarity. - [Evaluate an Agent](https://soat.ttoss.dev/docs/tutorials/evaluate-an-agent.md): Turn "did my prompt change make the agent worse?" into a number: a dataset of test cases, deterministic scorers, and two runs compared. - [Deploy a Multi-Agent App with Agent Formation](https://soat.ttoss.dev/docs/tutorials/formations.md): Deploy a multi-agent orchestration pipeline with a single Agent Formation template instead of many ordered API calls. - [Gate a Canary Promotion on an Eval](https://soat.ttoss.dev/docs/tutorials/gate-a-canary-promotion-on-an-eval.md): Make a canary rollout wait for evidence: declare an eval suite in a formation, pin a run to the canary, and promote only once that run passes. - [Gate a Dangerous Tool with Guardrails](https://soat.ttoss.dev/docs/tutorials/gate-a-tool-with-guardrails.md): Classify a dangerous tool call with a guardrail — execute below a threshold, require human sign-off above it, and hard-stop on a failing guard. - [Govern Metadata with Schemas](https://soat.ttoss.dev/docs/tutorials/govern-metadata-with-schemas.md): Declare what a document's metadata must contain under a path prefix, watch a bad write be refused, and check a batch before sending it. - [Grade an Eval with a Decider](https://soat.ttoss.dev/docs/tutorials/grade-an-eval-with-a-decider.md): One versioned judgment in two layers: a decider reviews a live support reply, then grades every item of an eval as a decider scorer. - [Grade Structured Output with Your Own Scorer](https://soat.ttoss.dev/docs/tutorials/grade-structured-output-with-your-own-scorer.md): Grade structured agent output: an output_schema scorer for shape, json_logic over item metadata for correctness, and your own rule as a tool scorer. - [Tutorials](https://soat.ttoss.dev/docs/tutorials.md): End-to-end SOAT tutorials that walk through complete workflows from scratch — agents, tools, RAG, orchestration, guardrails, and cost controls. - [Ingest Images and Audio with Converters](https://soat.ttoss.dev/docs/tutorials/ingest-images-and-audio.md): Ingest images and audio into searchable documents using converter tools and ingestion rules. - [Judge Open-Ended Answers](https://soat.ttoss.dev/docs/tutorials/judge-open-ended-answers.md): Score answers with no single correct string: an llm_judge scorer with a pinned model and rubric, checked against your own grades, run queued. - [Measuring Retrieval Quality](https://soat.ttoss.dev/docs/tutorials/measure-retrieval-quality.md): Measure knowledge search on your own corpus with recall@k and MRR: build a golden set, run it, read the per-slice table, and price a ranking knob. - [Agent with Persistent Memory](https://soat.ttoss.dev/docs/tutorials/memories-agent.md): Give a SOAT agent long-term memory that persists across sessions. - [Meter and Budget Your Project's Spend](https://soat.ttoss.dev/docs/tutorials/metering-and-budgets.md): Meter an agent's token usage, price it, aggregate per-project spend, and get pushed a webhook alert when a budget threshold is crossed. - [Multi-Agent Sonnet with Nested Agent Calls](https://soat.ttoss.dev/docs/tutorials/multi-agent-orchestration.md): Build a nested-agent pipeline where one agent coordinates sub-agents with builtin tools. - [Write a Sonnet with a Workflow](https://soat.ttoss.dev/docs/tutorials/orchestrate-a-sonnet-with-workflows.md): Compose a sonnet stanza by stanza through a Workflow: agent-driven states, a human review, a guarded publish, and a backward move a DAG would reject. - [Orchestrate a Sonnet](https://soat.ttoss.dev/docs/tutorials/orchestrate-a-sonnet.md): Build a sequential multi-agent pipeline with the Orchestrations module — four agents compose a sonnet stanza by stanza, invoked directly from the g... - [Orchestration Control Flow: Delay, Poll, and Loop](https://soat.ttoss.dev/docs/tutorials/orchestration-control-flow.md): Use orchestration control-flow nodes — delay, poll, loop, and condition — to pace, wait, repeat, and branch a run. - [Pass Per-User Credentials to Tools with Tool Context](https://soat.ttoss.dev/docs/tutorials/per-user-credentials-with-tool-context.md): Pass a per-user credential to an orchestration run with tool_context, send it as an Authorization header, and confine it to one tool with context_k... - [Permissions in Practice](https://soat.ttoss.dev/docs/tutorials/permissions.md): Walk through a realistic SOAT permissions setup from scratch with users, policies, and API keys. - [Replay a Bad Turn](https://soat.ttoss.dev/docs/tutorials/replay-a-bad-turn.md): Take one bad production answer and close the loop: read the turn step by step, freeze it as an eval fixture, fork the session and re-run it. - [Route Work with a Decider](https://soat.ttoss.dev/docs/tutorials/route-work-with-a-decider.md): Route an orchestration on a decider's answer: a tool-backed decider applies refund rules to a customer's tags, and a condition node takes the branc... - [Build a Single Source of Truth](https://soat.ttoss.dev/docs/tutorials/single-source-of-truth.md): Two writers editing one report without a lost update: read the version a run cited, withdraw and restore a document, retract a fact, export the cor... - [Tag-Based Access Control](https://soat.ttoss.dev/docs/tutorials/tag-based-access-control.md): Tag documents, condition an IAM policy on those tags, and watch the list filter and knowledge search narrow to what the caller may see. - [SOAT SDK](https://soat.ttoss.dev/docs/sdk.md): The @soat/sdk typed TypeScript client for the SOAT REST API, generated from the OpenAPI specs. - [Services Reference](https://soat.ttoss.dev/docs/sdk/services.md): Every service and method of the SOAT TypeScript SDK, grouped by module, each method mapped to one REST endpoint. - [SDK Usage Examples](https://soat.ttoss.dev/docs/sdk/usage.md): Examples for common SOAT SDK operations across every module, using a typed SoatClient instance. - [Commands Reference](https://soat.ttoss.dev/docs/cli/commands.md): Every soat CLI command, grouped by module, with usage and option details derived from the SOAT OpenAPI specs. - [SOAT CLI](https://soat.ttoss.dev/docs/cli.md): The @soat/cli command-line interface for the SOAT REST API, with every operation auto-generated as a sub-command from the OpenAPI specs. - [CLI Usage Examples](https://soat.ttoss.dev/docs/cli/usage.md): Common SOAT CLI workflows and command examples for agents, sessions, projects, and more. - [Connecting an MCP Client](https://soat.ttoss.dev/docs/mcp/connecting.md): How to connect an MCP client to SOAT's Streamable HTTP endpoint. - [MCP Server](https://soat.ttoss.dev/docs/mcp.md): SOAT exposes every resource as Model Context Protocol (MCP) tools that Claude, Copilot, and any MCP client can call directly. - [Tools Reference](https://soat.ttoss.dev/docs/mcp/tools.md): Every MCP tool the SOAT server exposes, grouped by module, with its tools/call name and inputSchema arguments. - [OpenAPI Specifications](https://soat.ttoss.dev/docs/openapi-specs.md): Machine-readable OpenAPI specifications for the SOAT REST API, as one merged bundle or one file per module. - [Building on SOAT](https://soat.ttoss.dev/docs/advanced/building-on-soat.md): Embedding SOAT behind your own product: one project per tenant, one project-scoped API key per tenant, and no ownership tables of your own. - [Choosing an Automation Model](https://soat.ttoss.dev/docs/advanced/choosing-an-automation-model.md): Nothing, an orchestration or a workflow? Compare SOAT's cyclic state machine a task lives in with the acyclic pipeline that runs and ends. - [Concurrent Writes](https://soat.ttoss.dev/docs/advanced/concurrent-writes.md): Optimistic concurrency on versioned resources: expected_version or If-Match refuses a stale write, and writes to one resource are serialized. - [Debugging a Run](https://soat.ttoss.dev/docs/advanced/debugging-a-run.md): Which observability surface answers which question: a symptom-to-surface map, the id graph that joins them, and why a surface can be empty. - [Engines & Algorithms](https://soat.ttoss.dev/docs/advanced/engines-and-algorithms.md): The two-layer pattern behind SOAT's intelligence modules: a mechanical engine, a swappable algorithm layer, and tools as the seam for your own. - [Eval Design](https://soat.ttoss.dev/docs/advanced/eval-design.md): Design an eval whose verdict means something: the claim first, the evidence it needs, a failure-weighted dataset, the cheapest scorer, calibrated j... - [Expressions & Templating](https://soat.ttoss.dev/docs/advanced/expressions-and-templating.md): Complete reference for SOAT's six expression and templating pattern families and how each resolves at a different time so they compose without esca... - [Idempotency](https://soat.ttoss.dev/docs/advanced/idempotency.md): At-most-once requests: an idempotency_key body field or Idempotency-Key header makes a retry replay the original instead of running again. - [Memory & Knowledge Engine](https://soat.ttoss.dev/docs/advanced/memory-and-knowledge-engine.md): How SOAT creates, stores, retrieves and injects knowledge: the write and read pipelines, every algorithm and its knobs, and where custom ones plug in. - [Retrieval Quality](https://soat.ttoss.dev/docs/advanced/retrieval-quality.md): How knowledge search ranking is measured: recall@k and MRR over raw positions, reading a per-slice table, and the baseline that gates ranking changes. - [Single Source of Truth](https://soat.ttoss.dev/docs/advanced/single-source-of-truth.md): One project as the record many orchestrations, triggers and agents write and read, with no store beside it: what that needs, and where each part li... - [Synchronous & Asynchronous Execution](https://soat.ttoss.dev/docs/advanced/sync-and-async.md): The wait toggle: every long-running endpoint runs in the background by default and returns a handle to poll; wait=true blocks until it settles. - [Tool Context](https://soat.ttoss.dev/docs/advanced/tool-context.md): How session and actor context reaches a tool endpoint as X-Soat-Context-* headers: the key-to-header rule, auto-populated keys and precedence. - [The Layers of an Agent System](https://soat.ttoss.dev/docs/agent-system-layers.md): The layers of an agent system (harness, loop, graph, ratchet), which SOAT module owns each, and why the graph should be the last thing you build. - [Export the activity feed as NDJSON](https://soat.ttoss.dev/docs/api/activity/export-activity.md): Streams a project's activity entries as newline-delimited JSON — one entry object per line, oldest first, where the feed itself reads newest first:... - [List activity feed entries](https://soat.ttoss.dev/docs/api/activity/list-activity.md): Returns activity entries for a project, newest first, filterable by kind, severity, agent, generation and orchestration run — every filter composab... - [Create an actor](https://soat.ttoss.dev/docs/api/actors/create-actor.md): Creates a new actor. project keys automatically infer the project from the key's scope; JWT callers must supply projectId. - [Delete an actor](https://soat.ttoss.dev/docs/api/actors/delete-actor.md): Deletes an actor by its ID. DELETE /api/v1/actors/{actor_id} in the SOAT REST API. - [Get actor tags](https://soat.ttoss.dev/docs/api/actors/get-actor-tags.md): Returns all tags attached to the actor. GET /api/v1/actors/{actor_id}/tags in the SOAT REST API. - [Get an actor by ID](https://soat.ttoss.dev/docs/api/actors/get-actor.md): Returns an actor by its ID. GET /api/v1/actors/{actor_id} in the SOAT REST API. - [List actors](https://soat.ttoss.dev/docs/api/actors/list-actors.md): Returns all actors the caller has access to. GET /api/v1/actors in the SOAT REST API. - [Merge actor tags](https://soat.ttoss.dev/docs/api/actors/merge-actor-tags.md): Merges provided tags into the actor's existing tags (existing tags are preserved unless overridden) - [Replace actor tags](https://soat.ttoss.dev/docs/api/actors/replace-actor-tags.md): Replaces all tags on the actor with the provided tags (not merged) - [Update an actor](https://soat.ttoss.dev/docs/api/actors/update-actor.md): Updates an actor's properties. PATCH /api/v1/actors/{actor_id} in the SOAT REST API. - [Abort the rollout and roll back to stable](https://soat.ttoss.dev/docs/api/agents/abort-agent-release.md): Restores the stable version's config as the agent's live config and clears the release, so all traffic returns to the configuration the rollout was... - [Run an agent generation](https://soat.ttoss.dev/docs/api/agents/create-agent-generation.md): Sends messages to the agent, resolves its tools, and runs the AI model loop. - [Create an agent](https://soat.ttoss.dev/docs/api/agents/create-agent.md): Creates a new agent bound to an AI provider. POST /api/v1/agents in the SOAT REST API. - [Delete an agent](https://soat.ttoss.dev/docs/api/agents/delete-agent.md): Deletes an agent by ID. DELETE /api/v1/agents/{agent_id} in the SOAT REST API. - [Get an archived agent config version](https://soat.ttoss.dev/docs/api/agents/get-agent-version.md): Returns the exact configuration the agent held at a given version, so a generation can be traced back to the config that produced it. - [Get an agent](https://soat.ttoss.dev/docs/api/agents/get-agent.md): Returns a single agent by ID. A credential scoped to a project the agent is shared with, through an accepted share, reads its id and name only. - [List an agent's config versions](https://soat.ttoss.dev/docs/api/agents/list-agent-versions.md): Returns the agent's archived configurations, newest first. - [List agents](https://soat.ttoss.dev/docs/api/agents/list-agents.md): Returns all agents in the project. GET /api/v1/agents in the SOAT REST API. - [Partially update an agent](https://soat.ttoss.dev/docs/api/agents/patch-agent.md): Partially updates an existing agent. Identical to PUT — both perform partial updates. - [Promote the canary and end the rollout](https://soat.ttoss.dev/docs/api/agents/promote-agent-release.md): Makes the canary version's config the agent's live config and clears the release. - [Restore an archived config as a new version](https://soat.ttoss.dev/docs/api/agents/restore-agent-version.md): Copies the named version's configuration onto the agent as a new version rather than rewinding the counter, so history stays append-only and the ve... - [Set or replace a staged rollout](https://soat.ttoss.dev/docs/api/agents/set-agent-release.md): Starts serving two archived versions side by side: canary_percent of traffic gets canary_version, the rest gets stable_version. - [Submit tool outputs for a paused generation](https://soat.ttoss.dev/docs/api/agents/submit-agent-tool-outputs.md): Resumes a generation that was paused due to client tool calls. Provide tool outputs for each pending tool call. - [Update an agent](https://soat.ttoss.dev/docs/api/agents/update-agent.md): Updates an existing agent. Identical to PATCH — both perform partial updates. - [Create an AI provider](https://soat.ttoss.dev/docs/api/ai-providers/create-ai-provider.md): Creates a new LLM provider configuration. POST /api/v1/ai-providers in the SOAT REST API. - [Delete an AI provider](https://soat.ttoss.dev/docs/api/ai-providers/delete-ai-provider.md): Deletes an AI provider configuration. DELETE /api/v1/ai-providers/{ai_provider_id} in the SOAT REST API. - [List per-provider price overrides](https://soat.ttoss.dev/docs/api/ai-providers/get-ai-provider-prices.md): Returns the per-provider price overrides for this AI provider instance. - [Get an AI provider](https://soat.ttoss.dev/docs/api/ai-providers/get-ai-provider.md): Returns a specific AI provider configuration. GET /api/v1/ai-providers/{ai_provider_id} in the SOAT REST API. - [List the models this provider can run](https://soat.ttoss.dev/docs/api/ai-providers/list-ai-provider-models.md): Asks the provider which models it can run, using this provider record's own credentials and configuration, and returns provider-native model ids — ... - [List AI providers](https://soat.ttoss.dev/docs/api/ai-providers/list-ai-providers.md): Returns a list of AI provider configurations for a project - [Upsert per-provider price overrides](https://soat.ttoss.dev/docs/api/ai-providers/update-ai-provider-prices.md): Upserts price overrides for this AI provider instance, keyed on (model, effective_from). - [Update an AI provider](https://soat.ttoss.dev/docs/api/ai-providers/update-ai-provider.md): Updates an AI provider configuration. PATCH /api/v1/ai-providers/{ai_provider_id} in the SOAT REST API. - [Create an API key](https://soat.ttoss.dev/docs/api/api-keys/create-api-key.md): Creates a new API key for the authenticated user. - project_id is optional. When set, the key is scoped to that single project. - [Delete an API key](https://soat.ttoss.dev/docs/api/api-keys/delete-api-key.md): Deletes an API key. Only the owner or an admin can delete it, and a project-scoped credential can only delete keys in its own project. - [Get an API key](https://soat.ttoss.dev/docs/api/api-keys/get-api-key.md): Returns details of an API key. Only the owner or an admin can access it, and a project-scoped credential can only reach keys in its own project. - [List API keys](https://soat.ttoss.dev/docs/api/api-keys/list-api-keys.md): Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-sco... - [Update an API key](https://soat.ttoss.dev/docs/api/api-keys/update-api-key.md): Updates an API key's name, project scope, or policies. - [Approve an approval item](https://soat.ttoss.dev/docs/api/approvals/approve-approval.md): Approves the item. Optionally supply edited arguments to replace the proposed arguments (edit-then-approve); the original is preserved on the item. - [Get an approval item](https://soat.ttoss.dev/docs/api/approvals/get-approval.md): Returns a single approval item with its full evidence. - [List recurring approval groups](https://soat.ttoss.dev/docs/api/approvals/list-approval-recurrences.md): Read-only rollup answering 'what keeps coming back?' — groups items by dedup_key and returns those recurring at least min_count times, most-recurre... - [List approval items](https://soat.ttoss.dev/docs/api/approvals/list-approvals.md): Returns approval items for a project, filterable by status, origin, and expiry. - [Reject an approval item](https://soat.ttoss.dev/docs/api/approvals/reject-approval.md): Rejects the item. A reason is required and preserved on the item. - [Export audit entries as NDJSON](https://soat.ttoss.dev/docs/api/audit-log/export-audit-entries.md): Streams a project's audit-log entries as newline-delimited JSON — one entry object per line, oldest first — for archival before the retention windo... - [Get an audit entry](https://soat.ttoss.dev/docs/api/audit-log/get-audit-entry.md): Returns a single audit-log entry, including its detail payload - [List audit entries](https://soat.ttoss.dev/docs/api/audit-log/list-audit-entries.md): Returns audit-log entries visible to the caller, newest first. - [Get a continuation chain](https://soat.ttoss.dev/docs/api/chains/get-chain.md): Returns a single continuation chain. To read the generations in it, list generations filtered by chain_id. - [List continuation chains](https://soat.ttoss.dev/docs/api/chains/list-chains.md): Returns the continuation chains in a project, newest first. - [Create a chat completion](https://soat.ttoss.dev/docs/api/chats/create-chat-completion.md): OpenAI Chat Completions-compatible endpoint. Mirrors OpenAI's POST /v1/chat/completions path so an OpenAI SDK can target it by base URL alone. - [Create a chat](https://soat.ttoss.dev/docs/api/chats/create-chat.md): Creates a new chat resource bound to an AI provider. - [Delete a chat](https://soat.ttoss.dev/docs/api/chats/delete-chat.md): Deletes a chat by ID. DELETE /api/v1/chats/{chat_id} in the SOAT REST API. - [Get a chat](https://soat.ttoss.dev/docs/api/chats/get-chat.md): Returns a single chat by ID. GET /api/v1/chats/{chat_id} in the SOAT REST API. - [List chats](https://soat.ttoss.dev/docs/api/chats/list-chats.md): Returns all chats in the project. GET /api/v1/chats in the SOAT REST API. - [Add a message to a conversation](https://soat.ttoss.dev/docs/api/conversations/add-conversation-message.md): Creates a document from the message text and attaches it to the conversation at the given position. If position is omitted, it is appended at the end. - [Create a conversation](https://soat.ttoss.dev/docs/api/conversations/create-conversation.md): Creates a new conversation. project keys automatically infer the project from the key's scope; JWT callers must supply projectId. - [Delete a conversation](https://soat.ttoss.dev/docs/api/conversations/delete-conversation.md): Deletes a conversation by its ID. DELETE /api/v1/conversations/{conversation_id} in the SOAT REST API. - [Generate the next message in a conversation](https://soat.ttoss.dev/docs/api/conversations/generate-conversation-message.md): Generates the next message using the specified actor's linked agent or chat. - [Get conversation tags](https://soat.ttoss.dev/docs/api/conversations/get-conversation-tags.md): Returns all tags attached to the conversation. GET /api/v1/conversations/{conversation_id}/tags in the SOAT REST API. - [Get a conversation by ID](https://soat.ttoss.dev/docs/api/conversations/get-conversation.md): Returns a conversation by its ID. GET /api/v1/conversations/{conversation_id} in the SOAT REST API. - [List conversation messages](https://soat.ttoss.dev/docs/api/conversations/list-conversation-messages.md): Returns all messages (documents) attached to a conversation, ordered by position - [List conversations](https://soat.ttoss.dev/docs/api/conversations/list-conversations.md): Returns all conversations the caller has access to. - [Merge conversation tags](https://soat.ttoss.dev/docs/api/conversations/merge-conversation-tags.md): Merges provided tags into the conversation's existing tags (existing tags are preserved unless overridden) - [Remove a message from a conversation](https://soat.ttoss.dev/docs/api/conversations/remove-conversation-message.md): Removes a document from a conversation. DELETE /api/v1/conversations/{conversation_id}/messages/{document_id} in the SOAT REST API. - [Replace conversation tags](https://soat.ttoss.dev/docs/api/conversations/replace-conversation-tags.md): Replaces all tags on the conversation with the provided tags - [Update a conversation](https://soat.ttoss.dev/docs/api/conversations/update-conversation.md): Updates the status of a conversation. PATCH /api/v1/conversations/{conversation_id} in the SOAT REST API. - [Create a decider](https://soat.ttoss.dev/docs/api/deciders/create-decider.md): Creates a decider at version 1: a named question set and the backend that answers it, exactly one of agent_id and tool_id. - [Request a decision](https://soat.ttoss.dev/docs/api/deciders/create-decision.md): Evaluates the decider against input and records the decision. - [Request a decision with inline questions](https://soat.ttoss.dev/docs/api/deciders/create-inline-decision.md): Evaluates questions sent with the request against input, answered by the agent or tool the request names (exactly one of agent_id and tool_id, held... - [Delete a decider](https://soat.ttoss.dev/docs/api/deciders/delete-decider.md): Deletes a decider and its version archive. Its decisions remain and keep naming the decider's ID. - [Fetch an archived decider version](https://soat.ttoss.dev/docs/api/deciders/get-decider-version.md): Returns the question set a version held. GET /api/v1/deciders/{decider_id}/versions/{version} in the SOAT REST API. - [Get a decider](https://soat.ttoss.dev/docs/api/deciders/get-decider.md): Returns a decider with its current question set and version. - [Get a decision](https://soat.ttoss.dev/docs/api/deciders/get-decision.md): Returns a decision. Poll it after a wait: false request until status is completed or failed. - [List a decider's versions](https://soat.ttoss.dev/docs/api/deciders/list-decider-versions.md): Returns the decider's archived question sets, newest first. A version is written on create and on every write that changes questions. - [List deciders](https://soat.ttoss.dev/docs/api/deciders/list-deciders.md): Returns the deciders defined in a project, newest first. - [List decisions](https://soat.ttoss.dev/docs/api/deciders/list-decisions.md): Returns the decisions in a project, newest first. GET /api/v1/decisions in the SOAT REST API. - [Restore an archived decider version](https://soat.ttoss.dev/docs/api/deciders/restore-decider-version.md): Writes an archived question set back as the decider's live one, which archives it again as a new version rather than rewinding the counter. - [Update a decider](https://soat.ttoss.dev/docs/api/deciders/update-decider.md): Updates any of name, description, the backend and questions. Naming agent_id or tool_id replaces the current backend; naming both is 400. - [Deliver an async converter result](https://soat.ttoss.dev/docs/api/documents/complete-ingestion-callback.md): Token-authed callback for a tool converter that deferred conversion by - [Assert a relation](https://soat.ttoss.dev/docs/api/documents/create-document-relation.md): Asserts a typed edge from this document to another in the same project. - [Create a document](https://soat.ttoss.dev/docs/api/documents/create-document.md): Creates a new text document and generates an embedding vector for semantic search. project keys automatically infer the project from the key's scop... - [Retract a relation](https://soat.ttoss.dev/docs/api/documents/delete-document-relation.md): Removes an edge this document asserts. Both documents are left as they are — retracting a claim is not a change to what it was about. - [Delete a document](https://soat.ttoss.dev/docs/api/documents/delete-document.md): Deletes a document and its underlying file. DELETE /api/v1/documents/{document_id} in the SOAT REST API. - [Export documents as NDJSON](https://soat.ttoss.dev/docs/api/documents/export-documents.md): Streams a project's documents as newline-delimited JSON — one document object per line, oldest first — for archiving the corpus or shipping it into... - [Get document ingestion status](https://soat.ttoss.dev/docs/api/documents/get-document-status.md): Returns a lightweight ingestion status payload for polling — status, - [Get document tags](https://soat.ttoss.dev/docs/api/documents/get-document-tags.md): Returns all tags attached to the document. GET /api/v1/documents/{document_id}/tags in the SOAT REST API. - [Fetch an archived document version](https://soat.ttoss.dev/docs/api/documents/get-document-version.md): Returns the exact content and annotations the document held at a given version, which is what lets a run that cited a version read what it read. - [Get a document by ID](https://soat.ttoss.dev/docs/api/documents/get-document.md): Returns a document with its text content. GET /api/v1/documents/{document_id} in the SOAT REST API. - [Ingest a file into a chunked document](https://soat.ttoss.dev/docs/api/documents/ingest-document.md): Parses an already-uploaded file and creates one Document split into one or - [List a document's relations](https://soat.ttoss.dev/docs/api/documents/list-document-relations.md): Returns the typed edges this document asserts about others, oldest first. - [List a document's content versions](https://soat.ttoss.dev/docs/api/documents/list-document-versions.md): Returns the document's archived states, newest first. - [List documents](https://soat.ttoss.dev/docs/api/documents/list-documents.md): Returns all documents the caller has access to. GET /api/v1/documents in the SOAT REST API. - [Merge document tags](https://soat.ttoss.dev/docs/api/documents/merge-document-tags.md): Merges provided tags into the document's existing tags (existing tags are preserved unless overridden) - [Re-ingest an existing document](https://soat.ttoss.dev/docs/api/documents/reingest-document.md): Re-runs ingestion for an existing document against its already-stored - [Replace document tags](https://soat.ttoss.dev/docs/api/documents/replace-document-tags.md): Replaces all tags on the document with the provided tags (not merged) - [Restore an archived document version](https://soat.ttoss.dev/docs/api/documents/restore-document-version.md): Writes an archived version's content and annotations back as the document's live state, which archives them again as a new version rather than rewi... - [Update a document](https://soat.ttoss.dev/docs/api/documents/update-document.md): Updates document content, title, path, metadata, or tags. Supplying path moves the document to a new logical path within the project. - [Withdraw a document](https://soat.ttoss.dev/docs/api/documents/withdraw-document.md): Takes a document out of every default read while keeping its history. - [Create embeddings](https://soat.ttoss.dev/docs/api/embeddings/create-embeddings.md): Generates embedding vectors for one or more text inputs using the server's configured embedding model. - [Cancel an eval run](https://soat.ttoss.dev/docs/api/evaluations/cancel-eval-run.md): Cancels a queued or running run: its outstanding item tasks are dropped so it stops consuming provider budget, and the run settles as canceled. - [Curate a dataset item from a generation](https://soat.ttoss.dev/docs/api/evaluations/create-dataset-item-from-generation.md): Promotes a real, completed generation into a test case: its input messages become the item's input, and its own answer becomes expected_output unle... - [Add a dataset item](https://soat.ttoss.dev/docs/api/evaluations/create-dataset-item.md): Adds one test case. input is replayed verbatim as the generation's messages, so it must be a non-empty array of { role, content }. - [Create a dataset](https://soat.ttoss.dev/docs/api/evaluations/create-dataset.md): Creates a project-scoped dataset — a named collection of test cases an eval runs an agent against. Names are unique per project. - [Create an eval](https://soat.ttoss.dev/docs/api/evaluations/create-eval.md): Binds an agent under test to a dataset and a list of scorers. - [Delete a dataset item](https://soat.ttoss.dev/docs/api/evaluations/delete-dataset-item.md): Deletes a test case. Results of runs that already scored it stay readable; their dataset_item_id becomes null. - [Delete a dataset](https://soat.ttoss.dev/docs/api/evaluations/delete-dataset.md): Deletes a dataset, its items, and every eval bound to it. - [Delete an eval](https://soat.ttoss.dev/docs/api/evaluations/delete-eval.md): Deletes an eval, its runs, and their results. DELETE /api/v1/evals/{eval_id} in the SOAT REST API. - [Get a dataset](https://soat.ttoss.dev/docs/api/evaluations/get-dataset.md): Returns a specific dataset. GET /api/v1/datasets/{dataset_id} in the SOAT REST API. - [Get an eval run](https://soat.ttoss.dev/docs/api/evaluations/get-eval-run.md): Returns a run's status, counts, and aggregate scores - [Get an eval](https://soat.ttoss.dev/docs/api/evaluations/get-eval.md): Returns a specific eval. GET /api/v1/evals/{eval_id} in the SOAT REST API. - [List dataset items](https://soat.ttoss.dev/docs/api/evaluations/list-dataset-items.md): Returns the test cases in a dataset, oldest first. GET /api/v1/datasets/{dataset_id}/items in the SOAT REST API. - [List datasets](https://soat.ttoss.dev/docs/api/evaluations/list-datasets.md): Returns the datasets defined in a project. GET /api/v1/datasets in the SOAT REST API. - [List eval run results](https://soat.ttoss.dev/docs/api/evaluations/list-eval-results.md): Returns the per-item results of a run, oldest first - [List eval runs](https://soat.ttoss.dev/docs/api/evaluations/list-eval-runs.md): Returns an eval's runs, newest first. GET /api/v1/evals/{eval_id}/runs in the SOAT REST API. - [List evals](https://soat.ttoss.dev/docs/api/evaluations/list-evals.md): Returns the evals defined in a project. GET /api/v1/evals in the SOAT REST API. - [Start an eval run](https://soat.ttoss.dev/docs/api/evaluations/start-eval-run.md): Runs the eval against its dataset, creating one real agent generation per item and scoring the outputs. - [Update a dataset item](https://soat.ttoss.dev/docs/api/evaluations/update-dataset-item.md): Updates a test case. Runs that already scored it are unaffected — each result carries its own frozen copy of the input and expected output. - [Update a dataset](https://soat.ttoss.dev/docs/api/evaluations/update-dataset.md): Updates a dataset's name and/or description. PUT /api/v1/datasets/{dataset_id} in the SOAT REST API. - [Update an eval](https://soat.ttoss.dev/docs/api/evaluations/update-eval.md): Updates an eval. Changing agent_id re-validates the scorers against the new agent, since an output_schema scorer that was legal against the old one... - [Acknowledge an exception item](https://soat.ttoss.dev/docs/api/exceptions/acknowledge-exception.md): Moves the item to acknowledged ('someone is on it'), recording who. - [Get an exception item](https://soat.ttoss.dev/docs/api/exceptions/get-exception.md): Returns a single exception item with its full detail. - [List exception items](https://soat.ttoss.dev/docs/api/exceptions/list-exceptions.md): Returns exception items for a project, filterable by status, severity, and kind. - [Resolve an exception item](https://soat.ttoss.dev/docs/api/exceptions/resolve-exception.md): Moves the item to resolved ('fixed'), recording who and an optional note. - [Create a file](https://soat.ttoss.dev/docs/api/files/create-file.md): Creates a new file record in the system. POST /api/v1/files in the SOAT REST API. - [Create a presigned upload URL](https://soat.ttoss.dev/docs/api/files/create-presigned-url.md): Creates a short-lived, single-use presigned upload URL — the local-storage equivalent of an S3 presigned URL. - [Delete a file](https://soat.ttoss.dev/docs/api/files/delete-file.md): Removes a file from the system by ID. DELETE /api/v1/files/{file_id} in the SOAT REST API. - [Download file as base64](https://soat.ttoss.dev/docs/api/files/download-file-base-64.md): Returns the file content encoded as base64. GET /api/v1/files/{file_id}/download/base64 in the SOAT REST API. - [Download a file](https://soat.ttoss.dev/docs/api/files/download-file.md): Streams the file content to the client. GET /api/v1/files/{file_id}/download in the SOAT REST API. - [Get file tags](https://soat.ttoss.dev/docs/api/files/get-file-tags.md): Returns all tags attached to the file. GET /api/v1/files/{file_id}/tags in the SOAT REST API. - [Get a file by ID](https://soat.ttoss.dev/docs/api/files/get-file.md): Returns the data and metadata of a specific file. GET /api/v1/files/{file_id} in the SOAT REST API. - [List all files](https://soat.ttoss.dev/docs/api/files/list-files.md): Returns a list of all stored files. GET /api/v1/files in the SOAT REST API. - [Merge file tags](https://soat.ttoss.dev/docs/api/files/merge-file-tags.md): Merges provided tags into the file's existing tags (existing tags are preserved unless overridden) - [Replace file tags](https://soat.ttoss.dev/docs/api/files/replace-file-tags.md): Replaces all tags on the file with the provided tags - [Update file metadata](https://soat.ttoss.dev/docs/api/files/update-file-metadata.md): Updates the metadata field of a file. PATCH /api/v1/files/{file_id}/metadata in the SOAT REST API. - [Upload a file using base64 encoding](https://soat.ttoss.dev/docs/api/files/upload-file-base-64.md): Uploads a file to the server using base64-encoded content - [Upload a file using an upload token](https://soat.ttoss.dev/docs/api/files/upload-file-with-token.md): Uploads file content authorized by a single-use token from POST /api/v1/files/presigned-url. No bearer credential is required — the token is the cr... - [Upload a file](https://soat.ttoss.dev/docs/api/files/upload-file.md): Uploads a file to the server and stores it in the configured storage directory - [Create a new formation](https://soat.ttoss.dev/docs/api/formations/create-formation.md): Validates the template, creates the formation record, then provisions all declared resources in dependency order. - [Delete an formation](https://soat.ttoss.dev/docs/api/formations/delete-formation.md): Deletes the formation stack and all its managed resources in reverse dependency order. - [Get a specific formation](https://soat.ttoss.dev/docs/api/formations/get-formation.md): Returns the formation stack including its current resources. - [List formation operation events](https://soat.ttoss.dev/docs/api/formations/list-formation-events.md): Returns all operations (create, update, delete) with their event logs for the formation, ordered chronologically. - [List formations](https://soat.ttoss.dev/docs/api/formations/list-formations.md): Returns all formation stacks for a project. GET /api/v1/formations in the SOAT REST API. - [Plan a formation deployment](https://soat.ttoss.dev/docs/api/formations/plan-formation.md): Computes a diff between the desired template and the current stack state without making any changes. Returns the list of planned actions. - [Update an formation](https://soat.ttoss.dev/docs/api/formations/update-formation.md): Applies a new template to the formation. Resources are created, updated, or deleted to reconcile the current state with the desired state. - [Validate a formation template](https://soat.ttoss.dev/docs/api/formations/validate-formation.md): Validates a formation template without creating any resources. Returns a list of errors and warnings. - [Get a generation's transcript](https://soat.ttoss.dev/docs/api/generations/get-generation-transcript.md): Returns one generation's turn read back as an ordered sequence of steps: what it was asked, each model step with its tool calls and results, and ho... - [Get a generation](https://soat.ttoss.dev/docs/api/generations/get-generation.md): Returns a single generation record by ID, including its status and the structured error payload when the generation failed (e.g. because the upstre... - [List the memory writes a generation made](https://soat.ttoss.dev/docs/api/generations/list-generation-memory-assertions.md): Every memory write this turn made, oldest first: each memory rule's firings and the agent's own write_memory calls alike. - [List generations](https://soat.ttoss.dev/docs/api/generations/list-generations.md): Returns generations the caller can access, optionally filtered by agent, trace, orchestration run, node, and status. - [Purge generation content](https://soat.ttoss.dev/docs/api/generations/purge-generation-content.md): Clears the generation's content — metadata, error, extraction, and the internal recovery state of a paused run — and stamps content_redacted_at. - [Update generation metadata](https://soat.ttoss.dev/docs/api/generations/update-generation.md): Attaches caller-supplied key/value metadata to a generation record for per-run audit attribution (e.g. the ticket or case an AI action belongs to). - [Create a guardrail](https://soat.ttoss.dev/docs/api/guardrails/create-guardrail.md): Creates a new guardrail in the project, archiving its document as version 1. - [Delete a guardrail](https://soat.ttoss.dev/docs/api/guardrails/delete-guardrail.md): Deletes a guardrail and its archived versions by ID. - [Dry-run evaluate a guardrail](https://soat.ttoss.dev/docs/api/guardrails/evaluate-guardrail.md): Runs the full evaluation pipeline — the class expression, the guard, the context tool per context_mode, live runtime.* resolution — against caller-... - [Fetch an archived guardrail version](https://soat.ttoss.dev/docs/api/guardrails/get-guardrail-version.md): Returns the exact configuration — and so the exact document — that governed at a given version. - [Get a guardrail](https://soat.ttoss.dev/docs/api/guardrails/get-guardrail.md): Returns a single guardrail by ID. GET /api/v1/guardrails/{guardrail_id} in the SOAT REST API. - [List a guardrail's config versions](https://soat.ttoss.dev/docs/api/guardrails/list-guardrail-versions.md): Returns the guardrail's archived configurations, newest first. - [List guardrails](https://soat.ttoss.dev/docs/api/guardrails/list-guardrails.md): Returns all guardrails in the project. GET /api/v1/guardrails in the SOAT REST API. - [Restore an archived guardrail config](https://soat.ttoss.dev/docs/api/guardrails/restore-guardrail-version.md): Writes an archived version's document back as the guardrail's live policy, which archives it again as a new version rather than rewinding the count... - [Update a guardrail](https://soat.ttoss.dev/docs/api/guardrails/update-guardrail.md): Updates an existing guardrail. PATCH /api/v1/guardrails/{guardrail_id} in the SOAT REST API. - [REST API Reference](https://soat.ttoss.dev/docs/api.md): Overview of the SOAT REST API: versioned, authenticated HTTP endpoints that return JSON for every platform operation. - [Create an ingestion rule](https://soat.ttoss.dev/docs/api/ingestion-rules/create-ingestion-rule.md): Creates a rule mapping a content_type glob to a converter. Exactly one of tool_id or agent_id must be set. - [Delete an ingestion rule](https://soat.ttoss.dev/docs/api/ingestion-rules/delete-ingestion-rule.md): Deletes an ingestion rule. DELETE /api/v1/ingestion-rules/{ingestion_rule_id} in the SOAT REST API. - [Get an ingestion rule](https://soat.ttoss.dev/docs/api/ingestion-rules/get-ingestion-rule.md): Returns a specific ingestion rule. GET /api/v1/ingestion-rules/{ingestion_rule_id} in the SOAT REST API. - [List ingestion rules](https://soat.ttoss.dev/docs/api/ingestion-rules/list-ingestion-rules.md): Returns the ingestion rules for a project. GET /api/v1/ingestion-rules in the SOAT REST API. - [Update an ingestion rule](https://soat.ttoss.dev/docs/api/ingestion-rules/update-ingestion-rule.md): Updates fields of an ingestion rule. PATCH /api/v1/ingestion-rules/{ingestion_rule_id} in the SOAT REST API. - [Search knowledge](https://soat.ttoss.dev/docs/api/knowledge/search-knowledge.md): Searches across documents and memories using hybrid retrieval — a vector query and a full-text query per source, fused by reciprocal rank — or by f... - [Create a memory](https://soat.ttoss.dev/docs/api/memories/create-memory.md): Writes a fact to the specified memory store through the standard write algorithm: the content is embedded (or matched to text the store already hol... - [Delete a memory](https://soat.ttoss.dev/docs/api/memories/delete-memory.md): Deletes a memory. DELETE /api/v1/memories/{memory_id} in the SOAT REST API. - [Get memory tags](https://soat.ttoss.dev/docs/api/memories/get-memory-tags.md): Returns all tags attached to the memory. GET /api/v1/memories/{memory_id}/tags in the SOAT REST API. - [Get a memory](https://soat.ttoss.dev/docs/api/memories/get-memory.md): Returns a single memory by ID. GET /api/v1/memories/{memory_id} in the SOAT REST API. - [List memories](https://soat.ttoss.dev/docs/api/memories/list-memories.md): Returns all memories in a memory store. GET /api/v1/memories in the SOAT REST API. - [List a memory's assertions](https://soat.ttoss.dev/docs/api/memories/list-memory-assertions.md): Returns every write that resolved into this memory, oldest first: the one that created it, the duplicates it absorbed, and the assertion that super... - [Merge memory tags](https://soat.ttoss.dev/docs/api/memories/merge-memory-tags.md): Merges provided tags into the memory's existing tags (existing tags are preserved unless overridden) - [Replace memory tags](https://soat.ttoss.dev/docs/api/memories/replace-memory-tags.md): Replaces all tags on the memory with the provided tags (not merged) - [Retract a memory](https://soat.ttoss.dev/docs/api/memories/retract-memory.md): Retires a fact that stopped holding with nothing replacing it. - [Update a memory](https://soat.ttoss.dev/docs/api/memories/update-memory.md): Updates an existing memory. Regenerates the embedding if content changes. - [Create a memory rule](https://soat.ttoss.dev/docs/api/memory-rules/create-memory-rule.md): Creates an ingestion rule on a memory store. POST /api/v1/memory-rules in the SOAT REST API. - [Delete a memory rule](https://soat.ttoss.dev/docs/api/memory-rules/delete-memory-rule.md): Deletes a memory rule. The assertions it wrote are kept; their rule_id becomes null. - [Get a memory rule](https://soat.ttoss.dev/docs/api/memory-rules/get-memory-rule.md): Returns a specific memory rule. GET /api/v1/memory-rules/{memory_rule_id} in the SOAT REST API. - [List memory rules](https://soat.ttoss.dev/docs/api/memory-rules/list-memory-rules.md): Returns memory rules, newest first. GET /api/v1/memory-rules in the SOAT REST API. - [Update a memory rule](https://soat.ttoss.dev/docs/api/memory-rules/update-memory-rule.md): Updates a memory rule. PATCH /api/v1/memory-rules/{memory_rule_id} in the SOAT REST API. - [Create a memory store](https://soat.ttoss.dev/docs/api/memory-stores/create-memory-store.md): Creates a new memory store configuration in a project - [Delete a memory store](https://soat.ttoss.dev/docs/api/memory-stores/delete-memory-store.md): Deletes a memory store configuration. DELETE /api/v1/memory-stores/{memory_store_id} in the SOAT REST API. - [Export a memory store's memories as NDJSON](https://soat.ttoss.dev/docs/api/memory-stores/export-memories.md): Streams one store's memories as newline-delimited JSON — one memory object per line, oldest first. - [Get memory store tags](https://soat.ttoss.dev/docs/api/memory-stores/get-memory-store-tags.md): Returns all tags attached to the memory store. GET /api/v1/memory-stores/{memory_store_id}/tags in the SOAT REST API. - [Get a memory store](https://soat.ttoss.dev/docs/api/memory-stores/get-memory-store.md): Returns a single memory store configuration by ID. GET /api/v1/memory-stores/{memory_store_id} in the SOAT REST API. - [List a memory store's write assertions](https://soat.ttoss.dev/docs/api/memory-stores/list-memory-store-assertions.md): Returns the store's write ledger, newest first: one row per write attempt, skips included. - [List memory stores](https://soat.ttoss.dev/docs/api/memory-stores/list-memory-stores.md): Returns a list of memory store configurations for a project - [Merge memory store tags](https://soat.ttoss.dev/docs/api/memory-stores/merge-memory-store-tags.md): Merges provided tags into the memory store's existing tags (existing tags are preserved unless overridden) - [Replace memory store tags](https://soat.ttoss.dev/docs/api/memory-stores/replace-memory-store-tags.md): Replaces all tags on the memory store with the provided tags (not merged) - [Update a memory store](https://soat.ttoss.dev/docs/api/memory-stores/update-memory-store.md): Updates an existing memory store configuration. PUT /api/v1/memory-stores/{memory_store_id} in the SOAT REST API. - [Declare a metadata schema](https://soat.ttoss.dev/docs/api/metadata-schemas/create-metadata-schema.md): Declares what metadata must satisfy for one resource type under one selector. - [Delete a metadata schema](https://soat.ttoss.dev/docs/api/metadata-schemas/delete-metadata-schema.md): Removes the declaration. Documents already stored keep the metadata they hold — the rule governed writes, not rows. - [Get a metadata schema](https://soat.ttoss.dev/docs/api/metadata-schemas/get-metadata-schema.md): Returns one declaration by id. GET /api/v1/metadata-schemas/{metadata_schema_id} in the SOAT REST API. - [List metadata schemas](https://soat.ttoss.dev/docs/api/metadata-schemas/list-metadata-schemas.md): Returns the declarations in scope, oldest first. resource_type narrows them to one governed resource. - [Update a metadata schema](https://soat.ttoss.dev/docs/api/metadata-schemas/update-metadata-schema.md): Changes the schema, the selector, or both. resource_type is fixed at creation: it decides the selector's spelling and which write path reads the ro... - [Check metadata against what is declared](https://soat.ttoss.dev/docs/api/metadata-schemas/validate-metadata.md): Answers what a write would be told, without writing: a caller preparing a batch learns which declaration would refuse it, and why, before it sends ... - [Create a model route](https://soat.ttoss.dev/docs/api/model-routes/create-model-route.md): Creates a project-scoped model route: a named, ordered list of provider+model targets tried in array order. - [Delete a model route](https://soat.ttoss.dev/docs/api/model-routes/delete-model-route.md): Deletes a model route. DELETE /api/v1/model-routes/{route_id} in the SOAT REST API. - [Get a model route](https://soat.ttoss.dev/docs/api/model-routes/get-model-route.md): Returns a specific model route. GET /api/v1/model-routes/{route_id} in the SOAT REST API. - [List model routes](https://soat.ttoss.dev/docs/api/model-routes/list-model-routes.md): Returns the model routes defined in a project. GET /api/v1/model-routes in the SOAT REST API. - [Update a model route](https://soat.ttoss.dev/docs/api/model-routes/update-model-route.md): Updates a model route's name, targets, retry classes, or breaker configuration. Omitted fields are left unchanged. - [Start the authorization code flow](https://soat.ttoss.dev/docs/api/oauth/authorize-oauth-client.md): The authorization endpoint. PKCE is mandatory — code_challenge is required and - [Exchange a code or refresh token for an access token](https://soat.ttoss.dev/docs/api/oauth/create-oauth-token.md): The token endpoint, serving the authorization_code and refresh_token grants. The client - [Get authorization server metadata](https://soat.ttoss.dev/docs/api/oauth/get-oauth-authorization-server-metadata.md): Returns the RFC 8414 Authorization Server Metadata - [Get protected resource metadata](https://soat.ttoss.dev/docs/api/oauth/get-oauth-protected-resource-metadata.md): Returns the RFC 9728 Protected Resource Metadata. GET /.well-known/oauth-protected-resource in the SOAT REST API. - [Register an OAuth client](https://soat.ttoss.dev/docs/api/oauth/register-oauth-client.md): RFC 7591 Dynamic Client Registration — the. POST /register in the SOAT REST API. - [Cancel an orchestration run](https://soat.ttoss.dev/docs/api/orchestrations/cancel-orchestration-run.md): Cancels a run that has not yet reached a terminal state. - [Create an orchestration](https://soat.ttoss.dev/docs/api/orchestrations/create-orchestration.md): Creates a new orchestration (pipeline) definition in the project. - [Delete an orchestration](https://soat.ttoss.dev/docs/api/orchestrations/delete-orchestration.md): Deletes an orchestration definition and all its runs. - [Get an orchestration run](https://soat.ttoss.dev/docs/api/orchestrations/get-orchestration-run.md): Returns the status, state, and artifacts of a specific run. - [Fetch an archived orchestration version](https://soat.ttoss.dev/docs/api/orchestrations/get-orchestration-version.md): Returns the exact graph a given version describes. - [Get an orchestration](https://soat.ttoss.dev/docs/api/orchestrations/get-orchestration.md): Returns the orchestration with nodes and edges. GET /api/v1/orchestrations/{orchestration_id} in the SOAT REST API. - [Get orchestration queue stats](https://soat.ttoss.dev/docs/api/orchestrations/get-queue-stats.md): Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (queue_depth), how many are currently cla... - [List a run's node executions](https://soat.ttoss.dev/docs/api/orchestrations/list-orchestration-run-node-executions.md): The run's per-node execution records, oldest first: one per node attempt, retries and skipped nodes included. - [List orchestration runs](https://soat.ttoss.dev/docs/api/orchestrations/list-orchestration-runs.md): Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, by status, or by whether the run has a paren... - [List an orchestration's graph versions](https://soat.ttoss.dev/docs/api/orchestrations/list-orchestration-versions.md): Returns the orchestration's archived graphs, newest first. - [List orchestrations](https://soat.ttoss.dev/docs/api/orchestrations/list-orchestrations.md): Returns orchestrations accessible to the caller. GET /api/v1/orchestrations in the SOAT REST API. - [List the projects with queued orchestration work](https://soat.ttoss.dev/docs/api/orchestrations/list-queue-stats-projects.md): One row per project with any queued or claimed task, ordered by project ID: the per-project breakdown of GET /api/v1/orchestrations/queue/stats. - [Pause an orchestration run](https://soat.ttoss.dev/docs/api/orchestrations/pause-orchestration-run.md): Parks a run in flight as awaiting_input at its next checkpoint, with a required_action of type paused naming the pause as operator-initiated rather... - [Restore an archived orchestration graph](https://soat.ttoss.dev/docs/api/orchestrations/restore-orchestration-version.md): Writes an archived version's graph back as the orchestration's live definition, which archives it again as a new version rather than rewinding the ... - [Resume an orchestration run](https://soat.ttoss.dev/docs/api/orchestrations/resume-orchestration-run.md): Re-drives an awaiting_input orchestration run from its last checkpoint. - [Start an orchestration run](https://soat.ttoss.dev/docs/api/orchestrations/start-orchestration-run.md): Creates a new run for the orchestration named by orchestration_id. - [Submit human input](https://soat.ttoss.dev/docs/api/orchestrations/submit-human-input.md): Provides human input to a run that is awaiting_input at a human node. - [Update an orchestration](https://soat.ttoss.dev/docs/api/orchestrations/update-orchestration.md): Partially updates an orchestration definition. PATCH /api/v1/orchestrations/{orchestration_id} in the SOAT REST API. - [Validate an orchestration graph](https://soat.ttoss.dev/docs/api/orchestrations/validate-orchestration.md): Statically validates an orchestration graph without persisting anything. - [Create a policy](https://soat.ttoss.dev/docs/api/policies/create-policy.md): Creates a new global policy. Requires admin role. POST /api/v1/policies in the SOAT REST API. - [Delete a policy](https://soat.ttoss.dev/docs/api/policies/delete-policy.md): Deletes a global policy. Requires admin role. DELETE /api/v1/policies/{policy_id} in the SOAT REST API. - [Get a policy](https://soat.ttoss.dev/docs/api/policies/get-policy.md): Returns details of a specific policy. Requires admin role. - [List all policies](https://soat.ttoss.dev/docs/api/policies/list-policies.md): Returns global policies. Requires admin role. Pass user_id to list only the policies attached to that user. - [Update a policy](https://soat.ttoss.dev/docs/api/policies/update-policy.md): Updates an existing global policy. Requires admin role. - [Create a project](https://soat.ttoss.dev/docs/api/projects/create-project.md): Creates a new project. Requires admin role. POST /api/v1/projects in the SOAT REST API. - [Delete a project](https://soat.ttoss.dev/docs/api/projects/delete-project.md): Deletes a project. Requires admin role. DELETE /api/v1/projects/{project_id} in the SOAT REST API. - [List a project's price rows](https://soat.ttoss.dev/docs/api/projects/get-project-prices.md): Returns the project's per-provider-slug price rows — the middle pricing tier that covers every one of the project's instances of a given provider s... - [Get a project](https://soat.ttoss.dev/docs/api/projects/get-project.md): Returns details of a specific project. GET /api/v1/projects/{project_id} in the SOAT REST API. - [List projects](https://soat.ttoss.dev/docs/api/projects/list-projects.md): Lists projects accessible to the caller. - JWT admin: returns all projects. - JWT regular user: returns only projects granted by the user's policie... - [Pause a project](https://soat.ttoss.dev/docs/api/projects/pause-project.md): Stops everything the project runs, with one call. POST /api/v1/projects/{project_id}/pause in the SOAT REST API. - [Resume a project](https://soat.ttoss.dev/docs/api/projects/resume-project.md): Lifts the project's pause and hands back exactly what it held: the runs and tasks the pause parked are resumed (a run the way resume-orchestration-... - [Upsert a project's price rows](https://soat.ttoss.dev/docs/api/projects/update-project-prices.md): Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provide... - [Update a project](https://soat.ttoss.dev/docs/api/projects/update-project.md): Updates a project's name, its attached guardrails (guardrail_ids — the project-scope baseline governing every tool call by every agent in the proje... - [Create a quota](https://soat.ttoss.dev/docs/api/quotas/create-quota.md): Creates a project-scoped quota. requests is valid for scope: project/api_key; tokens and cost_usd are valid for scope: project/agent/actor; storage... - [Delete a quota](https://soat.ttoss.dev/docs/api/quotas/delete-quota.md): Deletes a quota and drops its window counters. DELETE /api/v1/quotas/{quota_id} in the SOAT REST API. - [Get a quota](https://soat.ttoss.dev/docs/api/quotas/get-quota.md): Returns a specific quota, including current window usage - [List quotas](https://soat.ttoss.dev/docs/api/quotas/list-quotas.md): Returns the quotas defined in a project. GET /api/v1/quotas in the SOAT REST API. - [Update a quota](https://soat.ttoss.dev/docs/api/quotas/update-quota.md): Updates a quota's limit and/or mode. Other fields are immutable. - [Create a secret](https://soat.ttoss.dev/docs/api/secrets/create-secret.md): Creates a new encrypted secret in a project. POST /api/v1/secrets in the SOAT REST API. - [Delete a secret](https://soat.ttoss.dev/docs/api/secrets/delete-secret.md): Deletes a secret. DELETE /api/v1/secrets/{secret_id} in the SOAT REST API. - [Get a secret](https://soat.ttoss.dev/docs/api/secrets/get-secret.md): Returns a specific secret. GET /api/v1/secrets/{secret_id} in the SOAT REST API. - [List secrets](https://soat.ttoss.dev/docs/api/secrets/list-secrets.md): Returns a list of secrets for a project. GET /api/v1/secrets in the SOAT REST API. - [Update a secret](https://soat.ttoss.dev/docs/api/secrets/update-secret.md): Updates a secret's name and/or value. PATCH /api/v1/secrets/{secret_id} in the SOAT REST API. - [Add a user message](https://soat.ttoss.dev/docs/api/sessions/add-session-message.md): Saves a user message to the session. POST /api/v1/sessions/{session_id}/messages in the SOAT REST API. - [Create a session](https://soat.ttoss.dev/docs/api/sessions/create-session.md): Creates a new session for the specified agent, along with the underlying conversation, so the caller only needs this single call to start interacti... - [Delete a session](https://soat.ttoss.dev/docs/api/sessions/delete-session.md): Deletes the session and its underlying conversation and messages. The session's actor is not deleted. - [Fork a session](https://soat.ttoss.dev/docs/api/sessions/fork-session.md): Branches a new session from a point in this session's history: same context, different continuation. - [Trigger agent generation](https://soat.ttoss.dev/docs/api/sessions/generate-session-response.md): Triggers the agent to generate a response based on the current conversation. Background by default: returns 202 Accepted immediately while the gene... - [Get session tags](https://soat.ttoss.dev/docs/api/sessions/get-session-tags.md): Returns the session's tags object. GET /api/v1/sessions/{session_id}/tags in the SOAT REST API. - [Get a session](https://soat.ttoss.dev/docs/api/sessions/get-session.md): Returns details of a single session, including a usage roll-up of what its generations cost. - [List a session's forks](https://soat.ttoss.dev/docs/api/sessions/list-session-forks.md): Returns the sessions forked directly from this one. One level of lineage: a fork of a fork is listed under its own parent. - [List sessions](https://soat.ttoss.dev/docs/api/sessions/list-sessions.md): Returns sessions the caller can access, optionally filtered by agent, actor and status. - [Merge session tags](https://soat.ttoss.dev/docs/api/sessions/merge-session-tags.md): Merges the provided tags into the session's existing tags. - [Replace session tags](https://soat.ttoss.dev/docs/api/sessions/replace-session-tags.md): Replaces all tags on the session. PUT /api/v1/sessions/{session_id}/tags in the SOAT REST API. - [Submit tool outputs](https://soat.ttoss.dev/docs/api/sessions/submit-session-tool-outputs.md): Submits client tool outputs for a generation that returned requires_action. The agent continues its loop and returns the final or next requires_act... - [Update a session](https://soat.ttoss.dev/docs/api/sessions/update-session.md): Updates the session name and/or status. PATCH /api/v1/sessions/{session_id} in the SOAT REST API. - [Accept a share](https://soat.ttoss.dev/docs/api/shares/accept-share.md): Records the grantee project's acceptance, which is what makes the share grant anything. Idempotent. - [Create a share](https://soat.ttoss.dev/docs/api/shares/create-share.md): Offers one of the project's resources to another project — or, with grantee: '', to every project — with the listed actions. - [Delete an acceptance](https://soat.ttoss.dev/docs/api/shares/delete-share-acceptance.md): Removes one project's acceptance, which lets a project the publisher revoked accept again. - [Delete a share](https://soat.ttoss.dev/docs/api/shares/delete-share.md): Deletes a share and every acceptance of it. Each project whose acceptance was active gets a share_revoked activity entry. - [Get a share](https://soat.ttoss.dev/docs/api/shares/get-share.md): Returns a share with the grantee's view of the resource in projection. - [List a share's acceptances](https://soat.ttoss.dev/docs/api/shares/list-share-acceptances.md): The projects that accepted the share, for its publisher. - [List a grantee's references to a shared resource](https://soat.ttoss.dev/docs/api/shares/list-share-references.md): The grantee project's own resources that name the resource the share grants: agents binding a shared tool, pipelines stepping through it, ingestion... - [List shares](https://soat.ttoss.dev/docs/api/shares/list-shares.md): With role=publisher (the default), the shares the project published. - [Resume a share](https://soat.ttoss.dev/docs/api/shares/resume-share.md): Clears suspended_at. Each project with an active acceptance gets a share_resumed activity entry. Idempotent. - [Revoke an acceptance](https://soat.ttoss.dev/docs/api/shares/revoke-share-acceptance.md): The publisher cutting one consumer. POST /api/v1/shares/{share_id}/acceptances/{acceptance_id}/revoke in the SOAT REST API. - [Revoke a share](https://soat.ttoss.dev/docs/api/shares/revoke-share.md): As the publisher, revokes the whole share and every acceptance of it; terminal. Each project whose acceptance was active gets a share_revoked activ... - [Suspend a share](https://soat.ttoss.dev/docs/api/shares/suspend-share.md): Sets suspended_at, which denies every acceptance without removing any. Reversible with resume; nobody re-accepts. - [Update a share](https://soat.ttoss.dev/docs/api/shares/update-share.md): Changes a share's cap, as its publisher. The next call through the share reads the new cap; a changed window starts a fresh count. - [Create a task](https://soat.ttoss.dev/docs/api/tasks/create-task.md): Creates a task bound to a workflow. POST /api/v1/tasks in the SOAT REST API. - [Delete a task](https://soat.ttoss.dev/docs/api/tasks/delete-task.md): Deletes a task. Its transition history cascades. DELETE /api/v1/tasks/{task_id} in the SOAT REST API. - [Get task history](https://soat.ttoss.dev/docs/api/tasks/get-task-history.md): Returns the append-only transition history of a task. - [Get a task](https://soat.ttoss.dev/docs/api/tasks/get-task.md): Retrieves a task, including its active dispatch and automation status. - [List tasks](https://soat.ttoss.dev/docs/api/tasks/list-tasks.md): Lists tasks (the board query). Filter by workflow, state, status, automation status, or assignee — GET /tasks?workflow_id=...&state=... is one boar... - [Pause a task](https://soat.ttoss.dev/docs/api/tasks/pause-task.md): Pauses a task's automation. POST /api/v1/tasks/{task_id}/pause in the SOAT REST API. - [Resume a task](https://soat.ttoss.dev/docs/api/tasks/resume-task.md): Lifts a task's pause. POST /api/v1/tasks/{task_id}/resume in the SOAT REST API. - [Transition a task](https://soat.ttoss.dev/docs/api/tasks/transition-task.md): Fires a named transition on a task. The transition must exist in the workflow and be valid from the task's current state; its guard must pass. - [Update a task](https://soat.ttoss.dev/docs/api/tasks/update-task.md): Updates a task's payload, title, or assignee. state is never directly writable — move it with a transition; sending a state field is rejected as an... - [Call a tool](https://soat.ttoss.dev/docs/api/tools/call-tool.md): Directly invokes a tool and returns its output. POST /api/v1/tools/{tool_id}/call in the SOAT REST API. - [Create a tool](https://soat.ttoss.dev/docs/api/tools/create-tool.md): Creates a new tool in the project. POST /api/v1/tools in the SOAT REST API. - [Delete a tool](https://soat.ttoss.dev/docs/api/tools/delete-tool.md): Deletes a tool by ID. DELETE /api/v1/tools/{tool_id} in the SOAT REST API. - [Get a tool](https://soat.ttoss.dev/docs/api/tools/get-tool.md): Returns a single tool by ID. GET /api/v1/tools/{tool_id} in the SOAT REST API. - [List tools](https://soat.ttoss.dev/docs/api/tools/list-tools.md): Returns all tools in the project. GET /api/v1/tools in the SOAT REST API. - [Update a tool](https://soat.ttoss.dev/docs/api/tools/update-tool.md): Updates an existing tool. PATCH /api/v1/tools/{tool_id} in the SOAT REST API. - [Get trace tree](https://soat.ttoss.dev/docs/api/traces/get-trace-tree.md): Returns the full execution tree rooted at the given trace (or its root if the given trace is a child). Each node represents one agent's execution s... - [Get a trace](https://soat.ttoss.dev/docs/api/traces/get-trace.md): Returns a single trace by ID. GET /api/v1/traces/{trace_id} in the SOAT REST API. - [List traces](https://soat.ttoss.dev/docs/api/traces/list-traces.md): Returns a paginated list of execution traces for the project. - [Purge trace content](https://soat.ttoss.dev/docs/api/traces/purge-trace-content.md): Deletes the trace's steps object from storage and clears its content columns (file_id, error), cascading to every descendant trace and to all of th... - [Create a trigger](https://soat.ttoss.dev/docs/api/triggers/create-trigger.md): Creates a new trigger for a project. POST /api/v1/triggers in the SOAT REST API. - [Delete a trigger](https://soat.ttoss.dev/docs/api/triggers/delete-trigger.md): Deletes a trigger. DELETE /api/v1/triggers/{trigger_id} in the SOAT REST API. - [Fire a trigger](https://soat.ttoss.dev/docs/api/triggers/fire-trigger.md): Fires a trigger synchronously and returns the terminal firing record. - [Get a trigger firing](https://soat.ttoss.dev/docs/api/triggers/get-trigger-firing.md): Retrieves the details of a specific trigger firing - [Get trigger secret](https://soat.ttoss.dev/docs/api/triggers/get-trigger-secret.md): Retrieves the signing secret for a webhook trigger - [Get a trigger](https://soat.ttoss.dev/docs/api/triggers/get-trigger.md): Retrieves the details of a specific trigger. GET /api/v1/triggers/{trigger_id} in the SOAT REST API. - [List trigger firings](https://soat.ttoss.dev/docs/api/triggers/list-trigger-firings.md): Lists firings for a trigger (trigger_id is required). - [List triggers](https://soat.ttoss.dev/docs/api/triggers/list-triggers.md): Lists triggers. Filter by project, starter type, or target type. - [Rotate trigger secret](https://soat.ttoss.dev/docs/api/triggers/rotate-trigger-secret.md): Rotates the signing secret for a webhook trigger. POST /api/v1/triggers/{trigger_id}/rotate-secret in the SOAT REST API. - [Update a trigger](https://soat.ttoss.dev/docs/api/triggers/update-trigger.md): Updates an existing trigger's configuration. The type is immutable. - [Create a usage threshold](https://soat.ttoss.dev/docs/api/usage/create-usage-threshold.md): Creates a usage alert threshold on a project. POST /api/v1/usage/thresholds in the SOAT REST API. - [Delete a usage threshold](https://soat.ttoss.dev/docs/api/usage/delete-usage-threshold.md): Deletes a usage threshold, resetting its fire state. Recreating a threshold starts its once-per-window / hysteresis state fresh. - [Get the price book](https://soat.ttoss.dev/docs/api/usage/get-price-book.md): Returns the global price book — the versioned per-provider/model unit prices used to compute usage cost at write time. Readable by any authenticate... - [Get aggregated usage for a project](https://soat.ttoss.dev/docs/api/usage/get-usage-aggregate.md): Returns a project's usage rolled up over an optional [from, to] time window, optionally bucketed by a single dimension and narrowed by any combinat... - [Get a generation or orchestration-run billing receipt](https://soat.ttoss.dev/docs/api/usage/get-usage-receipt.md): Returns a billing receipt. GET /api/v1/usage/receipt in the SOAT REST API. - [List usage events](https://soat.ttoss.dev/docs/api/usage/list-usage-events.md): Returns the raw usage events the caller can access, most recent first, narrowed by any combination of the same filters the aggregate takes — agent… - [List usage thresholds](https://soat.ttoss.dev/docs/api/usage/list-usage-thresholds.md): Lists the usage alert thresholds the caller can access, optionally filtered by project_id. - [Upsert price-book rows](https://soat.ttoss.dev/docs/api/usage/upsert-price-book.md): Upserts price rows keyed on (provider, model, effective_from). - [Attach policies to a user](https://soat.ttoss.dev/docs/api/users/attach-user-policies.md): Replaces the user's policy list with the provided policy IDs. Requires admin role. - [Create the first admin user](https://soat.ttoss.dev/docs/api/users/bootstrap-user.md): Creates the first admin user. Returns 409 if any user already exists. - [Create a user](https://soat.ttoss.dev/docs/api/users/create-user.md): Creates a new user in the system. POST /api/v1/users in the SOAT REST API. - [Delete a user by ID](https://soat.ttoss.dev/docs/api/users/delete-user.md): Deletes a specific user. DELETE /api/v1/users/{user_id} in the SOAT REST API. - [Get the current authenticated user](https://soat.ttoss.dev/docs/api/users/get-current-user.md): Returns the profile of the currently authenticated user - [Get a user by ID](https://soat.ttoss.dev/docs/api/users/get-user.md): Returns the data of a specific user. GET /api/v1/users/{user_id} in the SOAT REST API. - [List all users](https://soat.ttoss.dev/docs/api/users/list-users.md): Returns a list of all users. GET /api/v1/users in the SOAT REST API. - [Login user](https://soat.ttoss.dev/docs/api/users/login-user.md): Authenticates a user and returns a JWT token. POST /api/v1/users/login in the SOAT REST API. - [Create a webhook](https://soat.ttoss.dev/docs/api/webhooks/create-webhook.md): Creates a new webhook for a project. POST /api/v1/webhooks in the SOAT REST API. - [Delete a webhook](https://soat.ttoss.dev/docs/api/webhooks/delete-webhook.md): Deletes a webhook and stops all event deliveries. DELETE /api/v1/webhooks/{webhook_id} in the SOAT REST API. - [Get a delivery](https://soat.ttoss.dev/docs/api/webhooks/get-webhook-delivery.md): Retrieves the details of a specific webhook delivery - [Get webhook secret](https://soat.ttoss.dev/docs/api/webhooks/get-webhook-secret.md): Retrieves the signing secret for the specified webhook - [Get a webhook](https://soat.ttoss.dev/docs/api/webhooks/get-webhook.md): Retrieves the details of a specific webhook. GET /api/v1/webhooks/{webhook_id} in the SOAT REST API. - [List webhook deliveries](https://soat.ttoss.dev/docs/api/webhooks/list-webhook-deliveries.md): Lists event deliveries for a webhook (webhook_id is required). - [List webhooks](https://soat.ttoss.dev/docs/api/webhooks/list-webhooks.md): Lists webhooks. Use the project_id query parameter to filter by project. - [Redeliver a webhook delivery](https://soat.ttoss.dev/docs/api/webhooks/redeliver-webhook-delivery.md): Queues the stored payload of an existing delivery to be sent again. - [Rotate webhook secret](https://soat.ttoss.dev/docs/api/webhooks/rotate-webhook-secret.md): Rotates the secret key for the specified webhook. POST /api/v1/webhooks/{webhook_id}/rotate-secret in the SOAT REST API. - [Update a webhook](https://soat.ttoss.dev/docs/api/webhooks/update-webhook.md): Updates an existing webhook's configuration. PUT /api/v1/webhooks/{webhook_id} in the SOAT REST API. - [Create a workflow](https://soat.ttoss.dev/docs/api/workflows/create-workflow.md): Creates a new workflow definition. The definition is statically validated. - [Delete a workflow](https://soat.ttoss.dev/docs/api/workflows/delete-workflow.md): Deletes a workflow. Rejected while open tasks exist. - [Fetch an archived workflow version](https://soat.ttoss.dev/docs/api/workflows/get-workflow-version.md): Returns the exact state machine a given version describes. - [Get a workflow](https://soat.ttoss.dev/docs/api/workflows/get-workflow.md): Retrieves a workflow definition. GET /api/v1/workflows/{workflow_id} in the SOAT REST API. - [List a workflow's versions](https://soat.ttoss.dev/docs/api/workflows/list-workflow-versions.md): Returns the workflow's archived state machines, newest first. - [List workflows](https://soat.ttoss.dev/docs/api/workflows/list-workflows.md): Lists workflow definitions in a project. GET /api/v1/workflows in the SOAT REST API. - [Restore an archived workflow state machine](https://soat.ttoss.dev/docs/api/workflows/restore-workflow-version.md): Writes an archived version's state machine back as the workflow's live definition, which archives it again as a new version rather than rewinding t... - [Update a workflow](https://soat.ttoss.dev/docs/api/workflows/update-workflow.md): Updates a workflow definition. Structural changes (states/transitions) are re-validated. - [Activity CLI Commands](https://soat.ttoss.dev/docs/cli/commands/activity.md): The soat CLI commands for the Activity module, with usage and every option, generated from the OpenAPI spec. - [Actors CLI Commands](https://soat.ttoss.dev/docs/cli/commands/actors.md): The soat CLI commands for the Actors module, with usage and every option, generated from the OpenAPI spec. - [Agents CLI Commands](https://soat.ttoss.dev/docs/cli/commands/agents.md): The soat CLI commands for the Agents module, with usage and every option, generated from the OpenAPI spec. - [AI Providers CLI Commands](https://soat.ttoss.dev/docs/cli/commands/ai-providers.md): The soat CLI commands for the AI Providers module, with usage and every option, generated from the OpenAPI spec. - [API Keys CLI Commands](https://soat.ttoss.dev/docs/cli/commands/api-keys.md): The soat CLI commands for the API Keys module, with usage and every option, generated from the OpenAPI spec. - [Approvals CLI Commands](https://soat.ttoss.dev/docs/cli/commands/approvals.md): The soat CLI commands for the Approvals module, with usage and every option, generated from the OpenAPI spec. - [Audit Log CLI Commands](https://soat.ttoss.dev/docs/cli/commands/audit-log.md): The soat CLI commands for the Audit Log module, with usage and every option, generated from the OpenAPI spec. - [Chains CLI Commands](https://soat.ttoss.dev/docs/cli/commands/chains.md): The soat CLI commands for the Chains module, with usage and every option, generated from the OpenAPI spec. - [Chats CLI Commands](https://soat.ttoss.dev/docs/cli/commands/chats.md): The soat CLI commands for the Chats module, with usage and every option, generated from the OpenAPI spec. - [Conversations CLI Commands](https://soat.ttoss.dev/docs/cli/commands/conversations.md): The soat CLI commands for the Conversations module, with usage and every option, generated from the OpenAPI spec. - [Deciders CLI Commands](https://soat.ttoss.dev/docs/cli/commands/deciders.md): The soat CLI commands for the Deciders module, with usage and every option, generated from the OpenAPI spec. - [Documents CLI Commands](https://soat.ttoss.dev/docs/cli/commands/documents.md): The soat CLI commands for the Documents module, with usage and every option, generated from the OpenAPI spec. - [Embeddings CLI Commands](https://soat.ttoss.dev/docs/cli/commands/embeddings.md): The soat CLI commands for the Embeddings module, with usage and every option, generated from the OpenAPI spec. - [Evaluations CLI Commands](https://soat.ttoss.dev/docs/cli/commands/evaluations.md): The soat CLI commands for the Evaluations module, with usage and every option, generated from the OpenAPI spec. - [Exceptions CLI Commands](https://soat.ttoss.dev/docs/cli/commands/exceptions.md): The soat CLI commands for the Exceptions module, with usage and every option, generated from the OpenAPI spec. - [Files CLI Commands](https://soat.ttoss.dev/docs/cli/commands/files.md): The soat CLI commands for the Files module, with usage and every option, generated from the OpenAPI spec. - [Formations CLI Commands](https://soat.ttoss.dev/docs/cli/commands/formations.md): The soat CLI commands for the Formations module, with usage and every option, generated from the OpenAPI spec. - [Generations CLI Commands](https://soat.ttoss.dev/docs/cli/commands/generations.md): The soat CLI commands for the Generations module, with usage and every option, generated from the OpenAPI spec. - [Guardrails CLI Commands](https://soat.ttoss.dev/docs/cli/commands/guardrails.md): The soat CLI commands for the Guardrails module, with usage and every option, generated from the OpenAPI spec. - [Ingestion Rules CLI Commands](https://soat.ttoss.dev/docs/cli/commands/ingestion-rules.md): The soat CLI commands for the Ingestion Rules module, with usage and every option, generated from the OpenAPI spec. - [Knowledge CLI Commands](https://soat.ttoss.dev/docs/cli/commands/knowledge.md): The soat CLI commands for the Knowledge module, with usage and every option, generated from the OpenAPI spec. - [Memories CLI Commands](https://soat.ttoss.dev/docs/cli/commands/memories.md): The soat CLI commands for the Memories module, with usage and every option, generated from the OpenAPI spec. - [Memory Rules CLI Commands](https://soat.ttoss.dev/docs/cli/commands/memory-rules.md): The soat CLI commands for the Memory Rules module, with usage and every option, generated from the OpenAPI spec. - [MemoryStores CLI Commands](https://soat.ttoss.dev/docs/cli/commands/memory-stores.md): The soat CLI commands for the MemoryStores module, with usage and every option, generated from the OpenAPI spec. - [Metadata Schemas CLI Commands](https://soat.ttoss.dev/docs/cli/commands/metadata-schemas.md): The soat CLI commands for the Metadata Schemas module, with usage and every option, generated from the OpenAPI spec. - [Model Routes CLI Commands](https://soat.ttoss.dev/docs/cli/commands/model-routes.md): The soat CLI commands for the Model Routes module, with usage and every option, generated from the OpenAPI spec. - [OAuth CLI Commands](https://soat.ttoss.dev/docs/cli/commands/oauth.md): The soat CLI commands for the OAuth module, with usage and every option, generated from the OpenAPI spec. - [Orchestrations CLI Commands](https://soat.ttoss.dev/docs/cli/commands/orchestrations.md): The soat CLI commands for the Orchestrations module, with usage and every option, generated from the OpenAPI spec. - [Policies CLI Commands](https://soat.ttoss.dev/docs/cli/commands/policies.md): The soat CLI commands for the Policies module, with usage and every option, generated from the OpenAPI spec. - [Projects CLI Commands](https://soat.ttoss.dev/docs/cli/commands/projects.md): The soat CLI commands for the Projects module, with usage and every option, generated from the OpenAPI spec. - [Quotas CLI Commands](https://soat.ttoss.dev/docs/cli/commands/quotas.md): The soat CLI commands for the Quotas module, with usage and every option, generated from the OpenAPI spec. - [Secrets CLI Commands](https://soat.ttoss.dev/docs/cli/commands/secrets.md): The soat CLI commands for the Secrets module, with usage and every option, generated from the OpenAPI spec. - [Sessions CLI Commands](https://soat.ttoss.dev/docs/cli/commands/sessions.md): The soat CLI commands for the Sessions module, with usage and every option, generated from the OpenAPI spec. - [Shares CLI Commands](https://soat.ttoss.dev/docs/cli/commands/shares.md): The soat CLI commands for the Shares module, with usage and every option, generated from the OpenAPI spec. - [Tasks CLI Commands](https://soat.ttoss.dev/docs/cli/commands/tasks.md): The soat CLI commands for the Tasks module, with usage and every option, generated from the OpenAPI spec. - [Tools CLI Commands](https://soat.ttoss.dev/docs/cli/commands/tools.md): The soat CLI commands for the Tools module, with usage and every option, generated from the OpenAPI spec. - [Traces CLI Commands](https://soat.ttoss.dev/docs/cli/commands/traces.md): The soat CLI commands for the Traces module, with usage and every option, generated from the OpenAPI spec. - [Triggers CLI Commands](https://soat.ttoss.dev/docs/cli/commands/triggers.md): The soat CLI commands for the Triggers module, with usage and every option, generated from the OpenAPI spec. - [Usage CLI Commands](https://soat.ttoss.dev/docs/cli/commands/usage.md): The soat CLI commands for the Usage module, with usage and every option, generated from the OpenAPI spec. - [Users CLI Commands](https://soat.ttoss.dev/docs/cli/commands/users.md): The soat CLI commands for the Users module, with usage and every option, generated from the OpenAPI spec. - [Webhooks CLI Commands](https://soat.ttoss.dev/docs/cli/commands/webhooks.md): The soat CLI commands for the Webhooks module, with usage and every option, generated from the OpenAPI spec. - [Workflows CLI Commands](https://soat.ttoss.dev/docs/cli/commands/workflows.md): The soat CLI commands for the Workflows module, with usage and every option, generated from the OpenAPI spec. - [Choosing a Client Surface](https://soat.ttoss.dev/docs/client-surfaces.md): Compare SOAT's four client surfaces — REST API, CLI, TypeScript SDK, and MCP — and pick the one that fits where your code runs. - [Amazon Bedrock AgentCore vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/aws-bedrock-agentcore.md): Amazon Bedrock AgentCore and SOAT compared on 15 agent capabilities, 11 vs 12 native, each rating linked to its source. - [Microsoft Foundry Agent Service vs SOAT](https://soat.ttoss.dev/docs/compare/azure-ai-foundry-agent-service.md): Microsoft Foundry Agent Service and SOAT compared on 15 agent capabilities, 12 vs 12 native, each rating linked to its source. - [Claude Developer Platform vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/claude-developer-platform.md): Claude Developer Platform and SOAT compared on 15 agent capabilities, 7 vs 12 native, each rating linked to its source. - [CrewAI vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/crewai.md): CrewAI and SOAT compared on 15 agent capabilities, 6 vs 12 native, each rating linked to its source. - [DeepSeek Harness vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/deepseek-harness.md): DeepSeek Harness and SOAT compared on 15 agent capabilities, 4 vs 12 native, each rating linked to its source. - [Dify vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/dify.md): Dify and SOAT compared on 15 agent capabilities, 8 vs 12 native, each rating linked to its source. - [Hermes Agent vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/hermes-agent.md): Hermes Agent and SOAT compared on 15 agent capabilities, 7 vs 12 native, each rating linked to its source. - [AI Agent Platforms Compared with SOAT](https://soat.ttoss.dev/docs/compare.md): 13 AI agent platforms, frameworks and infrastructure projects compared with SOAT, capability by capability, each rating linked to its source. - [LangChain / LangGraph vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/langchain.md): LangChain / LangGraph and SOAT compared on 15 agent capabilities, 5 vs 12 native, each rating linked to its source. - [Letta vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/letta.md): Letta and SOAT compared on 15 agent capabilities, 7 vs 12 native, each rating linked to its source. - [Microsoft Agent Framework vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/microsoft-agent-framework.md): Microsoft Agent Framework and SOAT compared on 15 agent capabilities, 6 vs 12 native, each rating linked to its source. - [OpenAI Agents platform vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/openai-agents-platform.md): OpenAI Agents platform and SOAT compared on 15 agent capabilities, 8 vs 12 native, each rating linked to its source. - [OpenClaw vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/openclaw.md): OpenClaw and SOAT compared on 15 agent capabilities, 6 vs 12 native, each rating linked to its source. - [Vertex AI Agent Builder vs SOAT: Feature Comparison](https://soat.ttoss.dev/docs/compare/vertex-ai-agent-builder.md): Vertex AI Agent Builder and SOAT compared on 15 agent capabilities, 8 vs 12 native, each rating linked to its source. - [Error Codes](https://soat.ttoss.dev/docs/error-codes.md): Every error code the SOAT API can return, with its HTTP status and what to do about it. - [Actor Formation Resource](https://soat.ttoss.dev/docs/formations-types/actor.md): Creates a stateful conversation actor that wraps an agent or chat session and optionally links to a memory store. - [Agent Formation Resource](https://soat.ttoss.dev/docs/formations-types/agent.md): Creates an AI agent backed by a provider. The agent handles requests, runs tools, and can be attached to actors. - [Ai Provider Formation Resource](https://soat.ttoss.dev/docs/formations-types/ai-provider.md): Configures an LLM provider connection (API key, model, endpoint) that agents use to generate responses. - [Api Key Formation Resource](https://soat.ttoss.dev/docs/formations-types/api-key.md): Creates an API key scoped to the formation's project and optionally restricted by a set of policies. - [Chat Formation Resource](https://soat.ttoss.dev/docs/formations-types/chat.md): Creates a chat within the formation's project, connected either to an AI provider or — by declaring no provider — to the project's default_model_ro... - [Conversation Formation Resource](https://soat.ttoss.dev/docs/formations-types/conversation.md): Creates a conversation within the formation's project. - [Dataset Item Formation Resource](https://soat.ttoss.dev/docs/formations-types/dataset-item.md): One test case in a dataset: the messages sent to the agent under test and, optionally, the reference answer scorers compare against. - [Dataset Formation Resource](https://soat.ttoss.dev/docs/formations-types/dataset.md): Declares an evaluation dataset — the named fixture suite an eval runs an agent against. - [Decider Formation Resource](https://soat.ttoss.dev/docs/formations-types/decider.md): Creates a decider — a versioned question set answered against a caller's input. - [Document Formation Resource](https://soat.ttoss.dev/docs/formations-types/document.md): Stores a text document in a project, optionally indexing it for knowledge retrieval. - [Eval Formation Resource](https://soat.ttoss.dev/docs/formations-types/eval.md): Binds an agent under test to a dataset and the scorers its outputs are judged by. pass_threshold is the pass rate a run must reach for its passed v... - [File Formation Resource](https://soat.ttoss.dev/docs/formations-types/file.md): Registers a file record within the formation's project. - [Guardrail Formation Resource](https://soat.ttoss.dev/docs/formations-types/guardrail.md): Creates a guardrail — an action-class document (class/guard) that gates tool-call autonomy. - [Formation Resource Types](https://soat.ttoss.dev/docs/formations-types.md): Every resource type a SOAT formation template can declare, with the properties each one takes. - [Ingestion Rule Formation Resource](https://soat.ttoss.dev/docs/formations-types/ingestion-rule.md): Routes a file content_type to a converter (tool or agent) so ingestion can turn non-native files (images, audio, scanned PDFs) into Documents. - [Memory Rule Formation Resource](https://soat.ttoss.dev/docs/formations-types/memory-rule.md): Declares what a memory store accepts from completed agent turns: a selector, an event, and a handler. - [Memory Store Formation Resource](https://soat.ttoss.dev/docs/formations-types/memory-store.md): Creates a named memory store that actors can read from and write to across conversations. - [Memory Formation Resource](https://soat.ttoss.dev/docs/formations-types/memory.md): Adds a single memory to a memory store. The memory resource type in a SOAT formation template. - [Metadata Schema Formation Resource](https://soat.ttoss.dev/docs/formations-types/metadata-schema.md): Declares what metadata must satisfy for one resource type under one selector, so a template ships the corpus and the rule governing it together. re... - [Model Route Formation Resource](https://soat.ttoss.dev/docs/formations-types/model-route.md): Declares a model route within the formation's project: a named, ordered list of provider+model failover targets with retry and circuit-breaker conf... - [Orchestration Formation Resource](https://soat.ttoss.dev/docs/formations-types/orchestration.md): Creates a DAG orchestration that wires agents, tools, and knowledge lookups into a repeatable pipeline within the formation's project. - [Policy Formation Resource](https://soat.ttoss.dev/docs/formations-types/policy.md): Creates an access-control policy within the formation's project. - [Project Price Formation Resource](https://soat.ttoss.dev/docs/formations-types/project-price.md): Upserts a project-scoped price row so a deployed stack produces billing-grade usage cost with no out-of-band pricing step. - [Quota Formation Resource](https://soat.ttoss.dev/docs/formations-types/quota.md): Creates a quota — a project-scoped cap that blocks (enforce) or reports (monitor) when a windowed aggregate is exceeded. requests quotas are enforc... - [Secret Formation Resource](https://soat.ttoss.dev/docs/formations-types/secret.md): Creates an encrypted secret within the formation's project. - [Session Formation Resource](https://soat.ttoss.dev/docs/formations-types/session.md): Creates a session attached to an agent within the formation's project. - [Tool Formation Resource](https://soat.ttoss.dev/docs/formations-types/tool.md): Defines a tool (HTTP endpoint, MCP server, SOAT action, or pipeline) that agents can invoke during a generation. - [Trigger Formation Resource](https://soat.ttoss.dev/docs/formations-types/trigger.md): Binds a starter (manual, webhook, schedule, or event) to an executable target (orchestration, agent, tool, or eval). - [Webhook Formation Resource](https://soat.ttoss.dev/docs/formations-types/webhook.md): Registers an HTTPS endpoint to receive SOAT platform event notifications. - [Workflow Formation Resource](https://soat.ttoss.dev/docs/formations-types/workflow.md): Creates a workflow — a state-machine definition (named states, allowed transitions, guards, and per-state automation) that tasks live in. - [Introduction](https://soat.ttoss.dev/docs/introduction.md): SOAT is open-source infrastructure for production-ready AI agents: IAM, storage, vector search, memory, orchestration, RAG, and a full MCP server. - [Activity MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/activity.md): The MCP tools the SOAT server exposes for the Activity module, with the arguments each tool takes. - [Actors MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/actors.md): The MCP tools the SOAT server exposes for the Actors module, with the arguments each tool takes. - [Agents MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/agents.md): The MCP tools the SOAT server exposes for the Agents module, with the arguments each tool takes. - [AI Providers MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/ai-providers.md): The MCP tools the SOAT server exposes for the AI Providers module, with the arguments each tool takes. - [API Keys MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/api-keys.md): The MCP tools the SOAT server exposes for the API Keys module, with the arguments each tool takes. - [Approvals MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/approvals.md): The MCP tools the SOAT server exposes for the Approvals module, with the arguments each tool takes. - [Audit Log MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/audit-log.md): The MCP tools the SOAT server exposes for the Audit Log module, with the arguments each tool takes. - [Chains MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/chains.md): The MCP tools the SOAT server exposes for the Chains module, with the arguments each tool takes. - [Chats MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/chats.md): The MCP tools the SOAT server exposes for the Chats module, with the arguments each tool takes. - [Conversations MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/conversations.md): The MCP tools the SOAT server exposes for the Conversations module, with the arguments each tool takes. - [Deciders MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/deciders.md): The MCP tools the SOAT server exposes for the Deciders module, with the arguments each tool takes. - [Documents MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/documents.md): The MCP tools the SOAT server exposes for the Documents module, with the arguments each tool takes. - [Embeddings MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/embeddings.md): The MCP tools the SOAT server exposes for the Embeddings module, with the arguments each tool takes. - [Evaluations MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/evaluations.md): The MCP tools the SOAT server exposes for the Evaluations module, with the arguments each tool takes. - [Exceptions MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/exceptions.md): The MCP tools the SOAT server exposes for the Exceptions module, with the arguments each tool takes. - [Files MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/files.md): The MCP tools the SOAT server exposes for the Files module, with the arguments each tool takes. - [Formations MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/formations.md): The MCP tools the SOAT server exposes for the Formations module, with the arguments each tool takes. - [Generations MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/generations.md): The MCP tools the SOAT server exposes for the Generations module, with the arguments each tool takes. - [Guardrails MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/guardrails.md): The MCP tools the SOAT server exposes for the Guardrails module, with the arguments each tool takes. - [Ingestion Rules MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/ingestion-rules.md): The MCP tools the SOAT server exposes for the Ingestion Rules module, with the arguments each tool takes. - [Knowledge MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/knowledge.md): The MCP tools the SOAT server exposes for the Knowledge module, with the arguments each tool takes. - [Memories MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/memories.md): The MCP tools the SOAT server exposes for the Memories module, with the arguments each tool takes. - [Memory Rules MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/memory-rules.md): The MCP tools the SOAT server exposes for the Memory Rules module, with the arguments each tool takes. - [MemoryStores MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/memory-stores.md): The MCP tools the SOAT server exposes for the MemoryStores module, with the arguments each tool takes. - [Metadata Schemas MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/metadata-schemas.md): The MCP tools the SOAT server exposes for the Metadata Schemas module, with the arguments each tool takes. - [Model Routes MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/model-routes.md): The MCP tools the SOAT server exposes for the Model Routes module, with the arguments each tool takes. - [Orchestrations MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/orchestrations.md): The MCP tools the SOAT server exposes for the Orchestrations module, with the arguments each tool takes. - [Policies MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/policies.md): The MCP tools the SOAT server exposes for the Policies module, with the arguments each tool takes. - [Projects MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/projects.md): The MCP tools the SOAT server exposes for the Projects module, with the arguments each tool takes. - [Quotas MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/quotas.md): The MCP tools the SOAT server exposes for the Quotas module, with the arguments each tool takes. - [Secrets MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/secrets.md): The MCP tools the SOAT server exposes for the Secrets module, with the arguments each tool takes. - [Sessions MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/sessions.md): The MCP tools the SOAT server exposes for the Sessions module, with the arguments each tool takes. - [Shares MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/shares.md): The MCP tools the SOAT server exposes for the Shares module, with the arguments each tool takes. - [Tasks MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/tasks.md): The MCP tools the SOAT server exposes for the Tasks module, with the arguments each tool takes. - [Tools MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/tools.md): The MCP tools the SOAT server exposes for the Tools module, with the arguments each tool takes. - [Traces MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/traces.md): The MCP tools the SOAT server exposes for the Traces module, with the arguments each tool takes. - [Triggers MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/triggers.md): The MCP tools the SOAT server exposes for the Triggers module, with the arguments each tool takes. - [Usage MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/usage.md): The MCP tools the SOAT server exposes for the Usage module, with the arguments each tool takes. - [Users MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/users.md): The MCP tools the SOAT server exposes for the Users module, with the arguments each tool takes. - [Webhooks MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/webhooks.md): The MCP tools the SOAT server exposes for the Webhooks module, with the arguments each tool takes. - [Workflows MCP Tools](https://soat.ttoss.dev/docs/mcp/tools/workflows.md): The MCP tools the SOAT server exposes for the Workflows module, with the arguments each tool takes. - [Permissions Reference](https://soat.ttoss.dev/docs/permissions.md): > This page is auto-generated. Do not edit manually — run `pnpm generate-permissions-page` to regenerate. - [Activity SDK Methods](https://soat.ttoss.dev/docs/sdk/services/activity.md): The soat.activity methods of the SOAT TypeScript SDK for the Activity module, each linked to its REST operation. - [Actors SDK Methods](https://soat.ttoss.dev/docs/sdk/services/actors.md): The soat.actors methods of the SOAT TypeScript SDK for the Actors module, each linked to its REST operation. - [Agents SDK Methods](https://soat.ttoss.dev/docs/sdk/services/agents.md): The soat.agents methods of the SOAT TypeScript SDK for the Agents module, each linked to its REST operation. - [AI Providers SDK Methods](https://soat.ttoss.dev/docs/sdk/services/ai-providers.md): The soat.aiProviders methods of the SOAT TypeScript SDK for the AI Providers module, each linked to its REST operation. - [API Keys SDK Methods](https://soat.ttoss.dev/docs/sdk/services/api-keys.md): The soat.apiKeys methods of the SOAT TypeScript SDK for the API Keys module, each linked to its REST operation. - [Approvals SDK Methods](https://soat.ttoss.dev/docs/sdk/services/approvals.md): The soat.approvals methods of the SOAT TypeScript SDK for the Approvals module, each linked to its REST operation. - [Audit Log SDK Methods](https://soat.ttoss.dev/docs/sdk/services/audit-log.md): The soat.auditLog methods of the SOAT TypeScript SDK for the Audit Log module, each linked to its REST operation. - [Chains SDK Methods](https://soat.ttoss.dev/docs/sdk/services/chains.md): The soat.chains methods of the SOAT TypeScript SDK for the Chains module, each linked to its REST operation. - [Chats SDK Methods](https://soat.ttoss.dev/docs/sdk/services/chats.md): The soat.chats methods of the SOAT TypeScript SDK for the Chats module, each linked to its REST operation. - [Conversations SDK Methods](https://soat.ttoss.dev/docs/sdk/services/conversations.md): The soat.conversations methods of the SOAT TypeScript SDK for the Conversations module, each linked to its REST operation. - [Deciders SDK Methods](https://soat.ttoss.dev/docs/sdk/services/deciders.md): The soat.deciders methods of the SOAT TypeScript SDK for the Deciders module, each linked to its REST operation. - [Documents SDK Methods](https://soat.ttoss.dev/docs/sdk/services/documents.md): The soat.documents methods of the SOAT TypeScript SDK for the Documents module, each linked to its REST operation. - [Embeddings SDK Methods](https://soat.ttoss.dev/docs/sdk/services/embeddings.md): The soat.embeddings methods of the SOAT TypeScript SDK for the Embeddings module, each linked to its REST operation. - [Evaluations SDK Methods](https://soat.ttoss.dev/docs/sdk/services/evaluations.md): The soat.evaluations methods of the SOAT TypeScript SDK for the Evaluations module, each linked to its REST operation. - [Exceptions SDK Methods](https://soat.ttoss.dev/docs/sdk/services/exceptions.md): The soat.exceptions methods of the SOAT TypeScript SDK for the Exceptions module, each linked to its REST operation. - [Files SDK Methods](https://soat.ttoss.dev/docs/sdk/services/files.md): The soat.files methods of the SOAT TypeScript SDK for the Files module, each linked to its REST operation. - [Formations SDK Methods](https://soat.ttoss.dev/docs/sdk/services/formations.md): The soat.formations methods of the SOAT TypeScript SDK for the Formations module, each linked to its REST operation. - [Generations SDK Methods](https://soat.ttoss.dev/docs/sdk/services/generations.md): The soat.generations methods of the SOAT TypeScript SDK for the Generations module, each linked to its REST operation. - [Guardrails SDK Methods](https://soat.ttoss.dev/docs/sdk/services/guardrails.md): The soat.guardrails methods of the SOAT TypeScript SDK for the Guardrails module, each linked to its REST operation. - [Ingestion Rules SDK Methods](https://soat.ttoss.dev/docs/sdk/services/ingestion-rules.md): The soat.ingestionRules methods of the SOAT TypeScript SDK for the Ingestion Rules module, each linked to its REST operation. - [Knowledge SDK Methods](https://soat.ttoss.dev/docs/sdk/services/knowledge.md): The soat.knowledge methods of the SOAT TypeScript SDK for the Knowledge module, each linked to its REST operation. - [Memories SDK Methods](https://soat.ttoss.dev/docs/sdk/services/memories.md): The soat.memories methods of the SOAT TypeScript SDK for the Memories module, each linked to its REST operation. - [Memory Rules SDK Methods](https://soat.ttoss.dev/docs/sdk/services/memory-rules.md): The soat.memoryRules methods of the SOAT TypeScript SDK for the Memory Rules module, each linked to its REST operation. - [MemoryStores SDK Methods](https://soat.ttoss.dev/docs/sdk/services/memory-stores.md): The soat.memoryStores methods of the SOAT TypeScript SDK for the MemoryStores module, each linked to its REST operation. - [Metadata Schemas SDK Methods](https://soat.ttoss.dev/docs/sdk/services/metadata-schemas.md): The soat.metadataSchemas methods of the SOAT TypeScript SDK for the Metadata Schemas module, each linked to its REST operation. - [Model Routes SDK Methods](https://soat.ttoss.dev/docs/sdk/services/model-routes.md): The soat.modelRoutes methods of the SOAT TypeScript SDK for the Model Routes module, each linked to its REST operation. - [OAuth SDK Methods](https://soat.ttoss.dev/docs/sdk/services/oauth.md): The soat.oauth methods of the SOAT TypeScript SDK for the OAuth module, each linked to its REST operation. - [Orchestrations SDK Methods](https://soat.ttoss.dev/docs/sdk/services/orchestrations.md): The soat.orchestrations methods of the SOAT TypeScript SDK for the Orchestrations module, each linked to its REST operation. - [Policies SDK Methods](https://soat.ttoss.dev/docs/sdk/services/policies.md): The soat.policies methods of the SOAT TypeScript SDK for the Policies module, each linked to its REST operation. - [Projects SDK Methods](https://soat.ttoss.dev/docs/sdk/services/projects.md): The soat.projects methods of the SOAT TypeScript SDK for the Projects module, each linked to its REST operation. - [Quotas SDK Methods](https://soat.ttoss.dev/docs/sdk/services/quotas.md): The soat.quotas methods of the SOAT TypeScript SDK for the Quotas module, each linked to its REST operation. - [Secrets SDK Methods](https://soat.ttoss.dev/docs/sdk/services/secrets.md): The soat.secrets methods of the SOAT TypeScript SDK for the Secrets module, each linked to its REST operation. - [Sessions SDK Methods](https://soat.ttoss.dev/docs/sdk/services/sessions.md): The soat.sessions methods of the SOAT TypeScript SDK for the Sessions module, each linked to its REST operation. - [Shares SDK Methods](https://soat.ttoss.dev/docs/sdk/services/shares.md): The soat.shares methods of the SOAT TypeScript SDK for the Shares module, each linked to its REST operation. - [Tasks SDK Methods](https://soat.ttoss.dev/docs/sdk/services/tasks.md): The soat.tasks methods of the SOAT TypeScript SDK for the Tasks module, each linked to its REST operation. - [Tools SDK Methods](https://soat.ttoss.dev/docs/sdk/services/tools.md): The soat.tools methods of the SOAT TypeScript SDK for the Tools module, each linked to its REST operation. - [Traces SDK Methods](https://soat.ttoss.dev/docs/sdk/services/traces.md): The soat.traces methods of the SOAT TypeScript SDK for the Traces module, each linked to its REST operation. - [Triggers SDK Methods](https://soat.ttoss.dev/docs/sdk/services/triggers.md): The soat.triggers methods of the SOAT TypeScript SDK for the Triggers module, each linked to its REST operation. - [Usage SDK Methods](https://soat.ttoss.dev/docs/sdk/services/usage.md): The soat.usage methods of the SOAT TypeScript SDK for the Usage module, each linked to its REST operation. - [Users SDK Methods](https://soat.ttoss.dev/docs/sdk/services/users.md): The soat.users methods of the SOAT TypeScript SDK for the Users module, each linked to its REST operation. - [Webhooks SDK Methods](https://soat.ttoss.dev/docs/sdk/services/webhooks.md): The soat.webhooks methods of the SOAT TypeScript SDK for the Webhooks module, each linked to its REST operation. - [Workflows SDK Methods](https://soat.ttoss.dev/docs/sdk/services/workflows.md): The soat.workflows methods of the SOAT TypeScript SDK for the Workflows module, each linked to its REST operation. - [Configuration](https://soat.ttoss.dev/docs/self-hosting/configuration.md): Reference for every SOAT server environment variable, with guidance for production deployments. - [Webhook Events](https://soat.ttoss.dev/docs/webhook-events.md): Every event SOAT emits, the resource type each belongs to, and what it means.