Skip to main content
Glama
ArkaAiAdmin

Agentic Memory

by ArkaAiAdmin

Agentic Memory

License Python 3.11+ Tests Schema MCP Tools CRDT Sync Temporal KG v1.1.0 Paper Benchmarks

Quick Start · Features · Architecture · MCP Server · SDKs · Comparison · Docs · Contributing


What is Agentic Memory?

Agentic Memory gives AI agents persistent, cross-session, local-first memory — no cloud, no vendor lock-in, no API keys required. Memories are stored as human-readable Markdown files. A derived SQLite index enables fast full-text, semantic, and knowledge-graph search.

Built for Claude Code, OpenCode, the Agentic Memory IDE, and any MCP-compatible agent harness.

graph TD
    A[Agentic Memory] --> B[Markdown - source]
    A --> C[SQLite FTS5 - derived]
    A --> D[14-Phase Search Pipeline]
    B --> E[.md files - Git-ready]
    C --> F[Temporal Knowledge Graph]
    D --> G[CQRS + CRDT Multi-Agent Sync]
    A --> H[19 MCP tools]
    A --> I[55 cron scripts -> 1 scheduler]
    A --> J[9 hooks]
    A --> K[Python SDK + TypeScript SDK + REST API]

Related MCP server: mem-persistence

Quick Start

from agentic_memory import MemoryClient

mc = MemoryClient()
mc.save("User prefers dark mode", category="preferences")
results = mc.search("dark mode")
for r in results:
    print(f"[{r.score:.2f}] {r.content}")

Agent Scoping

from agentic_memory import AgentMemory

coder = AgentMemory(agent_id="coder")
coder.save("Frontend uses React with TypeScript")

designer = AgentMemory(agent_id="designer")
designer.save("Brand colors are #FF5733 and #33FF57")

MCP Server

# Add to your MCP config
{
  "agentic-memory": {
    "command": "agentic-memory-server"
  }
}

REST API

agentic-memory api --port 9878
curl http://localhost:9878/api/v1/search?q=dark+mode

Features

Search — 14-Phase Hybrid Pipeline

Phase

Technique

Purpose

1

Query parsing + expansion

Normalization, reasoning expansion

2

Skill-first lookup

Conditional early return on skill match

3

Cache check

Return cached results if fresh

4

DB setup + filter construction

Open connection, build filters

5

FTS5 BM25 + KG facts

Keyword + fact retrieval

6

Embedding fallback

Semantic vector search (usearch + model2vec)

7

Hybrid fusion (RRF)

Merge sparse + dense results

8

Temporal filtering

Decay old memories, exclude outdated

9

Chunk enhancement + session clustering

Enrich with sub-document chunks

10

KG boost + multi-hop traversal

Concept centrality, graph expansion

11

Reranking

Cross-encoder + ColBERT late-interaction

12

Build output items

Assemble result objects

13

Postprocessing

Safety gates, quality filters, profiling

14

Finalization

Access recording, telemetry, envelope

Each phase is independently isolated — no single failure kills the search.

Write — Crash-Safe, Conflict-Preserving

  • Saga transactions — Crash-consistent writes with undo/redo

  • CQRS write journal — Lock-free multi-agent writes via journal.db

  • CRDT field-level LWWES — Concurrent edits to different fields both win

  • Safe atomic write — POSIX rename, conflict file preservation

Knowledge Graph — Temporal + Contradiction-Aware

  • Entity extraction with Jaccard fuzzy matching

  • Temporal edges with valid_at / invalid_at

  • Contradiction detection and supersession chains

  • Graph analytics (centrality, community detection)

Neural Forget Curve

Surprise-based retention formula considering access patterns, query relevance, recency, and importance:

retention = sigmoid(w_acc × access + w_surp × surprise + w_imp × importance + w_fit × fitness - w_rec × recency - bias)

Cron Consolidation

39 crontab entries replaced with 1 consolidated scheduler that runs every 5 minutes, checks which jobs are due by frequency tier, and runs them sequentially.

System Health Dashboard

memory_system_health MCP tool returns green/yellow/red across 6 dimensions with actionable next steps: database, search, worker, crons, auto-save, disk.


Architecture

agentic-memory/
├── agentic_memory/              # Python SDK (pip installable)
│   ├── client.py                # MemoryClient (save/search/CRUD)
│   ├── temporal.py              # TemporalKG
│   ├── kg.py                    # KnowledgeGraph
│   ├── integrations/            # LangChain + CrewAI adapters
│   └── models.py                # 8 typed dataclasses
├── search/                      # 14-phase search pipeline
│   ├── orchestrator.py          # Main pipeline (2,825 LOC)
│   ├── scoring.py               # RRF, temporal decay, KG boost
│   ├── rerankers.py             # Cross-encoder, ColBERT
│   ├── chunk_index.py           # Semantic chunking
│   └── synthesis.py             # Answer synthesis
├── save/                        # Write path
│   ├── pipeline.py              # Saga-wrapped save
│   ├── backlinks.py             # Wiki-style backlinks
│   └── post_save_hooks.py       # Post-save operations
├── infra/                       # Infrastructure
│   ├── db.py                    # Connection pool + WAL
│   ├── write_journal.py         # CQRS write journal
│   ├── embedding_search.py      # Semantic embeddings
│   ├── reranker.py              # Neural reranker
│   ├── vector_store.py          # ANN index abstraction
│   ├── api_server.py            # REST + WebSocket
│   └── cache.py                 # Multi-level caching
├── knowledge_graph/             # KG extraction + search
├── kg/                          # Temporal KG + analytics
├── crdt/                        # Field-level CRDT merge
├── fact/                        # Fact extraction + temporal
├── background/                  # Daemon + worker + circuit breaker
├── cron/                        # 47+ cron jobs + consolidated scheduler
├── hooks/                       # 6 lifecycle hooks
├── migrations/                  # 57 reversible migrations
├── eval/                        # 363 test files, 5,703+ test functions
├── ts-sdk/                      # TypeScript SDK
├── mcp_*.py                     # 31 MCP modules
├── mcp_health.py                # System health MCP tool
└── dashboard.py                 # Streamlit observability

