Notes
create_note
create_note
Create a note with an optional note ID, timestamps, and collection links.
If omitted, Mem generates the note ID.
The first line of
content becomes the note title.When to use:- You are creating a new note.
- You need to create a new note with a specific ID.
- You need to overwrite a known existing note by ID (
update_note). - You only need to change note/collection membership (
add_note_to_collectionorremove_note_from_collection).
- “Create a note with my meeting notes from today’s standup”
- “Save a new note titled ‘Project Ideas’ with these bullet points”
- “Write a note capturing the key decisions from our planning session”
get_note
get_note
Fetch the full current state of a single note by ID.
If the note is in trash, the response still returns the note and includes
trashed_at.
For discovery flows, use list_notes or search_notes.When to use:- You already have a note ID and need canonical content + metadata.
- You need note discovery without known IDs (
list_notesorsearch_notes).
- “Open my note about the API redesign”
- “Show me the full contents of that meeting notes note”
- “Pull up my ‘Weekly Goals’ note”
get_note_attachment_download_url
get_note_attachment_download_url
Generate a temporary signed download URL for a note attachment.
Use this when note content references an attachment, but the underlying file URL is not directly downloadable.
The caller must be able to access the requested attachment.When to use:
- You have an attachment ID from note content and need a temporary signed URL to fetch the protected file behind that attachment reference.
- Use this when note content references an attachment, but the underlying file URL is not directly downloadable.
- You need note-level discovery or attachment IDs (
get_note). - The note content does not expose an attachment ID via a
#attachment_idfragment ordata-attachment-idattribute; this tool cannot access that attachment.
- “Download the image attached to that note”
- “Transcribe the contents of the PDF attached to that note”
- “Get the attachment from that note so you can read the PDF and summarize it”
list_notes
list_notes
List notes visible to the authenticated caller with cursor pagination.
When multiple
contains_* fields are true, a note may match any of them.
Results are ordered by order_by and return next_page when additional rows are available.
For relevance-ranked retrieval by query, use search_notes.When to use:- You need deterministic cursor pagination ordered by
updated_atorcreated_at. - You are iterating through all accessible notes page by page.
- You need relevance-ranked retrieval from open-ended text (
search_notes).
- “Show me my recent notes”
- “List all my notes”
- “What notes have I created lately?”
restore_note
restore_note
Restore a previously trashed note to the active note set.
This only reverses soft-delete lifecycle state.When to use:
- You need to undo a prior trash operation.
- The note is already active and does not need restoration.
- “Restore the note I just trashed”
- “Bring back my deleted meeting notes”
- “Undo trashing that project plan note”
search_notes
search_notes
Search notes using a required free-text query and structured filters.
When multiple
filter_by_contains_* fields are true, a note may match any of them.
Returns note results from a bounded search snapshot with deterministic offset pagination.
Query-based searches are relevance-ranked within the bounded search snapshot window.
Reuse the returned snapshot_id when requesting later pages.
The returned total reflects the bounded search snapshot, capped by the 100-result search window.
For deterministic chronological pagination across all accessible notes, use list_notes.When to use:- You need relevance-ranked retrieval from a natural-language or keyword query.
- You need query + filter retrieval instead of full feed traversal.
- You need deterministic chronological pagination (
list_notes).
- “Find my notes about the Q3 marketing strategy”
- “Search for anything I’ve written about React performance”
- “What notes do I have mentioning the onboarding flow?”
trash_note
trash_note
Soft-delete a note by moving it to trash.
Trashed notes can be restored via
restore_note.When to use:- You need reversible removal from active notes.
- “Trash my old scratch notes from last week”
- “Move that draft note to the trash”
- “Get rid of the note titled ‘Untitled’”
update_note
update_note
Submit a complete markdown body for a note and optionally set
updated_at.
Send the full desired body in content (not a partial markdown patch).
The first line of content becomes the updated title.
Trashed notes must be restored before they can be updated.When to use:- You need full-body replacement for an existing note ID.
- You need partial patch semantics (not supported).
- You need to create a new note (
create_note). - The note is trashed and must be restored first (
restore_note).
- “Add a new section to my project plan note”
- “Update my grocery list note with these items”
- “Append today’s action items to my standup notes”
Audio recordings
get_audio_recording
get_audio_recording
Fetch the current public transcript and metadata for a single audio recording by ID.When to use:
- You already have an audio recording ID and need its transcript + metadata.
- You need note-level discovery or linked recording IDs (
get_note).
- “Show me the transcript for the recording attached to this note”
- “Open the transcript from my meeting note and include the recording details”
- “What audio recording is linked to this note? Show me the transcript”
Collections
add_note_to_collection
add_note_to_collection
Add an existing note to an existing collection.
This operation only creates the membership link and does not modify note or collection content.
Use create endpoints to create notes or collections.When to use:
- You need to link an existing note to an existing collection.
- You need to create notes or collections first (
create_noteorcreate_collection).
- “Add that meeting notes note to my ‘Project Phoenix’ collection”
- “Put this note in the ‘Research’ collection”
create_collection
create_collection
Create a collection with optional caller-provided ID and timestamps.
If
id already exists, the request behaves as an upsert for that collection ID.
Use collection membership endpoints to add or remove notes from collections.When to use:- You are creating a new collection.
- You need idempotent upsert behavior with caller-provided IDs.
- You only need membership changes between existing notes and collections (
add_note_to_collectionorremove_note_from_collection).
- “Create a new collection called ‘Project Phoenix’”
- “Make a collection for my interview prep notes”
- “Set up a ‘Reading List’ collection”
delete_collection
delete_collection
Permanently delete a collection.
Hard-deleting removes the collection resource itself.
For membership-only changes, use note add/remove collection endpoints.When to use:
- You need irreversible hard-delete behavior for a collection resource.
- You only need note membership changes in a collection (
add_note_to_collectionorremove_note_from_collection).
- “Delete my old ‘Temp’ collection”
- “Remove the ‘Archive 2023’ collection”
get_collection
get_collection
Fetch metadata for a single collection by ID.
This endpoint returns collection metadata only, not a note list for that collection.
For discovery flows, use
list_collections or search_collections.When to use:- You already have a collection ID and need canonical metadata.
- You need collection discovery without known IDs (
list_collectionsorsearch_collections).
- “Show me what’s in my ‘Research’ collection”
- “Open the ‘Project Phoenix’ collection”
- “What notes are in my ‘Design Docs’ collection?”
list_collections
list_collections
List collections visible to the authenticated caller with cursor pagination.
Results are ordered by
order_by and return next_page when additional rows are available.
For relevance-ranked retrieval by query, use search_collections.When to use:- You need deterministic cursor pagination for collections.
- You are iterating through all accessible collections page by page.
- You need relevance-ranked retrieval from open-ended text (
search_collections).
- “Show me all my collections”
- “What collections do I have?”
- “List my collections”
remove_note_from_collection
remove_note_from_collection
Remove a note from a collection while keeping both resources.
This operation only removes the membership link between IDs.
Use
trash_note to remove a note from active notes, or delete_collection to remove a collection resource.When to use:- You need to unlink a note from a collection while keeping both resources.
- You need to remove the note from active notes (
trash_note) or delete the collection resource (delete_collection).
- “Remove that note from the ‘Archive’ collection”
- “Take the recipe note out of my ‘Dinner Ideas’ collection”
search_collections
search_collections
Search collections using free-text relevance matching.
Returns a bounded relevance-ranked result set and does not return
next_page.
For deterministic chronological pagination, use list_collections.When to use:- You need relevance-ranked retrieval for collection lookup.
- You need deterministic chronological pagination (
list_collections).
- “Find my collection about frontend architecture”
- “Search for a collection related to hiring”
- “Do I have a collection for design docs?”
update_collection
update_collection
Update metadata for a collection by ID.
Use this tool to rename a collection by setting
title.
This endpoint updates only provided fields (title, description) and leaves omitted fields unchanged.
For read-only retrieval, use get_collection.When to use:- You need to rename a collection by updating its title.
- You need to update title and/or description for an existing collection ID.
- You need to preserve a collection while correcting metadata.
- You need to create a new collection (
create_collection). - You only need note membership changes (
add_note_to_collectionorremove_note_from_collection).
- “Rename my ‘Q1 Ideas’ collection to ‘Q2 Ideas’”
- “Update the description of ‘Project Phoenix’ to include launch milestones”
- “Change this collection title to ‘Customer Research’ and keep everything else the same”
Rate limits and quotas
Mem MCP requests are backed by the Mem API and follow the same API rate limits and quotas. For current limits, see /api-reference/overview/rate-limits. If limits are exceeded, requests return HTTP429 and include a Retry-After header.