Skip to content

Commit 736cbf5

Browse files
olaservoclaude
andcommitted
docs: add live-API size measurements for structured_content_only
The synthetic 272-byte fixture undersells the effect, because the saving comes from JSON-string escaping overhead, which scales with payload size. Measured against the live GitHub API on github/github-mcp-server, comparing the full serialized tools/call result: pull_request_read get_files 99,990 -> 48,999 bytes (-51%) actions_list list_workflows 30,407 -> 15,839 bytes (-48%) actions_get get_workflow_run 30,229 -> 15,801 bytes (-48%) pull_request_read get_check_runs 10,551 -> 6,240 bytes (-41%) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 53cb8d2 commit 736cbf5

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

docs/feature-flags.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,16 @@ A client that negotiated 2026-07-28 is not such a client. This flag drops the re
6363
| `output_schemas` | 405 bytes (+49%) |
6464
| `output_schemas,structured_content_only` | 254 bytes (−7%) |
6565

66-
(Measured by `TestStructuredContentOnlyRoughlyHalvesTheResult` on a small payload.) The result is *smaller* than having no output schema at all, because a text block embeds JSON as an escaped string — every `"` becomes `\"` — while `structuredContent` carries it raw. The saving grows with payload size.
66+
(Measured by `TestStructuredContentOnlyRoughlyHalvesTheResult` on a small payload.) The result is *smaller* than having no output schema at all, because a text block embeds JSON as an escaped string — every `"` becomes `\"` — while `structuredContent` carries it raw.
67+
68+
The saving grows with payload size. Measured against the live GitHub API on `github/github-mcp-server`, comparing the full serialized `tools/call` result:
69+
70+
| Call | `output_schemas` | `+ structured_content_only` |
71+
|------|------------------|-----------------------------|
72+
| `pull_request_read` `get_files` | 99,990 B | 48,999 B (−51%) |
73+
| `actions_list` `list_workflows` | 30,407 B | 15,839 B (−48%) |
74+
| `actions_get` `get_workflow_run` | 30,229 B | 15,801 B (−48%) |
75+
| `pull_request_read` `get_check_runs` | 10,551 B | 6,240 B (−41%) |
6776

6877
`content` remains present as an empty array, since the schema still requires the field.
6978

0 commit comments

Comments
 (0)