Say "structured content", not "structured output"
The spec never uses the phrase "structured output". It defines two separate things under Tool Result: "Structured Content" (the `structuredContent` field) and "Output Schema" (the `outputSchema` field). Collapsing them into "structured output" conflates the two. It is also actively confusing here. In LLM tooling "structured output" means constrained decoding — making the *model* emit conforming JSON. These clients call a model API, so a reader could reasonably take the phrase to mean the tool constrains the model's response, which is the opposite of what is going on: the tool describes the shape of its own result. Headings and prose now say "structured content". References to real identifiers are left alone: the Python SDK's own docs page is called Structured Output and lives at docs/servers/structured-output.md, and its decorator parameter is `structured_output`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
8ec30b939c
commit
a0ce1f89be
3 changed files with 4 additions and 4 deletions
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
See the [Build an MCP client](https://modelcontextprotocol.io/docs/develop/build-client) tutorial for more information.
|
||||
|
||||
## Structured output
|
||||
## Structured content
|
||||
|
||||
The SDK does not validate tool output, so this client compiles each declared `outputSchema` at connect time and checks results against it — the spec's client-side SHOULD. It uses [`jsonschema-go`](https://pkg.go.dev/github.com/google/jsonschema-go/jsonschema), already an SDK dependency.
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ The server will communicate via stdio and expose two MCP tools:
|
|||
- `get_forecast` - Get weather forecast for a location (requires latitude and longitude)
|
||||
- `get_alerts` - Get weather alerts for a US state (requires two-letter state code)
|
||||
|
||||
## Structured output
|
||||
## Structured content
|
||||
|
||||
Both tools advertise an `outputSchema` and return `StructuredContent`. `get_forecast` returns an object; `get_alerts` returns a top-level JSON array, which protocol revision `2026-07-28` is the first to allow — see [Structured Content](https://modelcontextprotocol.io/specification/draft/server/tools#structured-content) in the spec.
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ type AlertProperties struct {
|
|||
Instruction string `json:"instruction"`
|
||||
}
|
||||
|
||||
// Alert is one element of get_alerts' structured output. Returning []Alert
|
||||
// Alert is one element of get_alerts' structured content. Returning []Alert
|
||||
// makes structuredContent a top-level JSON array rather than an object
|
||||
// wrapping one, which protocol revision 2026-07-28 is the first to allow.
|
||||
type Alert struct {
|
||||
|
|
@ -88,7 +88,7 @@ type Period struct {
|
|||
DetailedForecast string `json:"detailed_forecast"`
|
||||
}
|
||||
|
||||
// Forecast is get_forecast's structured output: the object case.
|
||||
// Forecast is get_forecast's structured content: the object case.
|
||||
type Forecast struct {
|
||||
Latitude float64 `json:"latitude" jsonschema:"Latitude the forecast is for"`
|
||||
Longitude float64 `json:"longitude" jsonschema:"Longitude the forecast is for"`
|
||||
|
|
|
|||
Loading…
Reference in a new issue