Production stats: ~147K LOC, 365 test files, 5,735+ test functions, schema v76, 77 reversible migrations, 25 CORE MCP tools, 1 consolidated scheduler, 7 lifecycle hooks.


SDKs

Python

pip install agentic-memory
from agentic_memory import MemoryClient, AgentMemory, TemporalKG

mc = MemoryClient()
mc.save("Important context", category="lessons")
results = mc.search("context")
stats = mc.stats()

TypeScript

npm install @agentic-memory/sdk
import { MemoryClient } from '@agentic-memory/sdk';
const client = new MemoryClient();
await client.add('Important context');
const results = await client.search('context');

REST API

agentic-memory api --port 9878
curl -X POST http://localhost:9878/api/v1/memories \
  -H "Content-Type: application/json" \
  -d '{"content": "Important context"}'

MCP Server

17 CORE tools always visible to your agent. 95 ADMIN + 3 DEPRECATED behind memory_maintenance(operation="...").

CORE Tools

memory_search         memory_save           memory_delete
memory_recall         memory_note           memory_learn
memory_audit          memory_organize       memory_share
memory_graph          memory_profile        memory_session_start
memory_advanced       memory_review_beliefs memory_curate_autosave
memory_health_check   memory_system_health

Setup

{
  "agentic-memory": {
    "command": "agentic-memory-server",
    "env": {
      "MEMORY_KNOWLEDGE_GRAPH": "1",
      "MEMORY_DB_PATH": "./memory.db"
    }
  }
}

Integrations

LangChain

from agentic_memory.integrations.langchain.tool import search_tool, save_tool
agent = create_react_agent(llm, tools=[search_tool, save_tool])

CrewAI

from agentic_memory.integrations.crewai.tool import AgenticMemorySearchTool
agent = Agent(..., tools=[AgenticMemorySearchTool()])

OKF (Open Knowledge Format)

mc.okf_export("~/ObsidianVault/agent-memory")

Configuration

Install Extras

pip install agentic-memory              # Core
pip install agentic-memory[embeddings]  # + semantic search
pip install agentic-memory[reranker]    # + cross-encoder
pip install agentic-memory[langchain]   # + LangChain
pip install agentic-memory[crewai]      # + CrewAI
pip install agentic-memory[all]         # Everything

Key Environment Variables

Variable

Default

Description

MEMORY_DB_PATH

./memory.db

Database path

MEMORY_LOCAL_DIR

./memory

Markdown directory

MEMORY_KNOWLEDGE_GRAPH

0

Enable KG extraction

MEMORY_EMBEDDINGS

0

Enable semantic search

MEMORY_LLM_EXTRACTION

0

Enable LLM fact extraction


Comparison

Feature

Agentic Memory

Mem0

Letta

Zep

Local-first

Yes

No

No

No

MCP-native

17 CORE tools

No

No

1 tool

14-phase search

Yes

No

No

No

Temporal KG

Yes

Partial

No

Yes

CRDT sync

Field-level

No

No

No

CQRS journal

Yes

No

No

No

Neural forget

Yes

No

No

No

Python SDK

Yes

Yes

Yes

Yes

TypeScript SDK

Yes

Yes

Yes

Yes

LangChain

Yes

Yes

Yes

Yes

CrewAI

Yes

Yes

Yes

No

OKF support

Yes

No

No

No

Test coverage

5,703+ tests

~500

~2,000

~300

License

Apache 2.0

Apache 2.0

Apache 2.0

Apache 2.0


Documentation

Section

Description

Quick Start

Get running in 5 minutes

Python SDK

Full API reference

TypeScript SDK

Full API reference

REST API

HTTP endpoints

Architecture

System design

LangChain Guide

Integration guide

CrewAI Guide

Integration guide

Concepts

Search pipeline, KG, CRDT, tiers

How-To Guides

Integration, debugging, cron setup

Reference

MCP tools, configuration, schema


Contributing

See CONTRIBUTING.md for dev setup, coding conventions, and PR guidelines.

Issues and PRs welcome. For security vulnerabilities, see SECURITY.md.


License

Apache License 2.0

Available Tools

24 tools
memory_advancedA

Power user escape hatch — pass through to any memory_maintenance operation.

Use this when a verb doesn't cover your use case.

Args: operation: Any memory_maintenance operation name. tenant_id: Tenant identity for tenant-scoped operations. **kwargs: Operation-specific parameters.

