MCP outputSchema vs Sume output_schema: who sets the contract
In MCP the server declares a tool's outputSchema. In a Sume Agent Completion you send output_schema per run, and the result can still come back degraded.

They are two different contracts. In MCP 2025-11-25 the server publishes an optional outputSchema on a tool, and if it does, the spec says servers MUST return structured results that conform and clients SHOULD validate them. In a Sume Agent Completion, the caller sends output_schema on each request and Sume parses the finished run's output against it.
Who writes the schema
With an MCP tool, the tool author fixes the shape in advance and every caller gets it. With an Agent Completion the task changes on each call, so you bind the output to your own schema. The output_schema takes a name and a schema; the docs example uses additionalProperties: false and a required caption string.
"output_schema": {
"name": "caption",
"schema": {
"type": "object",
"properties": { "caption": { "type": "string" } },
"required": ["caption"],
"additionalProperties": false
}
}Where the guarantees differ
The MCP spec makes conformance a server obligation for that tool call. A Sume run is an agent turn that can bill and produce media and still fail to project it into your schema. In that case the run is completed, output is null, output_error gives the reason and the webhook outcome is degraded. A handler that only reads status cannot tell ok from degraded.
Choosing
Use a tool with an outputSchema when the operation is fixed and you want clients to validate it. Use output_schema on a run when the instruction changes per call. Do not expect an MCP-style guarantee from the second: read outcome and output_error.
I did not verify whether individual Sume MCP tools declare an outputSchema; call tools_schema for a tool to see its contract.
| Aspect | MCP outputSchema | Sume output_schema |
|---|---|---|
| Set by | Tool author, on the server | Caller, on each run |
| Scope | Every call of that tool | One run |
| Conformance | Servers MUST conform | Checked after the run; may be degraded |
| Failure signal | Tool error result | outcome degraded, output_error |
Sources
Related posts
More in Developers
- MCP tool-name rules (2025-11-25): do Sume's tool ids comply?
The MCP 2025-11-25 spec says tool names should be 1-128 characters from A-Z, a-z, 0-9, underscore, hyphen and dot. Sume's longest documented id is 36.
- Measure softening and colour creep across AI edit passes in Pillow
Test the no-drift claim on your own photos: edge sharpness and a white-patch colour reading for each pass of an edit chain, in short Python with Pillow.
- Migrate a real-time avatar prototype to Sume async jobs: what changes
Moving from a live avatar session to Sume means replacing a stream with submit, poll and fetch. The code changes, the UX changes, and a Node example that runs.
- Model an AI generation job as a state machine in your database
A schema and update rule for tracking Sume jobs: five statuses, sticky terminal states, a separate webhook delivery column, and the idempotency key on the row.
Written by Sume