← Back to journal

Claude 2026 Feature Guide: API, Tool Use, MCP, Structured Output, and AI Agents

AI agents & Claude API · 2026.08.18 · ~16 min read

Claude API, Tool Use, MCP, and Structured Output as an agent stack

Teams treat the 2026 Claude changelog as a “the model got smarter” press release: Messages API, Tool Use, MCP, Structured Output, agent loops—more names, same code: one messages.create stuffed with prompt, tools, and a hope that JSON appears. What blows up in production is rarely prose quality. It is tool args that miss the schema, an MCP permission surface that is too wide, and regex-scraped JSON. The question below: are these five capabilities one layer? Asymmetric conclusion: the divide is schema constraints and execution bounds, not the model name.

This is for developers wiring Claude into production: classify Claude API, Tool Use, the MCP connector, Structured Outputs, and the agent loop by entry / execution / context, then pick when to own tools, when to attach remote MCP, and when strict mode is mandatory. Protocol basics: what MCP is (the USB analogy). IDE layering: Claude Skills vs Cursor Rules. This page is only how the API side becomes an operable agent.

1. Why a longer feature list makes production more brittle

From late 2025 into 2026, Anthropic moved “call tools”, “attach MCP”, and “emit JSON Schema” onto the main Messages path: output_config.format replaced the beta output_format; tools may set strict: true so grammar-constrained sampling keeps arguments valid; remote MCP can ride in the same request via mcp_servers plus type: "mcp_toolset". Docs are clear. Engineering still collapses three jobs into one:

  • Human-readable prose and machine-ingest JSON in one unschematized text blob;
  • Local scripts, SaaS, and write-capable MCP tools flattened into one tools array for the model to pick;
  • An “agent” defined as “repeat the same user turn 20 times” with no max steps and no tool_use audit.

Demos work; tickets fill with JSONDecodeError, bad enums, and MCP servers treated as a universal shell. The Claude API is not “missing features”. Entry, execution, and context were never split. If the agent must run xcodebuild, execution also lands on real Mac hardware—the same ops problem as a self-hosted GitHub Actions macOS runner, not a prompting problem.

2. What each layer is (What)

2.1 Claude API — conversation entry, not an agent product

The Claude API (Messages) is the entry that attaches model, messages, system prompt, cache, and billing to your system. It does not execute tools for you and does not guarantee json.loads. Chat completion is a valid use. The moment a downstream service writes a database, opens a ticket, or triggers CI, you stack the later layers. Ask first: is this call consumed by a human or a parser?

2.2 Tool Use — an execution plane you own

Tool Use lets the model emit tool_use blocks; your server runs them and returns tool_result. Use it for implementations you own: inventory, tickets, repo scripts. For 2026 production, put strict tool use on the definition: strict: true plus input_schema uses the same grammar pipeline as structured outputs, which cuts “string 2 instead of number” crashes. The cost: the schema must fit Anthropic’s supported JSON Schema subset.

2.3 MCP connector — remote tool plane, not another SDK

The Messages MCP connector declares remote servers (URL, OAuth) and an mcp_toolset to enable all tools, an allowlist, or a denylist. It solves discovery and transport: you do not hand-write Anthropic tool JSON for every SaaS. It is not automatic safety—filesystem or shell MCP still needs a gateway or allowlist. Protocol “why USB” and this page’s “how to hang a server on the API” are complementary, not duplicates.

2.4 Structured Output — context for parsers, not voice for readers

Structured Output uses output_config.format with json_schema so the model’s text block is valid JSON. Use it for field extraction, report objects, contracts for the next service. It is orthogonal to Tool Use: JSON-only, strict tools only, or both. It does not replace tool calls—pretty JSON never fires HTTP for you.

2.5 AI agent — loop policy, not a fifth API product

An AI agent here is: model picks a tool → you execute → results return → until stop. Stop conditions are yours: max rounds, banned tool names, budget, human confirm. The loop can be Tool Use only or mixed with MCP. Structured Output fits the final handoff. “Fully automatic” without a loop cap is unbounded retry.

