# furl

furl is context compression for AI agents. It folds repeated tool output into a small hash-addressed marker, keeps the lines that matter so an agent spends fewer tokens, and returns any original the moment the agent asks, byte-exact for raw text and a semantically-complete re-serialization for structured JSON arrays. furl ships as a Claude Code plugin and an MCP server, and nothing is ever thrown away.

## Six real captures

These numbers are real furl 1.2.0 output, generated by site/data/generate.py.

- Application logs: 6,213 tokens to 263 tokens, 95.8 percent fewer, router:search
- Crash report: 2,445 tokens to 302 tokens, 87.6 percent fewer, router:ccr_offload
- JSON API response: 3,791 tokens to 218 tokens, 94.2 percent fewer, router:smart_crusher
- Test output: 2,745 tokens to 283 tokens, 89.7 percent fewer, router:ccr_offload
- CI build log: 2,400 tokens to 307 tokens, 87.2 percent fewer, router:ccr_offload
- Query result: 5,036 tokens to 549 tokens, 89.1 percent fewer, router:search

Across all six, 22,630 tokens in and 1,922 out, which is 91.5 percent fewer.

## Honest bounds

furl folds only what repeats. On repetitive machine output the best case reaches up to about 95 percent fewer tokens. On high-entropy prose the honest range is lower, roughly 0 to 54 percent. Hands-off automatic compression is pending the upstream fix anthropics/claude-code#68951. Until it lands, the manual API and the MCP tools are how you use furl, and they lose nothing. The 95 percent ceiling, the 91.5 percent six-capture figure above, and this 0 to 54 percent band are reconciled in one place: BENCHMARKS.md, the section The three public headline numbers.

## Links

- Site: https://furl-ctx.vercel.app/
- GitHub: https://github.com/omar-y-abdi/furl-ctx
- PyPI: https://pypi.org/project/furl-ctx/