Security: this delegates to memory_maintenance, so the confirmation gate on destructive operations applies here too. A destructive op (e.g. purge_expired, okf_export, crdt_sync) called without confirm=True is refused; pass confirm=True to proceed.

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes
operationYes
tenant_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool delegates to memory_maintenance, that destructive ops require confirm=True, and mentions the confirmation gate. This is sufficient for transparency, though a bit more detail on what happens during delegation could help.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with clear sections (args, security) and is front-loaded with purpose. Every sentence adds value, though the 'Args' block could be slightly more compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's generic nature and the existence of an output schema (not shown but signaled), the description provides essential information: the purpose, usage guidance, security warnings, and parameter explanations. It is complete enough for an escape hatch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add meaning. It explains 'operation' as any operation name, 'kwargs' as operation-specific parameters, and 'tenant_id' as tenant identity. However, 'kwargs' is a string but not clarified whether it expects JSON or other format, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly labels it as an 'escape hatch' for memory_maintenance operations, distinguishing it from sibling tools by stating 'use when a verb doesn't cover your use case.' This provides specific verb+resource context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool (when a specific verb is unavailable) and provides security guidelines about confirm=True for destructive operations. It lacks explicit when-not-to-use but the context implies using specific verbs when possible.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_auditA

Review recent memory activity, errors, and system health.

Combines audit_query + circuit_breaker_status into one call.

Args: hours: Look back window (default 24h). limit: Max results (default 20). include_errors: Include error entries (default True).

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
limitNo
include_errorsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It mentions combining two functions and reviewing health, but does not disclose read-only nature, permissions, or error behavior. The existence of an output schema reduces the need for describing return values, but more behavioral context would be helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is succinct with a summary line followed by a well-organized argument list. Every sentence adds value with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (3 optional params) and an output schema, the description provides sufficient purpose and parameter details. It distinguishes from siblings by mentioning the combined nature. Minor gaps remain in behavioral aspects, but overall it is complete for its context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning the schema only provides type and default. The description adds clear explanations for all three parameters (hours, limit, include_errors), fully compensating for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reviews recent memory activity, errors, and system health, and that it combines audit_query and circuit_breaker_status. This provides a specific verb+resource and distinguishes it from similar siblings like memory_system_health and memory_health_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when both audit and circuit breaker status are needed, but does not explicitly state when not to use it or provide alternatives. It lacks explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_compile_skillC

Compile a lesson note into a validated executable agent skill rule file in ~/.agents/skills/.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_nameYes
lesson_slugYes
primary_triggersYes
secondary_triggersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description provides some behavioral context (output is a validated executable file saved to a specific path) but does not disclose side effects like overwriting, validation failures, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, making it concise. However, it sacrifices important details like parameter explanations and usage context, which could have been added without significant verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool complexity (4 parameters, output schema exists) and the presence of many sibling tools, the description is incomplete. It lacks parameter semantics, usage guidelines, and sufficient behavioral transparency for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description fails to explain any of the four parameters. Terms like 'lesson note' loosely relate to lesson_slug but primary_triggers and secondary_triggers are not mentioned, leaving the agent without sufficient guidance to fill parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compiles a lesson note into a validated executable agent skill rule file, specifying the output location (~/.agents/skills/). This distinguishes it from sibling tools like memory_learn or memory_extract_skills.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no prerequisites (e.g., lesson note existence), and no exclusions. An agent cannot determine the appropriate context from the description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_coordinateA

Multi-agent coordination tool for task management, file locking, and messaging.

Actions: create_task: Create a new task claim_task: Reserve a task for this agent update_task_status: Update task status (the primary coordination primitive) release_task: Release a task back to the pool complete_task: Mark task done, share result list_tasks: List tasks for a project lock_file: Acquire exclusive lock on a file unlock_file: Release file lock check_lock: Check if a file is locked send_message: Send message to another agent read_messages: Read pending messages get_project_state: See what others are doing update_project_state: Share what you're doing

Coordination model: Messages are notifications. Task status transitions are the ack. When Agent B reads a message and calls update_task_status, that IS the acknowledgement. No separate ack channel needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
valueNo
actionNoget_project_state
statusNo
payloadNo
task_idNo
to_agentNo
file_pathNo
task_typeNo
project_idNodefault
assigned_toNo
descriptionNo
message_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the coordination model and lists all actions with brief explanations. It discloses the relationship between messages and task status updates. However, it lacks details on error handling 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and well-structured with a bullet list and a concluding paragraph. It is somewhat verbose but organized, with each sentence adding value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, 0% schema coverage, and no annotations, the description should provide detailed parameter guidance. It only gives high-level action descriptions and lacks specifics on required fields, return values, or behavior per action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description lists actions but does not specify which parameters are required for each action or their formats. The agent must infer parameter usage from action names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is for multi-agent coordination, including task management, file locking, and messaging. It distinguishes from sibling tools which are primarily memory operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for multi-agent coordination but does not explicitly state when to use this tool versus alternatives. No when-not or alternative tool references are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_curate_autosaveA

Review auto-saved tool invocations and promote or discard them.

The agent can list auto-saved notes, then batch-promote them into intentional lessons or decisions with epistemic_source='agent'.

