Skip to main content
Mem’s MCP server exposes 15 tools that AI assistants can use to manage your notes and collections. You don’t need to know the tool names — just describe what you want in natural language and your AI assistant will pick the right tool.

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_at or created_at.
  • You are iterating through all accessible notes page by page.
When NOT to use:
  • You need relevance-ranked retrieval from open-ended text (search_notes).
Example prompts:
  • “Show me my recent notes”
  • “List all my notes”
  • “What notes have I created lately?”
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.
When NOT to use:
  • You need to overwrite a known existing note by ID (update_note).
  • You only need to change note/collection membership (add_note_to_collection or remove_note_from_collection).
Example prompts:
  • “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 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.
When NOT to use:
  • You need deterministic chronological pagination (list_notes).
Example prompts:
  • “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?”
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.
When NOT to use:
  • You need note discovery without known IDs (list_notes or search_notes).
Example prompts:
  • “Open my note about the API redesign”
  • “Show me the full contents of that meeting notes note”
  • “Pull up my ‘Weekly Goals’ 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.
When NOT to use:
  • You need partial patch semantics (not supported).
  • You need create/upsert-by-ID behavior (create_note).
Example prompts:
  • “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”
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.
When NOT to use:
  • You need irreversible hard-delete behavior (delete_note).
Example prompts:
  • “Trash my old scratch notes from last week”
  • “Move that draft note to the trash”
  • “Get rid of the note titled ‘Untitled’”
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.
When NOT to use:
  • The note was permanently deleted (delete_note).
Example prompts:
  • “Restore the note I just trashed”
  • “Bring back my deleted meeting notes”
  • “Undo trashing that project plan 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.
When NOT to use:
  • You want recoverable removal (trash_note).
Example prompts:
  • “Permanently delete that trashed note”
  • “Delete the note titled ‘Old Draft’ for good”

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.
When NOT to use:
  • You need relevance-ranked retrieval from open-ended text (search_collections).
Example prompts:
  • “Show me all my collections”
  • “What collections do I have?”
  • “List my collections”
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.
When NOT to use:
  • You only need membership changes between existing notes and collections (add_note_to_collection or remove_note_from_collection).
Example prompts:
  • “Create a new collection called ‘Project Phoenix’”
  • “Make a collection for my interview prep notes”
  • “Set up a ‘Reading List’ collection”
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.
When NOT to use:
  • You need deterministic chronological pagination (list_collections).
Example prompts:
  • “Find my collection about frontend architecture”
  • “Search for a collection related to hiring”
  • “Do I have a collection for design docs?”
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.
When NOT to use:
  • You need collection discovery without known IDs (list_collections or search_collections).
Example prompts:
  • “Show me what’s in my ‘Research’ collection”
  • “Open the ‘Project Phoenix’ collection”
  • “What notes are in my ‘Design Docs’ 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.
When NOT to use:
  • You only need note membership changes in a collection (add_note_to_collection or remove_note_from_collection).
Example prompts:
  • “Delete my old ‘Temp’ collection”
  • “Remove the ‘Archive 2023’ 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.
When NOT to use:
  • You need to create notes or collections first (create_note or create_collection).
Example prompts:
  • “Add that meeting notes note to my ‘Project Phoenix’ collection”
  • “Put this note in the ‘Research’ 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.
When NOT to use:
  • You need to delete the note or collection resource itself (delete_note or delete_collection).
Example prompts:
  • “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 HTTP 429 and include a Retry-After header.