If you use Claude with Notion's MCP connector to search your databases, you may have noticed something: simple queries are burning a lot of tokens. More than they should. Here's what's happening, and what to do about it.
Notion's MCP connector is genuinely useful. But it's designed around Notion's data model, not Claude's token budget. When you ask Claude to search a Notion database, the connector returns:
For a 500-record database with a moderate schema, a simple top-5 search can return 4,000–5,000 tokens. Most of those tokens are metadata that Claude processes but doesn't need for your actual question.
Stash is a hosted MCP record store designed for exactly this use case. It stores flat records and returns terse structured results. Same 500-record database, same search query: Stash returns ~175 tokens for a top-5 result set.
The structural reason: Stash doesn't have rich text blocks, version history, or schema metadata. Records are key-value pairs with full-text search. When Claude asks "find records about project Alpha", Stash returns the five most relevant records and stops. No padding.
| Metric | Notion MCP | Stash MCP |
|---|---|---|
| Tokens per query (500-record DB, top 5) | ~4,100 | ~175 |
| Cost per query (Claude Sonnet pricing) | ~$0.012 | ~$0.0005 |
| Response time | varies (Notion API) | <50 ms (full-text search) |
| Rich document editing | Yes | No |
| Visual database interface | Yes | No |
Token counts are preliminary (n=1 internal test, standard schema). Your numbers will vary by database structure. The structural advantage is stable: Notion returns pages; Stash returns records.
The trade-off is real: Stash doesn't give you Notion's editing interface, relational views, or embed support. If you're doing serious document work in Notion, keep Notion. But if you're using a Notion database primarily as a list that Claude reads — a task tracker, a contact list, a research log — the per-query cost difference is significant.
Good candidates:
Poor candidates:
You can ask Claude to do this for you in about five minutes, once Stash is connected.
In Claude: Settings → Connectors → Add custom → paste https://app.stashlite.com/mcp. Sign in with Google. Free account, no card needed.
In Notion: open your database → ··· → Export → CSV. Download the file.
Paste the CSV content (or upload the file) and say:
"I have a Notion export as CSV. Each row is a record. Collection name: my-tasks Please add each row to Stash using the add() tool."
Claude will iterate through the rows, calling add("my-tasks", {...}) for each one. For a 500-row database this takes a couple of minutes.
"Search Stash for 'project Alpha' in my-tasks and show me the top 3 results."
If it comes back with the right records, the migration is done.
Instead of "search my Notion database for X", say "search Stash collection my-tasks for X". Claude's tool calls shift from the Notion connector to Stash. Same results, lower token cost.
Stash is a read-optimised store, not a live sync. If your Notion database changes frequently, you'll need to re-import. For data that's mostly stable (reference lists, archived research, contact lists), the snapshot-and-import pattern works fine. For live task management where you're adding rows daily, you'd need to either accept the drift or script the sync.
A Notion→Stash sync API is on the roadmap (Stash Cache), but it's not live yet. For now: import once, use Stash for reads, continue editing in Notion if you need the visual interface.
The pattern that makes this worthwhile isn't replacing Notion — it's adding Claude as a search layer over your data. You keep building in Notion. You periodically sync to Stash. Claude searches Stash cheaply.
"What were the key findings from my user interviews last quarter?" → Claude calls search("user-interviews", "key findings Q1") → gets back 3 relevant records in ~150 tokens → synthesises the answer.
That same query against a fat Notion database with embedded block content could cost 10–20× more in tokens and be slower. The difference compounds across a working week.