Args: start_date: ISO date filter start (e.g. "2026-06-01"). Empty = no start bound. end_date: ISO date filter end (e.g. "2026-07-01"). Empty = no end bound. action: "list" | "promote" | "discard". note_ids: List of note IDs to promote/discard (required for promote/discard). category: Target category for promotion (default "lessons").

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNolist
categoryNolessons
end_dateNo
note_idsNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description adds some behavioral context: it notes that promotion sets `epistemic_source='agent'`, which is a specific side effect. It also clarifies that `note_ids` are required for promote/discard actions. However, it does not disclose whether discarding deletes auto-saves permanently or other side effects, leaving some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with two paragraphs. The first sentence captures the core purpose, and the 'Args:' block lists parameters efficiently. While it is not overly verbose, the structure could be slightly improved by front-loading the action parameter more prominently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (curating auto-saves) and the presence of an output schema, the description does not need to detail return values. It explains the primary operations and their effects. However, it could be more complete by clarifying the state changes (e.g., whether promoted notes replace auto-saves or are created separately).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the tool's 'Args:' block provides clear, concise explanations for all 5 parameters: start_date, end_date, action (with valid values), note_ids (required for promote/discard), and category (default 'lessons'). This adds significant meaning beyond the schema's titles and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reviews auto-saved tool invocations and allows promoting or discarding them. It specifies the actions (list, promote, discard) and the resource (auto-saved notes). This distinguishes it from sibling memory tools like memory_save or memory_recall, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that the agent can list auto-saved notes, then batch-promote or discard them. It implies a sequence of use and sets context for when to use this tool (for curating auto-saves). However, it does not explicitly state when not to use it or mention alternatives, though the context is clear enough for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_deleteA

Delete a memory note by ID. Soft-delete by default (recoverable for 30 days).

Args: note_id: The note ID (e.g. "lessons/my-note"). hard: If True, permanently delete immediately (default False). confirm: Required to be True to allow a hard (permanent) delete. This is a safety gate: hard deletes cannot be recovered, so they must be explicitly confirmed. Soft-deletes (hard=False, the default) are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
hardNo
confirmNo
note_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description effectively discloses key behaviors: default soft-delete with 30-day recoverability, and the confirm parameter as a mandatory safety gate for irreversible hard deletes. It does not mention error handling but covers the main behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: one introductory sentence followed by a well-structured Args list. Every sentence is informative with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's behavior, parameter semantics, and safety mechanisms thoroughly. It does not mention error handling or idempotency, but given the presence of an output schema and the simplicity of a delete operation, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description compensates fully by providing detailed explanations for all three parameters: note_id with an example, hard with default and effect, and confirm with its critical safety role. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a memory note by ID' and distinguishes between soft and hard delete, making its purpose unambiguous among a broad set of sibling memory tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains soft vs hard delete and the required confirm safety gate, but does not explicitly compare to other memory tools or provide guidance on when to use this tool instead of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_extract_skillsA

Manually trigger skill extraction.

P0 fix #5: lets the operator re-run the lower-threshold extractor on a specific memory (memory_id="lessons/foo") or on every memory when memory_id is empty. Uses the cron implementation so the same code path runs in both places.

Args: memory_id: when non-empty, extract a skill from just this single memory. When empty, run the full extraction pass (same as cron_skill_extraction.py). dry_run: when True, count what would be extracted without writing to the DB.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
memory_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It mentions that extraction uses the cron code path and that dry_run prevents writes, but it does not state whether the operation is destructive, idempotent, or requires specific permissions. The internal P0 fix comment adds developer context but does not help the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with an Args block, but it includes a developer-oriented note ('P0 fix #5') that is irrelevant for an AI agent. This noise reduces conciseness. The first sentence is clear, but the internal reference should be removed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to detail return values. However, it lacks information about prerequisites, error conditions, or side effects beyond the dry_run flag. For a simple two-parameter tool, the description is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning no parameter info in the schema. The description compensates fully by explaining both parameters: memory_id determines scope (specific vs all) and dry_run controls writing. This adds essential meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Manually trigger skill extraction') and specifies the two modes of operation (single memory or full pass). This verb+resource combination is unambiguous and distinguishes it from sibling tools like memory_list_skills or memory_compile_skill.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on when to use each parameter: memory_id for a specific memory or empty for full extraction, and dry_run for testing without writing. However, it does not explicitly state when not to use this tool or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_graphC

Explore the knowledge graph.

Args: query: Natural language KG query (for action=explore). start: Starting entity/node ID (for action=traverse). edge_patterns: Edge type filter (for action=traverse). max_depth: Max traversal depth (default 2). action: "explore" | "traverse" | "shortest_path" | "stats".

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
startNo
actionNoexplore
max_depthNo
edge_patternsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only lists parameters and actions, omitting side effects, performance considerations, authorization needs, or read-only nature. The tool's behavior (e.g., whether it modifies data) is unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and includes a structured args list. It is front-loaded with the main purpose, though the 'Args' block could be integrated more smoothly. No superfluous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, 4 actions, many siblings), the description is incomplete. It does not explain when to use each action, error conditions, or how it compares to similar tools. Output schema exists but not mentioned, though not required per rules.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds basic parameter explanations (e.g., query for explore, start for traverse) beyond the schema (which has 0% description coverage). However, it lacks detail on formats (e.g., edge_patterns syntax) and does not clarify parameters for shortest_path and stats actions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Explore the knowledge graph' and lists four specific actions (explore, traverse, shortest_path, stats), clarifying it is a multi-purpose graph query tool. However, it does not distinguish from sibling tools like memory_search or memory_recall, missing explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., memory_search for semantic search, memory_recall for specific facts). The description lacks when-to-use, when-not-to-use, or prerequisite information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_health_checkB

Unified health-check: returns a JSON dict summarising subsystem state.

