A weather tool declares an outputSchema that requires temperature, conditions and humidity fields. What does declaring this schema commit the server and its clients to?
Select an answer to reveal the explanation.
Short Explanation
An outputSchema is a promise about the shape of what comes back. Your server has to keep it, and your client should check it. It doesn't mean you throw away the text version — that's still recommended for backward compatibility.
Full Explanation
A tool may declare an outputSchema describing the structure of its results. When one is provided, the tools specification states that servers MUST provide structured results that conform to the schema, returned in the structuredContent field, and that clients SHOULD validate structured results against it. This gives clients and models reliable types for the data, supports strict validation, and lets the host parse results without guessing. Treating the schema as documentation that the server may ignore contradicts the MUST; a nonconforming result breaks the contract that the declaration creates. The output schema says nothing about arguments; inputs are governed by inputSchema, and nothing requires clients to send output values for the server to echo. Dropping the text content block is the wrong conclusion, because the specification recommends that a tool returning structured content SHOULD also return the serialized JSON in a TextContent block for backward compatibility. Exam caveat: structuredContent is server-produced result data and is unrelated to model-side structured outputs, and outputSchema defaults to JSON Schema 2020-12 when no $schema is given. Operational check: call the tool, validate the structuredContent against the declared outputSchema, and confirm the result also carries a text block containing the same JSON for clients that do not read structured content.