As of 2026-10-30, the Claude platform release notes for 2026-10-28 say the first-party Messages API and Token Counting API maximum request size moved from 32 MB to 128 MB. You might inline entire OpenAPI-derived input_schema blobs into messages now that the gateway accepts more bytesâbut splitting is mainly about not rewriting the top-level tools array and keeping prompt cache, not about beating 32 MB. See mid-conversation tool schema and output_config.
Under the 32 MB cap, copying MCP listings into every tool_addition or stacking output_config.format.schema with hundreds of tools could return 413. At 128 MB, 413 may disappear while token cost and cache misses stay.
What changed on 28 October
- Messages API: HTTP body limit 32 MB â 128 MB on the first-party Claude API.
- Token Counting API (
POST /v1/messages/count_tokens): same change, so you can POST the same JSON shape beforemessages.create.
Inline tools, strict: true, and output_config field shapes are unchangedâonly the maximum JSON string size moved.
128 MB vs 1M context
- 128 MB: UTF-8 bytes on the wireânested schemas, long enums, attachments.
- input_tokens: tokenizer output; a 20 MB body can still approach the 1M context window.
- 100,000 messages: the Messages API still caps message objects per request alongside the byte cap.
One line. 128 MB fixes âbody too big to sendâ; splitting inline schema is still about cache and duplication.
Where inline JSON Schema lives
With inline-tools-2026-09-15, tool_addition blocks carry full input_schema. MCP flows use mcp_tool_listing to pin the catalog without rewriting top-level tools each turn.
{
"model": "claude-haiku-5-5",
"max_tokens": 1024,
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "Register the billing tool for this turn." },
{
"type": "tool_addition",
"tool": {
"name": "create_invoice",
"description": "Create an invoice row",
"input_schema": {
"type": "object",
"properties": {
"customer_id": { "type": "string" },
"amount_cents": { "type": "integer" }
},
"required": ["customer_id", "amount_cents"],
"additionalProperties": false
}
}
}
]
}]
}
When you still split
- Prompt cache: changing the root
toolsarray still invalidates cache; inline additions without touchingtoolsremain the pattern from the mid-conversation note. - Duplication: pasting the same schema every turn wastes bytes and tokensâdefine once in
toolsor listing, then reference by name. - output_config plus tools: validate locally with the Schema validator before burning tokens on 400s.
Validate with count_tokens
{
"estimate_ok": {
"endpoint": "POST /v1/messages/count_tokens",
"input_tokens": 184002,
"body_bytes_approx": 9437184
},
"estimate_bad": {
"input_tokens": 1200000,
"body_bytes_approx": 134217728,
"failure": "May exceed context even if under 128 MB"
}
}
Measure UTF-8 length yourself for the 128 MB cap; trust API input_tokens for context.
Bedrock and Google Cloud
The note applies to the first-party Claude API only. Bedrock, Google Cloud Anthropic managed, and Foundry keep their own invoke limitsâsee Bedrock structured output and Google Cloud wiring.
FAQ
Is 128 MB the same as the 1M token context window?
No.
With 128 MB, can I inline every MCP tool input_schema into messages?
Bytes maybe; cache semantics say use listing + references.
Does the Token Counting API also allow 128 MB?
Yes, on the first-party API as of 2026-10-28.
Did the strict input_schema subset change?
No.
How does this split from the mid-conversation tool schema note?
That note covers how to write inline schema; this one covers splitting after the byte limit change.
Summary
As of 2026-10-30, 2026-10-28 raised first-party Messages and Token Counting bodies from 32 MB to 128 MB. Inline JSON Schema still lives in tool_addition / listing input_schema. Do not stop splitting just because of 128 MBârewriting tools still breaks cache, and duplicate schemas still cost tokens. POST to count_tokens and measure bytes locally. Next: compute UTF-8 size and input_tokens on your largest agent request, then decide whether schemas belong in a listing.