Checks DB availability, row counts, vec-index drift, FTS sync status, connection-pool depth, background-worker liveness, disk space, and CQRS write-journal health.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It fails to mention idempotency, side effects, latency, or safety. It only lists subsystems checked, but not behavioral traits like whether queries are destructive or read-only, or if network access is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the main purpose. Each subsystem check is listed in a bullet-like format, which is easy to parse. Every sentence adds value, though the list could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 0 parameters, no annotations, but an output schema exists, the description covers the subsystems checked but does not mention error handling, performance implications, or what happens when a subsystem is unavailable. It is somewhat complete but lacks edge-case context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema coverage is 100%. The description cannot add parameter meaning beyond the schema because there are none. Baseline score of 4 is appropriate given no parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a unified health check returning a JSON dict summarizing subsystem state. It lists specific subsystems checked, providing a specific verb and resource. However, it does not differentiate from sibling tool 'memory_system_health', which likely has overlapping purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusion criteria. It simply describes what it does without context on appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_learnA

Save a lesson or compile a skill from content.

Auto-categorizes and tags the memory. Optionally compiles a skill.

Args: content: The lesson/skill content. as_skill: If True, compile as a skill (default False). skill_name: Skill directory name (required if as_skill=True). category: Target category (default: lessons). tags: Additional tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
contentYes
as_skillNo
categoryNolessons
skill_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses auto-categorization and tagging behavior, but without annotations, it does not cover side effects, permissions, or destructive potential. For a tool with no annotations, more detail is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a summary and Arg list, front-loading the purpose. It is slightly longer than necessary but remains clear and effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters fully explained and an output schema presumably provided, the description is largely complete. It could mention prerequisites (e.g., memory system state) but is sufficient for use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes an 'Args' section that explains each parameter in detail, adding meaning beyond the schema's titles. Given the 0% schema description coverage, this fully compensates and provides clear parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Save a lesson or compile a skill from content,' which clearly defines the verb and resource. However, it does not explicitly differentiate from sibling tools like memory_save or memory_compile_skill, which may cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks explicit guidance on when to use this tool versus alternatives. It mentions optional skill compilation but does not provide context for choosing this over memory_save for lessons or memory_compile_skill for skills.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_list_revisionsA

List revision-log entries for a memory or across the store.

Surfaces supersede / amend / revert / delete events recorded in memory_revision_log so the operator can audit what changed.

Args: memory_id: Filter to a specific memory id (empty = all). limit: Max results (default 20). revision_type: Filter by type: supersede, amend, revert, delete (empty = all types).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
memory_idNo
revision_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool surfaces supersede/amend/revert/delete events from a specific log table, but it does not explicitly state that it is a read-only operation, does not mention permission requirements, rate limits, or whether it returns historical data only. The description lacks critical behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose in the first sentence, then provides structured details in a docstring format. It is concise with no redundant information, though the Args section could be integrated more seamlessly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has three parameters, none required, and an output schema exists, the description provides sufficient context for a list/filter tool. It explains the log events and filtering options. The absence of required parameters reduces complexity, making this description complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates well by listing each parameter with its purpose: 'memory_id: Filter to a specific memory id (empty = all),' 'limit: Max results (default 20),' 'revision_type: Filter by type: supersede, amend, revert, delete (empty = all types).' This adds meaning beyond the schema, which only defines type and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List revision-log entries for a memory or across the store' with a specific verb ('list') and resource ('revision-log entries'). It also defines the domain (memory revision log) and distinguishes from sibling tools like memory_search or memory_recall, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for auditing ('so the operator can audit what changed') but does not explicitly state when to use this tool versus alternatives, nor does it mention when not to use it. The parameter descriptions provide some filtering guidance but no exclusions or comparisons to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_list_skillsA

List extracted skills, ordered by hit_count desc.

P0 fix #5: gives the operator a way to inspect what the lower-threshold extractor actually pulled in. The list includes the topic, hit count, last-used timestamp, and a preview of the description so it's easy to spot good vs bad extractions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility. It discloses that skills are ordered by hit_count desc and lists included fields: topic, hit count, last-used timestamp, and description preview. This goes beyond a simple 'list' and gives behavioral insight into output format and ordering, though it lacks mentions of side effects or permissions (likely none for a list operation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief (two sentences plus a note) and front-loaded with the core purpose. The note adds contextual value for a specific fix, but could be considered slightly extraneous. Overall, it is efficiently structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (as indicated by context signals), the description does not need to detail return values. It already mentions key output fields. However, it does not explain pagination behavior for the `limit` parameter or total count. For a simple list tool, the description is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter, `limit`, with a default of 50 and zero schema description coverage. The description does not mention `limit` or its purpose. Although the parameter is common for pagination, the description fails to add meaning beyond the schema, leaving the agent to guess its role.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states "List extracted skills, ordered by hit_count desc." This makes the action (list) and resource (extracted skills) explicit, and the ordering distinguishes it from other memory tools like memory_extract_skills (extraction) and memory_compile_skill (compilation), which are siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a note about "P0 fix #5: gives the operator a way to inspect what the lower-threshold extractor actually pulled in." This provides usage context (after extraction, for inspection) and implies when to use it. It does not explicitly mention when not to use or compare to alternatives, but the context is clear enough for an AI agent to infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_noteA

CRUD operations on a specific memory note.

Sprint 2 additions: patch, revert_supersede actions + rationale capture.

