Skip to content

feat: add experimentalGcfFormat flag for GCF-encoded tool responses#2235

Open
blackwell-systems wants to merge 1 commit into
ChromeDevTools:mainfrom
blackwell-systems:experimental-gcf-format
Open

feat: add experimentalGcfFormat flag for GCF-encoded tool responses#2235
blackwell-systems wants to merge 1 commit into
ChromeDevTools:mainfrom
blackwell-systems:experimental-gcf-format

Conversation

@blackwell-systems

Copy link
Copy Markdown

Summary

Add --experimentalGcfFormat as a hidden experimental flag alongside the existing --experimentalToonFormat. When enabled, tool responses encode structured data using GCF (Graph Compact Format) instead of formatted JSON. No changes to existing behavior or default output.

Why

Benchmarked on Chrome DevTools data shapes

Data shapes verified from source code and test snapshots (ConsoleMessageConcise, NetworkRequestConcise, HeapSnapshotFormatter.toJSON(), SnapshotFormatter.toJSON()):

Dataset JSON TOON GCF TOON vs JSON GCF vs JSON GCF vs TOON
Console (100) 2,534 1,716 1,663 32.3% 34.4% +3.1%
Console (500) 12,879 8,761 8,475 32.0% 34.2% +3.3%
Network (100) 3,287 1,776 1,682 46.0% 48.8% +5.3%
Network (500) 16,547 8,936 8,442 46.0% 49.0% +5.5%
Heap (100) 2,210 797 753 63.9% 65.9% +5.5%
DOM (3x3) 282 295 244 -4.6% 13.5% +17.3%
DOM (4x3) 396 464 407 -17.2% -2.8% +12.3%

TOON increases token count on DOM snapshots (-4.6% to -17.2% vs JSON). GCF saves tokens on every data type.

Console message corruption

TOON's decoder crashes on console messages containing bracket-colon patterns, which are standard browser output:

[Error]: net::ERR_CONNECTION_REFUSED
[React DevTools]: Component rendered 3 times
[Violation]: Forced reflow while executing JavaScript took 42ms
[Performance]: Long task detected (duration: 234ms)

10 of 20 console messages fail TOON round-trip. GCF: zero failures. While Chrome DevTools MCP encodes only (no decode), the structurally ambiguous output can affect downstream consumers.

LLM comprehension

GCF scores 100% on general structured data and 90.7% on adversarial payloads across GPT-4o, GPT-5.5, Claude, and Gemini. JSON scores 53.6%. TOON scores 68.5%. (1,700+ evaluations.)

Full eval data: GCF benchmarks

Data integrity

GCF verified lossless across 43 billion+ round-trips in 5 formats and 6 languages. Zero failures. Zero runtime dependencies.

Implementation

Mirrors the existing experimentalToonFormat pattern exactly:

  • Hidden boolean CLI flag, defaults to false
  • useGcf parameter threaded through handle()format()
  • compactEncode helper selects GCF, TOON, or null (formatted JSON)
  • GCF takes precedence if both flags are set

Changes

File Change
src/bin/chrome-devtools-mcp-cli-options.ts Add experimentalGcfFormat flag
src/third_party/index.ts Export gcfEncode from @blackwell-systems/gcf
src/McpResponse.ts Add useGcf parameter, compactEncode helper
src/ToolHandler.ts Pass experimentalGcfFormat to handle()
package.json Add @blackwell-systems/gcf (pinned 2.1.2, zero deps)

Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant