Agent Completion output_schema shaped like a Clef or Decider answer
Map Clef and Strands Decider answer types (yes/no, choice, score) onto a Sume output_schema with enum and integer bounds, and see what it does not check.

Yes, within limits. Clef and Strands Decider answer three kinds of question: yes/no, pick one option, and rate on a scale. An Agent Completion can return a typed object with the same three shapes if you bind an output_schema with a boolean, an enum and a bounded integer. The difference is the source. A decision model scores the options itself. Sume reads the object back from a finished agent run, so the numbers in it are the run's report, not a calibrated probability.
The three answer types in Sume's subset
Cloudflare's post describes noul (yes/no), choice and score fields in its API example. The Strands model card names the same three primitives. Sume's schema subset accepts enum, minimum and maximum, and it requires additionalProperties: false on each object, with every property listed in required.
| Primitive | Question shape | Sume output_schema node | Note |
|---|---|---|---|
| Yes/no | Is it urgent? | {"type": "boolean"} | Required, never optional |
| Choice | Which team? | {"type": "string", "enum": [...]} | Options fixed in the schema |
| Score | How severe? | {"type": "integer", "minimum": 1, "maximum": 4} | Bounds you choose |
| Confidence | How sure? | {"type": "number", "minimum": 0, "maximum": 1} | The agent's report, not calibrated |
A triage schema
Bind the schema in the Agent Completion request. The name takes a namespace, and strict stays true.
{
"output_schema": {
"name": "acme/triage/v1",
"strict": true,
"schema": {
"type": "object",
"additionalProperties": false,
"required": ["urgent", "team", "severity", "confidence"],
"properties": {
"urgent": { "type": "boolean" },
"team": { "type": "string", "enum": ["billing", "technical", "sales"] },
"severity": { "type": "integer", "minimum": 1, "maximum": 4 },
"confidence": { "type": "number", "minimum": 0, "maximum": 1 }
}
}
}
}What the schema does not promise
Read filled_by on the receipt. agent means that the run submitted the object. projection means that a separate pass built it from the run's media and closing text, and that pass does not see your input. If the object is null, output_error gives the reason, and Sume never returns a schema-shaped guess.
Do not use a run for a job that a 39 ms decision model can do. This pattern fits tasks where the run already looks at media or calls tools and you want its verdict in a fixed shape.
Sources
Related posts
More in Developers
- Agent Completion result: read output.videos, images, audio and files
A completed Agent Completion puts its last text in output.text and generated media in output.images, videos, audio and files, as durable media.sume.com URLs.
- Agent quoted $13.31 for a 13-cent Sume job: the micros divisor
Divide billable_amount_usd_micros by 1,000,000 for dollars. Dividing by 10,000 gives cents and overstates spend 100x. Sume MCP flags this as usd_unit_mismatch.
- catalog_list vs tools_list: finding HTTP-only Sume features
tools_list shows what this MCP session can call. catalog_list shows API capabilities, some with no MCP tool. Read both before telling a user it can't be done.
- Agent run webhook: created_at orders deliveries, request_id dedupes
An agent.run.terminal delivery has two ids that look alike. request_id dedupes retries; created_at orders deliveries. Includes a Python receiver.
Written by Sume