Notes
list_notes
list_notes
List notes 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_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?”
create_note
create_note
Create a note with optional caller-provided ID, timestamps, and collection links.
If
id already exists, the request behaves as an upsert for that note ID.
The first line of content becomes the note title.When to use:- You are creating a new note.
- You need idempotent upsert behavior with caller-provided IDs.
- 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”
search_notes
search_notes
Search notes using free-text matching and structured filters.
Returns a bounded relevance-ranked result set and does not return
next_page.
For deterministic chronological pagination, 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?”
get_note
get_note
Fetch the full current state of a single note by ID.
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”
update_note
update_note
Replace a note’s markdown body and optionally set
updated_at.
This is a full content replacement API, not a partial patch API.
The first line of content becomes the updated title.When to use:- You need full-body replacement for an existing note ID.
- You need partial patch semantics (not supported).
- You need create/upsert-by-ID behavior (
create_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”
trash_note
trash_note
Soft-delete a note by moving it to trash.
Trashed notes can be restored via
restore_note.
For irreversible deletion, use delete_note.When to use:- You need reversible removal from active notes.
- You need irreversible hard-delete behavior (
delete_note).
- “Trash my old scratch notes from last week”
- “Move that draft note to the trash”
- “Get rid of the note titled ‘Untitled’”
restore_note
restore_note
Restore a previously trashed note to the active note set.
This only reverses soft-delete lifecycle state.
Notes permanently deleted via
delete_note cannot be restored.When to use:- You need to undo a prior trash operation.
- The note was permanently deleted (
delete_note).
- “Restore the note I just trashed”
- “Bring back my deleted meeting notes”
- “Undo trashing that project plan note”
delete_note
delete_note
Permanently delete a note.
Hard-deleted notes cannot be restored.
For recoverable removal, use
trash_note.When to use:- You need irreversible hard-delete behavior.
- You want recoverable removal (
trash_note).
- “Permanently delete that trashed note”
- “Delete the note titled ‘Old Draft’ for good”
Collections
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”
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”
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?”
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?”
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”
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”
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 note/collection deletion endpoints to remove resources.When to use:
- You need to unlink a note from a collection while keeping both resources.
- You need to delete the note or collection resource itself (
delete_noteordelete_collection).
- “Remove that note from the ‘Archive’ collection”
- “Take the recipe note out of my ‘Dinner Ideas’ collection”
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.