One-line memory
Claude API is entry; Tool Use / MCP are execution (owned vs remotely discovered); Structured Output is the machine contract; the agent is the loop and red lines you write.

3. Core comparison (How Compare)

Five Claude API layers: entry, execution, context, audience
Capability Entry Execution Context Best for
Claude API Messages / SDK messages.create Text and multimodal understanding; no external side effects messages + system + cache blocks Chat, drafts, human-read summaries
Tool Use Request-owned tools[] Your backend runs functions; optional strict: true tool schema + tool_result round-trips Teams with internal APIs and per-call audit
MCP connector mcp_servers + mcp_toolset Remote MCP tools; multi-server, OAuth Discovered tool lists that you must trim Integrators who want existing MCP without hand-rolled JSON
Structured Output output_config.format = json_schema Does not run tools; guarantees parseable JSON text Schema enters sampling constraints ETL, ticket fields, typed downstream services
AI agent loop Your orchestrator (while / queue / workflow) Repeated Tool Use or MCP until stop Accumulated tool_result; watch window bloat Multi-step state changes with an explicit budget
Owned Tool Use vs MCP connector
Dimension Owned Tool Use You write the function MCP connector Remote discovery
OwnershipImplementation, logs, rate limits live in your repoTool semantics belong to the MCP server
Change speedSchema changes ship with your agentNew server tools appear in discovery—allowlist them
Strict argsOfficial strict lines up cleanly with your schemaDo not shove API-only fields into generic MCP client schemas
FitCore write paths, compliance auditRead-only SaaS, standardized retrieval, tool buffets

4. How to choose (Decision)

Fix the consumer and the side effects first, then pick layers. The matrix splits on whether you mutate external state.

Scenario matrix
Scenario Prefer Avoid
Weekly memo for ops Claude API plain text JSON Schema to look “advanced”
Extract email fields into CRM Structured Output + server-side validation Fake “extraction tools” that never write
Create Jira / close alerts Owned Tool Use + strict: true + idempotency keys Dumping a write-capable MCP pack into the request
Read-only docs / calendar MCP connector + tool allowlist Enabling every tool “in case we need it”
Multi-step repo fix + tests Agent loop + owned git/test tools + max steps Unbounded while-true; overnight xcodebuild on a laptop
Final contract for a downstream API Last-turn Structured Output (or a separate parse call) Regex-mining JSON out of mixed tool_use text
Red line
Filesystem, production DB, payments, and outbound email default off “discovered MCP, all tools on”. If you must use MCP, require allowlist + auth + audit logs; confirm high-risk steps with a human.

5. Recommended stacks

Stack features. Do not hunt for a single product name.

  • Personal scripts / internal bots: Claude API + 2–5 owned tools + strict. Skip MCP until the secret surface is worth it.
  • Growing SaaS support agent: owned write tools (tickets) + read-only MCP knowledge + Structured Output at the end for QA.
  • Platform / multi-team: MCP gateway for auth and rate limits; orchestrator for steps and budget; billing writes stay owned Tool Use.
  • macOS / iOS build agent: expose only “enqueue job on named runner”; real xcodebuild runs on a stable cloud Mac, not model-driven ad-hoc SSH.

Versus IDE Skills: the API agent owns loops with system side effects; Claude Code Skills own in-repo developer SOPs. Both may mention MCP; do not share one credential table for write access.

6. Pitfalls

  • “MCP means we can drop Tool Use” → write paths, compliance, and idempotency stay owned and audited.
  • “Structured Output is an agent” → it only constrains text JSON; it does not perform side effects.
  • “strict works on any nested JSON Schema” → stay in the documented subset; deep oneOf / dynamic keys fail.
  • Treating legacy beta output_format and output_config as two products → transition compatibility only; new code uses output_config.format.
  • “Stronger models need no max steps” → steps are money and blast radius, not IQ.
  • Copy-pasting strict into every MCP client schema → strip API-only fields on generic MCP channels.

