Skip to main content
This is the exact contract Cadence validates workflow.md frontmatter against — generated from the same JSON Schema the validator loads, so it cannot drift. Use it like --help for workflow authoring: every field, type, required flag, enum, and constraint below is enforceable truth. Numeric and boolean fields also accept {{var}} template strings, resolved from workflow arguments at dispatch time.

Top-level fields

applies_to

library

agent

agent.thinking

agent.cache_policy

agent.budget

agent.single_agent

agent.single_agent.candidates[]

participants[]

participants[].cli

participants[].cli.startup

participants[].cli.mcp

participants[].cli.skills

participants[].cli.hooks

participants[].cli.routine

participants[].cli.experimental

participants[].thinking

context

context.provider_cache

channel

channel.floor

budget

sandbox

sandbox.filesystem

tools

cadence

cadence.run_contract

cadence.resource_lifecycle

cadence.event_contract

retry

retry.runtime_failure_fallbacks[]

merge_admission

workpad

cache_policy

state_machine

state_machine.states.<name>

state_machine.states.<name>.agent

state_machine.states.<name>.agent.thinking
state_machine.states.<name>.agent.cache_policy
state_machine.states.<name>.agent.budget
state_machine.states.<name>.agent.single_agent
state_machine.states.<name>.agent.single_agent.candidates[]

state_machine.states.<name>.output_schema

state_machine.states.<name>.output_schema.items
Recursive structure — same shape as __schema0 above.

state_machine.states.<name>.fan_out

state_machine.states.<name>.gate

state_machine.states.<name>.loop

state_machine.loop

state_machine.gate

roster[]

roster[].cli

roster[].cli.startup

roster[].cli.mcp

roster[].cli.skills

roster[].cli.hooks

roster[].cli.routine

roster[].cli.experimental

roster[].data_source

execution

execution.provider_native_routine

Validating

Validate before dispatch — Cadence rejects invalid frontmatter at load time. From an agent session, call the think_workflow_md_validate tool with your draft; it returns the same errors this schema produces.