Args: note_id: The note ID (e.g. "lessons/my-note"). action: "read" | "update" | "delete" | "restore" | "supersede" | "patch" | "revert_supersede". content: New content (required for update). category: New category (for update). title_slug: New slug (for update/supersede target). tags: New tags (for update). rationale: Reason for the action (required for supersede, patch, revert_supersede; recommended for delete). additions: Text segments to insert (for patch action). deletions: Text segments to remove by content match (for patch action).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
actionNoread
contentNo
note_idYes
categoryNo
additionsNo
deletionsNo
rationaleNo
title_slugNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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 lists actions and parameters but does not disclose side effects, idempotency, permissions, or what happens on supersede (e.g., versioning). Minimal behavioral insight beyond action enumeration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose, then lists actions and parameters. It includes meta notes (Sprint 2) which add context but could be more streamlined. Generally efficient with minimal redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters and multiple actions, the description covers all actions and required parameters. Output schema exists so return value explanation is unnecessary. Lacks some context on constraints (e.g., max length) but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning parameters lack schema descriptions. The description compensates fully by explaining each parameter's purpose (e.g., note_id format, additions/deletions for patch). Adds significant value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it performs CRUD operations on a specific memory note, listing multiple actions like read, update, delete, etc. It is specific and distinguishes from siblings that operate on collections or other aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides per-action parameter requirements (e.g., rationale for supersede) but does not explicitly compare to sibling tools or specify when to avoid using this tool. Usage context is implied but not fully elucidated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_organizeA

Run safe memory maintenance batch.

Targets: safe_default: compact + consolidate + rewrite_links full: safe_default + backfill + dedup + purge_expired compact: FTS5 compact only dedup: KG entity dedup only

Args: target: Which batch to run (default: safe_default). dry_run: Preview without changes (default False). confirm: Required when target='full' and dry_run=False (purge is destructive).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNosafe_default
confirmNo
dry_runNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool is 'safe' by default but notes that the 'full' target can be destructive (purge) and requires confirmation. It also explains the dry_run option for previewing changes. This provides good insight into the tool's behavior, though it could further detail what each operation does (e.g., compact, dedup).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It starts with the main purpose, then lists targets and arguments in a clear bullet-point format. Every sentence provides necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (multiple targets, destructive potential) and the lack of schema descriptions, the description is complete. It covers what the tool does, the available targets, argument details, and safety considerations. The presence of an output schema means return values need not be described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It does so excellently: it explains the possible values for 'target' (safe_default, full, compact, dedup) and conditions for 'confirm' (required when target='full' and dry_run=False). This adds meaning far beyond the schema's bare type definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Run safe memory maintenance batch.' It specifies the verb 'run' and the resource 'memory maintenance batch'. The listing of different targets (safe_default, full, compact, dedup) further clarifies the scope. This distinguishes it from sibling tools, which have names like memory_save, memory_search, etc., indicating different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description does not explicitly compare this tool to alternatives, it provides clear context on when to use it by detailing the available targets and their compositions. It implies that this tool is for automated batch maintenance, which is distinct from individual operations like save or delete. However, no explicit guidance on when not to use it or contrasts with siblings is given, preventing a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_profileB

View user profile, agent scopes, ARC stats, and cached skills.

Args: action: "stats" | "user" | "agents" | "skills" | "arc". agent_id: Agent ID (for action=agents).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNostats
agent_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits. It states 'View' which implies read-only, but it does not explicitly confirm non-destructive behavior, authentication needs, or error conditions. This is insufficient for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a concise summary of the tool's purpose, followed by a clear Args list. It is efficient with no extraneous text, earning high marks for structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (which explains return values), the description adequately covers the tool's inputs. However, it lacks guidance on edge cases (e.g., invalid action) and does not fully compensate for the lack of annotations, leaving some behavioral aspects unclear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to the parameters by listing the allowed values for 'action' (stats, user, agents, skills, arc) and explaining that 'agent_id' is used only for action=agents. This compensates somewhat for 0% schema description coverage, but it could be more detailed (e.g., behavior of other actions, default behavior).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'View user profile, agent scopes, ARC stats, and cached skills.' This is a specific verb and resource, and it distinguishes this tool from sibling tools that perform other memory operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. It lists the actions but does not explain use cases or when to choose this over other memory tools like memory_recall_context or memory_system_health.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_recallB

Recall context for the current session or a named thread.

Combines session_start + recall_context into one call. If no query is given, returns recent session activity.

Args: query: What to recall (default: recent activity). session_id: Specific session/thread to recall.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
tenant_idNodefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It mentions combining operations but does not specify read-only nature or side effects. The behavior is implied to be safe but not confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear opening sentence. The 'Args' section adds value, though it could be more tightly integrated. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists but the description does not reference it or describe return values. For a recall tool with 3 optional parameters and many siblings, more detail on when to use and what to expect is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description's 'Args' section adds meaning to query and session_id, but it omits tenant_id entirely. The parameter meaning is partially addressed but incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool recalls context for a session or thread and that it combines two other tools. It distinguishes itself from siblings like memory_session_start and memory_recall_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes that no query returns recent activity, but it does not provide explicit guidance on when to use this tool versus its siblings, leaving the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_recall_contextC

Assemble a structured memory recall briefing for agent cold-start or session continuity.

