# Three questions. Three fetches, or one. · Onto
> We asked Claude Code the same three questions about news.ycombinator.com with its built-in WebFetch and with the Onto MCP. The default fetched the page for every question and its answers dropped every story's source; Onto fetched it once, answered the next two from the Markdown it already had, and kept all 13 sources.

**Source:** /case-studies/fetch-once
**Extracted:** 2026-09-24T18:14:20.632Z

---
Research · May 2026

## Three questions. Three fetches, or one.

We asked Claude Code the same three questions about news.ycombinator.com in two sessions: one with its built-in WebFetch, one with the Onto MCP. The default fetched the page for every question. Onto fetched it once and answered the next two from what it already had.

[Set up the MCP server](/mcp-server) [All case studies](/case-studies)

3 → 1

fetches of the page

0 → 13

source domains kept

10s → 5s

the second question

How it ran

### Same page, same questions, one difference.

Two Claude Code sessions, run once each.

The page

**news.ycombinator.com**The front page, 33.4 KB as WebFetch received it.

The questions

1.  the first 3 stories
2.  the next 5
3.  stories 9–15

The difference

**A** Claude Code's built-in WebFetch**B** the Onto MCP's `read_url`; its first prompt starts “Use Onto to”

One run of each, May 2026. Times are Claude Code's own turn timers (“Brewed for 14s”). A small test, not a benchmark.

Both sessions

### The transcripts, as they ran.

Verbatim to the third answer. Fetch lines are what the default repeats; the (domain) after each title is what Onto's answers keep.

A · Claude Code, WebFetch

❯ Fetch news.ycombinator.com and give me the first 3 story titles.● Fetch(https://news.ycombinator.com)⎿ Received 33.4KB (200 OK)● The top 3 Hacker News stories:Amazon, Facebook, FBI have access to a privateintelligence-sharing networkBBEdit 16Project Hail Mary – Stellar Navigation Chart✻ Brewed for 14s❯ Give me the next 5 stories.● Fetch(https://news.ycombinator.com)⎿ Received 33.4KB (200 OK)● Stories 4–8:More than 340 local news outlets are limitingthe Internet Archive's accessFlipper One – we need your helpIndexing a year of video locally on a 2021MacBook with Gemma4-31B (50GB swap)Where are all the UK red telephone kiosks?Python 3.15: features that didn't make the headlines✻ Cooked for 10s❯ Now give me stories 9 through 15.● Fetch(https://news.ycombinator.com)⎿ Received 33.4KB (200 OK)● Stories 9–15:Lost Images from the 1945 Trinity Nuclear Test RestoredLaunch HN: Runtime (YC P26) – Sandboxed codingagents for everyone on a teamParadeDB (YC S23) Is Hiring Distributed SystemsBournegol???Mounting Git commits as folders with NFSShow HN: Agent.email – sign up via curl, claim with OTPWe're testing new ad formats in Search…✻ Churned for 11s

B · Claude Code, Onto MCP

❯ Use Onto to fetch news.ycombinator.com and give me the first 3 story titles.Called onto (ctrl+o to expand)● The first 3 story titles on Hacker News:Amazon, Facebook, FBI have access to a privateintelligence-sharing network **(prismreports.org)**BBEdit 16 **(barebones.com)**Project Hail Mary – Stellar Navigation Chart**(valhovey.github.io)**✻ Cogitated for 12s❯ Give me the next 5 stories.● Stories 4–8 from Hacker News:More than 340 local news outlets are limitingthe Internet Archive's access **(niemanlab.org)**Flipper One – we need your help **(flipper.net)**Indexing a year of video locally on a 2021MacBook with Gemma4-31B **(simbastack.com)**Where are all the UK red telephone kiosks?**(thek6project.co.uk)**Python 3.15: features that didn't make the headlines**(changs.co.uk)**✻ Churned for 5s❯ Now give me stories 9 through 15.● Stories 9–15 from Hacker News:Lost Images from the 1945 Trinity Nuclear TestRestored **(ieee.org)**Launch HN: Runtime (YC P26) **(runtm.com)**ParadeDB (YC S23) Is HiringBournegol??? **(schmorp.de)**Mounting Git commits as folders with NFS **(jvns.ca)**Show HN: Agent.email – sign up via curl, claim with OTPWe're testing new ad formats in Search…**(blog.google)**✻ Cogitated for 12s

Why

### One returns an answer. The other returns the page.

The difference in fetches and in citations has the same cause.

A · WebFetch

#### Claude gets a reply about the page.

WebFetch passes the page and the question to a smaller model and returns that model's reply. The page itself never enters the conversation, so the next question needs another fetch, and anything the reply left out is gone. Here that was every story's source domain.

B · Onto MCP

#### Claude gets the page, as Markdown.

`read_url` returns the whole page, so it stays in the conversation. The next two questions were answered from it, and the domains came along because they're part of the page's text.

What it measured

### Fewer fetches, kept sources, a faster second answer.

Everything here is read off the two transcripts above.

**Fetches of the page**one per question, against one for all three

_A_3

_B_1

**Source domains in the answers**the (domain) HN prints after each title

_A_0

_B_13

**Time per question**Claude Code's turn timer

Q1**14s****12s**

Q2**10s****5s**

Q3**11s****12s**

All**35s****29s**

The third question took a second longer with Onto. One run each, so read the times as a direction, not a benchmark; the fetch count and the missing domains don't depend on timing.

Run it yourself

### One block in your Claude Code config.

Add the server, restart Claude Code, and ask the same three questions with and without it.

Claude Code MCP config

{
  "mcpServers": {
    "onto": {
      "command": "npx",
      "args": \["-y", "@ontosdk/mcp@latest"\],
      "env": { "ONTO\_API\_KEY": "onto\_sk\_live\_…" }
    }
  }
}

1.  01Create a key at app.buildonto.dev. The free tier is 1,000 credits a month, no card.
2.  02Paste the block with your key and restart Claude Code. `read_url` appears in its tools.
3.  03Ask for news.ycombinator.com's first three stories, then the next five, then 9 to 15.

Try it

### Run the same test on your own source.

If the numbers differ on your workload, we'd like to know.

[Get started](https://app.buildonto.dev/signup) [Set up the MCP server](/mcp-server)

[All case studies →](/case-studies)

---
## Structured Data (JSON-LD)
```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://buildonto.dev/#org",
      "name": "Onto",
      "url": "https://buildonto.dev",
      "logo": "https://buildonto.dev/icon.png",
      "sameAs": [
        "https://x.com/buildonto",
        "https://github.com/ravixalgorithm/ontosdk"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://buildonto.dev/#site",
      "url": "https://buildonto.dev",
      "name": "Onto",
      "publisher": {
        "@id": "https://buildonto.dev/#org"
      }
    },
    {
      "@type": "SoftwareApplication",
      "name": "Onto",
      "applicationCategory": "DeveloperApplication",
      "operatingSystem": "Web",
      "url": "https://buildonto.dev",
      "description": "Onto serves AI agents clean Markdown from your own site, at the same URL, and shows you which agents came. Plus the AIO score, a Read API and an MCP server.",
      "publisher": {
        "@id": "https://buildonto.dev/#org"
      },
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "USD",
        "description": "Free tier: 1,000 credits / month"
      }
    }
  ]
}
```
