Send a URL. Get the whole page as Markdown, every line linked to where it came from.
Agents read the web through markdown APIs that guess what matters, and guess wrong. So the agent gets stuck, or misses the answer, or states something false, and you can't tell which happened. The workaround is driving a full browser for every page, which is slow and expensive.
That's why we built Expand. Our model Iris sees the rendered page in a real browser and returns accurate Markdown, tables and icons intact, plus the hidden JSON as State JSON. Every line links back to where it came from. So your agent answers from the real page at API speed, and you can verify every result.
Set up Expand inside your agent, or run one Fetch from your terminal and inspect the output yourself.
Paste it into the coding agent you already have open. Expand installs the CLI, configures every supported harness it detects on this machine, and proves the setup with a cited answer.
One command in your terminal. Agent-ready Markdown, State JSON, and a replayable snapshot — no setup.
$ npx expandai fetch https://news.ycombinator.com
# Hacker News
1. A 40-line fix eliminated a 400x performance gap
2. The Gleam Programming Language
3. Show HN: An agent that searches your snapshots
…Every Fetch returns:
Point your coding agent at the repo you want Expand in. It installs the package and writes the first call against a URL you name.
Python SDK coming soon. Learn more.
$ npm install @expandai/sdk
const page = await expand.fetchJson({ url: 'https://news.ycombinator.com' })Every Fetch returns one working document plus the evidence behind it. Main Markdown is the readable default, with the trash removed. State JSON ships alongside it when it fits, and stays addressable by reference when a page carries too much. Appendix holds secondary regions. Every line links back to the exact spot on the captured page, so you can verify what your agent saw.
| Plan | Price | Seats |
| ---- | ----- | ----- |
| Pro | $20 | 5 |
| Team | $40 | 20 |Layout-aware Markdown for tables, grids, pricing pages, feature comparisons, and icons.
{
"product": "PRS516",
"price": 1850,
"inStock": true
}Fetch is the product. The CLI, TypeScript SDK, HTTP API, MCP, and the Playground are different ways to call it from wherever you work. See How Fetch Works for the model behind all of them.
Pointing an agent or IDE tool at these docs? Start it with start.md or the llms.txt index, pull the full bundle from llms-full.txt, or read any page as Markdown. llms.txt only helps agents you point at it directly; major web crawlers do not fetch it on their own.
Hidden frontend state and network evidence delivered as clean JSON.
# Main document
…
———————————————
# Appendix
- Navigation
- Footer linksSecondary page context stays available without flooding the main document.
"$1,850 list price"
└ source src_3f2a9
└ snapshot 9c1b… ▶ ReplayTrace answers back to source blocks, snapshots, screenshots, and replayable captures.