View .mdOptimized for LLMs — paste directly into ChatGPT, Claude, or Cursor.
The six agent kinds
Every manifest sets kind to one of six values. Primitives (llm, transcription, image, and tool) do the actual work; pipelines (sequential and parallel) compose primitives and other pipelines into multi-step workflows.
llm — call a model
The basic case. An LLM agent calls one language model with an instruction, optional tools, and optional structured output.
agents/chatbot.yaml
id: chatbotname: Chatbotdescription: A simple conversational assistantkind: llmmodel: provider: openai name: gpt-5.4-mini temperature: 0.7instruction: | You are a friendly, helpful assistant. Answer the user's question clearly and concisely. {{userQuery}}
With no inputSchema, the agent takes a plain string accessible as {{userQuery}}. Add inputSchema to type the input; add outputSchema to constrain the response shape. See Input, state, and output.
transcription — turn audio into text
Transcription agents accept exactly one audio content block and return a typed transcript with text, segments, language, and duration metadata.
agents/transcribe.yaml
id: transcribekind: transcriptionmodel: provider: openai name: gpt-4o-mini-transcribeinstruction: Preserve names, measurements, and timestamps exactly.settings: language: en timestampGranularities: [segment]retention: mode: none
The built-in adapter is a hosted/self-hosted worker capability and currently supports OpenAI transcription models. See Transcription and image generation.
image — generate managed images
Image agents render a prompt from input and store generated bytes as expiring artifacts instead of embedding large base64 bodies in the run response.
agents/create-cover.yaml
id: create-coverkind: imagemodel: provider: openai name: gpt-image-1.5 providerOptions: openai: quality: highprompt: "Create an editorial cover for {{userQuery}}"settings: n: 1 size: 1024x1024retention: mode: result artifactTtlSeconds: 86400
The output contains artifact ids, media types, sizes, and expiry times. Download the bytes through client.artifacts.
tool — deterministic, no model
A tool agent maps state values to a single tool call. No LLM, no reasoning — just a direct function or API call wrapped in the same observability model.
Use this when you want the predictability of a hard-coded call inside a larger pipeline — for example, a "notify Slack" step at the end of an article workflow.
sequential — run steps in order
Sequential agents run steps one after another. Each step's output is added to state under its id (or its stateKey) and becomes available to downstream steps as {{stepId.property}}.
The trace for this run shows nested spans for the parallel research phase, every loop iteration of the write/review step, and the final tool call. See Runs and traces.