Skip to main content
Custom Agent Composer YAML workflows are available in public preview for enterprise users. Template agents (Basic Search and Agentic Search) are available for self-serve users, but creating custom workflows with YAML requires enterprise access. For more information or to request access, please contact your Contextual AI representative.
Agent Composer YAML defines executable agent workflows as graphs.
Each graph specifies inputs → nodes → outputs and runs via /query/acl.

Minimal Graph


Root-level Fields

FieldRequiredNotes
inputsRoot graph accepts only query: str
outputsMust be JSON-serializable
nodesExecution steps
ui_output⚠️Required if multiple outputs

Core Rules (Remember These)

  • Root graph: one input only (query)
  • All node inputs must be wired
  • Outputs must be JSON-serializable
  • Multiple outputs → set exactly one ui_output
  • __outputs__ node is mandatory

Wiring Syntax

Special nodes:
  • __inputs__ → graph/subgraph inputs
  • __outputs__ → graph outputs

Node Template

Common fields:
  • type (required)
  • input_mapping
  • config (static)
  • config_overrides (runtime)
  • ui_stream_types

Output Node

  • No config
  • No outputs
  • Maps internal values → API outputs

UI Streaming

  • Declared per node
  • Multiple nodes may stream
  • Independent of ui_output

Subgraphs (Reusable Workflows)

Define:
Use:
  • Nestable
  • Reusable
  • Isolated I/O scope

Conditional Execution

  • Top-down evaluation
  • First match executes
  • Branch __inputs__ != graph inputs

Agentic Research Pattern

Standard flow:
  1. CreateMessageHistoryStep
  2. AgenticResearchStep
  3. GenerateFromResearchStep

Message History

Agentic Research

  • Multi-turn agent loop
  • Plans and invokes tools
  • Produces structured research

Tools

Rules:
  • Use either step_config or graph_config
  • Inputs = basic Python types

Final Generation

Consumes message_history and research as inputs

Run a Graph (Python)

API Response

  • outputs
  • workflow_trace
  • dynamic_agent_trace (if agentic steps used)

Common Errors

ErrorFix
Missing node inputWire it
No __outputs__Add output node
Multiple outputsSet ui_output
Non-serializable outputConvert to basic types