Skip to main content
Glama
nicolascroce

keepsake-mcp

by nicolascroce

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
KEEPSAKE_API_KEYYesYour Keepsake API key (starts with ksk_)
KEEPSAKE_API_URLNoCustom API URL (default: https://app.keepsake.place/api/v1)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_contactsA

List all contacts in the user's Keepsake CRM. Supports pagination, sorting, and optional last_interaction_date enrichment.

get_contactA

Get a single contact by ID, including recent entries (interactions), tags, last_interaction_date, and total_entries count.

create_contactA

Create a new contact. first_name is required. last_name is optional (useful for contacts where you only know the first name).

update_contactA

Update an existing contact. Only send the fields you want to change.

delete_contactA

Permanently delete a contact and all associated data.

search_contactsA

Search contacts by name, email, company, etc. Search is accent-insensitive.

list_companiesA

List all companies/organizations in the user's Keepsake CRM. Supports pagination and sorting.

get_companyA

Get a single company by ID, including linked contacts (with roles) and tags.

create_companyB

Create a new company/organization. Only 'name' is required.

update_companyA

Update an existing company. Only send the fields you want to change.

delete_companyA

Soft-delete a company. Use permanent=true for hard delete.

search_companiesA

Search companies by name, email, website, or address. Search is accent-insensitive.

list_entriesA

List interaction entries (calls, emails, meetings, events, etc.). Supports filtering by type, contact, and date range.

create_entryA

An ENTRY is a dated interaction log tied to contacts. Records something that happened (call, meeting, email…) on a specific date.

Create a new interaction entry. Content supports #tag# and [[tag]] syntax for automatic tag linking.

update_entryA

Update an existing entry. Only send fields you want to change.

delete_entryA

Delete an interaction entry.

list_tasksB

List tasks. Filter by status (pending/completed), date_type, or specific date.

create_taskA

A TASK is an action item to accomplish. Can have due date, recurrence, priority, linked to contacts and tags.

Create a new task. Title supports #tag# and [[tag]] for automatic tag linking.

update_taskA

Update an existing task. Only send fields you want to change.

delete_taskB

Delete a task.

complete_taskA

Mark a task as completed. If the task is recurring, this automatically creates the next occurrence.

uncomplete_taskA

Mark a completed task as pending again.

snooze_taskB

Reschedule a task to a new date.

list_notesA

List notes. QuickNotes (inbox, not yet archived) and Notes (archived, permanent). Filter by pinned or archived status.

create_noteA

Create a new QuickNote in the Inbox. QuickNotes are temporary captures — use archive_note to transform one into a permanent Note.

Content supports #tag# and [[tag]] for automatic tag linking.

update_noteA

Update an existing QuickNote or Note.

delete_noteA

Soft-delete a QuickNote or Note. Use permanent=true for hard delete.

pin_noteA

Pin a QuickNote or Note so it appears at the top of the Inbox.

archive_noteA

Transform a QuickNote into a permanent Note (archive it). Notes appear on contact pages, tag pages, and the Notes section.

restore_noteA

Restore a Note back to a QuickNote in the Inbox (unarchive), or restore a deleted note from trash.

list_daysA

List daily journal summaries. Filter by date range.

get_dayA

Get a specific day's journal summary by date.

update_dayA

Create or update a daily journal summary. If a day entry already exists for this date, it will be updated (upsert).

list_tagsB

List all tags. Tags organize contacts, entries, tasks, notes, and companies.

get_tagA

Get a single tag by ID with all its properties (name, description, color, icon, view mode, favorite status).

get_tag_itemsA

Get all items linked to a specific tag: contacts, entries, tasks, notes, and companies with counts.

create_tagA

A TAG is a thematic grouping space. Syntax: #name# or [[name]]. Groups notes, entries, tasks, and contacts.

Create a new tag. If a tag with the same name already exists, returns the existing tag.

update_tagA

Update an existing tag. Only send the fields you want to change. Supports name, description, color, icon, view mode, and favorite status.

delete_tagA

Permanently delete a tag and all its links to contacts, entries, tasks, notes, and companies.

link_tagA

Link an entity (contact, entry, task, note, or company) to a tag.

unlink_tagA

Remove the link between an entity and a tag.

list_task_headersA

List all task headers (section separators used to group tasks on tag pages and day views).

get_task_headerA

Get a single task header by ID.

create_task_headerA

Create a new task header (section separator). Add it to a tag's items_order to position it.

update_task_headerA

Update a task header. Only send the fields you want to change.

delete_task_headerB

Permanently delete a task header.

link_note_contactA

Link an existing contact to a note.

unlink_note_contactA

Remove the link between a contact and a note.

link_entry_contactB

Link an existing contact to an entry.

unlink_entry_contactA

Remove the link between a contact and an entry.

link_task_contactA

Link an existing contact to a task.

unlink_task_contactA

Remove the link between a contact and a task.

link_task_noteA

Link an existing note to a task (non-destructive, N-N). The note stays in the inbox/notes list and the task keeps a live link back to it — use this instead of deleting a note after creating a task from it. The note shows its linked tasks; the task shows the source note.

unlink_task_noteA

Remove the link between a note and a task. Both the task and the note survive.

link_notesA

Link two notes together (knowledge base, N-N, non-destructive). The link is symmetric: both notes list each other in their linked-notes section. Use this to connect related ideas — e.g. a note that made you think of another one. Notes can also be linked inline by writing label in a note's content.

unlink_notesA

Remove the manual link between two notes (both notes survive). Links derived from inline label markdown in a note's content are preserved — edit the content to remove those.

get_contact_timelineA

Get a unified, chronological feed of ALL items related to a contact — entries, tasks, and notes — sorted by date (most recent first). Much more efficient than fetching entries, tasks, and notes separately.

get_tasks_todayA

Get all tasks for today: overdue tasks + tasks due today + ASAP tasks. Each task has a 'category' field ('overdue', 'today', or 'asap'). Includes counts per category.

get_tasks_overdueA

Get only overdue tasks (pending tasks with a due date before today). Sorted by date ascending (oldest first).

get_changelogA

Get all items modified since a given timestamp, across all entity types. Perfect for 'heartbeat' checks to see what changed since your last visit. Returns server_time to use as 'since' for the next call.

searchA

Search across all Keepsake data — contacts, entries, tasks, notes, and companies. Search is accent-insensitive (e.g., 'berenice' finds 'Bérénice').

get_agent_instructionsA

Get best practices and instructions for being an effective Keepsake AI agent. Call this at the start of each session to refresh your instructions.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nicolascroce/keepsake-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server