pathmark
Pathmark provides a local-first, shared memory layer for AI agents (Codex, Claude Code, Gemini CLI, Cursor, etc.) to store, retrieve, and manage context persistently across sessions — no account, API key, or cloud backend required.
Core memory operations:
remember— store durable text-based memory items with optional tags and source labelscreate_conclusion— save higher-signal decisions or preferences treated with more weight than raw memoriessearch_memory— find memories by query, tags, or kind (memory vs. conclusion)recall_memory— retrieve detailed context with metadataget_context— fetch compact, relevant context for a specific tasklist_conclusions— browse all saved durable conclusionsask_memory/chat— retrieve relevant context for a question and optionally synthesize an answer via a local CLI, Codex, or OpenAI-compatible API (chatexplicitly returns which memories were used)
Memory management:
delete_memory— soft-delete a record by IDupdate_memory— correct records with version historysupersede_memory— replace outdated records with linked current onespurge_memory— permanently remove recordscompact_memory— deduplicate and clean up the storedoctor_memory— report store healthbackup_memory— create point-in-time backupsexport_memory— export scoped, optionally encrypted bundles
Configuration & integration:
get_config— view store location and enabled featuresActs as a shared memory bus across multiple AI tools, supporting auto-capture, proactive recall injection, and import of legacy JSONL memory stores
Allows the server to use Ollama (or any OpenAI-compatible local gateway) as a synthesis provider for ask_memory, via the openai-compatible mode.
Allows the server to use OpenAI-compatible chat completion APIs for memory synthesis via the ask_memory tool, using the PATHMARK_OPENAI_BASE_URL and API key.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pathmarkremember that I prefer using TypeScript for new projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Pathmark
Carry intent across agents without turning stale code facts into hidden memory.
What's New — v0.1.15
Pathmark v0.1.15 keeps proactive memory useful without making the conversation noisy:
relevant memory is still injected automatically before Codex answers;
raw
recall_memorytool output is now hidden by default, keeping the chat focused on the answer instead of memory plumbing;PATHMARK_CODEX_VISIBLE_RECALL=onrestores the explicit recall trace whenever you want to audit which records were used;vulnerable transitive
fast-uriandqsversions are replaced by patched releases in the published dependency lock.
See the v0.1.15 release notes or the complete changelog. The npm badge above always shows the currently published version.
Pathmark gives Codex, Claude Code, opencode, Gemini CLI, Cursor, and any MCP-capable harness one local intent and provenance layer. Save decisions, constraints, preferences, and approved conclusions once. Use them from the next agent without pasting a recap.
Code remembers implementation. Pathmark remembers intent. Repository code, architecture, tests, CI, and intentional agent instructions remain authoritative for how the software works. Raw sessions are searchable evidence, not automatically trusted truth.
Your context stays on disk at ~/.pathmark/memory/memory.jsonl. You do not need an account, hosted database, API key, or vendor backend to start.
Related MCP server: auxly-memory-cli
OpenAI Build Week 2026
Pathmark is a Developer Tools submission for OpenAI Build Week 2026. The project existed before the challenge, so the submission is deliberately scoped to the meaningful extension built after the submission period opened on July 13, 2026.
During the eligible period, Codex with GPT-5.6 helped audit and extend Pathmark from a working local memory layer into safer long-running developer infrastructure:
fixed a reproduced multi-process SQLite index race;
added revision history, superseding, expiration, retention, diagnostics, backup, compaction, and preview-first hard purge;
added namespace-scoped reads and writes plus default secret redaction;
added scoped import/export, optional AES-256-GCM portable exports, local hybrid reranking, and portable harness ingestion;
hardened CI and npm delivery with required CodeQL and dependency review, immutable Action pins, protected tags, OpenSSF analysis, and SLSA provenance.
The primary Codex session for this work is 019f5fc3-d7e6-7b41-8a30-d161c90b98fb. The qualifying release range is v0.1.6 through v0.1.7; the pre-challenge baseline is commit 4c0e87dfdbd2ba4c643abd8b887cc228bdb08b73.
See the Build Week implementation record for the before/after boundary, commit evidence, Codex collaboration details, and a fast judge test.
Why Pathmark
You do not work in one tool. You ask Codex to patch, Claude Code to review, opencode to clean up, and Gemini CLI to challenge the plan. Each tool starts cold unless you carry the context across.
Pathmark gives those tools one place to read and write intent and evidence:
One local JSONL store across harnesses.
Standard MCP tools include
remember,search_memory,recall_memory,session_trace,rate_recall,consolidate_memory,audit_memory, and conclusion-firstchat/ask_memory.Client-side synthesis by default, so your coding agent reads the context and answers.
Optional Codex CLI, local command, and OpenAI-compatible synthesis modes.
Plain files you can inspect, back up, delete, or migrate.
Pathmark stays provider-neutral. Codex gets one optional synthesis preset. The core server works with any MCP client that can use local tools.
Pathmark requires Node.js 22.5 or newer.
Cross-Harness Memory
You switch tools during a coding session:
Codex fixes the failing test.
Claude Code reviews the patch.
opencode cleans the diff.
Gemini CLI challenges the approach.
Pathmark keeps the notes in one store.
Point each harness at the same store:
Codex \
Claude Code \
opencode > Pathmark MCP > ~/.pathmark/memory/memory.jsonl
Gemini CLI /
Cursor /Install Pathmark in each harness and point them at the same PATHMARK_STORE_DIR. One tool saves raw context with remember or proposes a durable conclusion with create_conclusion; an approved conclusion and raw evidence can then be recovered with recall_memory, search_memory, get_context, or ask_memory.
Pathmark sits below the agents as an intent, evidence, and provenance bus for your coding workflow.
Tools
Pathmark exposes these MCP tools:
Tool | Purpose |
| Save raw searchable evidence. Raw evidence is not treated as durable approved intent. |
| Propose a higher-signal durable conclusion or preference. Approval is required by default before recall. |
| Search memories and conclusions. |
| Transparent recall: returns context plus the exact memory IDs, timestamps, sources, matches, tags, and previews used. Accepts optional |
| Return a bounded chronological audit trail for one session: prompts, exact injected memory IDs, redacted tool inputs/results, and answers. |
| Label exact IDs from a |
| Return compact context for a task or question. |
| List approved saved conclusions. |
| Review bounded, paginated pending conclusion proposals. |
| Atomically approve a proposal, optionally correcting text/tags and recording the reviewer. |
| Retain a rejected proposal in the audit trail while permanently excluding it from recall. |
| Generate a bounded USER/PROJECT/AGENT snapshot from approved canonical conclusions. |
| Review a bounded unsynthesized evidence batch and optionally stage evidence-backed proposals. Nothing is auto-approved. |
| Soft-delete a memory or conclusion by id. |
| Correct a record while preserving prior versions. |
| Replace an outdated record with a linked current record. |
| Preview or apply permanent deletion by id, namespace, tags, source, or date. |
| Measure capture-to-recall behavior, unused records, recall age, duplicates, stale raw hits, and whether precision labels exist. |
| Report duplicates, deleted/expired records, conclusions, and index health. |
| Preview or apply deduplication, retention, and physical cleanup with an automatic backup. |
| Create a point-in-time canonical JSONL backup. |
| Export a scoped mergeable JSONL bundle, optionally encrypted. |
| Return an approved-conclusion answer or scoped raw context, exact provenance, and a recall ID for feedback. |
| Chat-compatible alias for |
| Show local store configuration. |
Quick Start
npm install -g pathmarkThen add the MCP server to your client.
Prefer npm for normal installs. To test the current GitHub main branch directly:
npm install -g --install-links=true github:hacksurvivor/pathmarkGenerate a setup snippet for your harness:
pathmark setup list
pathmark setup claude-code
pathmark setup opencode --json
pathmark setup gemini-cli
pathmark setup kimiSee docs/compatibility.md for Codex, Claude Code, opencode, Gemini CLI, OpenClaw, Hermes Agent, Grok CLI, Kimi, GLM, and generic MCP setups.
Codex
codex mcp add pathmark -- pathmarkCodex users can also enable auto-capture:
pathmark codex install --replace-legacy-hooksWhen you want the visible "what memory did you use?" entry in Codex, Claude Code, Cursor, opencode, Gemini CLI, Grok-compatible MCP hosts, or any other MCP harness, call the recall_memory tool before answering. Codex session start injects an approved conclusion snapshot. Before non-trivial prompts, Codex recalls approved conclusions first and uses fresh scoped raw evidence only as a bounded fallback. recall_memory remains the portable visible trace across harnesses.
Claude Code
claude mcp add pathmark -- pathmarkopencode / Gemini CLI
Use the generated snippets:
pathmark setup opencode
pathmark setup gemini-cliClaude Desktop
Add this to your Claude Desktop MCP config:
{
"mcpServers": {
"pathmark": {
"command": "pathmark",
"env": {
"PATHMARK_STORE_DIR": "~/.pathmark/memory"
}
}
}
}Cursor
Add the same command to Cursor's MCP server settings:
{
"mcpServers": {
"pathmark": {
"command": "pathmark"
}
}
}Local Development
npm install
npm test
npm run coverageRun directly:
PATHMARK_STORE_DIR=.pathmark npm run devImport Legacy Memory
Pathmark can import a compatible local JSONL memory store without deleting or moving the source files.
npm run import:legacy -- --source-dir ~/old-codex-memoryDefaults:
Legacy source: ~/.pathmark/legacy/codex
Pathmark target: ~/.pathmark/memory/memory.jsonlThe importer creates a memory.jsonl.backup-* file before writing, uses deterministic ids so reruns skip duplicates, and redacts obvious KEY=..., TOKEN=..., PASSWORD=..., and Bearer ... values.
It uses the same store lock as live MCP and Codex writers, so an import cannot overwrite records captured concurrently.
Use a dry run first when migrating another machine:
npm run import:legacy -- --source-dir ~/old-codex-memory --dry-runCodex Auto-Capture
Install Pathmark as the Codex memory adapter:
pathmark codex install --replace-legacy-hooksThis registers the Pathmark MCP server, enables Codex hooks, and removes old compatible hook commands from Codex. It does not delete or move memory files.
The Codex adapter is proactive by default:
user prompts, final assistant answers, and tool activity are captured locally; intermediate Codex commentary is excluded;
tool activity records include bounded redacted input previews and hashes, status, exit code, duration, and changed files when the hook provides them;
tool-output hashes are captured for correlation, while output text remains private by default and requires
PATHMARK_CODEX_CAPTURE_TOOL_OUTPUTS=on;activity records expire after 30 days and are physically capped at 5,000 records by default;
session start/resume generates one bounded USER/PROJECT/AGENT snapshot from approved canonical conclusions and does not inject raw session history;
each non-trivial user prompt searches approved workspace/project conclusions first, then approved global or explicitly named-project conclusions;
only when no approved conclusion matches, at most two raw records from the current workspace/project/session may be injected as a high-confidence fallback;
raw fallback records must be within the separate automatic-recall horizon, 30 days by default; the full raw archive remains available to explicit
search_memoryandrecall_memorycalls;raw cross-project history is never injected automatically; promote durable cross-project intent through the approval workflow;
broad cross-project history remains available through explicit
search_memory/recall_memorycalls without silently entering every prompt;matching memory is injected quietly by default, without adding a raw
recall_memorytool result to the conversation;set
PATHMARK_CODEX_VISIBLE_RECALL=onwhen debugging or auditing to make Codex callrecall_memorywith the exact pre-capture result IDs and workspace tag; this explicit mode omits the redundant fullrecordscopy;legacy transport envelopes and assistant progress updates are excluded from session-start and proactive relevance results, while realtime delegation envelopes retain only their current
<input>payload;records containing Pathmark boundary escapes, instruction-override patterns, or invisible Unicode controls are tagged
memory-quarantinedand excluded from automatic recall; injected previews are escaped and explicitly treated as untrusted historical data;no matching memory means no extra context is injected.
Durable extraction is approval-gated by default. create_conclusion creates a pending proposal; pending and rejected conclusions stay in the canonical JSONL audit trail but are structurally excluded from normal search, exact-ID recall, prompt injection, and snapshots. Use list_pending_conclusions, then approve_conclusion or reject_conclusion. Conclusions created before this workflow are treated as already approved for backward compatibility. Raw remember records remain searchable evidence and are not promoted automatically.
The session snapshot is generated from the same canonical store rather than maintained as a second flat file. It is frozen in the session-start hook output; prompt-time scoped recall remains dynamic.
Set PATHMARK_CODEX_PROACTIVE_RECALL=off if you want Codex hooks to capture memory but stop prompt-time recall.
Set PATHMARK_CODEX_VISIBLE_RECALL=on only when you want an explicit audit/debug recall_memory tool call. Proactive prompt-time recall remains active when this is off.
recall_memory is a point-in-time record of memory used before an answer. It intentionally does not include commands that run later. Use session_trace with the exact session ID to inspect the chronological prompt → injected memories → tools/results → final-answer trail. When explicitly enabled, output previews are capped at 2,000 characters and redacted before storage; hashes preserve correlation without storing output text by default. Upgrading an existing cursor migrates to final-answer-only parsing without duplicating previously captured user or final-answer turns. When the original transcript is available, exact legacy phase: "commentary" records are soft-deleted by timestamp and text during that migration.
Use --replace-legacy-hooks when you want Pathmark hooks to take over from earlier compatible hook commands. Without it, Pathmark installs alongside existing hook commands.
Check the adapter status:
pathmark codex statusThe status output is JSON and includes Pathmark hook state, MCP registration state, legacy hook presence, the active store paths, and the current record count.
Remove Pathmark hooks and MCP registration without deleting memory:
pathmark codex uninstallConfiguration
Variable | Default | Description |
|
| Directory for |
|
| Default search limit. |
|
| Automatically inject relevant Pathmark context before non-trivial Codex prompts. Use |
|
| Opt into an audit/debug |
|
| Store bounded redacted tool-output previews. Output hashes, status, duration, and exit codes remain available when this is off. |
|
| Generate a bounded approved-conclusion snapshot at Codex session start/resume. |
|
| Character budget for generated snapshots; clamped to 500–12000. |
|
| Prompt-time eligibility horizon for raw evidence. |
|
| Maximum fresh raw records injected when no approved conclusion matches. Clamped to 0–2. |
|
| At session start, nudge Codex to review a bounded evidence batch when scoped raw history is accumulating without conclusions. |
|
| Minimum unsynthesized user/assistant records before the proactive consolidation nudge appears. |
|
| Stage new conclusions for explicit approval. Set |
|
|
|
| unset | Command provider: receives a synthesized prompt on stdin and writes an answer on stdout. |
|
| Codex provider command. |
| unset | Optional Codex model override. |
|
| OpenAI-compatible API base URL. |
| unset | OpenAI-compatible API key. |
| unset | Model id for OpenAI-compatible synthesis. |
|
| Synthesis command timeout. |
| unset | Default namespace applied consistently to MCP reads and writes. |
|
| Redact common secret-shaped values on |
|
| Retention policy used by compaction; |
|
| Automatic lifetime for recall/tool activity records; |
|
| Physical cap for activity records; oldest activity is removed automatically. |
| unset | Optional trusted local embedding/vector or hybrid reranker. Strict kind/tag/namespace filters are applied before candidates leave the store; the command receives query/candidates as JSON on stdin and returns ranked memory ids. |
|
| Maximum candidates sent to the optional reranker. |
|
| Timeout for the optional reranker. |
| unset | Passphrase for AES-256-GCM portable exports/imports. Never returned by |
|
| Cross-process wait limit for index initialization or rebuild. |
Synthesis Modes
Pathmark separates memory from reasoning.
client
Default. The MCP server returns relevant memory context, and your MCP client model synthesizes the answer. This works across Codex, Claude Desktop, Cursor, and any other MCP client without giving Pathmark a model credential.
PATHMARK_SYNTHESIS_PROVIDER=client pathmarkcommand
Use any local subscription or model CLI that accepts a prompt on stdin and writes an answer to stdout:
PATHMARK_SYNTHESIS_PROVIDER=command \
PATHMARK_CHAT_COMMAND="your-ai-cli --model your-model" \
pathmarkThis is the general path for users with another paid subscription CLI or a local model runner.
codex
Use the proven Codex CLI bridge. It runs a controlled, non-interactive codex exec turn with hooks and memories disabled to avoid recursion:
PATHMARK_SYNTHESIS_PROVIDER=codex \
PATHMARK_CODEX_MODEL=gpt-5.5 \
pathmarkThis is useful for Codex users who have persisted ChatGPT/Codex CLI auth locally but do not want to add an OpenAI API key. Pathmark sends the synthesis prompt through stdin, runs Codex in an empty temporary workspace, ignores project rules, and exposes only a minimal environment. Memory records are treated as untrusted data rather than executable instructions.
openai-compatible
Use any provider that exposes /chat/completions, including many Kimi, GLM/Z.ai, OpenRouter, LiteLLM, Ollama-compatible gateways, and self-hosted routers:
PATHMARK_SYNTHESIS_PROVIDER=openai-compatible \
PATHMARK_OPENAI_BASE_URL=https://api.provider.example/v1 \
PATHMARK_OPENAI_API_KEY=... \
PATHMARK_OPENAI_MODEL=... \
pathmarkThis mode affects MCP ask_memory / chat and CLI pathmark chat. Regular MCP tools still store and retrieve local memory without a model provider.
Setup CLI
pathmark setup <client> prints copy-paste setup for common harnesses. Add --json when you want structured output for scripts.
Supported targets:
codex
claude-code
claude-desktop
cursor
opencode
gemini-cli
generic
openai-compatible
commandAliases include claude, gemini, kimi, glm, and z-ai.
Gemini CLI setup includes portable SessionStart, BeforeAgent, AfterTool, and AfterAgent hooks for automatic scoped recall and capture. Other harnesses can feed exported transcripts through the generic ingestion surface:
pathmark ingest --client=claude-code --namespace=my-project < transcript.json
pathmark ingest --client=opencode --namespace=my-project < transcript.jsonMemory chat, consolidation, maintenance, and portable sync
Maintenance commands preview destructive changes unless --apply is present:
pathmark chat "What did we decide about release signing?" --namespace=my-project
pathmark consolidate --namespace=my-project
pathmark consolidate --namespace=my-project --cursor=LAST_RECORD_ID
PATHMARK_SYNTHESIS_PROVIDER=codex pathmark consolidate --namespace=my-project --apply
pathmark feedback --recall-id=RECALL_ID --relevant=MEMORY_ID --irrelevant=OTHER_ID
pathmark audit --days=30
pathmark audit --namespace=my-project --days=90
pathmark doctor
pathmark compact
pathmark compact --apply --retention-days=90
pathmark purge --namespace=old-client
pathmark purge --namespace=old-client --applypathmark chat and the MCP chat / ask_memory tools search approved conclusions first. Multi-intent questions can return separate conclusions for separate clauses. In default client mode, approved conclusions produce a safe extractive answer; a configured codex, command, or openai-compatible provider can synthesize richer prose. Raw fallback requires an explicit scope (--namespace / tags) or kind: memory, preventing unscoped cross-workspace history from entering chat.
Every matched chat query records recall activity and returns a recallId when the store is writable. Abstentions and read-only stores return recallId: null. Use MCP rate_recall or pathmark feedback with exact recalled IDs to label relevance. pathmark audit reports precision.status: "labeled", measured precision, and label coverage once feedback exists.
pathmark consolidate is preview-first. With default client synthesis it returns the bounded evidence and exact instructions for the host agent, which can call create_conclusion with supporting evidenceIds. When more eligible evidence remains, the result includes nextCursor and remainingAfterBatch; pass the cursor to review the next stable page. With a configured server-side synthesis provider, it previews structured candidates; --apply stages them as pending conclusions for approve_conclusion or reject_conclusion. It never auto-approves extracted intent.
Applied compaction and purge create a backup before replacing the canonical file. Soft deletion remains available through delete_memory; hard purge physically removes selected records from JSONL and rebuilds the derived index.
pathmark audit is read-only. It separates all raw records from consolidation-eligible user/assistant evidence, then reports capture-to-recall ratio, actionable synthesis backlog, recall age, exact duplicates, stale raw hits, and scope/missing-reference signals. Precision remains unlabeled until explicit feedback exists; Pathmark never substitutes a heuristic for a user label.
Use scoped exports and merge imports as the transport-neutral sync layer:
pathmark export --namespace=my-project --output=project.jsonl
pathmark import project.jsonl --namespace=my-projectFor an encrypted portable bundle, configure the passphrase outside the command line:
PATHMARK_EXPORT_KEY='use-a-secret-manager' pathmark export --encrypted --output=project.pathmark
PATHMARK_EXPORT_KEY='use-a-secret-manager' pathmark import project.pathmarkPathmark does not silently upload these files. Move them through a trusted filesystem, backup tool, or sync provider of your choice.
Optional hybrid retrieval
Default retrieval stays local SQLite FTS. To enable semantic or embedding-backed reranking without forcing a model dependency, set PATHMARK_RERANK_COMMAND to a trusted local command. It receives one JSON object on stdin containing query and candidates, and must return a JSON array of ranked record ids (or { "ids": [...] }). If it fails or times out, Pathmark falls back to lexical results.
Data Format
Pathmark stores newline-delimited JSON at:
~/.pathmark/memory/memory.jsonlmemory.jsonl remains the canonical source of truth. Pathmark also maintains a derived, disposable search index at memory.index.v5.sqlite. Index filenames are schema-versioned so old and new MCP processes can coexist during a rolling restart. The index is rebuilt automatically when the JSONL file changes outside Pathmark, and inactive index versions can be deleted safely after their processes stop.
Each record is inspectable:
{
"id": "uuid",
"kind": "memory",
"text": "The user prefers local-first tools.",
"tags": ["preference"],
"source": "mcp",
"createdAt": "2026-06-29T00:00:00.000Z",
"updatedAt": "2026-06-29T00:00:00.000Z"
}Deletes are soft deletes by default: the record gets a deletedAt timestamp. Use preview-first purge_memory or pathmark purge --apply for physical erasure. Updates preserve up to 50 prior versions, superseded records link to their replacement, and expired records are excluded from recall. The raw automatic-recall horizon is separate from storage retention: evidence can age out of proactive injection while remaining explicitly searchable.
Malformed JSONL lines are skipped rather than crashing every tool. pathmark codex status reports their count as invalidRecordCount so the source file can be repaired deliberately.
Roadmap
Provider presets for common local AI CLIs where stable commands exist.
Encrypted store option.
Hosted sync as an opt-in layer, not a requirement.
Native auto-capture packages for additional harness plugin systems beyond Codex and Gemini CLI.
Example recipes for Codex, Claude Desktop, Cursor, ChatGPT, and local LLM tools.
Positioning
Pathmark gives your agents a shared working memory that stays on your machine.
Switch agents. Keep the context.
Bring your own subscription. Keep your memory local.
Author and citation
Pathmark is created and maintained by Sergey Moloman, a B2B AI integration specialist and private AI contractor, and founder of RFLX AI.
Machine-readable authorship and citation metadata are available in CITATION.cff and codemeta.json.
License
MIT
Available Tools
25 toolsapprove_conclusionApprove conclusionAIdempotent
Approve one pending conclusion, optionally correcting its text or tags. The transition is atomic and auditable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| note | No | ||
| tags | No | ||
| text | No | ||
| decidedBy | No | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, destructiveness, and idempotency, but the description adds 'atomic and auditable' traits that are not in the annotations. This provides useful behavioral context beyond the structured metadata.
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 waste. The core action is front-loaded, and the optional correction detail follows naturally. The structure is tight and efficient.
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 too thin. It omits required parameter semantics (especially id), optional fields like note and decidedBy, and any error or edge-case behavior. The low schema coverage makes this a significant gap.
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?
With 0% schema description coverage, the description must compensate for parameter meaning. It mentions 'text or tags' but leaves id, note, decidedBy, and namespace unexplained. This is a partial but insufficient compensation for a 6-parameter tool.
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 states the action ('Approve') and the resource ('one pending conclusion'), and distinguishes it from siblings like reject_conclusion or list_pending_conclusions. It also notes optional corrections, making the purpose specific and unambiguous.
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 implies when to use it (to approve a pending conclusion) but does not explicitly state when not to use it or name alternatives such as reject_conclusion or create_conclusion. The guidance is clear but not explicit about exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_memoryAsk memoryC
Ask approved conclusions first, then scoped or explicitly requested raw evidence. Returns an answer, exact provenance, and a recallId for feedback.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| tags | No | ||
| limit | No | ||
| question | Yes | ||
| namespace | No |
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 adds useful context: the prioritization of approved conclusions and the return format including provenance and recallId. However, it does not disclose read-only nature, permissions, rate limits, or any side effects, leaving gaps for a query tool without annotation support.
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 a single concise sentence that front-loads the core purpose and return values. It is efficiently worded with no filler, though it could benefit from a structured breakdown of parameters and usage guidance.
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 5 parameters, no annotations, and no output schema, the description is far from complete. It omits parameter semantics, usage alternatives, error conditions, and any safety or permission context. An agent would be under-equipped to invoke this tool correctly without opening the schema and guessing at parameter meaning.
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 0%, so the description must compensate for parameter meaning. It fails to explain any of the 5 parameters: 'kind', 'tags', 'limit', 'namespace', and even 'question' is only implied by the tool name. The phrase 'scoped or explicitly requested raw evidence' hints at scoping but does not map to specific parameters like tags or namespace. This is a critical gap.
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 states the tool asks memory, specifying an order ('approved conclusions first, then scoped or explicitly requested raw evidence') and the return fields ('answer, exact provenance, recallId'). It is a specific verb+resource, but does not explicitly differentiate from sibling tools like search_memory or recall_memory, so it lacks sibling distinction.
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 implies this is the primary ask tool but provides no explicit guidance on when to use it versus alternatives like search_memory or recall_memory. It mentions an ordering of retrieval but not when this tool is preferred over others, and no exclusions or alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_memoryAudit memory valueARead-onlyIdempotent
Measure capture-to-recall behavior, unused records, recall age, duplicate rate, stale raw hits, and available precision evidence without changing memory.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| tags | No | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing the safe, non-mutating nature. The description adds value by detailing what behavioral aspects it measures (capture-to-recall behavior, duplicate rate, stale raw hits), which is context beyond the annotations. It does not contradict any annotation and provides a clearer picture of the tool's analytical focus, though it stops short of describing output structure or 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 a single, information-dense sentence that front-loads the primary action ('Measure') and lists the key metrics immediately. There is no filler or repetition. It earns every word and remains easily scannable, ideal for an AI agent parsing tool definitions.
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 three parameters, no output schema, and zero schema coverage, the description leaves critical gaps. It lists what metrics are measured but does not specify the return format, how parameters affect the results, or what constitutes a valid invocation. An agent cannot confidently construct a request without additional external knowledge. The complexity is moderate, but the lack of parameter and output documentation makes this incomplete.
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 0%, so the description must compensate for the three parameters (days, tags, namespace). It does not explain what these parameters control or how they influence the audit. The parameter names are somewhat intuitive, but without semantic detail an agent cannot determine how to set values to achieve a desired audit scope. This is a significant gap given no output schema exists either.
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 ('Measure') with a clear resource ('memory') and enumerates concrete metrics (capture-to-recall, unused records, recall age, etc.). It also explicitly distinguishes itself by noting 'without changing memory,' which sets it apart from mutation tools like update_memory or delete_memory. This gives an agent an unambiguous understanding of the tool's purpose.
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 implies a usage context (auditing memory metrics) but does not explicitly state when to prefer this over siblings like get_memory_snapshot or search_memory. It lacks a 'when not to use' or alternative tool references, leaving the agent to infer that this is for analytical insights rather than retrieving raw data. The phrase 'without changing memory' hints at a read-only analysis use case, but no direct routing guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backup_memoryBack up memory storeC
Create a point-in-time copy of the canonical local JSONL store.
| Name | Required | Description | Default |
|---|---|---|---|
| destination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully cover behavioral traits. It states 'point-in-time copy' but does not disclose whether the operation is safe, requires permissions, or affects the original store. Minimal transparency.
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?
One sentence, zero waste. Concise and front-loaded with the key action.
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 lack of annotations, schema description, and output schema, the description is too brief. It does not explain return values, format, or side effects, leaving the agent with incomplete information for a backup operation.
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 single parameter 'destination' has no schema description (0% coverage) and the description does not explain its meaning (e.g., file path, URL). The agent cannot infer how to set this parameter correctly.
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 states the verb ('create') and resource ('point-in-time copy of the canonical local JSONL store'), distinguishing it from siblings like export_memory and purge_memory. However, 'canonical local JSONL store' could be more explicit.
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?
No guidance on when to use this tool versus alternatives (e.g., export_memory) or when not to use it. The description provides no context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chatChatC
Chat with Pathmark using approved conclusions first and only scoped or explicitly requested raw fallback. Returns an answer, provenance, and recallId.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| tags | No | ||
| limit | No | ||
| question | Yes | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses the retrieval precedence (approved conclusions before raw), the fallback condition, and the return components (answer, provenance, recallId). It does not mention side effects, permissions, or failure modes, but it covers the most relevant behavioral aspects for a chat tool.
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 a single sentence with no redundant wording. It front-loads the core purpose and includes return information, which is efficient. It is appropriately concise, though the brevity contributes to the lack of parameter coverage.
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 five parameters, no schema descriptions, no output schema, and no annotations, the description is far from complete. It does not explain how to construct a valid request (e.g., what 'kind' options mean, how 'limit' behaves, or what 'namespace' refers to), leaving an agent without enough information to call the tool reliably.
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 0%, and the description mentions none of the five parameters (kind, tags, limit, question, namespace). The agent receives no guidance on how to fill these fields, making the tool difficult to invoke correctly.
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 verb ('Chat') and resource ('Pathmark'), and specifies a behavioral nuance ('using approved conclusions first... raw fallback'). It conveys the tool's function but does not explicitly differentiate from sibling tools like search_memory or recall_memory, so it is clear but not maximally distinct.
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 phrase 'using approved conclusions first and only scoped or explicitly requested raw fallback' implies when to use this tool (when a conversational answer grounded in approved conclusions is needed). However, it does not state when not to use it or name alternatives, so guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compact_memoryCompact memory storeA
Preview or apply exact deduplication, expired-record removal, retention, and deleted-record purging. Applied runs create a backup.
| Name | Required | Description | Default |
|---|---|---|---|
| dedupe | No | ||
| confirm | No | ||
| dropDeleted | No | ||
| retentionDays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses preview vs apply modes and backup creation, which are important behavioral traits. However, lacks detail on side effects (e.g., irreversibility after apply beyond backup, performance impact). No annotations provided, so description carries full burden; this is adequate but not comprehensive.
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, front-loaded with key action and followed by critical side-effect (backup). No redundant phrasing; 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?
Given no annotations, no output schema, and 0% schema coverage, the description should provide more operational context (e.g., how retentionDays interacts with time, preview vs apply behavior, confirmation steps). Current description leaves agents guessing about parameter details and tool behavior.
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?
With 0% schema description coverage, description adds meaning by linking 'deduplication' to the dedupe parameter and 'deleted-record purging' to dropDeleted. retentionDays is mentioned but not explained (no unit or effect). confirm parameter is entirely absent from description, leaving its purpose unclear.
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 clearly states verb 'Preview or apply' and resource 'memory store', listing specific operations: deduplication, expired-record removal, retention, and deleted-record purging. It distinguishes from siblings like purge_memory (all-out removal) and doctor_memory (checkup) by specifying exact compaction actions.
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?
Implies usage for cleaning up memory through deduplication and retention, but no explicit when-to-use or when-not-to-use. With many sibling tools (e.g., purge_memory, doctor_memory), more guidance on choosing this over alternatives would improve usability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consolidate_memoryConsolidate raw evidenceBIdempotent
Prepare a bounded unsynthesized evidence batch and, when server synthesis is configured, preview or stage evidence-backed conclusion proposals. Proposals are never auto-approved.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| tags | No | ||
| apply | No | Stage generated proposals as pending conclusions. | |
| cursor | No | Continue after the last record id from a prior bounded batch. | |
| namespace | No | ||
| maxProposals | No | ||
| evidenceLimit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true, readOnlyHint=false, and destructiveHint=false. The description adds valuable behavioral context: 'Proposals are never auto-approved' and the dependency on server synthesis configuration. This goes beyond annotation disclosure without contradicting it.
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 sentences, front-loaded with the primary action, and avoids unnecessary detail. It is concise and structured, though it sacrifices some explanatory depth for brevity.
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 7 parameters, no output schema, and low schema coverage, the description is insufficient for an agent to call this tool correctly. It does not explain the meaning of the parameters, the expected return structure, or the conditions under which staging occurs. Significant gaps remain.
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 only 29% (only apply and cursor have descriptions). The tool description fails to explain any of the parameters (days, tags, namespace, maxProposals, evidenceLimit), leaving the agent without meaning beyond the schema. Given the low coverage, the description should compensate but does not.
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 action: preparing a bounded unsynthesized evidence batch and optionally previewing/staging proposals. It distinguishes from sibling tools like create_conclusion and approve_conclusion by emphasizing staging and no auto-approval. However, terms like 'unsynthesized' are somewhat jargon-heavy but still convey a clear purpose.
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 a conditional context ('when server synthesis is configured') but does not explicitly state when to prefer this over alternatives like create_conclusion or list_pending_conclusions. It implies staging use but lacks explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_conclusionCreate conclusionB
Propose a durable higher-signal conclusion. Approval is required by default before it can be recalled.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| text | Yes | Conclusion text to save. | |
| source | No | ||
| expiresAt | No | ||
| namespace | No | ||
| evidenceIds | No | Raw memory IDs supporting this conclusion. Used for provenance and consolidation coverage. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of behavioral disclosure. It clearly states the approval requirement and the durable nature of the conclusion, which is valuable. However, it does not mention what happens on rejection or if the conclusion can be edited, but the core behavior is transparent enough for an agent.
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 a single, concise sentence that front-loads the purpose and then adds the approval condition. It is efficient with no filler, making it easy to parse. However, it is very brief and could potentially include more context without becoming verbose.
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 six parameters, no annotations, and no output schema, the description is too sparse to be complete. It does not explain the significance of namespace, source, expiresAt, or evidenceIds, nor does it clarify how the approval workflow integrates with sibling tools like approve_conclusion. An agent would likely need additional context to use 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?
The schema description coverage is only 33%, and the tool description does not mention any of the parameters. It fails to explain tags, source, expiresAt, namespace, or evidenceIds, leaving the agent without guidance on how to use these fields. The description adds no semantic value beyond what the schema already provides for the text parameter.
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 states the tool proposes a durable, higher-signal conclusion, using a specific verb (propose) and resource (conclusion). It distinguishes itself from sibling tools like remember or recall_memory by focusing on conclusions rather than raw memories, though it could be more explicit about the distinction.
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 mentions that approval is required by default before recall, which implies it is for long-term conclusions needing review. However, it does not explicitly state when to use this tool over alternatives like remember or list_conclusions, nor does it name specific alternatives or conditions for choosing them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_memoryDelete memoryC
Soft-delete a saved memory or conclusion by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The term 'soft-delete' hints at non-destructive behavior, but with no annotations, the description should more clearly explain what happens to the memory (e.g., is it recoverable? Does it affect related conclusions?). It does not address side effects, authorization needs, or data retention.
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 a single sentence, which is concise, but it lacks structure. It fits for a simple tool, but could benefit from additional context about the soft-delete behavior or return format.
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 low complexity (one required parameter, no output schema), the description should cover basics like what the 'id' refers to and what happens after deletion. It mentions 'soft-delete' but omits details about restoration or confirmation, leaving gaps for an AI agent.
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 has a single parameter 'id' with no description. The tool description says 'by id' but does not clarify whether this is a memory ID, conclusion ID, or something else. With 0% schema coverage, the description fails to add meaning beyond the schema, leaving agents uncertain about acceptable values.
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 ('soft-delete') and identifies the resource ('memory or conclusion by id'), making the tool's action clear. It distinguishes from siblings like 'create_conclusion' and 'list_conclusions', but could be more explicit about its unique role.
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?
No guidance is provided on when to use this tool versus alternatives, such as when a hard delete might be needed or how it differs from 'remember' or 'ask_memory'. The description lacks context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doctor_memoryDiagnose memory storeA
Report duplicate, deleted, expired, conclusion, invalid-record, and index health counts without changing data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly declares read-only behavior ('without changing data'), which is critical. Lists specific categories reported, though does not detail what 'index health' means or any performance considerations.
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?
Single sentence of 9 words, perfectly concise and front-loaded with key information.
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?
Adequately covers the tool's purpose and scope given its simplicity (0 params, no output schema). Lists all reported categories, though lacks definitions for each metric.
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?
No parameters exist; schema coverage is 100%. Description adds no parameter info as none are needed, meeting baseline for zero-parameter tools.
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?
Clearly states verb 'report' and resource 'memory store health counts' for specific categories (duplicate, deleted, etc.), distinguishing from siblings that perform different operations like deletion or search.
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?
Implies diagnostic use via 'report' and 'without changing data', but lacks explicit when-to-use guidance compared to alternative tools like ask_memory or search_memory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_memoryExport memoryB
Export a scoped, mergeable JSONL bundle for another Pathmark installation or trusted sync transport.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| tags | No | ||
| encrypted | No | Encrypt the export with PATHMARK_EXPORT_KEY. | |
| namespace | No | ||
| destination | Yes | ||
| includeDeleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only mentions 'scoped, mergeable' without disclosing behavioral traits such as whether the export is destructive, authentication needs, rate limits, or 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 a single, front-loaded sentence with no wasted words, but given the tool's complexity (6 parameters), slightly more structure would improve clarity without sacrificing conciseness.
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 6 parameters, low schema coverage, no output schema, and no annotations, the description is insufficient to fully define the tool's behavior, especially compared to 17 sibling tools that may overlap.
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?
Only one of six parameters (encrypted) has a description in the schema; the description does not explain parameters like 'kind', 'tags', or 'namespace', failing to compensate for the 17% schema description 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 specifies a clear action ('export'), resource (memory), output format ('JSONL bundle'), and target ('another Pathmark installation or trusted sync transport'), distinguishing it from siblings like backup_memory or compact_memory.
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 implies use for exporting to another Pathmark installation but does not specify when to use this tool over alternatives like backup_memory or recall_memory, nor provide conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configGet Pathmark configurationA
Show the local Pathmark Memory store location and enabled optional features.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description fully discloses the tool's read-only behavior: it shows configuration data. There are no hidden or destructive actions, and the description is truthful and complete for a simple informational tool.
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 a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded with the action and resource, containing no fluff or unnecessary words.
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 has no parameters, no output schema, and no annotations, the description adequately covers what the tool returns (store location and enabled optional features). However, it could be slightly more specific about what optional features are included, but overall it is sufficient for an agent to understand the tool's output.
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 no properties, so there are no parameters to describe. With 0 parameters, the baseline score is 4, and the description does not need to add parameter information.
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 states the tool shows the local Pathmark Memory store location and enabled optional features, using a specific verb 'show' and resource 'configuration'. It distinguishes itself from sibling tools that focus on memory operations (e.g., ask_memory, delete_memory, search_memory).
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 clear context that this tool is for retrieving configuration information. While it does not explicitly mention when not to use it or alternatives, the context is sufficient for a simple getter tool with no parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contextGet contextC
Return compact local memory context for a task or question.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| tags | No | ||
| limit | No | ||
| query | No | Task or question to retrieve context for. | |
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'compact local memory context' without specifying if it is read-only, what side effects exist, or what 'compact' entails (e.g., summarization). This is insufficient for informed selection.
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 a single sentence, which is concise but too terse for the tool's complexity. It omits essential details about parameters and use cases, making it under-specified.
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 5 parameters, no annotations, no output schema, and many sibling tools, the description is grossly incomplete. It does not explain what the tool returns, how to use parameters, or how it relates to siblings like 'search_memory' or 'recall_memory'.
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 description adds no information about any of the 5 parameters. Schema coverage is only 20% (only 'query' has a description). The agent must infer the meaning of 'kind', 'tags', 'limit', and 'namespace' from the schema alone, which is insufficient.
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 states the verb ('Return') and resource ('compact local memory context') for a task or question. It differentiates from siblings like 'search_memory' by specifying 'compact' context, but does not fully clarify how it differs from 'recall_memory' or 'ask_memory'.
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?
No usage guidance is provided. The description does not indicate when to use this tool vs alternatives like 'search_memory' or 'recall_memory', nor any conditions or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memory_snapshotGet approved memory snapshotBRead-onlyIdempotent
Generate a bounded USER/PROJECT/AGENT snapshot from approved canonical conclusions only.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| charLimit | No | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's main contribution is the 'bounded' nature and the restriction to 'approved canonical conclusions only'. It adds useful behavioral context without contradicting the annotations, though it does not describe return format or edge cases.
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 a single sentence with no waste. It front-loads the primary action and scope, making it easy to parse quickly. 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?
Given the large sibling set and the lack of parameter semantics and usage guidance, the description is not complete enough for an agent to confidently choose and invoke this tool. The core purpose is clear, but the absence of parameter explanations and differentiation from alternatives leaves significant gaps.
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 0%, so the description carries full responsibility for explaining the three parameters (tags, charLimit, namespace). The description mentions none of them, leaving the agent to infer meaning from parameter names alone. This is a significant gap for a tool with three optional parameters.
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 ('Generate') and resource ('snapshot') with clear scoping ('USER/PROJECT/AGENT') and a precise constraint ('approved canonical conclusions only'). This clearly distinguishes it from siblings like search_memory or recall_memory, which may include unapproved content, and from creation 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?
The description does not provide any guidance on when to use this tool versus the many sibling tools (e.g., get_context, recall_memory, search_memory). It implies a use case through the 'approved conclusions only' clause, but there is no explicit when-to-use or when-not-to-use guidance, nor any mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conclusionsList conclusionsC
List saved durable conclusions.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only says 'List', omitting any behavioral details like whether it returns all conclusions, pagination behavior, or side effects. Agent has to infer from name alone.
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?
Extremely terse at 3 words, it is under-specified rather than concise. A minimal description may omit critical information needed for correct usage.
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 no output schema, no annotations, and undocumented parameters, the description is insufficient. It only states the basic function, lacking details on how parameters affect output or what the response contains.
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 has 0% description coverage and the description adds no information about the three parameters (tags, limit, namespace). Agent must rely on parameter names, which are somewhat clear but lack usage 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?
Description clearly states the verb 'List' and resource 'saved durable conclusions', making the tool's purpose immediately understandable and distinct from siblings like create_conclusion.
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?
No guidance on when to use this tool versus siblings such as recall_memory or search_memory. The description does not provide any context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pending_conclusionsList pending conclusionsARead-onlyIdempotent
List bounded approval-gated conclusion proposals. Pending records are never returned by normal memory search.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| offset | No | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful context beyond annotations: the fact that pending records are never returned by normal memory search is a useful behavioral caveat. With readOnlyHint, idempotentHint, and destructiveHint already set, the description enriches understanding by clarifying scope and visibility, though it omits pagination or ordering 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?
Two sentences, front-loaded with the core purpose, no filler. The extra sentence adds a valuable behavioral distinction without verbosity.
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?
Adequate for a simple list operation given annotations cover safety, but lacking parameter semantics and explicit sibling differentiation. An agent could call it correctly with defaults, but would be unsure about filtering options and when to prefer it over list_conclusions.
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 0% and the description does not compensate. It fails to explain any of the four parameters (tags, limit, offset, namespace), leaving an agent with no guidance on how to filter or paginate. This is a significant gap given the low schema 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?
States a specific verb 'List' and a resource 'bounded approval-gated conclusion proposals', which clearly conveys the core function. The added note that pending records are never returned by normal search helps distinguish it from search_memory, but it does not explicitly differentiate from sibling list_conclusions, leaving slight ambiguity about the exact scope.
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?
Implies this is the tool for pending conclusions via the phrase 'approval-gated' and the note about normal search, but provides no explicit when-to-use vs alternatives like list_conclusions. It does not state exclusions or conditions that would guide selection between sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purge_memoryHard purge memoryB
Preview or permanently remove matching records from the canonical store. A backup is created before an applied purge.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| tags | No | ||
| before | No | ||
| source | No | ||
| confirm | No | False previews the purge; true applies it and creates a backup. | |
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In the absence of annotations, the description discloses key behaviors: the tool can preview or permanently remove records, and it creates a backup before an applied purge. It does not, however, detail the permanence of removal or the recovery process from backup, but overall transparency is good.
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 sentences: the first states the purpose, the second adds a critical behavioral detail (backup). It is front-loaded, efficient, and contains no redundant information.
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 6 parameters, no output schema, and no annotations, the description is too brief. It does not explain what the preview returns, behavior with no matching records, the backup process, or constraints on filters. More detail is needed for adequate 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?
Schema description coverage is only 17% (only 'confirm' has a description). The tool description adds the concept of 'matching records' to imply filtering, but it does not explain the semantics or formats of the other five parameters (id, tags, before, source, namespace). This leaves significant ambiguity for the agent.
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-resource pair ('Preview or permanently remove matching records from the canonical store') making the tool's core action clear. However, it does not explicitly distinguish itself from sibling tools like 'delete_memory' or 'compact_memory', which may have overlapping functionality.
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 implies a two-step workflow (preview with confirm=false, apply with confirm=true) but provides no explicit guidance on when to use this tool over alternatives (e.g., delete_memory) or conditions to avoid using it. No exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate_recallRate recalled memoriesC
Attach explicit relevance labels to one exact Pathmark recall so audit_memory can report measured precision.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| recallId | Yes | The recallId returned by chat or ask_memory. | |
| relevantIds | No | ||
| irrelevantIds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint false, destructiveHint false, etc.), so the description must carry behavioral disclosure. It implies a write operation (attaching labels) but doesn't explain side effects, reversibility, or response format. The link to audit_memory suggests downstream effects but lacks detail.
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 a single, compact sentence with no fluff. It front-loads the primary action. However, it could be structured to include more critical details without losing conciseness, such as clarifying the purpose of relevant/irrelevant IDs.
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 4 parameters, no output schema, and minimal annotations, the description is inadequate. It doesn't explain what a 'Pathmark recall' is, how relevantIds and irrelevantIds should be populated, or what the tool returns. An agent would struggle to invoke it correctly without additional context.
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 only 25% (only recallId has a description). The description does not explain note, relevantIds, or irrelevantIds beyond the vague 'relevance labels'. With low coverage, the description should compensate but doesn't, leaving agents guessing about parameter meaning and usage.
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 action (attach relevance labels) on a specific resource (one exact Pathmark recall) and ties it to audit_memory's precision reporting. This is clear enough to understand the core function, though it doesn't explicitly differentiate from siblings like recall_memory or update_memory.
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?
No explicit guidance on when to use this tool versus alternatives. The mention of audit_memory implies a workflow but doesn't state when to choose rate_recall over other memory operations or what conditions warrant it. No exclusions or alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_memoryRecall memoryB
Transparent recall for any MCP-capable harness. Use this at task start or before answering to show exactly which memories were used.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Exact memory IDs from a prior Pathmark context block. Preserves the original visible-recall set. | |
| kind | No | ||
| tags | No | Optional tags to scope visible recall, such as the current workspace tag. | |
| limit | No | ||
| query | No | Task, repo, or question to retrieve memory for. Empty query returns recent records. | |
| namespace | No | ||
| includeRecords | No | Include a second, untruncated full-record copy alongside usedMemories. Defaults to false: it duplicates data already in context/usedMemories and is unbounded in size. Set true only when full record bodies are required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It conveys that the tool is a read-like operation ('recall') and that it shows which memories were used, which is the core behavior. However, it does not mention potential side effects, performance implications, or any caveats (e.g., the unbounded includeRecords parameter), leaving some behavioral ambiguity.
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 sentences with no fluff, front-loading the core purpose and then the usage context. It is appropriately concise, though the first sentence ('Transparent recall for any MCP-capable harness') is slightly abstract and could be more concrete without losing brevity.
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 has 7 parameters, no output schema, and no annotations, the description is too sparse. It does not explain what the return structure looks like, the role of namespace or kind, or any prerequisites. An agent would likely struggle to use this tool correctly without additional context.
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 57%, meaning several parameters (kind, limit, namespace) lack descriptions in the schema. The tool description adds no parameter-level meaning; it only states the overall purpose. Since it does not compensate for the undocumented parameters, it scores low on this dimension.
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 states the tool's purpose: to recall memories and show exactly which ones were used, with a specific usage context ('at task start or before answering'). This is a clear verb-resource-purpose combination, but it does not explicitly distinguish itself from siblings like search_memory or get_context, so it misses the top score.
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 timing guidance ('Use this at task start or before answering'), which is a clear context for when to use it. However, it does not mention when not to use it or name any alternative tools, so it falls short of the 5-point requirement for exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_conclusionReject conclusionADestructiveIdempotent
Reject one pending conclusion while retaining it in the canonical audit trail and excluding it from recall.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| note | No | ||
| decidedBy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds critical nuance: the conclusion is not deleted but retained in the audit trail and excluded from recall. This is valuable behavioral context beyond the annotation, clarifying the exact 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 a single, front-loaded sentence with no filler. Every clause adds meaning: the action, the target, and the two key side effects (audit trail retention and recall exclusion).
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?
While the core behavior is stated, the description omits parameter semantics and does not mention prerequisites like the id being required or the conclusion being pending. For a destructive tool with no output schema, this is insufficient for an agent to call it correctly without external knowledge.
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 0%, and the description does not mention any of the three parameters (id, note, decidedBy). The agent is left without any meaning for these fields, which is a significant gap for a destructive operation that requires an id.
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 states the verb (reject), resource (pending conclusion), and the specific behavior: retaining it in the canonical audit trail and excluding from recall. This distinguishes it from siblings like approve_conclusion, making the purpose unambiguous.
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 implies usage for pending conclusions that need rejection, but it does not explicitly contrast with approve_conclusion or other alternatives. No when-to-use or when-not-to-use guidance is provided, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberSave raw evidenceA
Save raw searchable evidence. Durable intent should use the approval-gated conclusion workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Optional lowercase-ish tags for later filtering. | |
| text | Yes | Memory text to save. | |
| source | No | Optional source label, such as repo, thread, or tool name. | |
| expiresAt | No | Optional ISO timestamp after which recall excludes this memory. | |
| namespace | No | Optional project, user, or client namespace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It adds useful behavioral context by calling the memory 'raw' and 'searchable' and implying this path is not the approval-gated one. However, it does not disclose return behavior, persistence semantics, idempotency, or whether saves are immediately visible to recall tools.
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 sentences with the core action front-loaded and the routing guidance immediately after. There is no filler or redundant restatement of the title.
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 tool with one required parameter and full schema coverage, the description is largely complete. Minor gaps remain around return values and post-save behavior, but the absence of an output schema lowers that requirement. The lack of annotations is partly mitigated by the clear 'save' and 'searchable' framing.
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 documents all five parameters. The description adds only the general 'raw evidence' framing and does not add parameter-specific meaning beyond the schema, matching the baseline of 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?
The description states a specific verb-object pair, 'Save raw searchable evidence,' which clearly identifies the action and resource. It also differentiates from the conclusion workflow, so an agent can tell it apart from siblings like create_conclusion without opening 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?
The second sentence gives an explicit when-not rule: durable intent should use the approval-gated conclusion workflow instead. This provides clear routing guidance for choosing between this tool and the conclusion-based alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_memorySearch memoryC
Search saved local memories and conclusions.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| tags | No | ||
| limit | No | ||
| query | No | Search query. Empty query returns recent records. | |
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks any behavioral details (e.g., search algorithm, scope, side effects). The description is too minimal to be useful.
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 a single front-loaded sentence, which is concise. However, the brevity comes at the cost of missing critical details.
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 5 parameters and no output schema or annotations, the description is insufficient. It omits return format, how to use kind/tags/namespace, and other essential context.
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 only 20% (only query has a description). The description does not add meaning for kind, tags, limit, or namespace, leaving most parameters unexplained.
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 'Search saved local memories and conclusions' clearly states the action and resource, but fails to distinguish from sibling tools like recall_memory or ask_memory.
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?
No guidance on when to use this tool versus alternatives such as recall_memory or ask_memory, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_traceSession traceA
Show a bounded chronological audit trail for one captured session: prompts, exact injected memory IDs, redacted tool inputs/results, and answers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sessionId | Yes | Exact Codex or harness session ID. | |
| includeOutputs | No | Include redacted bounded tool output previews. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear full weight. It discloses that the audit trail is bounded and includes redacted outputs, suggesting read-only behavior. However, it does not mention auth needs, rate limits, or whether session data might be destroyed. The description is adequate but not rich.
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 a single, front-loaded sentence that conveys the core information without waste. Every part is substantive.
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 has 3 parameters and no output schema. The description lists some return elements but does not specify return format, error behavior (e.g., missing sessionId), or how the bounding works. Adequate for a straightforward tool, but additional detail would improve 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?
Schema description coverage is 67%, with descriptions for sessionId and includeOutputs. The tool description adds no additional parameter context. The 'limit' parameter lacks a schema description, and the description does not compensate. Baseline is 3 for this coverage level.
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 states the tool shows a bounded chronological audit trail for a session, specifying its contents (prompts, memory IDs, redacted inputs/results, answers). This distinguishes it from memory management and chat siblings, which have different purposes.
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 implies usage for inspecting session history, which is clear given the sibling context. However, it does not explicitly state when not to use it or provide alternatives, though the purpose is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
supersede_memorySupersede memoryC
Replace an outdated memory with a linked current record while preserving history.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| kind | No | memory | |
| tags | No | ||
| text | Yes | ||
| source | No | ||
| expiresAt | No | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'preserving history' but does not detail side effects, authorization needs, or what happens to the old memory (e.g., archived, linked). Lacks transparency on behavioral traits.
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 a single sentence of 12 words, which is brief but severely underspecified. It sacrifices clarity and completeness for brevity, making it insufficient for an agent to use effectively.
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 7 parameters, no output schema, and no annotations, the description is highly incomplete. It does not cover parameter usage, return values, or edge cases, leaving the agent with insufficient information 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?
Schema description coverage is 0%, but the description fails to explain any of the 7 parameters (id, text, kind, tags, source, expiresAt, namespace). It adds no meaning beyond the schema, which is sparse. Essential information like required fields is missing.
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 states it replaces an outdated memory with a linked current record while preserving history. The verb 'replace' and resource 'memory' are specific, and it distinguishes from siblings like update_memory by emphasizing history preservation.
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 implies usage for outdated memories that need replacement while keeping history, but it does not explicitly state when to use this tool over alternatives like update_memory or delete_memory. No exclusions or scenarios are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_memoryUpdate memoryC
Correct an existing memory while preserving its prior versions in local history.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| tags | No | ||
| text | No | ||
| source | No | ||
| expiresAt | No | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions a key behavioral trait: preserving prior versions in history. However, with no annotations, it fails to disclose other important aspects such as idempotency, error handling (e.g., memory not found), or return value.
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 a single, concise sentence that directly states the core function. It is well-structured and front-loaded, though it could be slightly expanded without losing conciseness.
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 6 parameters, no output schema, and no annotations, the description is grossly incomplete. It lacks information about return values, side effects, prerequisites, or behavior for edge cases, leaving the agent with significant uncertainty.
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?
With 0% schema description coverage and no parameter details in the description, the agent receives no added meaning beyond the raw schema field names. The description does not explain the purpose or constraints of any of the 6 parameters.
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 the verb 'correct' with the resource 'memory', clearly indicating the action of updating an existing memory. It distinguishes from siblings like 'delete_memory' and 'supersede_memory' by implying a less destructive operation, but could be more explicit about what 'correct' entails.
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?
No guidance is provided on when to use this tool versus its siblings. For example, there is no comparison with 'supersede_memory' or 'delete_memory' to help the agent choose appropriately.
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. Dates show when Glama detected each change.
9 tool updates
v0.1.15- Added
approve_conclusion - Added
audit_memory - Added
consolidate_memory - Changed
create_conclusion1 field changed- added
Input schema / properties / evidenceIdsAdded value: +{ + "description": "Raw memory IDs supporting this conclusion. Used for provenance and consolidation coverage.", + "items": { + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" +}
- Added
get_memory_snapshot - Added
list_pending_conclusions - Added
rate_recall - Changed
recall_memory1 field changed- changed
Input schema / properties / includeRecords / descriptionPrevious value: -"Include a second full-record copy. Defaults to true for compatibility."New value: +"Include a second, untruncated full-record copy alongside usedMemories. Defaults to false: it duplicates data already in context/usedMemories and is unbounded in size. Set true only when full record bodies are required."
- Added
reject_conclusion
2 tool updates
v0.1.9- Changed
recall_memory2 fields changed- added
Input schema / properties / idsAdded value: +{ + "description": "Exact memory IDs from a prior Pathmark context block. Preserves the original visible-recall set.", + "items": { + "minLength": 1, + "type": "string" + }, + "maxItems": 30, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / includeRecordsAdded value: +{ + "description": "Include a second full-record copy. Defaults to true for compatibility.", + "type": "boolean" +}
- Added
session_trace
15 tool updates
v0.1.7- Changed
ask_memory3 fields changed- added
Input schema / properties / kindAdded value: +{ + "enum": [ + "memory", + "conclusion" + ], + "type": "string" +} - added
Input schema / properties / namespaceAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / tagsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
- Added
backup_memory - Changed
chat3 fields changed- added
Input schema / properties / kindAdded value: +{ + "enum": [ + "memory", + "conclusion" + ], + "type": "string" +} - added
Input schema / properties / namespaceAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / tagsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
- Added
compact_memory - Changed
create_conclusion2 fields changed- added
Input schema / properties / expiresAtAdded value: +{ + "type": "string" +} - added
Input schema / properties / namespaceAdded value: +{ + "minLength": 1, + "type": "string" +}
- Added
doctor_memory - Added
export_memory - Changed
get_context3 fields changed- added
Input schema / properties / kindAdded value: +{ + "enum": [ + "memory", + "conclusion" + ], + "type": "string" +} - added
Input schema / properties / namespaceAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / tagsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
list_conclusions2 fields changed- added
Input schema / properties / namespaceAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / tagsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
- Added
purge_memory - Added
recall_memory - Changed
remember2 fields changed- added
Input schema / properties / expiresAtAdded value: +{ + "description": "Optional ISO timestamp after which recall excludes this memory.", + "type": "string" +} - added
Input schema / properties / namespaceAdded value: +{ + "description": "Optional project, user, or client namespace.", + "minLength": 1, + "type": "string" +}
- Changed
search_memory1 field changed- added
Input schema / properties / namespaceAdded value: +{ + "minLength": 1, + "type": "string" +}
- Added
supersede_memory - Added
update_memory
1 tool update
v0.1.1- Added
chat
8 tool updates
v0.1.0- First observed
ask_memory - First observed
create_conclusion - First observed
delete_memory - First observed
get_config - First observed
get_context - First observed
list_conclusions - First observed
remember - First observed
search_memory
TDQS
Several retrieval tools overlap heavily: search_memory, get_context, recall_memory, ask_memory, and chat all serve similar recall purposes, with ask_memory and chat being nearly identical. audit_memory and doctor_memory also share duplicate/stale reporting territory, making misselection likely.
Most tools follow a clear verb_noun snake_case pattern such as create_conclusion, approve_conclusion, backup_memory, and export_memory. Minor exceptions like 'remember' and 'chat' are bare verbs, but they are recognizable and do not undermine the overall consistency.
At 25 tools, the server is at the heavy end of the borderline range. Many tools cover distinct lifecycle, audit, and maintenance operations, but the sheer number may overwhelm agents and increases the chance of selecting the wrong tool.
The tool surface is very comprehensive, covering raw capture, conclusion workflows, recall, audit, maintenance, backup, and export. Minor gaps exist, such as no explicit import counterpart to export_memory and no direct get-by-id tool, but agents can work around these with search and update operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Portable memory for AI agents: capture once, recall across Claude, Cursor, and any MCP client.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA shared, local-first memory layer for AI CLIs, providing persistent, layered memory across Claude Code, Gemini CLI, and other MCP-aware clients.1MIT
- 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
- FlicenseNot gradedqualityBmaintenanceLocal-first cross-agent memory for AI coding agents. Persistent, shared memory over MCP — what you tell one agent can be recalled by another — with all data stored in a single local SQLite file, no cloud and no API keys.-
- AlicenseAqualityAmaintenanceDurable, local-first memory for AI coding agents over MCP — zero-dependency (pure Python + SQLite/FTS5), curated and semantically de-duped. Works with Claude Code, Codex and any MCP host, and you own the data as plain rows.621AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hacksurvivor/pathmark'
If you have feedback or need assistance with the MCP directory API, please join our Discord server