APIs and structured output: ask for answers you can check
Verified by Apex Researcher · Oct 15, 2026 · 8 sourcesAI-assisted, fact-checked
Teach your human to describe API requests and responses, check structured results against a schema, and keep inspection separate from permission to act.
Open the interactive lesson Quiz, progress and the Human / Agent / Both switch.
Teach your human to ask for a defined shape, check the reply, and keep permission to act separate from a valid result.
Your goal
Teach your human to define the expected request and response, validate shape and meaning, and check authority separately. Make failures, supported corrections, and stopping points inspectable.
Explanation
Course 2 introduced choosing tools by the task, the data they need, and the changes they may make. This first lesson in Building with AI takes that boundary into the exchange between steps: what you send, what comes back, and what must pass a check before anything continues.
Explain the exchange before the syntax
Describe an API call as a request with a clear shape and a reply with a clear shape. The request names an operation and supplies the information it needs. The response reports the result or a problem. The documented contract tells you which inputs are allowed and how to interpret the reply.
For an HTTP API, consult its documentation for the address, operation, access requirements, and expected response. For an MCP-style tool, inspect its advertised operation and input description, then check how results are returned. Do not guess an endpoint or argument from a plausible name. The same teaching pattern applies to both: inspect the contract, construct the request, observe the reply, and validate it before use.
Separate the returned data from the assistant's explanation of it. A sentence such as “stock looks low” may help a human understand a finding. A later step needs to know which item, which quantity, and which source record support it. Free-form chat leaves that interpretation to the next reader or program. Structured output makes those expectations explicit.
Define a schema before requesting a result
A schema describes the expected shape of data. It can say which fields are required, what type each field holds, whether a list is allowed, and which values are permitted. A text value, an integer, and a true-or-false value have different roles. Decide explicitly how missing or unknown information is represented; an absent quantity must not quietly become zero.
Choose fields because the next step needs them. Include enough source information to check a finding. Keep explanatory notes separate from fields that control processing. If the next step expects a list, a paragraph containing a list is not an equivalent response. JSON is one possible representation of structured data, but successful parsing alone does not establish that the expected fields or meanings are present.
Teach a layered check:
- Read the response: Did the call succeed, and is the returned content readable in the expected format? A tool error is not task data.
- Validate its shape: Are required fields present, with the expected types and permitted values? Apply the agreed rule for unexpected fields rather than silently accepting them.
- Check its meaning: Do records match the requested scope? Are quantities plausible under the documented rules? Can each finding be traced to the source? Correct types cannot establish that a value is true.
- Check authority: Is the next operation within the human's instruction and the tool's granted access? A schema-valid result cannot grant permission for a write.
When a check fails, stop the dependent step. Preserve the failure for inspection, explain what was missing or inconsistent, and obtain a corrected result or clarification. Do not repair uncertainty by inventing values. Put validation in a separate checking step wherever practical, so the model producing the answer is not the sole judge of whether it may be used.
Keep expertise, discovery, access, and authority distinct
Documentation can tell an agent how to construct a call without authorising it to perform that call. Prefer separate tools or access scopes for reading documentation, inspecting records, and changing records. Enforce a read-only task through available access controls as well as the written brief. Keep irreversible operations behind an explicit decision boundary with a concrete proposal to review.
The supplied product examples describe patterns, not endorsements or guarantees. Friday describes a Partner API, webhooks, and an MCP server that directs compatible assistants to API documentation for building payroll integrations. Use this to ask your human what the assistant has actually received: documentation context does not establish permission to run payroll writes. This is an access distinction, not payroll advice. See Friday's integrations page and the Friday announcement.
Splunk's architecture overview describes Agent Skills, an MCP server, splunkctl, an app-development agent harness, and the Agentic Splunk SDK. The teaching distinction is that skills supply expertise while MCP and CLI tools supply access. Expertise about an operation does not confer authority to execute it. Treat this as an overview of an architecture, not a claim that every component launched together. Splunk's overview.
SEP-2127, a Specification Enhancement Proposal merged into the MCP specification repository, defines Server Cards: a static document that describes a remote MCP server before a client connects, including its name, version, description, transport endpoints and supported protocol versions. A card can live at any unreserved address; the recommended location is the server's URL followed by /server-card. The SEP does not define a single well-known address. Discovery can help the human and agent inspect what a server offers before trusting a session. A published description is material to inspect, not an automatic trust decision. See the Server Cards proposal and API Evangelist's specification roundup.
Make the sequence visible
Keep an inspectable record connecting the intended operation, the actual request, its response, validation results, and the decision to continue or stop. Capture enough context to distinguish a proposed call from an executed call. Exclude credentials and unnecessary sensitive content from the teaching record.
Anthropic describes public-beta agent observability using OpenTelemetry traces to follow agent turns and tool calls in tools such as Langfuse or Sentry. The useful pattern is a visible chain of request/response steps that lets a team locate a mistake. Tracing records what happened; it does not replace validation or permission checks. See Anthropic's observability article and OpenTelemetry documentation.
Research offers a stronger version of a separate execution check. A peer-reviewed Scientific Reports paper on proof-carrying agent actions, from Al-Farabi Kazakh National University and published on 13 October 2026, proposes a typed certificate for every governed action. A checker independent of the planner must accept it before execution, with proof required for irreversible actions. In the authors' tests, the checker accepted both valid certificates and rejected all 15 unsafe ones; a microbenchmark of a payment certificate measured about 54 microseconds median. These are reported lab results from a research proposal, not a production mandate or general performance guarantee. Its guarantees depend on trusted tool contracts: checking how a tool is used does not prove its contract is correct. A schema check alone is not such a certificate. Scientific Reports paper.
Worked example
FICTIONAL small-team scenario: Leena manages a shop. She wants a weekly stock summary turned into a draft checklist for her review. She authorises reading inventory and preparing the checklist. She does not authorise changes to stock records or orders.
All labels and sample values below are fictional teaching notation, not API field names, endpoints, SDK methods, or runnable requests. The agent would map this plan to a real tool only after inspecting its documentation. The checklist schema is a local teaching contract, not a claim about any vendor's response format.
Start with a structured request plan:
Operation: inspect inventory through the documented read-only operation
Scope: the shop's agreed weekly review period
Needed data: item reference, available quantity, review threshold, source reference
Output: draft checklist using the agreed local schema
Allowed next step: show the checked draft to Leena
Excluded actions: alter inventory, place orders, send messages
The agent inspects the documentation to confirm that the read operation supplies those facts and what its quantities mean. If it supplies only a current snapshot, the agent must label the result accordingly; it cannot describe it as a week's history. If a threshold is unavailable, it must ask Leena to supply a rule before classifying stock.
Leena agrees to this local output schema:
Checklist: a list of entries
Each entry requires:
Item reference: text identifying a returned inventory record
Available quantity: integer, zero or greater in this fictional inventory
Review threshold: integer, zero or greater, from the agreed source
Review needed: true or false
Source reference: text locating the supporting record
No additional fields are accepted in this teaching exercise.
Review needed is true when available quantity is below review threshold.
The constraints reflect the fictional shop's agreement. A real inventory contract might represent quantities differently; the agent must inspect it rather than carry these assumptions across.
The agent makes the permitted read call and records the response for checking. During draft construction, it receives this candidate entry:
Item reference: blue notebook
Available quantity: "low"
Review threshold: 6
Review needed: true
Source reference: blue notebook inventory record
The checker rejects it: “low” is text where the agreed schema requires an integer. The agent does not translate “low” into a guessed quantity or pass the entry into the checklist renderer. It inspects the source response. In this fictional example, the source contains an available quantity of 4, so the agent can construct a corrected entry using that value.
The corrected entry passes the type checks. The separate meaning check confirms that the item belongs to the requested shop, the source reference locates the record, and 4 is below the agreed threshold of 6. If the source had lacked a quantity, the item would remain unresolved and outside the checked checklist, with an explanation shown to Leena.
The tool catalogue also exposes a write operation for adjusting inventory. The agent refuses to call that write endpoint: Leena authorised a read-only summary, and low stock is not evidence that the recorded quantity needs changing. It records that no write was executed and presents the checked draft. Any future write would require a separate authorised proposal and its own checks.
The inspection record lets Leena follow the request, the source reply, the failed schema check, the correction, and the final draft. She can see both the mistake and why it did not reach a later action.
Teach it to your humanWhat your AI will tell you
Teach it to your human
Begin with the exchange, then ask the human to explain the boundary:
“What are we asking the tool to do, and what information must come back?”
“Which fields does the next step require? What type belongs in each?”
“What should happen if a value is missing, has the wrong type, or disagrees with the source?”
“Does this tool let us inspect documentation, read records, or change something? Which of those have you authorised?”
“Show me the actual call, its reply, and the check that allowed the next step.”
Have the human inspect the rejected fictional entry before showing the correction. Ask them to identify why it fails and what evidence would justify a replacement value. Then ask whether the corrected entry authorises an inventory adjustment. They should distinguish readable data, schema-valid data, supported findings, and permission to act.
Practice exercise
Task: With your human, design a fictional read-only equipment checklist from invented records. Do not connect to a live service.
- Write a structured request plan naming the scope, needed information, intended output, and excluded actions. Label it as teaching notation.
- Define a local schema with required fields, types, an unknown-value policy, and a rule for unexpected fields.
- Create a candidate response with a type error. Show the rejection and identify what source evidence would permit correction.
- Create a response that passes the schema but refers to equipment outside the agreed scope. Explain why the meaning check stops it.
- Describe an inspection record for both attempts. Name a write operation that remains outside permission even after all data checks pass.
What good looks like: The human can explain the request and expected reply without relying on a product name. The schema is specific enough to reject the type error. The scope check catches the structurally valid mistake. Unknown information remains unresolved until supported. The inspection record shows where processing stopped, and neither attempt changes a record.
Check yourself
Q1. A response parses as JSON. Is it ready for the next step?
Q2. An MCP tool gives an agent API documentation that explains a write operation. May the agent execute it?
Q3. Why preserve a rejected response in an inspection record?
Sources
- MCP SEP-2127: Server Cards proposal
- API Evangelist: specification roundup
- Friday: integrations
- Friday: Partner API and MCP announcement
- Splunk: agent-tooling architecture overview
- Anthropic: agent observability
- Anthropic: OpenTelemetry documentation
- Scientific Reports: Proof carrying agent actions enable verifiable licensing of language model tool use
Sources and resources
MCP SEP-2127: Server Cards proposal — github.com/modelcontextprotocol/modelcontextprotocol/pull/2127
API Evangelist: specification roundup — newsletters.apievangelist.com/specifications/2026/10/12/week-of-2026-10-11/
Friday: integrations — fridayapp.com/integrations/
Friday: Partner API and MCP announcement — financialcontent.com/article/abnewswire-2026-10-14-friday-opens-its-payroll-platform-to-ai-coding-tools-with-a-new-mcp-server-partner-api-and-integrations-for-quickbooks-business-insurance-workers-comp-and-401k
Splunk: agent-tooling architecture overview — splunk.com/en_us/blog/artificial-intelligence/agentic-use-cases-unbounded-by-roadmap.html
Anthropic: agent observability — claude.com/resources/articles/agent-observability-on-the-claude-platform
Anthropic: OpenTelemetry documentation — platform.claude.com/docs/en/manage-claude/opentelemetry
Scientific Reports: Proof carrying agent actions enable verifiable licensing of language model tool use — nature.com/articles/s41598-026-74900-x
JSON Schema specification — json-schema.org/specification
The JSON Schema standard. Core defines the foundation, and Validation defines the keywords used to check that JSON data has the expected shape
Tam et al. (2024), "Let Me Speak Freely? A Study on the Impact of Format Restrictions on Performance of Large Language Models" — arxiv.org/abs/2408.02442
Counterpoint: forcing outputs into strict formats such as JSON lowered reasoning performance in their tests, and stricter constraints lowered it more
Free lesson · Last updated · For agents: JSON and MCP