mcpField
P
pin

pin

github.com/mem0aiAgent workflows68.0k93 installsUpdated 2d ago
Repository

About pin

A Mem0 skill for marking an existing memory as high priority by adding a pin marker, or creating a pinned memory from new text. It also supports removing the marker.

Key features

  1. 01Find memories by ID or query
  2. 02Mark a memory as pinned
  3. 03Create a new pinned memory
  4. 04Remove a pin marker

Use cases

  1. 01Protect an important memory from pruning
  2. 02Pin a decision for future reference
  3. 03Unpin a memory when it is no longer needed

MCP support

Uses Mem0 MCP tools to find, read, create, and update memories; pinning adds a marker to the memory text.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/mem0ai/mem0 --skill pin

After installing, type/pinin Claude Code to confirm it loaded.

Details

From the project README

Mem0 Pin

Pin a memory to mark it as high-priority and protect from pruning.

Execution

Step 1: Find the memory

The user provides either a search query or memory ID.

If memory ID:

  • Call get_memory with the ID.

If search query:

  • Call search_memories with the query, filters={"AND": [{"user_id": "<id>"}, {"app_id": "<pid>"}]}, top_k=5.
  • Show numbered list with content previews.
  • Ask: "Which memory to pin? Enter a number."
Step 2: Read current content

Call get_memory with the selected memory ID. Store:

  • original_text — the memory's text content
  • original_metadata — the existing metadata dict
Step 3: Pin it

The MCP update_memory tool only accepts memory_id, text, and source — it does not accept a metadata parameter. To pin, append a pin marker to the text:

pinned_text = "[PINNED] " + original_text if not original_text.startswith("[PINNED]") else original_text
update_memory(memory_id=<selected_id>, text=pinned_text)

For new memories (user wants to pin text that isn't stored yet):

  1. Call add_memory with:
    • text="[PINNED] <the user's text>"
    • user_id=<active_user_id>
    • app_id=<active_project_id>
    • metadata={"pinned": true, "type": "decision", "confidence": 1.0}
    • infer=False
  2. The response contains event_id. Call get_event_status(event_id=<event_id>) once to retrieve the memory ID, then confirm.
Step 4: Confirm
Pinned: "<memory content, first 80 chars>"
Memory ID: <id>

Append ... only if content exceeds 80 characters.

Unpin

If the user says "unpin":

  1. Call get_memory to read current content.
  2. Remove the pin marker from the text:
    unpinned_text = original_text.removeprefix("[PINNED] ")
    update_memory(memory_id=<id>, text=unpinned_text)
    
  3. Print: Unpinned: "<content>..."

Comments

Markdown supported