deep_rerank: when True, runs the Qwen3-0.6B / BGE-m3 deep reranker on the relevant-memories section (1-5s extra CPU, best ranking quality). Default False so the briefing is bounded to <100ms. ON APPLE SILICON (MPS) the deep reranker can hang indefinitely in a PyTorch MPS kernel (2026-06-19 incident: PIDs 68335, 10086). If you don't need the best-quality ranking, leave this False. If you do need it and the call hangs, set the MEMORY_RERANKER_DISABLED env var or reranker_disabled = true in memory.toml to fully disable the reranker (falls back to the lightweight weak cross-encoder).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
actionNo
days_recentNo
deep_rerankNo
include_pinnedNo
include_user_profileNo
include_recent_digestsNo
include_high_importanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It thoroughly explains the deep_rerank parameter's behavior, including performance implications and a known hang incident on Apple Silicon. However, it omits other behavioral traits such as whether the tool is read-only, side effects, or the structure of the output briefing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose, which is good. However, the lengthy and highly specific deep_rerank details (incident report, env var workaround) make the description overly verbose for a general tool definition. Some content could be shortened or moved to the parameter description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters with no schema descriptions, no annotations, and an existing output schema, the description should provide a high-level overview of the tool's behavior and parameters. It fails to explain most parameters and does not describe the output briefing structure, leaving the agent under-informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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. It only documents one parameter (deep_rerank) in detail, leaving the other 8 parameters (limit, query, action, days_recent, include_pinned, etc.) completely unexplained. This is a significant gap for an agent to correctly invoke the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence clearly states the tool's purpose: 'Assemble a structured memory recall briefing for agent cold-start or session continuity.' The verb 'assemble' and specific resource 'structured memory recall briefing' provide clarity. However, it does not explicitly differentiate from the sibling tool 'memory_recall', 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions usage context ('agent cold-start or session continuity') but provides no guidance on when to use this tool versus alternatives like 'memory_recall' or other siblings. There is no explicit when-not-to-use or mention of prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_record_ctr_feedbackA

Record click-through rate feedback for a search result.

G4 fix (2026-06-22): memory_record_ctr_feedback (this tool) and memory_reinforce (mcp_memory.py) record two different signals on purpose — they are not interchangeable.

  • memory_record_ctr_feedback records the implicit signal: "the user saw this result in the response." Writes a row to ctr_feedback with action=returned/clicked/etc. The search re-ranker reads this table to adjust ranking over time. Use this when a search result is delivered to the user, regardless of whether the user does anything with it.

  • memory_reinforce records the explicit signal: "the user judged this memory useful (or not)." Updates success_score and recomputes fitness_score. Use this when a user acts on a memory — e.g. cites it in a lesson, marks a decision as right, or undoes a save because the memory was wrong. Skipping memory_reinforce on every "user saw it" event would over-credit the success score.

In short: record_ctr_feedback = "delivered to user", reinforce = "user acted on it positively". Call both when a user follows up on a search hit. Call only record_ctr_feedback when the user just sees the result. Call only reinforce when the success/failure signal comes from outside the search path (e.g. a downstream agent confirms the memory was correct).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
actionNoreturned
sourceNo
query_idYes
returned_atNo
ranking_paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It explains the tool writes a row to ctr_feedback with action=returned/clicked/etc., and that the search re-ranker reads this table. It does not mention side effects like permissions or idempotency, but it covers the core behavior well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Despite length, every sentence adds value. Clear section labeling (G4 fix, bullet lists) and front-loaded with purpose. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple, and description provides good purpose and usage context. However, it lacks parameter details and does not explain what the tool returns (output schema exists but not described). With 6 parameters and 0% schema coverage, more parameter-level information is needed for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description should explain parameters. It only briefly mentions 'action=returned/clicked/etc.' and implies 'id' and 'query_id' are required, but does not describe 'source', 'returned_at', or 'ranking_params'. Agent would have to infer or guess their meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool records click-through rate feedback for a search result. It distinguishes itself from memory_reinforce by explaining the difference between implicit and explicit signals, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use this tool vs. memory_reinforce, including concrete scenarios like 'delivered to user', 'user acted on it', and 'call both when...'. No ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_review_beliefsA

Review beliefs that may need agent attention — low confidence, old, or stale.

Returns a structured list of belief assertions with subject/predicate/object for the agent to confirm, supersede, retract, or reinforce.

