Skip to content

Build agents

Structured JSON

Not an artifact — a data contract. Use it when a result has to feed an API workflow, a database, a review queue, or another system.

Step 1

It is a schema, not an output type

The picker sets the artifact. The schema underneath it sets the fields the API returns.

Structured JSON is not one of the twelve artifacts in the OUTPUT TYPE picker. It lives directly below the picker, on the same step, as DEFAULT OUTPUT SCHEMA — an optional JSON Schema the API uses for structured output when this agent is called.

That means it sits alongside a human-readable artifact rather than replacing one. An agent can hand a person a research report and hand a system a stable set of fields from the same run.

Checked against the product on October 15, 2026

Step 2

Define the fields

Build the schema field by field, or paste one in.

  • Open the agent builder and go to step 4, OUTPUT.
  • Choose the artifact a person should read first, if anyone reads it at all.
  • Under DEFAULT OUTPUT SCHEMA, use ADD FIELD to build the contract a field at a time, or switch to RAW and paste a JSON Schema.
  • Add the fields a downstream system needs — recommendation, confidence, rationale, source URLs.

Checked against the product on October 15, 2026

Step 3

Schema design rules

What keeps a contract usable across many runs.

  • Use stable field names that downstream systems can rely on.
  • Prefer enums for status, severity, recommendation, and confidence bands.
  • Separate the short answer from the supporting rationale.
  • Include source fields for evidence-heavy workflows.
  • Mark fields required only when every run can realistically provide them.
  • Keep deeply nested structures for genuinely nested data, not for decoration.

Step 4

A schema that works

A decision, a confidence band, the reasoning, and where it came from.

FieldTypeWhy it is there
recommendationapprove | review | escalateThe decision, as a fixed set of values a system can branch on.
confidencelow | medium | highHow much weight to put on it, without free text.
rationalestringThe short explanation, kept out of the decision field.
evidencearray of {source, url, finding}Where each claim came from.
missing_informationarray of stringBlocking gaps, so a caller can tell 'no' from 'not yet'.