
Keepsake
Connects Claude to your Keepsake personal CRM through 58 tools covering contacts, companies, interactions, tasks, notes, daily journal entries, and tags. You can query who you last spoke with at a company, log interactions with natural language tag syntax, create follow-up tasks, search across all your relationship data, or pull up everything linked to a specific tag. Supports both remote HTTP (works in Claude iOS and web) and local stdio modes. All write operations show up in Keepsake's activity feed, so your users see exactly what the AI did. Rate limited to 60 requests per minute. Useful when you're building AI workflows that need to remember and act on your professional relationships without leaving the conversation.
- GitHub stars
- 1
- tools
- 80
- auth
- Secret needed
- transport
- STDIO, HTTP
- env var
- 1
- last updated
- Nov 4, 2026
Tools
80 toolsPublic tool metadata for what this MCP can expose to an agent.
list_contactsList contacts with pagination, sorting, field selection and filters (linked company, has_company, updated_since)
List contacts with pagination, sorting, field selection and filters (linked company, has_company, updated_since)
No parameter schema in public metadata yet.
get_contactGet a contact with recent interactions, tags, and stats
Get a contact with recent interactions, tags, and stats
No parameter schema in public metadata yet.
create_contactCreate a new contact (`company` links it to a company record, created if missing)
Create a new contact (`company` links it to a company record, created if missing)
No parameter schema in public metadata yet.
update_contactUpdate contact fields
Update contact fields
No parameter schema in public metadata yet.
delete_contactPermanently delete a contact
Permanently delete a contact
No parameter schema in public metadata yet.
search_contactsAccent-insensitive search by name, email, notes, phone and linked company names
Accent-insensitive search by name, email, notes, phone and linked company names
No parameter schema in public metadata yet.
get_contact_timelineUnified chronological feed of all items for a contact
Unified chronological feed of all items for a contact
No parameter schema in public metadata yet.
list_companiesList all companies
List all companies
No parameter schema in public metadata yet.
get_companyGet company with linked contacts and tags
Get company with linked contacts and tags
No parameter schema in public metadata yet.
create_companyCreate a new company
Create a new company
No parameter schema in public metadata yet.
update_companyUpdate company fields
Update company fields
No parameter schema in public metadata yet.
delete_companySoft-delete (or permanent delete) a company
Soft-delete (or permanent delete) a company
No parameter schema in public metadata yet.
search_companiesAccent-insensitive company search
Accent-insensitive company search
No parameter schema in public metadata yet.
link_contact_companyLink a contact to a company (optional role)
Link a contact to a company (optional role)
No parameter schema in public metadata yet.
unlink_contact_companyRemove a contact–company link
Remove a contact–company link
No parameter schema in public metadata yet.
merge_companiesMerge a duplicate company into another (contacts, entries, tags, details, notes)
Merge a duplicate company into another (contacts, entries, tags, details, notes)
No parameter schema in public metadata yet.
list_entriesList interactions (calls, emails, meetings, etc.) — filter by type, contact, company, page (`tag_id`), dates
List interactions (calls, emails, meetings, etc.) — filter by type, contact, company, page (`tag_id`), dates
No parameter schema in public metadata yet.
create_entryLog a new interaction — supports `#tag#` and `[[tag]]` syntax
Log a new interaction — supports `#tag#` and `[[tag]]` syntax
No parameter schema in public metadata yet.
update_entryUpdate an interaction
Update an interaction
No parameter schema in public metadata yet.
delete_entryDelete an interaction
Delete an interaction
No parameter schema in public metadata yet.
list_tasksList tasks — filter by status, date, company, page (`tag_id`)
List tasks — filter by status, date, company, page (`tag_id`)
No parameter schema in public metadata yet.
get_taskGet a task with its tags, contacts, companies and linked notes
Get a task with its tags, contacts, companies and linked notes
No parameter schema in public metadata yet.
create_taskCreate a task — supports `#tag#` and `[[tag]]` syntax
Create a task — supports `#tag#` and `[[tag]]` syntax
No parameter schema in public metadata yet.
update_taskUpdate task fields
Update task fields
No parameter schema in public metadata yet.
delete_taskDelete a task
Delete a task
No parameter schema in public metadata yet.
complete_taskMark as completed (auto-creates next occurrence for recurring tasks)
Mark as completed (auto-creates next occurrence for recurring tasks)
No parameter schema in public metadata yet.
uncomplete_taskMark as pending again
Mark as pending again
No parameter schema in public metadata yet.
snooze_taskReschedule to a new date
Reschedule to a new date
No parameter schema in public metadata yet.
get_tasks_todayToday's tasks: overdue + due today + ASAP
Today's tasks: overdue + due today + ASAP
No parameter schema in public metadata yet.
get_tasks_overdueOnly overdue tasks
Only overdue tasks
No parameter schema in public metadata yet.
list_notesList notes — filter by pinned/archived, day, company, page (`tag_id`), publication-flow stage (`status`)
List notes — filter by pinned/archived, day, company, page (`tag_id`), publication-flow stage (`status`)
No parameter schema in public metadata yet.
list_note_statusesThe stages of the user's publication flow (Idea → In progress → To review → Ready → Published by default — the user can rename, add or remove them)
The stages of the user's publication flow (Idea → In progress → To review → Ready → Published by default — the user can rename, add or remove them)
No parameter schema in public metadata yet.
get_noteGet one note by ID with its tags, contacts, tasks and linked notes
Get one note by ID with its tags, contacts, tasks and linked notes
No parameter schema in public metadata yet.
create_noteCreate a note — supports `#tag#` and `[[tag]]` syntax; `archived` creates a permanent Note directly (no Inbox), `status` puts it straight into the publication flow
Create a note — supports `#tag#` and `[[tag]]` syntax; `archived` creates a permanent Note directly (no Inbox), `status` puts it straight into the publication flow
No parameter schema in public metadata yet.
update_noteUpdate note content, links, days, or its publication-flow stage (`status`)
Update note content, links, days, or its publication-flow stage (`status`)
No parameter schema in public metadata yet.
delete_noteSoft-delete (or permanent)
Soft-delete (or permanent)
No parameter schema in public metadata yet.
pin_notePin as a post-it (short reference always at hand)
Pin as a post-it (short reference always at hand)
No parameter schema in public metadata yet.
unpin_noteUnpin a note (it stays where it is)
Unpin a note (it stays where it is)
No parameter schema in public metadata yet.
archive_noteArchive a note
Archive a note
No parameter schema in public metadata yet.
restore_noteRestore a deleted/archived note
Restore a deleted/archived note
No parameter schema in public metadata yet.
list_note_commentsList the marginalia attached to a note
List the marginalia attached to a note
No parameter schema in public metadata yet.
create_note_commentAttach a marginalia to a passage (pass `quote`) or to the whole note
Attach a marginalia to a passage (pass `quote`) or to the whole note
No parameter schema in public metadata yet.
update_note_commentEdit the content of a marginalia
Edit the content of a marginalia
No parameter schema in public metadata yet.
delete_note_commentPermanently delete a marginalia
Permanently delete a marginalia
No parameter schema in public metadata yet.
list_daysList days with their intention or question of the day (the one in force, which stays until changed), by date range
List days with their intention or question of the day (the one in force, which stays until changed), by date range
No parameter schema in public metadata yet.
get_dayGet a day, its intention in force (`intention`, carried over until changed) and what was written that day (`note`)
Get a day, its intention in force (`intention`, carried over until changed) and what was written that day (`note`)
No parameter schema in public metadata yet.
update_daySet a day's intention or question — one short line, not a journal (upsert); it stays in place on the following days until changed
Set a day's intention or question — one short line, not a journal (upsert); it stays in place on the following days until changed
No parameter schema in public metadata yet.
list_day_blocksList a day's time blocks, in timeline order (creates that day's recurring blocks first)
List a day's time blocks, in timeline order (creates that day's recurring blocks first)
No parameter schema in public metadata yet.
create_day_blockCreate a block, auto-placed first-fit (or pinned via anchor_time)
Create a block, auto-placed first-fit (or pinned via anchor_time)
No parameter schema in public metadata yet.
update_day_blockUpdate a block (title, duration, anchor, note, done)
Update a block (title, duration, anchor, note, done)
No parameter schema in public metadata yet.
delete_day_blockDelete a block and prune its timeline ref (on a recurring block: remove it from that day only)
Delete a block and prune its timeline ref (on a recurring block: remove it from that day only)
No parameter schema in public metadata yet.
list_recurring_blocksList the blocks that come back on chosen weekdays (the user's ideal week and habits)
List the blocks that come back on chosen weekdays (the user's ideal week and habits)
No parameter schema in public metadata yet.
create_recurring_blockMake a block recurring — from an existing block, or from scratch
Make a block recurring — from an existing block, or from scratch
No parameter schema in public metadata yet.
update_recurring_blockChange a recurring block from a date onward (title, duration, fixed time, weekdays) — the past is never rewritten
Change a recurring block from a date onward (title, duration, fixed time, weekdays) — the past is never rewritten
No parameter schema in public metadata yet.
stop_recurring_blockStop a repetition from a date onward; past days keep their blocks
Stop a repetition from a date onward; past days keep their blocks
No parameter schema in public metadata yet.
keep_recurring_block_noteKeep a note in a recurring block: every occurrence shows it from a date onward (a running log, a routine checklist)
Keep a note in a recurring block: every occurrence shows it from a date onward (a running log, a routine checklist)
No parameter schema in public metadata yet.
stop_keeping_recurring_block_noteStop keeping a note in a recurring block from a date onward; earlier days keep it
Stop keeping a note in a recurring block from a date onward; earlier days keep it
No parameter schema in public metadata yet.
list_tagsList tags (lightweight — ordering arrays omitted), with optional name search (`q`) and `archived` / `favorite` filters
List tags (lightweight — ordering arrays omitted), with optional name search (`q`) and `archived` / `favorite` filters
No parameter schema in public metadata yet.
get_tagGet a tag by ID with all properties, including `tasks_order` (section markers `h:<header_id>`)
Get a tag by ID with all properties, including `tasks_order` (section markers `h:<header_id>`)
No parameter schema in public metadata yet.
create_tagCreate a new tag
Create a new tag
No parameter schema in public metadata yet.
update_tagUpdate a tag (name, description, color, icon, favorite, `archived` to close a project without deleting anything, order of tasks and sections via `tasks_order`)
Update a tag (name, description, color, icon, favorite, `archived` to close a project without deleting anything, order of tasks and sections via `tasks_order`)
No parameter schema in public metadata yet.
delete_tagPermanently delete a tag and all its links
Permanently delete a tag and all its links
No parameter schema in public metadata yet.
merge_tagMerge a duplicate tag into another: links moved, `#source#` rewritten as the target's name, source deleted
Merge a duplicate tag into another: links moved, `#source#` rewritten as the target's name, source deleted
No parameter schema in public metadata yet.
get_tag_itemsGet items linked to a tag — filter by `types`/`status`, `summary` mode, task `sections` included
Get items linked to a tag — filter by `types`/`status`, `summary` mode, task `sections` included
No parameter schema in public metadata yet.
link_tagLink any entity to a tag
Link any entity to a tag
No parameter schema in public metadata yet.
unlink_tagRemove a tag link
Remove a tag link
No parameter schema in public metadata yet.
list_task_headersList all task headers (section separators)
List all task headers (section separators)
No parameter schema in public metadata yet.
get_task_headerGet a task header by ID
Get a task header by ID
No parameter schema in public metadata yet.
create_task_headerCreate a task header (section) — insert `h:<id>` in the tag's `tasks_order` to place it
Create a task header (section) — insert `h:<id>` in the tag's `tasks_order` to place it
No parameter schema in public metadata yet.
update_task_headerUpdate a task header (name, description, collapsed)
Update a task header (name, description, collapsed)
No parameter schema in public metadata yet.
delete_task_headerPermanently delete a task header
Permanently delete a task header
No parameter schema in public metadata yet.
link_note_companyLink a company to a note
Link a company to a note
No parameter schema in public metadata yet.
unlink_note_companyUnlink a company from a note
Unlink a company from a note
No parameter schema in public metadata yet.
link_note_contactLink a contact to a note
Link a contact to a note
No parameter schema in public metadata yet.
unlink_note_contactRemove a contact link from a note
Remove a contact link from a note
No parameter schema in public metadata yet.
link_entry_companyAdd a company as participant of an entry
Add a company as participant of an entry
No parameter schema in public metadata yet.
unlink_entry_companyRemove a company as participant of an entry
Remove a company as participant of an entry
No parameter schema in public metadata yet.
link_entry_contactLink a contact to an entry
Link a contact to an entry
No parameter schema in public metadata yet.
unlink_entry_contactRemove a contact link from an entry
Remove a contact link from an entry
No parameter schema in public metadata yet.
link_task_companyLink a company to a task
Link a company to a task
No parameter schema in public metadata yet.
Sponsors
Configuration
KEEPSAKE_API_KEY*secretYour Keepsake API key (starts with ksk_). Get one at https://keepsake.place → Account → API Keys.
Readme
keepsake-mcp
MCP server for Keepsake (keepsake.place), the app where creators and solo entrepreneurs empty their heads: ideas, tasks and the people who matter, together and linked in one place, all the way to publishing.
Connect your AI assistant (Claude, Cursor, or any MCP-compatible client) to your Keepsake data: contacts, interactions, tasks, notes, daily intentions, companies, and tags.
Why
Your AI assistant forgets between conversations; Keepsake remembers. Ask it to:
- "Capture this idea for my next article in #newsletter#"
- "Who did I last talk to at Acme Corp?"
- "Add a note that I ran into Sarah at the conference"
- "What tasks are overdue?"
- "Show me everything related to the #house-project tag"
- "Create a follow-up task for my meeting with John next week"
Quick start
1. Get your API key
Sign up at keepsake.place, then go to Account > API Keys to generate one.
2. Choose your connection method
Option A: Remote (HTTP) — recommended
No installation required. Works with Claude iOS, Claude web, Claude Desktop Connectors, and any MCP client that supports Streamable HTTP.
Details
- Repository
- github.com/nicolascroce/keepsake-mcp
- Website
- keepsake.place/en/ai
- Package
keepsake-mcp- Transport
- STDIO, HTTP
- Auth
- Required
- Registry
- MCP registry, active