Claude is good at relationship management tasks: drafting follow-up emails, summarising who someone is, flagging when you haven't talked to someone in a while. The problem is that it doesn't remember who your contacts are between sessions.
So most people end up doing one of two things:
There's a third option: store your contacts in Stash and let Claude search them on demand. You get the flexibility of Claude plus persistent memory, without loading a whole spreadsheet every time you need to look someone up.
Stash is an MCP record store — a connector you add to Claude once. You store records (key/text pairs) in named collections. Claude can then add, search, update, and retrieve them across sessions.
For a mini-CRM, you'd keep a contacts collection. Each contact is a record with a key (their name or ID) and a text field containing whatever you want Claude to know about them.
The key principle: store the things you'd otherwise paste. Instead of loading 50 contacts to find out if Sarah Chen is a warm lead, Claude calls search(collection="contacts", q="Sarah Chen") and gets one record back.
Sign up at stashlite.com, get your connector URL, add it to Claude's MCP connectors. Takes about 30 seconds.
Tell Claude to add contacts from wherever they currently live. You can:
You: Here are my active leads. Add each one to my contacts collection. Name: Sarah Chen, Company: Meridian Labs, Status: warm lead, Last contact: May 2026, Notes: Interested in Q3 pilot, budget ~£20k Name: Tom Okafor, Company: BrightBuild, Status: cold, Last contact: Feb 2026, Notes: Asked for case studies, never followed up [...etc] Claude: [calls add() for each contact] Added 8 contacts to the contacts collection.
Now, any conversation where you need contact information, Claude fetches it:
You: Who are my warm leads right now? Claude: [calls search(collection="contacts", q="warm lead")] → Returns 3 records Your warm leads: - Sarah Chen (Meridian Labs) — Q3 pilot interest, budget ~£20k, last contact May 2026 - James Oduya (Folioworks) — Demo done, awaiting pricing sign-off - Priya Singh (Nexus Health) — Intro call positive, needs proposal by end of month
You: I just spoke to Tom Okafor. He's interested now — update him to warm. Claude: [calls upsert(collection="contacts", key="tom-okafor", text="Tom Okafor, BrightBuild. Status: warm. Last contact: June 2026. Notes: Re-engaged after case study. Interested in Q4 pilot.")] Done. Tom Okafor updated to warm.
There's no required schema — records are plain text. But a consistent format helps Claude search and summarise better:
Name: Sarah Chen Company: Meridian Labs Role: Head of Operations Status: warm lead Last contact: 2026-05-12 Next action: Follow up re: Q3 pilot proposal Notes: Budget around £20k. Team of 5. Using Notion currently, frustrated by row limits. Interested in Stash for their ops database. Tags: enterprise, operations, notion-user
When you include Tags: in the text, search("notion-user") finds all contacts tagged that way. Same for status, company, or any other field.
You: Give me a pipeline summary. List all contacts with status warm or proposal-sent, ordered by next action date. Claude: [calls list(collection="contacts", filter="warm OR proposal-sent")] → Returns 6 records Pipeline (6 contacts): Warm leads (3): Sarah Chen, James Oduya, Priya Singh Proposal sent (2): Wei Zhao (awaiting sign-off), Anna Kowalski (review Friday) Stalled (1): Marcus Brown — no response in 3 weeks, suggest follow-up
You: I have a call with Priya Singh in 20 minutes. What do I know about her? Claude: [calls search(collection="contacts", q="Priya Singh")] → Returns: Priya Singh, Nexus Health, Head of Product. Intro call 2026-05-28 was positive — she's building a patient intake system, needs lightweight structured storage for ~500 patient intake records. Budget not confirmed. Wants a proposal by end of June. One thing to close on: confirm budget range and send the proposal today.
You: Who haven't I spoken to in over 6 weeks? Claude: [calls search(collection="contacts", q="last contact")] → Scans last_contact fields, surfaces stale records 3 contacts haven't been touched in 6+ weeks: - Tom Okafor (last: Feb 2026) — send the case studies he asked for - Li Wei (last: April 2026) — was waiting for a product update (it shipped) - Rachel Nwosu (last: April 2026) — intro was positive, nothing followed
| Approach | Tokens to look up one contact | Tokens to load full list (50 contacts) |
|---|---|---|
| Paste spreadsheet each time | ~3,000–8,000 | ~3,000–8,000 (always all of it) |
| Stash search() | ~50–150 | ~50–150 (only fetches matches) |
The bigger your contact list, the more the difference compounds. A 200-contact list pasted into every relevant conversation is a substantial recurring cost. Stash fetches the 1–3 contacts actually relevant to what you're doing.
Stash is not Salesforce or HubSpot. It has no pipeline views, no email integration, no automated sequences, no calendar. If you need those things, you need a real CRM.
But if what you need is: Claude knows who your contacts are, can look them up fast, and can update them when things change — that's exactly what this is built for. No monthly CRM fee, no complex setup, no CSV exports. Just Claude and a fast searchable store.
The quickest way to start:
That's it. The first search that saves you from pasting a spreadsheet is the point where it clicks.
10,000 records free. No card required. Add to Claude in 30 seconds.
Add Stash to Claude →