Mem

Search, create, and organize notes in Mem.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • 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. When
  • 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 relevanc
  • 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 endpo

What data it sees

Do you need an account

No: the server works without sign-in

Search, create, and organize notes in Mem. Capture ideas, link related notes, and surface relevant context from your knowledge base.

How to connect

How to connect Mem to Claude

The server address to paste into Claude settings:

https://mem.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect Mem to ChatGPT

The server address to paste into ChatGPT settings:

https://mem.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect Mem to Cursor

The server address to paste into Cursor settings:

https://mem.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (16)

Raw names from tools/list. Only developers need these.

get_audio_recordingFetch 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. When NOT to use: - You need note-level discovery or linked recording IDs (`get_note`).
list_collectionsList 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`).
create_collectionCreate 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`).
search_collectionsSearch 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`).
get_collectionFetch 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`).
update_collectionUpdate 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. When NOT to use: - You need to create a new collection (`create_collection`). - You only need note membership changes (`add_note_to_collection` or `remove_note_from_collection`).
delete_collectionPermanently 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`).
add_note_to_collectionAdd 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`).
remove_note_from_collectionRemove 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. When NOT to use: - You need to remove the note from active notes (`trash_note`) or delete the collection resource (`delete_collection`).
list_notesList 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_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`).
create_noteCreate 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`).
search_notesSearch 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. When NOT to use: - You need deterministic chronological pagination (`list_notes`).
get_noteFetch 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`).
update_noteSubmit 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. 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`).
trash_noteSoft-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.
restore_noteRestore 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. When NOT to use: - The note is already active and does not need restoration.