7. Seven rollout steps

  1. Inventory side effects: read queries, internal writes, CI triggers, production. One tool table per class.
  2. Ship one owned tool: minimal input_schema + strict: true; prove tool_use → execute → tool_result.
  3. Split human vs machine delivery: machine contracts via Structured Output or a dedicated parse call.
  4. Attach MCP read-only: mcp_servers + allowlist; keep writes owned.
  5. Wrap the loop: max N steps, timeouts, token budget, reject undeclared tool names.
  6. Observe: log tool name, arg hash, latency, schema failures—not only the final assistant text.
  7. Pin heavy execution: macOS jobs on cloud Mac / self-hosted runners; the agent emits a job id, not a laptop shell.
Sketch: strict tool + structured final payload (secrets via env)
# Pseudocode — use the official SDK in production
POST /v1/messages
{
  "model": "claude-opus-4-6",
  "max_tokens": 2048,
  "tools": [{
    "name": "create_ticket",
    "strict": true,
    "input_schema": {
      "type": "object",
      "properties": {
        "title": {"type": "string"},
        "severity": {"type": "string", "enum": ["low","high"]}
      },
      "required": ["title","severity"],
      "additionalProperties": false
    }
  }],
  "output_config": {
    "format": {
      "type": "json_schema",
      "schema": {
        "type": "object",
        "properties": {
          "ticket_id": {"type": "string"},
          "next_action": {"type": "string"}
        },
        "required": ["ticket_id","next_action"],
        "additionalProperties": false
      }
    }
  },
  "messages": [{"role": "user", "content": "Open a high-severity ticket: build timed out"}]
}

Pin model IDs to your console and the Tool Use overview. Before prod, confirm output_config and strict no longer depend on leftover beta headers in your SDK version.

8. Conclusion

Claude API answers how the model joins the system. Tool Use answers owned execution and guaranteed arguments. MCP answers remote discovery and trimming. Structured Output answers the parser contract. The AI agent answers when the loop stops and how large the blast radius is. These are not five parallel “new feature” headlines. They are one entry, two execution planes, one delivery format, and orchestration you must write. Draw side-effect boundaries first; then turn on MCP and the loop so demos survive production.

Further reading: Structured outputs · Strict tool use · MCP connector · MCP protocol intro

FAQ

Can Tool Use and MCP run in the same request?
Yes. A common split is owned Tool Use for writes and an MCP toolset for reads. Both appear in the tool list, so name prefixes and allowlists matter so the model does not pick a write tool by accident.
Does Structured Output replace strict tools?
No. Structured Output constrains assistant text JSON; strict constrains tool_use name and input. If a function will execute, you need the tool schema—not a hope that legal args appear in prose.
Do I still need a beta header?
Follow current Anthropic docs: structured outputs moved to output_config.format, with a transition for the old parameter. New integrations should not depend on the structured-outputs beta header. Whether the MCP connector still needs anthropic-beta, check the MCP connector page before you ship.
How large should max_tokens be in an agent loop?
Size it to one tool-call step, not “the model maximum just in case”. Steps × max_tokens is the bill. When context bloats, summarize tool_result instead of growing the window forever.
How is this different from the MCP explainer on this site?
That article is what the protocol is and why the USB analogy holds. This one is how to compose the Claude Messages MCP connector with Tool Use, Structured Output, and an operable agent loop, with scenario splits.
Why does a build agent still want a cloud Mac?
codesign and xcodebuild need native macOS. The agent describes steps; execution needs a 24/7 SSH-able node. Cloud Mac mini keeps idle power low and the environment reproducible so signing certs and overnight compiles are not tied to a laptop.

Tools only help if the build has somewhere to run

Claude Tool Use and MCP turn intent into calls. Real xcodebuild, Fastlane, and signing still happen on macOS. Hashvps cloud Mac mini M4 gives SSH/VNC, dedicated IPv4, and a reproducible Homebrew tree—read-only MCP against the repo, write jobs on a named runner, not a model poking an unstable laptop shell.

If you are wiring a Claude API agent into an iOS/macOS pipeline, Hashvps cloud Mac is a high-value execution nodesee plans and let the loop finish remotely on a budget.

Hashvps · Mac Cloud

Agents need a stable execution node

Cloud Mac mini M4: native macOS and SSH—bind MCP tools and xcodebuild to one reproducible host.

Go to homepage
Limited offer