Agent Skills
In addition to the MCP server config, we strongly recommend adding an Agent Skills file (SKILL.md) that teaches your IDE agent when and how to use the Memori MCP tools.
Why Add a Skills File
- Reliability — the agent consistently calls
recallat the start of a turn andadvanced_augmentationafter responding - Lower prompt friction — you don't need to re-explain the memory workflow every session
- Focused context — most clients only load the full skill instructions when the skill is triggered
The SKILL.md File
Create a SKILL.md file with the content below. This teaches the agent the full decision flow for when to recall, when to store memories, and what to skip.
---
name: memori-mcp-usage
description: Decides when to call Memori MCP tools for recall and advanced augmentation. Use when the user mentions remembering, preferences, "last time", personalization, prior context, recurring patterns, or when consistency across turns matters.
---
# Memori MCP usage
### Tool contract
- `entity_id` and `process_id` are provided via MCP headers (do not pass as tool args unless the tool schema requires it).
- `session_id` is generated by the server.
## Decision flow per turn (follow in this order)
1. Is this a trivial, administrative, or closing message?
Examples: "thanks", "ok", "got it", "goodbye", "ignore everything before"
→ Skip both recall **and** augment. Answer directly.
2. Does the user explicitly say **not** to remember / store / save / log / keep anything from this turn?
→ Recall if the question needs prior context (step 3), but **never** augment this turn.
3. Should we recall prior memory? Check conditions below.
→ Yes → Call `recall` (usually once per turn)
→ Use results to ground / personalize the answer
→ No useful memories? → Proceed normally
4. After drafting the final assistant response → Should we augment? Check conditions below.
→ Yes → Call `advanced_augmentation` with the full turn `[user message, assistant response]`
→ No → Skip
Skip memory calls entirely for very short / purely reactive turns unless personalization is clearly relevant.
## When to recall (`recall`)
Call `recall` when **any** of these are true:
- User references prior context: "as I said", "last time", "you already know", "same as before", "remember when", "like we did"
- Preferences or style matter: tone, verbosity, length, formatting, units, structure, templates, language, emoji usage, etc.
- Personal / project constraints apply: timezone, location, environment, setup, repo conventions, tooling stack, recurring workflows
- Consistency across answers is important: decision patterns, naming conventions, approval thresholds, recurring questions
- User asks to be reminded of something they previously told you
Query strategies (ranked best to worst):
1. **Best**: user's exact latest message (preserves nuance, wording, typos, personal style)
2. **Good**: very short rephrased intent when message is long/noisy
3. **Avoid**: overly generic queries ("preferences", "remember", "info about me") — poor precision
**Avoid**: dumping full conversation history as query
Prefer **one** recall per turn in almost all cases.
## When to write (`advanced_augmentation`)
Call `advanced_augmentation` **after** drafting your response **only** when the turn reveals a **durable, stable fact or preference** the user would want applied in future sessions. Ask yourself: *"Would this information still be useful to recall weeks from now, in a completely different conversation?"* If the answer is no, skip augment.
Augment-worthy signals:
- Explicit preferences ("always do X", "from now on", "default to...", "prefer...")
- Identity / profile facts user wants persisted (timezone, role, typical environment, location hints)
- Long-lived project or workflow context (naming conventions, tooling choices, architecture decisions, coding principles)
- Relationships or team structure ("Alice owns the auth service", "report to Bob")
### Do NOT call advanced_augmentation
- Secrets, API keys, tokens, passwords (even partially redacted)
- Large logs, stack traces, error dumps
- Clearly ephemeral info: one-time codes, temp links, live prices
- Debugging marked temporary ("just this once", "for this error only")
- Role-play, hypotheticals, fiction
- Purely reactive chit-chat with no lasting preference
- Session activity / progress updates: test results, lint output, command exit codes
- Task management actions: to-do completions, progress checkpoints, commit messages
- Routine code changes: refactoring steps, file renames, import cleanups
- Tool output narration: summarizing what a tool returned
- Conversation-scoped decisions: one-off choices that don't represent a lasting rule
**Rule of thumb**: if the information describes *what happened during this session* rather than *a fact or preference that transcends sessions*, do not augment.
### Examples
**Should augment:**
- "From now on keep answers short, include TL;DR, max 250 words"
- "My location is Paris, France; I prefer Central time and 12-hour format"
- "This project uses ruff + mypy + pytest; strongly prefer KISS/DRY/YAGNI"
**Should NOT augment:**
- "All 57 tests passed after the refactor"
- "Renamed `_utils.py` to `_helpers.py`"
- "The linter found 3 errors, now fixed"
**Should NOT use Memori tools at all:**
- "Thanks man!"
- "Temp login code is 493021"
- "What's the weather like in KC right now?"
Installing Skills by Client
Cursor
Cursor supports skill folders containing a SKILL.md:
- Project (recommended for teams):
.cursor/skills/memori-mcp/SKILL.md - Personal (all projects):
~/.cursor/skills/memori-mcp/SKILL.md
mkdir -p .cursor/skills/memori-mcp
# Add SKILL.md content to .cursor/skills/memori-mcp/SKILL.md
Restart Cursor so it re-discovers skills.
Claude Code
Claude Code skills live in either:
- Personal:
~/.claude/skills/memori-mcp/SKILL.md - Project:
.claude/skills/memori-mcp/SKILL.md
mkdir -p .claude/skills/memori-mcp
# Add SKILL.md content to .claude/skills/memori-mcp/SKILL.md
Restart Claude Code or reload the session.
OpenAI Codex
Codex scans repo-level skills under .agents/skills:
mkdir -p .agents/skills/memori-mcp
# Add SKILL.md content to .agents/skills/memori-mcp/SKILL.md
Restart Codex if it doesn't pick up changes automatically.
Warp
Warp supports custom agent rules that serve the same purpose as a skills file. Add the SKILL.md content to your Warp rules configuration:
- Project:
.warp/rules/memori-mcp.md - Global:
~/.warp/rules/memori-mcp.md
mkdir -p .warp/rules
# Add SKILL.md content to .warp/rules/memori-mcp.md
Restart Warp so the rules take effect.
Antigravity
Antigravity skills can be stored at:
- Workspace:
<workspace>/.agent/skills/memori-mcp/SKILL.md - Global:
~/.gemini/antigravity/skills/memori-mcp/SKILL.md
mkdir -p .agent/skills/memori-mcp
# Add SKILL.md content to .agent/skills/memori-mcp/SKILL.md
LangChain
LangChain agents use Memori MCP to persist user preferences and project context across invocations. The integration logic lives in your application layer using the langchain-mcp-adapters package.
To implement this, instantiate MultiServerMCPClient per request with the end-user's ID set as X-Memori-Entity-Id, as shown on the Client Setup page.
Slack
A Slack bot backed by an LLM uses Memori MCP to persist user preferences across all channels. As Slack is a cloud based service, the integration logic lives in your bot's backend.
To implement this, set the headers dynamically in your server's outgoing MCP tool calls using the Slack User ID from the incoming event payload as shown on the Client Setup page.
Notion
Custom Notion integrations use Memori MCP to maintain a consistent memory of a user's writing style and project context across different pages and databases.
To implement this, your middleware must map the Notion User ID to the Memori headers as shown on the Client Setup page. This ensures that regardless of which workspace or page the user is on, the AI assistant retrieves the same persistent preferences.
How It All Works Together
Once both the MCP config and skills file are installed:
- The MCP config ensures the tools exist (
recall,advanced_augmentation) - The skills file ensures the agent uses them consistently and correctly — recall before responding, store after responding