Mnemosyne OS
Mnemosyne OS MCP gives AI agents secure, local access to vault memory, ongoing project context, other coding-agent activity, and personal workspace widgets (tasks, calendar, cockpit, Pheme) โ while keeping data on the machine.
Memory: semantic query with spine-type filters, RAG-based question answering, permanent memory ingest, vault listing.
Context & resume: list active Resonances, get/update project positions, read git history, inspect spine classifications, view Dream State bridge associations.
Agent awareness: see other coding-agent sessions on the machine, detect live collisions in the same git working tree/branch, and list files recently written by other sessions (metadata only).
Workspace widgets: update your cockpit status card, add/read/update/remove to-do lists and tasks, and manage calendar appointments with reminders and recurrence.
Pheme reputation radar: add/remove watched subreddits, topics, or HN queries, and read fresh threads the radar found.
Voice (optional): list local TTS engines/voices, render scripts to WAV, and poll/cancel rendering jobs.
Erasure (optional): permanently forget specific chronicles.
Governance: re-read the agent briefing on vault protection rules and allowed behavior.
Allows agents to view fresh threads from the subreddits a person watches via Mnemosyne's Pheme radar, including topic scores and tiers, and to maintain the watch list (add or remove subreddits, Hacker News queries, and expertise topics).
@mnemosyne_os/mcp โ MCP server for Mnemosyne OS โ gives AI agents access to vault memory, resonances, git context, and to what the OTHER coding agents on this machine are doing.
๐ mnemosyne-os.io โ the product, for builders ยท mnemosyne-os.com โ the company, press & labs ยท docs.mnemosyne-os.io โ the documentation
@mnemosyne_os/mcp
Give Claude, Cursor, Hermes Agent, Copilot, and any MCP-compatible agent access to your local Mnemosyne OS memory vault. Code, decisions, architecture notes, git history, semantically queryable. The vaults stay on your machine, and this server opens exactly one socket:
127.0.0.1:7799.
๐ณ In a hurry? RECIPES.md gives your coding agent a persistent memory in one copy-paste block โ Claude Code, Cursor, Claude Desktop, and the TypeScript SDK.
What this is
@mnemosyne_os/mcp is a Model Context Protocol server that
turns your local Mnemosyne OS install into a
queryable memory layer for any AI agent that speaks MCP.
Once configured, your agent can:
๐ง Query code, architecture, decisions, and git history with true semantic ranking (Vertex / e5-base / nomic).
๐พ Persist new decisions, sessions, or insights so future agents can recover them.
๐ฏ Resume projects exactly where you left off via Resonance positions.
๐ก Filter results by spineType (
ARCHITECTURE,GIT,SOURCE_CODE,BUGFIX, โฆ).
The MCP itself opens exactly one socket: 127.0.0.1:7799. It sends nothing anywhere else and keeps no state. Your claude.ai conversation sees only the chronicles you allow. What Mnemosyne OS does behind that socket follows the route you configured โ mnemosyne_memory_ask runs whichever model you picked, local or cloud.
Related MCP server: auxly-memory-cli
Requirements
Node.js โฅ 18 is the only hard requirement.
The memory tools additionally need Mnemosyne OS Infinity Edition running โ it owns your vaults and exposes the WebSocket gateway on ws://127.0.0.1:7799. Get it from the project repo's releases page.
The three agent-awareness tools (mnemosyne_agent_list, mnemosyne_agent_collisions, mnemosyne_agent_files) need neither. They read transcript files your coding-agent harness already writes to disk, so they answer with the app closed, with no vault, and without spending a token. They read every harness they find, so a Claude Code session can see an Antigravity session running in the same repository.
The MCP is a thin bridge. It does not store anything itself. All data lives in Mnemosyne OS Infinity (
%APPDATA%\@mnemosyne-workspace\infinity-edition\vaults\*.dbon Windows,~/Library/Application Support/...on macOS).
Install โ 30 seconds
Claude Desktop โ one click
Download Mnemosyne-OS-MCP-2.0.0.mcpb
(4.1 MB, or take the newest .mcpb from the releases page),
then open Claude Desktop โ Settings โ Extensions and drop the file into that
panel. That is the whole install. The 25 tools appear straight away, and the same
panel offers the three optional settings: default vault, other vaults, and the
port the desktop application listens on.
Two things worth knowing before you do it:
Claude Desktop shows a red "unverified developer" notice first. Every unsigned bundle does. This one is built from the repository linked at the top of this file, by
packages/mcp/scripts/build-mcpb.mjs.Double-clicking the file does nothing if your Claude Desktop came from the Microsoft Store: a Store app does not register the
.mcpbextension with Windows. Drop it into the Extensions panel instead.
Claude Desktop โ config file
If you would rather not install an extension, or you are on a build that has no Extensions panel:
Open Claude Desktop โ Settings โ Developer โ Edit config (or edit claude_desktop_config.json directly):
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Add:
{
"mcpServers": {
"mnemosyne": {
"command": "npx",
"args": ["-y", "@mnemosyne_os/mcp"],
"env": {
"MNEMO_DEFAULT_VAULT": "DEV",
"MNEMO_VAULTS": "DEV,PERSONAL,SOCIAL"
}
}
}
}Fully quit and relaunch Claude Desktop (close from the tray icon, not just the window). The mnemosyne server should show up under Settings โ Developer โ Local MCP Servers with the running badge.
Claude Code
Add to .mcp.json at the root of your project:
{
"mcpServers": {
"mnemosyne": {
"command": "npx",
"args": ["-y", "@mnemosyne_os/mcp"],
"env": {
"MNEMO_DEFAULT_VAULT": "DEV",
"MNEMO_VAULTS": "DEV,PERSONAL,SOCIAL"
}
}
}
}Reload the Claude Code session.
Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"mnemosyne": {
"command": "npx",
"args": ["-y", "@mnemosyne_os/mcp"],
"env": {
"MNEMO_DEFAULT_VAULT": "DEV",
"MNEMO_VAULTS": "DEV,PERSONAL,SOCIAL"
}
}
}
}Hermes Agent
Hermes Agent (Nous Research) ships with MCP support โ no extra install step. Add to ~/.hermes/config.yaml:
mcp_servers:
mnemosyne:
command: "npx"
args: ["-y", "@mnemosyne_os/mcp"]
env:
MNEMO_DEFAULT_VAULT: "DEV"
MNEMO_VAULTS: "DEV,NOTES"Restart Hermes. Your agent now has a sovereign long-term memory it can query semantically โ and everything stays on your machine, which is exactly the deal Hermes promises you.
Recommended for autonomous agents: grant read scopes narrowly (only the vaults the task needs), and point MNEMO_DEFAULT_VAULT at a vault dedicated to agent work rather than your personal notes. See the mnemosyne-memory skill โ a portable agentskills.io-standard skill that teaches any agent the governance rules (discover vaults first, respect protection levels, ingest with provenance, read before you write).
Any other MCP client
npx -y @mnemosyne_os/mcpThe MCP speaks standard JSON-RPC over stdio.
Configure your vaults
Mnemosyne OS Infinity exposes one vault per tracked folder (the folder name uppercased), plus three reserved names: DEV, PERSONAL, SOCIAL. Tell the MCP which ones you want your agent to reach via two env vars:
Env var | Purpose | Default |
| Vault used when the agent does not specify one. |
|
| Comma-separated list of vaults the MCP declares scopes for. |
|
Examples
A developer whose Infinity tracks ~/Documents/INFINITY/code-projects/:
"env": {
"MNEMO_DEFAULT_VAULT": "CODE_PROJECTS",
"MNEMO_VAULTS": "CODE_PROJECTS,NOTES,RESEARCH"
}A researcher who keeps everything in ~/Documents/INFINITY/papers/:
"env": {
"MNEMO_DEFAULT_VAULT": "PAPERS",
"MNEMO_VAULTS": "PAPERS,REFS,IDEAS"
}If your agent queries a vault that is not in
MNEMO_VAULTS, the server returnsSCOPE_DENIED. Add the vault name to the list and restart your MCP client.
Optional: let your agent render a voice
Mnemosyne OS ships local, offline text-to-speech engines that can clone a voice from a short reference clip. With one env var, your agent gets three extra tools that turn a written script into a WAV file on disk โ made for voice-overs (TikTok, YouTube, podcast, narration).
"env": {
"MNEMO_VOICE": "1"
}Tool | What it does |
| List the local engines (installed or not) and the reference voices available for cloning. Call it first. |
| Render a script to a WAV. Long scripts are split at sentence boundaries and re-assembled into one file โ nothing is truncated. Returns a job; the tool waits, then hands back a job id if the render is still going. |
| Poll or cancel a render; returns the file path when it is done. |
Off by default, and on purpose. Turning it on makes Mnemosyne ask you to authorize voice:speak โ a permission that is never auto-granted, not even to first-party apps like this one, because its subject is your identity rather than your data. You approve it once, in a dialog that says what it means.
What it will not do: it never creates or records a voice (you do that in the app, Settings โ Voice), and a clone name that does not exist is refused, never quietly replaced with another voice โ a voice-over in the wrong voice sounds perfect and is worthless.
Requirements: the Mnemosyne OS app must be running (the engines are Python sidecars inside it โ the headless daemon cannot speak), a local voice must be installed, and local neural TTS is a licensed feature.
Verify it works
Open a new conversation with your agent and ask, for example:
Use mnemosyne_memory_query to search my vault for "authentication flow", spine_type_filter ARCHITECTURE only.
You should see a structured response with 5โ10 chronicles, each tagged with its spineType, score, source, and a content snippet. If the agent says it cannot connect, see Troubleshooting.
The 25 tools your agent gets
Twenty-two below, plus the three that read the other agents on this machine. Setting
MNEMO_VOICE=1 adds the three voice tools documented further up, and MNEMO_FORGET=1
adds the erasure tool, for 29 in all.
Tool | What it does |
| Re-read the briefing you were handed on connect: the governance tenet, the vault protection model (NORMAL / MAXIMUM, |
| Semantic search โ returns raw chronicles ranked by cosine ร spineType weight (SOURCE_CODE scope by default). Supports |
| Ask Mnemosyne a question, get a synthesized prose answer grounded in the vault (RAG+LLM), plus its source chronicles. Use for "why / who / how" questions that need reasoning across many memories. Slower than |
| List the vaults Mnemosyne OS exposes (id, name, chronicle count) โ call it to discover valid |
| Erase one chronicle for good, by the id |
| Persist a memory โ pick a |
| Put tasks into the human's To-do backlog (the widget on their canvas), in order, optionally under named steps โ "make tasks out of everything we said we would do". Name the |
| Your own status card on the human's canvas (the cockpit): |
| Put a subreddit, a Hacker News query or a topic on the human's Pheme radar (their reputation cartridge), or take one off. The lists are theirs: an op that would empty one is refused, each op reports its own outcome, and the human sees a receipt in Pheme naming the agent and what changed. Nothing here posts anywhere. Needs the app running; Pheme itself may be closed. Scope |
| Read what the Pheme radar last found: fresh threads in the watched subreddits and HN queries, with a topic score and, after the human's Mnemosyne pass, a tier. The answer leads with when the scan ran โ it is as fresh as the last scan the human ran, never fresher, and "no radar yet" is said as such, never as an empty list. Draft the reply; the human posts it. Needs the app running. Scope |
| Put appointments or deadlines into the human's calendar (the Agenda widget on their canvas) โ "add this to my calendar", a deadline, a meeting. |
| Read the backlog back โ the lists, and every task with the id you need to change it. Call it before |
| Change tasks: |
| Manage the lists themselves: |
| Read the calendar back โ appointments in a time window, each with the id the two tools below require. A repeating event appears once, with its cadence and its next occurrence. An event with nothing left to happen says so rather than showing its original start as a future date. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. Scope |
| Change an appointment: move it, rename it, add or drop a reminder, start or stop it repeating. A field left out is left alone; |
| Remove appointments, by id only โ never by title, never by date range. โ ๏ธ The calendar has no archive: unlike a To-do task, a removed appointment is gone, so the answer names each one by title and start time for the human to check. A repeating appointment goes as the whole series; the calendar cannot cancel one occurrence. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. Scope |
| List active Resonances (cognitive workspaces / ongoing projects). |
| Get the last saved position of a Resonance โ phase, what was done. |
| Save current position โ persisted as a |
| Recent commits from the active monorepo (requires |
| How the memories were actually classified: chronicle-to-spine assignments for a vault, newest first, with whole-vault counts per spine and, on request, the taxonomy tree. It is also where the taxon ids come from, so read it instead of guessing a |
| The links the Dream State engine found on its own while the machine sat idle, each with its score and an excerpt of both sides, sometimes across two vaults. An empty list is the normal answer and means it has produced none yet, never that the query failed. |
Seeing the other agents on this machine
These three read the transcripts coding-agent harnesses already write to disk. No app, no vault, no tokens โ which is what makes "check before you commit" cheap enough to actually do.
Tool | What it does |
| Are two agent sessions live on the same project and branch right now? Call it before |
| The sessions on this machine โ conversation name, project, branch, model, last tool, file count, and when a line was last written. |
| Which files other sessions recently wrote, newest first, with the session each came from. Paths and timestamps only. |
No configuration needed. Every shipped connector whose folder exists on this machine is read, and each answer names the folders it actually opened. Override only if your agent writes somewhere unusual:
"env": {
// Per harness. Absent means "where that agent writes by default".
"MNEMO_AGENT_SESSIONS": "C:/Users/you/.claude/projects",
"MNEMO_AGENT_SESSIONS_ANTIGRAVITY": "โฆ",
"MNEMO_AGENT_SESSIONS_ANTIGRAVITY_IDE": "โฆ",
// Restrict to a subset. Absent means all of them.
"MNEMO_AGENT_SOURCES": "claude-code,antigravity"
}One line you do want, though โ โ you. A stdio MCP server is launched with the
env its config declares, so the caller's own session id does not arrive on its
own. Without it the report cannot mark which line is yours, and it counts one
session too many โ the exact miscount these tools exist to prevent. Pass it
through:
"env": {
"CLAUDE_CODE_SESSION_ID": "${CLAUDE_CODE_SESSION_ID}"
}If you skip it, or if the variable is not set where Claude Code runs (it then
arrives as the literal ${CLAUDE_CODE_SESSION_ID}), the answer says so in one
sentence and tells you which of the two happened. It never guesses: an id it
cannot place stays neutral rather than becoming "none of these is you", because
that would add a phantom session to every warning.
Three things these tools will not do, because a tool that overstates its evidence is worse than no tool:
They never say an agent is "working". A crashed agent and an idle one fall equally silent. They report when a line was last seen; you conclude.
They never return content โ no message text, no file contents, no tool output. A transcript holds everything that passed in front of an agent for a month. What crosses is metadata.
A clean answer is not proof the machine is quiet. It covers the folders it names, and it says which known harnesses were not present. A session whose transcripts live elsewhere does not appear at all.
A session it cannot place is reported, not dropped. Some harnesses record no working directory at all (Antigravity is one), and 91 of 288 sessions measured on one machine carry neither a project nor a branch. Grouping those together would announce collisions that nothing supports, so they are listed separately with the reason.
A file is marked recorded when the harness logged a file-writing tool call, and from a command when a redirection was read out of a shell command that may never have completed. Those are different kinds of fact and are never merged.
mnemosyne_memory_query โ full parameter reference
{
query: string; // required โ be specific, longer is fine
limit?: number; // default 10, capped at 50 server-side
vault?: string; // default: $MNEMO_DEFAULT_VAULT
spine_type_filter?: string[]; // e.g. ["ARCHITECTURE"], ["GIT","BUGFIX"]
max_content_chars?: number; // default 600 โ trims each result snippet
}The MCP automatically opts into the semantic ranking branch (Vertex 768D / e5-base) and applies an exact-term boost for identifier-like tokens in your query (codenames, hyphenated tokens, version numbers). The result is a list of chronicles ranked by true semantic relevance, not recency.
The cognitive loop โ recommended pattern
At session start
agent โ mnemosyne_position_get("my-project")
โ phase, last position, what was being worked on
During the session
agent โ mnemosyne_memory_query("auth refactor decisions",
spine_type_filter=["ARCHITECTURE","DECISION"])
โ top 10 chronicles, ranked by relevance
When making a decision worth keeping
agent โ mnemosyne_memory_ingest(
content="Chose JWT over session cookies because we need stateless
workers; trade-off: token revocation needs a denylist.",
spine_type="DECISION")
At session end
agent โ mnemosyne_position_update("my-project",
position="JWT migration shipped โ next:
denylist via Redis",
phase="Phase 12")
Next session
agent โ mnemosyne_position_get("my-project")
โ Resumes from Phase 12 with full contextTroubleshooting
"Cannot connect to ws://127.0.0.1:7799"
Mnemosyne OS Infinity is not running. Launch it. The MCP retries on every tool call, so once Infinity is up, the next query will succeed.
Agent gets SCOPE_DENIED on a vault
The vault is not in MNEMO_VAULTS. Edit your MCP client config, add the name (uppercased), restart the client.
Which vaults can my agent see?
Ask the agent to run mnemosyne_vault_list โ it lists every vault Mnemosyne OS exposes (id, name, chronicle count) and flags which ones are outside your MNEMO_VAULTS config (those return SCOPE_DENIED until you add them).
Tool result is too large for my context window
Use max_content_chars to shrink each snippet (default 600, you can drop to 200 for browsing, raise to 4000 to read a full file). Or filter with spine_type_filter to drop noisy types.
My new chronicles do not appear
DocWatch ingests on file save with a small delay. Check the spine: if you wrote a markdown with spine: IDEATIONAL frontmatter, it lands as IDEATIONAL โ query with spine_type_filter=["IDEATIONAL"] to surface it.
Privacy Policy
This server is a bridge, not a service. It has no backend of its own, no account and no
hosted endpoint: it opens a WebSocket to 127.0.0.1:7799 on your own machine and relays to
the Mnemosyne OS desktop application running there.
What it collects. Nothing. No telemetry, no usage tracking, no analytics, no crash reporting. It holds no identifier for you and never asks for one.
What it stores. Nothing of its own โ it is stateless between calls. Your chronicles live in vaults on your disk, written and managed by the desktop application. The agent-awareness tools read your coding agents' transcript files locally and return metadata only (paths, counts, timestamps), never the text of a message or the contents of a file, and they open no network connection at all.
Who else sees it. Two parties, both of them your choice, and nobody beyond them:
Your MCP client. Whatever a tool returns goes to the AI client you connected โ Claude, Cursor, another โ and travels wherever that client sends it. That is what the server is for, and it is the line worth reading twice: a chronicle you let an agent read leaves your machine if your client is a cloud model. Narrow
MNEMO_VAULTSto the domains a given agent should reach. A vault left out is refused, including vaults that exist on the machine.The desktop application, for whatever you configured there yourself โ a cloud model, a cloud embedder. Those calls are the application's, made with your own keys. This server neither makes them nor sees them.
The server itself shares with no one, sells nothing and rents nothing.
How long it is kept. By this server, not at all. In the application, for as long as you
keep it: memory is deleted where it is made, in the app and by you. โ ๏ธ mnemosyne_memory_ingest
writes a permanent chronicle โ the one call here that cannot be undone from the agent
side afterwards.
Contact. Privacy questions: dev@mnemosyne-os.com โ XPACEGEMS LLC, 2932 NW 72 Ave, Miami, FL 33122, USA. Full policy: https://mnemosyne-os.io/confidentialite. Bugs and security reports: https://github.com/Mnemosyne-OS/Mnemosyne-Neural-OS/issues.
The @mnemosyne_os packages
All of them live under one npm organization: npmjs.com/org/mnemosyne_os
Package | What it is |
Build a Layer 2 app โ a Node or browser process talking to the local WebSocket surface | |
| |
Build an in-app cartridge โ a sandboxed iframe widget rendered on the canvas | |
| MCP server โ plug Claude, Cursor or any MCP agent into the vaults |
Skin the OS with JSON alone, no TypeScript | |
The shared types and Zod schemas. No business logic | |
Read what coding agents already write on disk โ connector format + interpreter | |
Read a local AFFiNE workspace and render its documents to Markdown | |
CLI โ scaffold, list chronicles, import / export | |
The name of the P2P layer to come. A placeholder today, not the library |
Where Mnemosyne OS lives
Published by XPACEGEMS LLC. Its official addresses:
Product site: https://mnemosyne-os.io
Organizations: https://mnemosyne-os.com
Documentation: https://docs.mnemosyne-os.io
Packages: https://www.npmjs.com/org/mnemosyne_os
MCP registry:
io.github.Mnemosyne-OS/mcpon https://registry.modelcontextprotocol.io
License
MIT ยฉ Tony Trochet / XPACEGEMS LLC
The OS your code talks to
Mnemosyne OS โ Infinity Edition ยท download ยท mnemosyne-os.io ยท mnemosyne-os.com
Available Tools
25 toolsmnemosyne_aboutA
Read who Mnemosyne OS is and the rules you must honor when using it: its governance tenet, the vault protection model (NORMAL/MAXIMUM, mixableWith, isolated sandbox vaults), the spine model, and the do/don't behavior for an agent operating on a human's memory. The same briefing is delivered as the server instructions on connect โ call this to re-read it, or if your client did not surface those instructions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and largely meets it: it discloses that this is a read action returning a briefing identical to connect-time server instructions. It also gives the agent a clear mental model of the content, though it does not specify the exact return format or whether any auth is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words: the first front-loads what the tool reveals, the second explains when to use it. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter informational tool with no output schema, the description is complete: it tells the agent what the briefing covers, that it repeats connect-time instructions, and when to invoke it. An agent can decide to call and know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is fully covered, so there is no parameter information for the description to add. Baseline 4 applies because nothing is missing for invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and names a clear resource: Mnemosyne OS's identity and the operational rules an agent must honor. It enumerates the content areas (governance, vault protection, spine model, do/don't behavior), making it unambiguous and distinct from the operational sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to call: to re-read the briefing or when the client did not surface the server instructions. Since this is the only informational tool among the siblings, no alternative routing is required; the condition is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_agenda_addA
Put appointments or deadlines into the human's calendar (the Agenda widget on their canvas). Use it when a conversation names a specific date/time to remember โ "add this to my calendar", a deadline, a meeting. The host routes the write through the widget's own store, so what you file is exactly what the human sees. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. To read the calendar back, change or remove an appointment, see mnemosyne_agenda_list, mnemosyne_agenda_update and mnemosyne_agenda_remove.
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | One or more appointments to add. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description takes responsibility for disclosing important behavior: the write is routed through the widget's own store and is immediately what the human sees; the dev-install headless daemon behavior versus npm requiring the app running is stated. This goes beyond a simple 'creates'; only missing error/reversibility details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
All 4 sentences are useful and information-dense, covering purpose, context, deployment behavior, and sibling alternatives. Slightly longer than strictly necessary but each clause earns its place, so only minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description supplies the key operational context (widget store, dev vs npm daemon, sibling routes). It omits return/error shape, but the schema fully documents the input side and this is a frequent write tool; enough for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the lone array of events, already including formats and nuances like ISO 8601 and 'do not set Z unless UTC'. The description adds generic context ('appointments or deadlines') but no additional per-parameter meaning beyond the schema, hitting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Put appointments or deadlines into the human's calendar (the Agenda widget on their canvas).' Distinguishes from siblings by explicitly naming mnemosyne_agenda_list, update, and remove for other operations, so there is no ambiguity with the todo tools or agenda_remove.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use: 'Use it when a conversation names a specific date/time to remember' and gives examples. It also points to the exact sibling tools for reading/updating/removing, covering when not to use this tool. No inference needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_agenda_listA
Read the human's calendar back: the appointments in a time window, each with the ID you must use to change or remove it. Call this BEFORE mnemosyne_agenda_update or mnemosyne_agenda_remove - both name appointments by id and never by title or date, because the calendar has no archive and a removal cannot be undone. A repeating event appears ONCE, with its cadence and the date of its next occurrence. Times in the answer are the human's machine local time. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. Scope agenda:read.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO 8601 date-time (or epoch ms). Only appointments with an occurrence at or before this. Omitted = no upper bound, which for a repeating event means it always counts. | |
| from | No | ISO 8601 date-time (or epoch ms). Only appointments with an occurrence at or after this. Omitted = now. | |
| limit | No | Maximum appointments returned (default and ceiling: 200). | |
| include_past | No | Include appointments with no occurrence left. Default false. Those ones come back with no "next" date rather than with their original start dressed up as a future one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility and does so thoroughly. It discloses that there is no archive, removal cannot be undone, repeating events are collapsed to one occurrence with cadence and next date, times are machine-local, and headless operation depends on dev install vs npm install. This goes far beyond basic read-vs-write labeling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose, ID requirement, mutation caveats, repeating-event behavior, timezone, environment constraint, and scope. The most important operational guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey what the caller gets back. It does: appointments with IDs, one entry for repeating events with cadence and next occurrence, and local times. Combined with full parameter coverage the tool is effectively self-contained for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 4 parameters with full descriptions, so the baseline is 3. The tool description does not add parameter-level detail, though it does clarify the semantics of repeating events, which helps interpret from/to and include_past results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read the human's calendar back' with a time-window scope. It also names the essential output (appointment IDs) and differentiates itself from the mutation siblings by explaining that update/remove require these IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call this BEFORE mnemosyne_agenda_update or mnemosyne_agenda_remove, explains that those tools identify appointments by ID only, and warns about irreversible removal. It also gives environment-specific guidance for dev installs vs npm installs, leaving no ambiguity about when the tool works.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_agenda_removeA
REMOVE appointments from the human's calendar. Read them with mnemosyne_agenda_list first and pass the ids: this tool never matches by title or by date, because "remove my meetings on Thursday" is how an agent removes the wrong Thursday. THERE IS NO ARCHIVE - unlike a To-do task, a removed appointment is gone, so the answer names each one it removed by title and start time, for the human to check. A repeating appointment is removed as the whole SERIES; the calendar has no way to cancel a single occurrence. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. Scope agenda:write.
| Name | Required | Description | Default |
|---|---|---|---|
| event_ids | Yes | The appointment ids to remove, exactly as mnemosyne_agenda_list printed them in brackets. Up to 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure and does so thoroughly: removal is permanent with no archive, repeating appointments are removed as a whole series, and the tool names each removed appointment by title and start time in its response. The headless-daemon requirement is also disclosed, making side effects visible before invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes a distinct operational fact. The core instruction to read first and pass ids is front-loaded, and the remaining caveats are ordered by practical importance with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive action with no output schema, the description covers the input source, matching rules, deletion permanence, recurrence behavior, runtime prerequisites, and what the response will report. Nothing critical is missing for an agent to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the ids parameter well, but the description adds important semantic constraints: ids must come from mnemosyne_agenda_list, matching is strictly by id rather than by title or date, and there is a concrete warning against natural-language date matching. This adds real meaning beyond the schema's type and count.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear, specific verb and resource: REMOVE appointments from the human's calendar. It also distinguishes this tool from alternatives by explicitly saying it never matches by title or date, which makes the purpose unmistakable even among agenda siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent to read appointments with mnemosyne_agenda_list first and pass the returned ids, and warns against title- or date-based matching with a concrete failure example. It also addresses repeating appointments and the dev-install versus npm environment differences, which leaves no ambiguity about how and when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_agenda_updateA
CHANGE an appointment already in the human's calendar: move it, rename it, add or drop a reminder, start or stop it repeating. Names appointments by the id from mnemosyne_agenda_list - call that first. A field you leave out is left alone; passing null CLEARS it. A start or end time that cannot be read REFUSES the change rather than leaving the old one silently in place, and a cadence that is not one of daily/weekly/monthly/yearly is refused rather than quietly turned into a one-off. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. Scope agenda:write.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | One entry per appointment. Up to 50 per call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses partial-update behavior (omitted fields untouched, null clears), strict refusal of unreadable start/end times, refusal of unsupported cadences, environment-dependent execution (headless daemon vs app running), and the required scope: agenda:write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the primary purpose and then packs prerequisites, error behavior, and environment notes into a compact paragraph. Every sentence adds operational value, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with a nested changes array, no output schema, and no annotations, the description covers the essential decision points: how to identify the appointment, how omitted/null fields behave, what inputs are refused, and whether the daemon is required. The only minor gap is atomicity across the array, but that is not essential for correctly invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents every field (100% coverage), so the baseline is 3. The description adds a global update rule 'a field you leave out is left alone; passing null CLEARS it' and instructs the agent to source event_id from mnemosyne_agenda_list, which goes beyond the schema by clarifying omission vs null semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the verb 'CHANGE' and names the exact resource: an appointment already in the human's calendar. It enumerates the supported mutations (move, rename, add/drop reminders, start/stop repeating) and explicitly says appointments are identified by the id from mnemosyne_agenda_list, making it clearly distinct from add/remove/list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit prerequisite: call mnemosyne_agenda_list first to obtain the appointment id. It also provides operational context such as null-clears-field semantics and the daemon/running-app requirement on dev installs vs npm installs, but it never explicitly names when-not alternatives like agenda_add or agenda_remove.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_agent_collisionsA
Are two agent sessions live in the SAME git working tree and branch right now, from ANY installed harness? This is the one to call before git add -A, before a commit, and before a rebase: the git index is shared by every process in one working tree, so a commit from one session picks up whatever the other has staged. Answers from transcript files on disk; needs neither Mnemosyne OS nor a token. Each recorded directory is resolved to its working tree first, because one cd into a subfolder would otherwise make two sessions in one repository look like two projects. A clean answer says only that nothing was found IN WHAT IS READABLE โ an agent whose transcripts live elsewhere does not appear at all, and sessions whose harness records no directory are listed separately as unplaceable rather than guessed at.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Restrict to one working tree, matched exactly (separators and case are normalised). Pass the output of `git rev-parse --show-toplevel`. Omit to check every project on the machine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does it well. It discloses that answers come from transcript files on disk, that Mnemosyne OS and a token are not required, and that each recorded directory is resolved to the working tree to avoid false collisions. It also explicitly explains the meaning of a clean answer, the miss of agents with external transcripts, and separate 'unplaceable' handling, which is remarkably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and each sentence carries intent: scoping, when to call, why, internal resolution logic, and limitations. It is slightly long but every clause supports efficient use of the tool, so it counts as well-structured rather than bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, it does a strong job of covering the context and semantics of the result: what counts as a collision, what a 'clean answer' means, and why false negatives may happen. It never spells out the exact response shape, but the behavioral caveats and safety-guided intent are well documented. Minor gap remains in explicit return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100%, and the property's own description already explains the normalization and the `git rev-parse` recommendation. The overall tool description does not add parameter-specific guidance beyond this, but it also does not need to because the schema is very clear. Baseline is 3 for high coverage with no additional parameter detail in the text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states the tool's specific purpose: detecting whether two agent sessions live in the same git working tree and branch, from any installed harness. It also says it's the call to make before git add, commit, or rebase, which gives clear identity. However, it never names sibling alternatives to differentiate itself, so it stops short of the strongest version of this criterion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call the tool: before `git add -A`, before commit, and before rebase, with the shared-index rationale. It also gives important exclusions and caveats, such as 'a clean answer says only that nothing was found in what is readable' and that unreadable transcripts are not considered. It does not explicitly describe when to choose a sibling tool, but the usage context is clear and substantial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_agent_filesA
Which FILES other agent sessions have written or edited recently, newest first, with the session each came from. Paths and timestamps only โ never file contents. Each entry says how it is known: recorded means the harness logged a file-writing tool call, from a command means a redirection was read out of a shell command the session ran and may never have completed. Spans every installed harness, and each line names the session and the agent it came from. Use it to see what another session has already touched before you edit the same area.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max files to return (default 40, max 200). | |
| project | No | Keep only files from sessions whose project path contains this string. | |
| contains | No | Keep only paths containing this string. A folder name works as well as a file name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does so well: it discloses that file contents are never returned, explains provenance semantics (`recorded` vs `from a command` and the possibility that the command never completed), and states the output scope (session, agent, paths, timestamps).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose is front-loaded, and caveats follow in a logical order. There is slight redundancy between 'with the session each came from' and later 'each line names the session and the agent it came from', which prevents a perfect conciseness score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description is complete: it tells the agent what to expect (sorted paths/timestamps, provenance, no contents), how broadly it searches, and when to use it. There are no required parameters and the schema covers optional ones.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline applies. The description adds no parameter-level detail beyond reinforcing the general use case; it does not explain `limit`, `project`, or `contains` beyond the schema. This is acceptable because the schema fully documents them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'Which FILES other agent sessions have written or edited recently'. It adds delimiting constraints ('Paths and timestamps only โ never file contents', 'newest first', 'spans every installed harness') that make it clearly distinct from content-search or git-history siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Ends with an explicit use case: 'Use it to see what another session has already touched before you edit the same area.' It does not name alternatives or state when not to use it, but the intended context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_agentsA
What OTHER coding-agent sessions exist on this machine, read from the transcripts their harnesses already write to disk. Returns metadata only โ conversation name, project, git branch, model, last tool, how many files were touched, and when a line was last written. Reads EVERY coding-agent harness installed on this machine, not just your own, so you can see a session from a different agent working in your repository. Use it before you touch shared state. NEVER reports that an agent is "working": a crashed agent and an idle one fall equally silent, so it reports when a line was last SEEN and you conclude. Works with Mnemosyne OS closed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many transcripts to open PER HARNESS, newest first (default 40, max 200). Capping the merged total instead would let a chatty agent push a quiet one off the end, and the quiet one is the session you did not know about. | |
| project | No | Keep only sessions whose project path contains this string. Pass the repository folder name to scope the answer to the repo you are working in. | |
| live_only | No | Only sessions that wrote a line recently (see the window printed in the answer). Default false, which lists the most recent sessions whether or not they moved lately. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it excels: it discloses that only metadata is returned, that all harnesses are read, that 'working' status is never reported, that silence means either crashed or idle, and that it works with Mnemosyne OS closed. These are non-obvious behaviors that materially affect how an agent interprets results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and scope, then moves to return fields, usage, the critical caveat, and an environment fact. Each sentence adds information that is not inferable from the schema or tool name, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only metadata tool with no output schema and no annotations, the description covers the essential ground: input semantics, return field list, cross-harness scope, when to use it, how to interpret liveness, and an environmental constraint. There are no obvious gaps that would cause an agent to misuse it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters, so the baseline is 3. The description adds meaningful interpretation: the limit is per-harness with a rationale, the project filter is meant for repository-folder scoping, and live_only relies on a recency window printed in the answer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific subjectโother coding-agent sessions on this machineโand clearly states the source (transcripts harnesses write to disk) and the deliverable (metadata only). It also distinguishes itself by saying it reads every installed harness, not just the agent's own, which separates it from the agent-related sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger: 'Use it before you touch shared state,' and explains the cross-agent visibility that makes it relevant. It does not name alternative sibling tools or state when not to use it, so it stops short of full usage branching, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_askA
Ask Mnemosyne a question and get a SYNTHESIZED prose answer grounded in the vault, PLUS the chronicles it drew on. It runs the full local RAG pipeline โ deeper retrieval, lexical fusion and a re-rank โ so it is both the reasoning tool AND, measured on 2026-08-31, the better RETRIEVER: reach for it whenever you need to find something, and read the Sources list even if you ignore the prose. Best on "why / who / how" questions spanning many memories ("why was SQLite chosen over Postgres?", "who is and what do they own?"). Slower than mnemosyne_query (up to ~30s). โ ๏ธ The prose is a model rewording of the sources: never quote it as the words the memory holds โ quote the sources, or fetch them with mnemosyne_query. Always check the sources before trusting the answer.
| Name | Required | Description | Default |
|---|---|---|---|
| vault | No | Vault to reason over (case-insensitive). Default for this deployment: "DEV". A vault not declared to this MCP is refused with SCOPE_DENIED. | DEV |
| question | Yes | A natural-language question, as you would ask a knowledgeable colleague. Be specific. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure print and does it thoroughly. It reveals the RAG pipeline internals (deeper retrieval, lexical fusion, re-rank), the latency (~30s), and the fact that prose is a model rewording, not verbatim memory. It also warns to always check sources before trusting the answer. No contradiction with annotations exists because none are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded: the first sentence states the core purpose; subsequent sentences add pipeline, latency, and trust caveats. There is slight redundancy in repeating the retriever claim ('better RETRIEVER' and 'reach for it whenever you need to find something'), but all sentences earn their place given the important caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description is remarkably complete. It tells the agent what to expect (prose plus a Sources list), how long it might take, what question types work well, and how to responsibly use the output. Missing only trivial details, such as explicit error behavior, which are not necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The schema already fully documents both parameters, including the scope_denied behavior for unrecognized vaults and the 'ask a knowledgeable colleague' guidance for the question. The description itself adds no parameter-specific detail beyond general context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Ask'), a resource ('Mnemosyne'), and a concrete outcome ('a SYNTHESIZED prose answer grounded in the vault, PLUS the chronicles it drew on'). It also explicitly differentiates itself from sibling mnemosyne_query by claiming to be the better retriever and noting it is slower. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'reach for it whenever you need to find something' and 'Best on "why / who / how" questions spanning many memories'. It also names mnemosyne_query as the faster alternative and instructs users to fetch sources with it when exact quotes are needed. It includes a clear when-not-to-trust warning: never quote the prose; check the sources first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_cockpit_updateA
Your own status card on the human's canvas (the cockpit). Call it when you START a task ("working" + a short title and status), when you NEED the human ("waiting" โ the card pulses and the taskbar flashes), when you are stuck ("blocked"), and when you are DONE ("done"). The state is what you declare; the host prints it next to the time since your last call, so keep calling at real milestones or the card goes quiet. The answer carries any message the human left on your card โ read it and act on it. Needs the app window open. Nothing is stored in memory; this is a card, not a note.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | "working" = on it; "waiting" = you asked the human something and stopped; "done" = the task is finished; "blocked" = you cannot continue without them; "closed" = this conversation is over (removes the card). | |
| title | No | What this conversation is about, in a few words (the card's title). Give it at least once; later calls may omit it. | |
| detail | No | Up to 4 short lines under the status (files, a branch, a count). Optional. | |
| status | No | One line: what you are doing right now, or what you need. 160 characters max. | |
| session | No | Only when the harness publishes no CLAUDE_CODE_SESSION_ID: a stable id for this conversation, reused on every call. | |
| attention | No | Ask for the human's eye even in "working"/"done" (the card pulses, the taskbar flashes). "waiting" and "blocked" ask on their own. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses that the state is whatever the agent declares, that the host prints time since last call, that the card goes quiet without regular updates, that the response may contain a human message to act on, that the app window must be open, and that nothing persists to memory. This is rich behavioral context far beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and every sentence earns its place: when to call, what declaring state does, what the answer contains, the app-window prerequisite, and the no-memory limitation. It avoids repeating schema details and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters and no output schema, the description is complete: it covers call timing, state semantics, response handling, prerequisites, and non-persistence. The one detail not repeated in the narrative, the 'closed' state removing the card, is fully documented in the schema, so no necessary information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already fully documents all six parameters, including enum meanings for state. The description adds narrative context about when states are used and what effects they have, but it does not add new syntax, format constraints, or parameter-level details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: updating your own status card in the cockpit. It gives concrete occasions for each state (starting a task, needing the human, stuck, done), and the 'card, not a note' line clearly separates it from memory-oriented siblings like mnemosyne_query or mnemosyne_ingest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to call: at task start ('working'), when needing the human ('waiting'), when stuck ('blocked'), and when done ('done'). It also gives behavioral cues like the card pulsing and taskbar flashing. It does not name a specific alternative sibling tool, but 'nothing is stored in memory; this is a card, not a note' acts as a soft exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_dream_bridgesA
List the connections Mnemosyne's Dream State engine discovered between memories during its offline (idle-time) scans โ "what did you dream about?". Each bridge links two chronicles (possibly across vaults) with a composite Dream Bridge Score (dbs, prime-aware) and a raw cosine similarity, plus a short excerpt of both sides. Use it to surface non-obvious associations the memory found on its own, to audit whether dreamed connections are insightful or noise, or to seed creative exploration. An empty list is normal โ it means the dream engine has not produced bridges yet (it runs while the machine is idle, if enabled in Settings).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max bridges to return, strongest (highest dbs) first (default: 50, server cap: 200). | |
| min_dbs | No | Only bridges with a Dream Bridge Score at or above this value (0-1). | |
| session_id | No | Restrict to one dream scan session. | |
| chronicle_id | No | Only bridges touching this chronicle id (either endpoint). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explains that bridges are produced during offline/idle-time scans, depend on being 'enabled in Settings', contain a dbs score and raw cosine similarity, and can legitimately be empty. This is strong contextual transparency, though it stops short of explicitly addressing side effects or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not padded, and the core action is front-loaded. The 'offline (idle-time)' phrasing is repeated later with 'runs while the machine is idle', which is a minor redundancy. Overall, every sentence contributes meaningful context about purpose, output, usage, and edge behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with four optional parameters and no output schema, the description is complete: it names the returned fields (bridge, dbs, raw cosine similarity, excerpts), explains when an empty result is expected, and gives concrete usage purposes. An agent has enough information to invoke it correctly and interpret its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% description coverage, so the baseline is 3. The tool description adds useful conceptual meaning beyond the schema by explaining what a bridge is, that it links two chronicles possibly across vaults, and what dbs represents. This directly enriches min_dbs and chronicle_id even though limit and session_id are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the connections Mnemosyne's Dream State engine discovered between memories during its offline (idle-time) scans'. It clearly identifies what the tool returns, the underlying concept, and differentiates it from the sibling tools by focusing on dream-derived bridge associations rather than queries, ingestion, or position tracking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit use cases: 'surface non-obvious associations', 'audit whether dreamed connections are insightful or noise', and 'seed creative exploration'. It also explains that an empty list is normal, which prevents misinterpretation. It does not explicitly name alternative sibling tools or state when not to use it, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_get_positionA
Get the current position of a specific Resonance โ the last known phase and description saved by an agent or the cockpit. Use this at the start of a session to know exactly where work left off.
| Name | Required | Description | Default |
|---|---|---|---|
| resonance_id | Yes | ID of the resonance (e.g. "agent-cockpit", "mnemosync-p2p") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the safety/behavior burden. It does disclose that the value is a 'last known' position saved by an agent or cockpit, implying it may be stale or persisted, but it does not explicitly state that the call is read-only or describe behavior when no position exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. The first sentence states what the tool returns, and the second gives the primary use case. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description adequately explains what is returned ('phase and description') and when to use it. It could be slightly more complete by mentioning behavior if no saved position exists, but the core guidance is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100% and the resonance_id parameter is already documented with examples. The tool description does not add further parameter-level nuance beyond reinforcing that the id is for a specific Resonance, so the schema is doing the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('current position of a specific Resonance'), and clarifies the meaning of 'position' as 'the last known phase and description saved by an agent or the cockpit.' This makes it easy to distinguish from siblings like mnemosyne_update_position and mnemosyne_resonances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context: 'Use this at the start of a session to know exactly where work left off.' It does not explicitly mention alternatives or when not to use it, but the stated use-case is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_git_logA
Get recent git commits from the Mnemosyne OS monorepo. Use this to understand what changed recently, which phase is active, and what features were shipped.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of commits to return (default: 20) | |
| since | No | Time range (e.g. "7 days ago", "2024-01-01") | 30 days ago |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. 'Get' implies a read-only operation and 'recent git commits' conveys the data source, but the description does not explicitly state that the tool performs no mutations, nor does it describe the output fields, ordering, or failure modes. Adequate for a simple read tool, but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two clean sentences: the first states the action and resource, and the second gives the practical use case. There is no redundant wording or irrelevant context, and important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with only two optional parameters and no output schema. The description gives purpose and use case, but since there is no output schema it would benefit from clarifying what fields are returned (e.g., hashes, messages, dates). Still, enough information exists for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the input schema with defaults and example formats, so schema coverage is 100%. The description adds little parameter-specific meaning beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation ('Get recent git commits'), the specific resource ('Mnemosyne OS monorepo'), and the intended context (understanding recent changes, active phase, shipped features). This differentiates it from the sibling tools, which focus on other Mnemosyne subsystems.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool: 'Use this to understand what changed recently, which phase is active, and what features were shipped.' This gives the agent clear invocation context, though it does not name specific alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_ingestA
Persist a memory into the Mnemosyne OS vault โ a decision, an architecture note, a debug finding, or a session summary. Stored permanently and indexed for future semantic retrieval by any agent. Use this at the END of a meaningful work session, or whenever you reach a decision that future you (or other agents) would want to recall.
| Name | Required | Description | Default |
|---|---|---|---|
| vault | No | Target vault TOKEN โ the folder name uppercased, spaces and hyphens as underscores (e.g. MNEMOSYNE_OS). The path-shaped `id` from mnemosyne_vaults is also accepted and normalized. Default for this deployment: "DEV". Tokens this MCP is SCOPED for โ a config list, not a census: DEV, PERSONAL, SOCIAL. Ingest is PERMANENT, so confirm the vault EXISTS with mnemosyne_vaults before writing anywhere you have not written before. | DEV |
| content | Yes | Content to persist (markdown supported). Be self-contained: include WHY the decision was made, not just WHAT. | |
| spine_type | No | Semantic type of the content. ARCHITECTURE is heavily boosted (ร1.40) in SOURCE_CODE scope queries โ use it for design docs, big-picture decisions, structural choices. DECISION for narrower trade-offs. BUGFIX/DEBUG for incident learnings. SESSION for "here is where I left off". FEATURE for new capabilities. NOTE for everything else. | NOTE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key traits: persistence ('Stored permanently') and indexing for retrieval. It also warns about confirmation via mnemosyne_vaults in the vault parameter. However, it does not mention side effects like idempotency, duplicate handling, or any return value. Since it's a write tool, permanence is the most critical trait, so it's reasonably covered, but gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero waste. The first sentence defines the action and purpose, the second states permanence and indexing, the third gives timing guidance. Information is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter write tool with full schema coverage and no output schema, the description explains the outcome (permanent storage, indexing) and provides usage context. It does not describe the response format, but that's acceptable given the simplicity. It also hints at prerequisite checks (vault existence) via the schema. The description is sufficiently complete for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal parameter guidance beyond schemaโmostly repeating that content should be self-contained, which is already in the schema. It does add a hint about using spine_type for semantic boosting, but that's more about behavior than parameter semantics. The description does not materially improve on the schema's documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Persist') and resource ('Mnemosyne OS vault'), with concrete example content types (decision, architecture note, etc.). It clearly distinguishes itself from sibling tools like mnemosyne_query (read) and mnemosyne_vaults (list vaults) by being the write operation for memories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit timing guidance ('at the END of a meaningful work session, or whenever you reach a decision...'), which is actionable. It also implies when not to use it (for trivial content) and implicitly points to alternative read tools via context, though it doesn't explicitly name them. Could name mnemosyne_query as the retrieval alternative for completeness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_pheme_radarA
Read what the human's Pheme radar last found: fresh threads in the subreddits and Hacker News queries they watch, each with a topic score and, when the human has run the Mnemosyne pass, a tier (high / mid / low = how much substance THEY can bring to that thread). The answer leads with WHEN the scan ran โ it is as fresh as the last time the human opened Pheme and pressed Scan, never fresher. Use it to find threads to draft a reply for; the human posts the reply. "No radar" means no scan has been projected yet, not that nothing was found: ask the human to open Pheme and scan. Needs the app running; Pheme itself may be closed.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Only threads of this tier. Omit for all (unranked ones included, last). | |
| limit | No | How many threads at most (default 30, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It covers freshness semantics (results are as fresh as the last Scan, never fresher), the meaning of 'No radar', the requirement that the app be running while Pheme may be closed, and the conditional presence of tiers. This is unusually transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: what is returned, freshness, usage, the 'No radar' edge case, and runtime prerequisites. It is front-loaded with the core purpose and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description explains the main return elements: the scan time, threads, topic scores, and tiers, plus the special 'No radar' message. For a low-complexity two-parameter read tool, this is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful context for 'tier' by explaining that it represents how much substance the human can bring to a thread and only appears only after the Mnemosyne pass. It does not add anything about 'limit', but the schema already documents that clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and a precise resource ('what the human's Pheme radar last found'), then details the contents: fresh threads, topic scores, and tiers. This clearly distinguishes it from sibling tools like mnemosyne_pheme_watch, which presumably manages the watch list rather than reading radar results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool 'to find threads to draft a reply for' and explains how to handle the 'No radar' case. It does not explicitly list alternatives or when-not-to-use conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_pheme_watchA
Put a subreddit, a Hacker News search query or a topic on the human's Pheme radar (their reputation cartridge, which finds fresh threads worth a genuine reply), or take one off. The lists are THEIRS: an op that would empty a list is refused, every op reports its own outcome (done / already there / not there / refused), and the human sees a receipt in Pheme naming this agent and what changed. Use it when a conversation has found a community worth watching ("we answered a thread in r/hermesagent, keep an eye on it"). It does not scan and it does not post โ nothing here posts anywhere; the human posts. Needs the app running (Pheme's settings mirror lives in it); Pheme itself may be closed.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | The changes, in order. Up to 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden, and it does so richly. It discloses ownership semantics ('The lists are THEIRS'), failure behavior ('an op that would empty a list is refused'), per-op outcomes, receipt side effects, the prerequisite that the app must be running, and the guarantee that nothing posts anywhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but dense: every clause earns its place by adding a distinct behavioral fact. It front-loads the primary action before providing usage, exclusions, and side effects. Minor splitting of the first long sentence would improve readability, but it is not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description fully compensates: it covers what the tool does, when to use it, what it deliberately does not do, failure modes, per-operation reporting, receipt behavior, and runtime prerequisites. An agent has enough context to invoke it correctly and anticipate consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all parameters: ops array, op enum, kind enum with meaning, and value max length. The description adds useful context about how these operations behave, but it does not substantially change or extend parameter meaning beyond the schema's 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation and resource: 'Put a subreddit, a Hacker News search query or a topic on the human's Pheme radar ... or take one off.' It clearly distinguishes what the tool does from siblings by adding 'It does not scan and it does not post.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names when to use the tool with a concrete example: 'Use it when a conversation has found a community worth watching.' It also states non-uses ('It does not scan and it does not post'), though it does not explicitly name an alternative tool such as mnemosyne_pheme_radar for viewing the radar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_queryA
Raw chronicle search in a Mnemosyne OS vault. Returns the matching chronicles themselves (architecture notes, code, decisions, sessions, git history) for YOU to read, rank and cite โ nothing is rewritten, so this is what to use when you need the source text verbatim, e.g. to quote it or to write documentation from it. Ranked by vector similarity fused with a local BM25 channel, weighted by spineType. โ ๏ธ If your goal is to FIND something rather than to quote it, prefer mnemosyne_ask even when you only want its sources: measured on 2026-08-31, ask surfaces notes on rare literal terms (proper nouns, identifiers, product names) that this tool misses, because it retrieves deeper and re-ranks. โ And never read the score as confidence: a miss and a hit come back with indistinguishable scores, so judge the returned text, never the number beside it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of results (default: 10, max: 50) | |
| query | Yes | The search query โ be specific. Examples: "Phase 51 auto-poll implementation", "SDK authentication bug", "why did we choose dual-vector dimensions". | |
| vault | No | Vault TOKEN to query (case-insensitive; the folder name uppercased, spaces and hyphens as underscores). The path-shaped `id` from mnemosyne_vaults is also accepted and normalized. Mnemosyne OS exposes one vault per tracked folder. This deployment's default is "DEV". Tokens this MCP is SCOPED for โ a config list, not a census, so some may not be mounted on this machine: PERSONAL, SOCIAL. Call mnemosyne_vaults for the vaults that actually exist. Anything outside the scoped list is refused. | DEV |
| max_content_chars | No | Per-chronicle content snippet size in chars (default: 600). Each result is truncated to this length with a hint about total size. Raise to 2000+ when you genuinely need full file content, but be aware results stack up against your context window. | |
| spine_type_filter | No | Optional whitelist of spineTypes โ restricts results to those types only. Use ["ARCHITECTURE"] to surface design docs over code, ["GIT"] for commit history, ["BUGFIX","DEBUG"] for incident knowledge, ["SOURCE_CODE"] to force code-only. Without this, all types are returned (the SOURCE_CODE scope weighting decides ranking). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden โ and it does so thoroughly. It discloses the ranking mechanism (vector similarity fused with BM25, weighted by spineType), warns that scores are not confidence indicators ('a miss and a hit come back with indistinguishable scores'), and discloses a concrete retrieval weakness on rare literal terms with a measurement date. This is far beyond the bare minimum with zero annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place: purpose, rank-and-cite framing, sibling routing, and a critical score-confidence warning are all substantive. It is front-loaded with the primary purpose and uses โ ๏ธ/โ markers to signpost warnings. Minor redundancy (the 'find something' phrasing repeats the ask-routing point) keeps it just short of perfect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, the description covers the essential context an agent needs: what comes back, how results are ranked, how to interpret scores, and which sibling to choose instead. It does not describe the exact return fields of a result object, which would be a nice addition given the absent output schema, but the tool is otherwise complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies; the schema itself documents all five parameters (query examples, limit caps, vault token normalization, content-size limits, spine-type filtering). The description adds only modest parametric context โ e.g., that ranking is weighted by spineType โ but does not materially deepen per-parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource ('Raw chronicle search in a Mnemosyne OS vault') and enumerates exactly what is returned (architecture notes, code, decisions, sessions, git history). It also distinguishes itself from siblings by emphasizing that nothing is rewritten and the source text comes back verbatim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use ('this is what to use when you need the source text verbatim, e.g. to quote it or to write documentation from it') and a named alternative with a rejection condition ('prefer mnemosyne_ask even when you only want its sources', with a measured date explaining why). This is textbook when/when-not/alternatives guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_resonancesA
List active Resonances โ cognitive workspaces tracking ongoing projects. Each resonance has a name, status (active/paused), last position (phase), and last activity timestamp. Use this to understand what projects are currently active and where each one stands.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only list operation and states the returned fields (name, status, last position, last activity), which gives an agent some idea of the output. But it leaves ambiguity around whether the list includes only active or all resonances, and does not mention pagination, error cases, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no fluff: the first sentence states the action and resource, the second lists the returned attributes, and the third gives the use case. It is front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no parameters, no output schema), but the description alone must be enough for an agent to know exactly what the call returns. It names the fields, but the ambiguous wording of 'active' means the boundary of the returned set is unclear. Also, many sibling tools revolve around resonance position and querying, so a more explicit statement of how this list tool relates to them would substantially improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the schema or the description to elaborate. The description focuses on the output rather than parameter meanings, which is appropriate for a no-parameter tool, and the baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action 'List' and resource 'Resonances' and explains what they are (cognitive workspaces). It also lists the returned fields. However, 'active' is ambiguousโwhether the tool only lists active resonances or all resonance entries with an active/paused statusโand it does not explicitly differentiate itself from sibling tools like mnemosyne_query or mnemosyne_get_position.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case: 'Use this to understand what projects are currently active and where each one stands.' This provides clear context for when to call it, though it does not mention when not to use it or point to an alternative sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_spine_assignmentsA
Inspect how Mnemosyne classified its memories: chronicle โ spine assignments for a vault (newest first), whole-vault per-spine counts, and optionally the global spine taxonomy tree. Use it to audit auto-classification quality ("did memories land in the RIGHT spines?"), to see a vault's composition at a glance, or to discover the taxon ids to pass as spine_type_filter in mnemosyne_query.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max assignments returned (default: 25 to stay context-friendly, server cap: 500). | |
| vault | No | Vault to inspect (case-insensitive). Default for this deployment: "DEV". | DEV |
| offset | No | Pagination offset (default: 0). | |
| spine_type | No | Restrict the assignment page to one spine taxon id (e.g. "DOCUMENT", "GIT"). Counts stay whole-vault. | |
| include_taxonomy | No | Also return the global spine taxonomy tree (natures โ sub-spines). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It compensates well: it states the operation is inspection ('Inspect', 'audit'), reveals ordering ('newest first'), clarifies that counts remain whole-vault when filtering by spine_type, and notes the taxonomy tree is optional. It does not explicitly assert non-mutating behavior, but the inspection framing and absence of side effects make it reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the main output, the use cases, and the connection to mnemosyne_query with no wasted words. The first sentence front-loads the core behavior and key ordering detail; the second covers intended usage. The 'chronicle โ spine' notation is compact but understandable in context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description reasonably explains what is returned: assignments (newest first), whole-vault per-spine counts, and the optional taxonomy tree. It also clarifies that filtering by spine_type does not change the whole-vault counts. Combined with the 100% schema parameter coverage for a no-required-parameter tool, this is enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented with defaults and semantics. The description adds context by mentioning the optional taxonomy tree and the idea of discovering taxon ids for use in mnemosyne_query, but it does not add new meaning to the parameters beyond what the schema already provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Inspect how Mnemosyne classified its memories: chronicle โ spine assignments') and clearly enumerates the distinct outputs: newest-first assignments, whole-vault per-spine counts, and the optional global taxonomy tree. It also differentiates from the sibling mnemosyne_query by framing this as an audit/composition tool and mentions producing the taxon ids to pass into mnemosyne_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete trigger contexts: audit auto-classification quality, inspect a vault's composition at a glance, or discover taxon ids for use as a filter in another tool. It does not explicitly list when NOT to use this tool or name a sibling to switch to, but the use-case list is strong enough that an agent can infer appropriate versus inappropriate invocations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_todo_addA
Put tasks into the human's To-do backlog (the To-do widget on their canvas) โ in order, optionally under named steps. Use it when a conversation has settled WHAT to do: "make tasks out of everything we said we would do". Name the list ("list") โ call once without it to be told the lists that exist on a LIST_NOT_FOUND answer โ or pass create_list: true to make a new one. Never assume a default list. The host routes the write through the widget's own store, so what you file is exactly what the human sees. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. To read the backlog back or change what is in it, see mnemosyne_todo_list, mnemosyne_todo_update and mnemosyne_todo_lists.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Displayed name of the destination list (case-insensitive), e.g. "En cours", "WIP", or a list the human created. Omitted = the first original list. Unknown name + create_list false = refused with the names that exist. | |
| color | No | Hex colour (#rrggbb) for a list being created. Optional; the host picks the next swatch otherwise. | |
| tasks | Yes | The tasks, in execution order. Each item is a string, or {"text": string, "group": string} where group is the STEP the task belongs to (e.g. "Step 1 ยท Mockup"); tasks with the same group are shown under one header in the list. One concrete, actionable line each; 300 characters max. | |
| create_list | No | Create the list named in "list" when it does not exist. Default false: an agent must not invent lists in someone's backlog without saying so. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does substantial work: it explains that writes route through the widget's own store, that what is filed is exactly what the human sees, and that behavior differs between dev installs with a daemon and npm installs without one. It omits permissions, idempotency, and success-response shape, but for a write tool it is unusually transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficiently front-loaded with the action, the trigger, and the key list-handling rule; environment details and sibling routing are placed later where they belong. It earns its length, though the LIST_NOT_FOUND sentence is tangled and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description covers why/when to use it, how to discover or create lists, persistence through the widget store, environment requirements, and alternatives for related operations. It does not explicitly describe the success return value or downstream effects on existing tasks, which is a modest gap, but the overall context is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents each parameter in detail, including list default/error behavior, hex color, task group semantics, the 300-character limit, and create_list's default. The description adds operational framing rather than new parameter meaning, and its LIST_NOT_FOUND wording slightly muddies the list-omission semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Put tasks into the human's To-do backlog,' adding ordering and grouping semantics. It also distinguishes itself from siblings by pointing to mnemosyne_todo_list, mnemosyne_todo_update, and mnemosyne_todo_lists for read/change operations, so an agent can tell them apart without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ('when a conversation has settled WHAT to do') and warns never to assume a default list, plus points to sibling tools for reading or changing the backlog. However, the sentence about calling without `list` to get a LIST_NOT_FOUND answer is convoluted and sits awkwardly against the schema's statement that omitting `list` selects the first original list, so the guidance is not perfectly crisp.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_todo_listA
Read the human's To-do backlog back: the lists that exist and the tasks in them, each with the ID you must use to change it. Call this BEFORE mnemosyne_todo_update - that tool names tasks by id and never by text, because "delete the task about the invoice" is how the wrong task goes, in a sentence that reads perfectly either way. Also the way to answer "what is on my plate" or to check whether something is already filed before adding a duplicate. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. Scope todo:read.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Only this list, by displayed name (case-insensitive) or by the key shown in brackets. Omitted = every list. A name that matches nothing returns NO tasks rather than silently widening to all of them. | |
| limit | No | Maximum tasks returned (default and ceiling: 300). The answer always says how many matched and how many were cut. | |
| include_done | No | Include tasks already checked off. Default false: the open ones are what almost every question is actually about. Tasks moved to the ARCHIVE are never listed, only counted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly: it is a read-only scope ('todo:read'), reads from a file via a daemon in dev installs, returns IDs needed for later mutation, and explains that results always state how many matched and were cut. This goes well beyond the input schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then adds targeted warnings, use cases, and environment context. Every sentence earns its place; the length is justified by the valuable guidance it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with three optional parameters, no output schema, and no annotations, the description covers what is returned (lists, tasks, IDs, counts), when to use it, and operational prerequisites. Nothing essential is missing for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents list, limit, and include_done behavior. The tool description adds no additional parameter-specific meaning beyond what the parameter descriptions provide, so no upgrade is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read the human's To-do backlog back: the lists that exist and the tasks in them.' It also names the distinguishing purpose of exposing task IDs for later mutation, and explicitly contrasts itself with mnemosyne_todo_update. This makes the tool's role unambiguous even among similarly named siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to invoke this tool: before mnemosyne_todo_update, when answering 'what is on my plate', and before adding a duplicate via mnemosyne_todo_add. It also provides environmental guidance about dev installs versus npm installs. The usage conditions are concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_todo_listsA
Manage the LISTS of the human's To-do backlog: create one, rename or recolour one, remove an empty one. Separate from mnemosyne_todo_update because these change the shape of someone's workspace rather than the work in it. Two refusals worth knowing before you call: a list that still HOLDS tasks is never removed (you are told how many are in the way - move them first, the host will not pick a destination on someone's behalf), and the three original lists can be renamed but never removed, because their contents are what make the file readable at all. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. Scope todo:write.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | The changes, applied in order - so you can create a list and rename another in one call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and meets it: it reveals refusal conditions, the count of blocking tasks, that the host will not pick a destination, that original lists are permanently protected, and how the daemon vs app affects availability. This goes well beyond a generic 'manage' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose is front-loaded in the first sentence, and all subsequent sentences carry high-value behavior or refusal information. No filler or repetition of schema content. Despite its length, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex tool with one nested parameter, three operation types, and no output schema, the description covers all necessary context: operations, exclusions, refusal behavior, environment prerequisites, and scope. It even hints at the response ('you are told how many are in the way'). Nothing needed to call it correctly seems missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful extra semantics, notably that passing an empty string on an original list restores its localised default name, and that the host picks the next swatch when color is omitted. It does not deeply elaborate every parameter, but the schema already handles those details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific resource ('LISTS of the human's To-do backlog') and enumerates the concrete operations: create, rename/recolour, remove. It also explicitly separates itself from mnemosyne_todo_update, making the tool's scope unmistakable even among many sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States exactly when this tool is appropriate vs mnemosyne_todo_update ('change the shape of someone's workspace rather than the work in it'). Provides detailed pre-call conditions: lists containing tasks are never removed, original lists can be renamed but never removed, and environment requirements for dev vs npm installs. All conditions are actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_todo_updateA
CHANGE the human's To-do backlog: edit a task, tick it off, move it to another list, or take it out. Every operation names a task by the id from mnemosyne_todo_list - call that first. Removing a task ARCHIVES it by default (it leaves the list and can be restored); pass permanent: true only when the human asked for it to be deleted outright. The whole batch is applied in order as ONE save, and each operation reports its own outcome, so a stale id does not sink the ones around it. Works with the app closed on a dev install (the headless daemon reads the file); an npm install has no daemon and needs the app running. Scope todo:write.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | The changes, applied in order. Up to 100 per call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full behavioral burden. It discloses that removal archives by default and is restorable, that the batch applies as one save, that operations report their own outcomes, and that a stale id won't sink others. It also covers environmental constraints. Slight gaps like non-recoverable streak side-effects are left to the schema, but overall transparency is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place, covering scope, prerequisite, destructive behavior, atomicity, error isolation, environment prerequisites, and required scope. It is front-loaded with the core purpose and operation list, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested ops array with multiple operation types) and lack of output schema, the description provides everything needed to call it correctly: task id sourcing, operation semantics, permanent deletion nuance, batch behavior, per-operation outcomes, environment constraints, and auth scope. The note that each operation reports its own outcome compensates for the missing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already thoroughly documents each field, including the op enum, permanent default, and field-specific behaviors. The description reinforces some key semantics (e.g., 'pass permanent: true only when...') but doesn't add substantial information beyond what the schema provides, keeping this at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('CHANGE') with a clear resource ('the human's To-do backlog') and enumerates the exact operations: edit, tick off, move, remove. It also implicitly distinguishes itself from siblings like mnemosyne_todo_add by framing this as modifying existing tasks and requiring ids from mnemosyne_todo_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to call mnemosyne_todo_list first to obtain task ids, which is a critical prerequisite. It also clarifies when to use permanent: true (only when outright deletion is requested) and notes environment-specific daemon requirements. It doesn't explicitly name mnemosyne_todo_add as the alternative for creating new tasks, but the 'CHANGE' framing makes the boundary reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_update_positionA
Update the current position of a Resonance. Call this at the end of a session to record where you left off โ phase, current state, next steps. This is persisted as a DECISION chronicle in the vault.
| Name | Required | Description | Default |
|---|---|---|---|
| phase | Yes | Current phase label (e.g. "Phase 52", "v1.1.0 release") | |
| position | Yes | Description of the current position / what was done / what is next | |
| resonance_id | Yes | ID of the resonance to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool is a mutation ('Update') and, notably, that this is 'persisted as a DECISION chronicle in the vault' โ which hints at audit/immutability semantics beyond a simple field update. It does not state whether the write is append-only, idempotent, or requires certain permissions, but 'DECISION chronicle' adds meaningful behavioral context. A 4 is appropriate because the persistence trait is genuinely useful, but the description stops short of explaining side effects on prior positions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with clear front-loading of the verb, resource, and specific call timing. The second sentence's chronicle detail adds useful behavioral context without bloating. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter update with a full schema, the description adequately covers purpose, timing, and content. No output schema means return-value behavior is undocumented, but for an update tool this is less critical. The main missing context is what happens to an existing position (replaced, appended to a history, or stored as a new chronicle entry) โ but the 'DECISION chronicle' phrasing partially covers this, so the overall package is solid but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters. The description contributes the grouping 'phase, current state, next steps,' which maps loosely to the 'phase' and 'position' parameters and clarifies the intended content. However, it doesn't add required-format guidance, examples, or relationship semantics beyond what the schema already says. Baseline 3 is correct when the schema carries full documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update'), a resource ('current position of a Resonance'), and the timing ('at the end of a session to record where you left off'). It also clearly distinguishes this from the sibling mnemosyne_get_position, which retrieves position rather than updating it. The only slight gap is that 'Resonance' itself is a domain term that isn't defined here, but the tool name and resource phrasing make the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context for when to call the tool: 'Call this at the end of a session to record where you left off โ phase, current state, next steps.' It does not explicitly list alternatives or when not to use it, but the sibling contrast with get_position is implicitly clear because this tool writes and get_position reads. An explicit exclusion statement would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mnemosyne_vaultsA
List the memory vaults this Mnemosyne OS exposes โ each with its TOKEN, display name and chronicle count. Call this first when you are unsure which vault to query/ask/ingest against, or when the user refers to a memory store by a name you have not seen. Pass a returned token (bold, e.g. MNEMOSYNE_OS) as the vault argument to the other tools โ NOT the id line, which is the host's internal path. Note: you can only read/write the vaults this MCP was configured for (MNEMO_VAULTS); others are flagged here and are refused until added.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and handles it well: it discloses the token-versus-id distinction, the output fields, and the fact that unconfigured vaults are flagged and refused. It does not overtly state that the operation is read-only, but that is obvious from 'List' and the absence of destructive language.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler: the first states purpose and output, the second gives the usage trigger, and the third clarifies the token/id pitfall and access constraints. It is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description is complete: it names the returned fields, explains when to call it, warns against the id/token confusion, and notes the configured-vault limitation. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters, so the baseline is 4. The description goes beyond that baseline by explaining how its returned token should be used as the `vault` argument for other tools, which adds semantic value for the broader tool set even though this tool itself takes no inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the memory vaults this Mnemosyne OS exposes', and enumerates the returned fields (token, display name, chronicle count). This clearly differentiates it from sibling tools that query, ask, or ingest rather than enumerate vaults.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit invocation condition: call this first when unsure which vault to use or when the user names an unfamiliar memory store. It also provides downstream guidance by instructing the agent to pass the returned token, not the internal id, to other tools, and it states the configuration restriction on accessible vaults.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
25 tool updates
v1.10.0- First observed
mnemosyne_about - First observed
mnemosyne_agenda_add - First observed
mnemosyne_agenda_list - First observed
mnemosyne_agenda_remove - First observed
mnemosyne_agenda_update - First observed
mnemosyne_agent_collisions - First observed
mnemosyne_agent_files - First observed
mnemosyne_agents - First observed
mnemosyne_ask - First observed
mnemosyne_cockpit_update - First observed
mnemosyne_dream_bridges - First observed
mnemosyne_get_position - First observed
mnemosyne_git_log - First observed
mnemosyne_ingest - First observed
mnemosyne_pheme_radar - First observed
mnemosyne_pheme_watch - First observed
mnemosyne_query - First observed
mnemosyne_resonances - First observed
mnemosyne_spine_assignments - First observed
mnemosyne_todo_add - First observed
mnemosyne_todo_list - First observed
mnemosyne_todo_lists - First observed
mnemosyne_todo_update - First observed
mnemosyne_update_position - First observed
mnemosyne_vaults
TDQS
Scored across 25 tools
Most tools map to a distinct domain and action, and the long descriptions carefully separate mnemosyne_ask from mnemosyne_query and pheme_watch from pheme_radar. The main risk is mnemosyne_todo_list vs mnemosyne_todo_lists, whose singular/plural names point at two different operations (reading tasks vs managing list shapes), so one pair could still trip up an agent.
All tools share the mnemosyne_ prefix, but the action-placement pattern is mixed: query/ask/ingest are bare verbs, get_position/update_position are verb_noun, while todo_add/agenda_update are noun_verb. This is readable but not predictable, and mnemosyne_todo_list versus mnemosyne_todo_lists is an especially confusing near pair.
25 tools is at the heavy end and spans many subsystemsโmemory, resonances, pheme, todo, agenda, cockpit, and agent monitoringโso the count feels more like an OS surface than a focused MCP. Each tool is individually justified, but the overall set is borderline for agent selection and would benefit from consolidation or namespacing.
The todo and agenda domains have full add/read/update/remove coverage, and agent-collision checks fill real gaps. However, the core memory domain only offers ingest plus query/ask, with no explicit update or delete/forget path, which is a notable lifecycle gap even if permanence is intentional.
Maintenance
Related MCP Connectors
Shared memory for coding agents. Stop re-explaining your codebase every session.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Persistent memory for AI agents. Semantic search, memory graph, W3C DID identity.
Private, portable memory and reusable skills for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceDescription: Persistent local memory for Claude, Cursor and Codex. 13 MCP tools, SQLite + FTS5 + Knowledge Graph. No cloud, no API keys. One command: npx @studiomeyer/local-memory-mcp.69 npm13MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first, file-based memory layer for AI agents โ one shared Markdown vault across Claude, Codex, Gemini, Cursor and any MCP client. Provides read/write memory tools with an audit trail, per-agent trust levels, and Git sync; no cloud and no lock-in.2MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first, source-grounded memory for AI agents, with citations, bitemporal history, review-gated corrections, and MCP tools for search and recall.3Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides a local-first, source-cited memory layer for AI agents, with MCP tools to search, read, explain sources, and propose/apply memory updates.23 npm6Apache 2.0