Notion offload

How to stop paying Notion prices for Claude queries

Notion is a great writing tool. It was not designed to be Claude's retrieval layer. Here's what breaks, why it breaks, and a lighter way to fix it.


The problem with Notion as Claude's memory

If you're using Notion's MCP integration with Claude, you've probably hit at least one of these:

None of this is Notion's fault. Notion is a document tool. It stores your data in a rich, flexible, human-browsable format. That richness is exactly why it's expensive to query programmatically: every lookup returns far more than you wanted.

The core issue

Notion's MCP connector was built to give Claude access to your workspace. It was not designed to be fast, cheap retrieval for structured data. The row limit (~25 rows returned per query) and metadata overhead are symptoms of that mismatch — not bugs.

What Notion actually sends Claude

Run a query against a Notion database from Claude and look at what arrives in the context. A single row from a contacts database might look something like this — stripped down:

notion mcp · what arrives in context
// one contact row — actual token cost: ~180 tokens
{
  "object": "page",
  "id": "1a2b3c4d-...",
  "created_time": "2024-03-01T09:22:00.000Z",
  "last_edited_time": "2024-11-15T14:03:00.000Z",
  "created_by": { "object": "user", "id": "..." },
  "last_edited_by": { "object": "user", "id": "..." },
  "cover": null, "icon": null,
  "parent": { "type": "database_id", "database_id": "..." },
  "archived": false, "in_trash": false,
  "properties": {
    "Name": { "id": "title", "type": "title",
      "title": [{ "type": "text", "text": { "content": "Alice Henderson",
        "link": null }, "annotations": { "bold": false, "italic": false,
        "strikethrough": false, "underline": false, "code": false,
        "color": "default" }, "plain_text": "Alice Henderson", "href": null }]
    },
    // ... and so on for every property ...
  }
}
 
// what Claude actually needed: ~8 tokens
Alice Henderson · £15 owed · met 2024-03-01

The ratio is roughly 20:1 between what Notion sends and what Claude needs. Multiply that by 25 rows, and a single query can consume 4,000–5,000 tokens just in payload — before Claude says a word back.

What Stash does differently

Stash is a hosted record store built for exactly this use case. It stores your data as plain records — no blocks, no property wrappers, no version history — and retrieves them via FTS5 full-text search, returning only what Claude asked for.

When you query Stash, the response is tight:

stash mcp · what arrives in context
who do I owe money to?
2 matches in contacts:
· Alice Henderson — £15 owed — met 2024-03-01
· Pete Morrison — £40 owed — met 2024-09-12
 
// total: ~30 tokens

No row limits that matter in practice. No metadata bloat. Full-text search across your entire store — whether it's 50 records or 5,000.

Feature Notion MCP Stash
Rows returned per query ~25 (hard ceiling) All matching — no wall
Tokens per row 100–300 (metadata bloat) 10–30 (records only)
Search type Property filter FTS5 full-text across all fields
Setup Integration + API key + database sharing Paste one URL, sign in with Google
What Claude talks to Notion's full workspace API Purpose-built retrieval tools

Stash is not a Notion replacement for writing, project management, or team collaboration. It is a retrieval layer. If you want to write a doc, use Notion. If you want Claude to remember and search your structured data cheaply, Stash wins that one.

What it actually costs

We ran an informal comparison: 500-record contacts list, query for "all contacts in London", running against both Notion's MCP and Stash.

Query cost — 500-record contacts search

// preliminary · n=1 test · your numbers will vary by Claude model and record size

Notion MCP
~4,800 tk
Stash
~140 tk

// Notion also returned 25 rows max. Stash returned all 12 matching records.

Honest caveat

These numbers are preliminary, from one test, with one Claude model and one record format. Your mileage will vary — particularly if your Notion records have many properties, or your Stash records are long. We're sharing the direction and order of magnitude, not a guarantee. We'll firm this up with a reproducible eval and update this page when we do.

The gap in Notion's favour gets wider with bigger databases and higher row counts — both because more metadata is included and because the row cap means multiple round-trips to get complete coverage.

How to add Stash to Claude

Stash connects to Claude as a custom MCP connector. It takes about 90 seconds and needs no card.

Copy the connector URL

Use the box at the bottom of this page. One click copies it to your clipboard.

Add it in Claude

In Claude: Settings → Connectors → Add custom, paste the URL. Claude walks you through Google sign-in — that's also your free account creation.

Just talk to it

"Stash this." "Search contacts for London." "What's on my deals list?" That's the interface.

Free account

The free tier is generous enough to run a real migration and use Stash daily. Pricing may change — this is a new service. Cancel anytime; your data goes with you.

Moving your Notion data to Stash

You don't need to export a CSV or write a script. The fastest way is to let Claude do it while both connectors are active.

Method 1: Let Claude migrate it (easiest)

With both Notion MCP and Stash active in the same Claude conversation:

claude · both connectors active
look at my Notion contacts database and stash all of them. keep name, company, notes, and the last-met date.
I'll pull your Notion contacts and stash each one. Give me a moment…
// Claude reads from Notion MCP, writes to Stash in batches
Done — 147 contacts stashed in the "contacts" collection.
Try: "who do I owe a follow-up to?" and I'll search them for you.

Claude handles the mapping. You only need to tell it which fields matter — it ignores the Notion metadata noise automatically.

Method 2: Add records as you go (lighter)

If you don't need to migrate everything at once, just start fresh. Tell Claude to stash new contacts, notes, or items as they come up. The old Notion database stays as archive; Stash becomes the live layer Claude actively uses.

What to stash (and what to leave in Notion)

Stash is the right layer for structured data you want Claude to search and recall: contacts, deals, tasks, recurring items, notes with facts you need back. Leave long-form writing, rich-media docs, and team collaboration in Notion — Stash doesn't do any of that.

Good fit for Stash Keep in Notion
Contacts + CRM notes Long-form docs and wikis
Deal pipeline rows Meeting notes with embeds
Task or schedule lists Team boards with comments
Standing context (who you are, your OKRs) Databases you browse visually more than query
Any list Claude checks repeatedly Content you publish from Notion

What you get back

Once your contacts (or whatever you moved) are in Stash, the retrieval model changes:

stash · examples of what changes
anyone I haven't followed up with in 60 days?
4 contacts · sorted by last-met:
· Alice Henderson · 84 days · enterprise lead
· Tom Briggs · 71 days · intro pending
· Priya Shah · 68 days · proposal sent
· Mike Foster · 62 days · awaiting contract
 
stash it — great call with Acme, wants a demo Friday
ok — filed in deals · id 7m3p1

Full results, every time. No row wall. And because the response is compact, you have context budget left for Claude to actually do something with what it found.

Add Stash to Claude

Paste this URL into Claude's connector settings. Sign in with Google. Free account — no card needed.

https://stash-production-db08.up.railway.app/mcp

Settings → Connectors → Add custom → paste → Google sign-in · takes about 90 seconds

// Stash is a new service. Pricing may change. Cancel anytime.