Args: min_confidence: Maximum confidence threshold (returns beliefs BELOW this). belief_status: Filter by status (default "active"). older_than_days: Only return beliefs last reviewed more than this many days ago. limit: Max results (default 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
belief_statusNoactive
min_confidenceNo
older_than_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that it returns a structured list and filters, but does not explicitly state whether it modifies state or requires permissions. It is a read operation, but not explicitly flagged.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loads the purpose, then describes return structure, then lists parameters. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 optional parameters and an output schema (not shown but present), the description covers the tool's purpose, filters, and return structure. It is complete for a review tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description fully explains each parameter: min_confidence (returns beliefs below threshold), belief_status, older_than_days, limit. It adds key semantics like 'maximum confidence threshold' and default behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Review' and the resource 'beliefs that may need agent attention', specifying low confidence, old, or stale beliefs. It distinguishes from other memory tools by focusing on attention-needing beliefs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (for reviewing beliefs needing attention) but does not explicitly state when not to use or provide alternative tool names. The context is clear enough for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_saveA

Save a memory note with sensible defaults.

Args: content: The memory content (markdown). category: lessons / decisions / projects / preferences / sessions (default: lessons). title_slug: URL-friendly slug (auto-generated if empty). tags: Optional keyword tags. pinned: Pin to hot tier (default False). importance: 1-5 (default 3). is_global: Save to global memory (default False). safety_wiring: If False, skip prompt-injection scanning (default True). Set to False for legitimate structured content with section headers and requirement keywords that may trigger false positives.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
pinnedNo
contentYes
categoryNolessons
is_globalNo
importanceNo
title_slugNo
safety_wiringNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully details each parameter's behavior, including defaults and special notes (e.g., auto-generation of title_slug, safety_wiring scanning). It does not describe the return value or side effects, but an output schema exists, so this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer but well-organized with a summary sentence followed by parameter details in a bullet-style list. Every sentence adds value, though it could be slightly more terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the parameter count (8, 1 required) and the presence of an output schema, the description covers all necessary aspects for effective use. It explains parameter behaviors and constraints, leaving no critical gaps for an agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates excellently. Each parameter is explained with its type, default, and constraints (e.g., category options, importance range, safety_wiring purpose). This adds significant meaning beyond the schema's raw JSON.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Save a memory note with sensible defaults,' providing a specific verb and resource. It lists all parameters but does not explicitly differentiate from sibling tools like memory_note or memory_learn, though the purpose is distinct enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes guidance on safety_wiring parameter (when to set False) but lacks explicit instructions on when to use this tool versus alternatives. It implies usage through defaults but does not provide context for choosing this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_session_startB

Retrieve the session startup briefing.

Args: query: Optional topic to scope the briefing to.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavioral traits. It only states the purpose, not whether it is read-only, what it returns, or any side effects. Very limited transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, no redundancy, and front-loaded purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is simple with one optional param and an output schema exists, the description is adequate but lacks context about what the briefing contains or when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description's line 'query: Optional topic to scope the briefing to' adds some meaning beyond the schema, but it is minimal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Retrieve the session startup briefing', which is a clear verb+resource. However, it does not differentiate from sibling tools like memory_recall_context, and 'session startup briefing' is somewhat ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes the optional query parameter but provides no guidance on when to use this tool versus alternatives, or when it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_shareB

Share memories with other agents or view shared pool.

Args: note_id: Memory to share (required for action=share). share_with: Target agent ID (for action=share). action: "list" | "share" | "import" | "stats".

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNolist
note_idYes
share_withNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It fails to mention side effects, authorization requirements, or the impact of sharing. The description is too minimal to inform an agent about important 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main purpose. The Args section provides parameter info efficiently. However, the docstring-like formatting is slightly awkward but still effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (multiple actions) and presence of an output schema, the description is incomplete. It does not explain what 'stats' or 'import' do, and it conflicts with the schema by implying note_id is only required for 'share', while schema marks it always required. More context is needed for safe operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains each parameter: note_id as 'Memory to share (required for share action)', share_with as 'Target agent ID (for share action)', and action as enumerating 'list | share | import | stats'. This adds meaning beyond the schema's names, but some parameters (like import, stats) lack details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: sharing memories or viewing the shared pool. It lists specific actions (list, share, import, stats), making the verb and resource clear. However, it does not explicitly differentiate from sibling memory tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks guidance on when to use this tool versus alternatives. No when-to-use or when-not-to-use information is provided, and no sibling tool comparisons are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_system_healthA

Comprehensive system health: green/yellow/red with actionable next steps.

Consolidates 6 health dimensions into one response:

  • Database: accessibility, schema, vec index drift

  • Search: semantic search probe

  • Worker: background worker liveness

  • Crons: cron job execution success rate

  • Auto-Save: circuit breaker and recent activity

  • Disk: free space

Each subsystem returns green/yellow/red with details and action.

ParametersJSON Schema
NameRequiredDescriptionDefault
connNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It details each subsystem checked and the output format (green/yellow/red with details and action). It implies a read-only diagnostic behavior but does not explicitly state read-only or mention auth/rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It front-loads the health status summary and then lists the six dimensions in bullet-point format. Every sentence serves a purpose with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to detail return values. It covers the tool's purpose and subsystems thoroughly. The only gap is the unexplained 'conn' parameter, but it's optional and likely minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one optional parameter 'conn' with no description (0% coverage), and the tool description does not explain what 'conn' is or how it affects behavior. The description adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Comprehensive system health: green/yellow/red with actionable next steps' and lists six specific health dimensions. This differentiates it from the sibling 'memory_health_check' by being more comprehensive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking overall system health but does not explicitly state when to use this tool versus alternatives like 'memory_health_check'. No direct guidance on context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is overlap between `memory_recall_context` and `memory_recall`, and between `memory_system_health` and `memory_health_check`. Descriptions help differentiate, but these overlaps could cause minor confusion.

Naming Consistency5/5

All tools follow a consistent `memory_<verb>_<noun>` pattern in snake_case. The naming is predictable and uniform across the entire set.

Tool Count4/5

With 24 tools, the set is on the larger side but each tool serves a specific function within the memory management domain. A few tools could potentially be merged, but the count is still reasonable.

Completeness5/5

The tool surface covers all major aspects of memory management: CRUD, search, revision, beliefs, skills, health, coordination, sharing, and graph. No obvious gaps are present.

Maintenance

ActivityActive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A local-first MCP memory server providing persistent, searchable memory for AI agents, powered by SQLite.
    5
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Persistent memory MCP server that stores and retrieves memories in Markdown files, enabling shared context across multiple AI agents with hybrid search and deduplication.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that provides agentic memory management for markdown vaults, enabling hybrid search, governed writing, and maintenance of episodic, semantic, procedural, and working memories for LLM agents.
    MIT

Latest Blog Posts

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/ArkaAiAdmin/Agentic-Memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server