Define specialist agents with their own instructions, tools, and model settings using the Agent class
Add handoffs between agents: set the handoffs parameter on the orchestrator agent to a list of target agents — the SDK exposes each as a transfer_to_<agent_name> tool for the LLM
Run the workflow with Runner.run(orchestrator_agent, input_message) — the runner loops until an agent produces a final response or a stopping condition is met
Attach output guardrails to the final agent and input guardrails to the first agent using the guardrails parameter on Agent
Inspect traces in the OpenAI Traces dashboard — tracing is enabled by default and captures LLM calls, tool calls, and handoffs
Known gotchas
Input guardrails only fire on the first agent in the chain; output guardrails only fire on the agent producing the final output
Handoffs are represented as LLM tool calls — the LLM decides when to delegate, so vague instructions can cause unexpected transfers
Runner.run() represents one logical turn; for streaming events mid-run, use Runner.run_streamed() and iterate the returned async iterable
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp