nicolascroce avatar

Keepsake

nicolascroce/keepsake-mcp

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 tools

Public 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*secret

Your 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.


View the full README on GitHub

Details

Repository
github.com/nicolascroce/keepsake-mcp
Website
keepsake.place/en/ai
Package
keepsake-mcp
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active