Skip to main content
Glama

RecallNest

Shared Memory Layer for Every AI Client — CLI agents, desktop apps, your own scripts

One memory. Every client. Context that survives across windows — and across machines.

A local-first memory system backed by LanceDB that turns scattered conversation history into reusable knowledge — shared across your coding agents, recalled automatically.

GitHub License: MIT Runtime LanceDB MCP CI CC Plugin

English | 简体中文 | Roadmap


Why RecallNest?

Coding agents forget everything between windows. Your context — project configs, debugging decisions, entity mappings — is scattered across Claude Code, Codex, Kimi, Antigravity — and every other terminal you open — with no shared memory.

RecallNest is one LanceDB-backed memory layer that all of them read and write. Context stored in one window is recalled in another. Sessions checkpoint on exit and resume on start. Memory decays, evolves, and self-organizes — it is not a log you grep.

What a recall actually looks like

Query   : deploy rollback
Hits    : 5

#  ID       Score Category  Tier        Source  Date        Age  Retrieval Path
1  ee79037a 46.1% cases     peripheral  cc      2026-08-25  2d   vector
   [assistant] Rolled back to the previous image and pinned the digest so the next…
   prov : evidence/transcript-ingest
   imgs : 52 agent-made in this session · read sess=dca70d4a

Three things in that block carry most of the design:

  • Source cc · Age 2d — this came out of a Claude Code window two days ago and you are reading it from a different terminal, possibly on a different machine. That is the premise the whole project is built on.

  • prov : evidence/… — every row states which layer it sits on. A fragment scraped out of a transcript never gets to pose as a decision you actually made; moving to durable memory is a separate, gated step with its own evidence requirement.

  • imgs : … — that session contained 52 images. Not one of them is in the database. The line exists so you know there is something to go look at, and producing it cost no model call, no vector, and no storage.

That last one is the approach in miniature: store what makes a thing findable, not everything that could ever be asked about it. The full reasoning — including the two places where the obvious implementation was wrong — is in Images: addressable, not embedded.

Related MCP server: CORTEX Memory MCP

Core Capabilities

Access & Setup

Capability

Description

CC Plugin

Install in Claude Code with one command — no manual config

Shared Index

One LanceDB store shared by every terminal that speaks MCP

Dual Interface

MCP (stdio) for CLI tools + HTTP API for custom agents

One-Click Setup

Integration scripts install MCP access and continuity rules

Recall & Continuity

Capability

Description

Hybrid Retrieval

6-channel: vector + BM25 + L0/L1/L2 multi-vector + KG graph (PPR)

4 Retrieval Profiles

default, writing, debug, fact-check — tuned for different tasks

Session Continuity

checkpoint_session + resume_context (full/light/summary modes) with repo-state guard

Session Distiller

3-layer conversation compression: microcompact → LLM summary → knowledge extraction

Conversation Import

Import from Claude Code, Claude.ai, ChatGPT, Slack, and plaintext

Topic Tags

Intra-scope topic partitioning — auto-detected, filterable in search

Related Scope Sidecar

Opt-in includeRelatedScopes search over configured scopeRelations, shown separately from the main scoped ranking

Memory Lifecycle & Governance

Capability

Description

Memory Evolution

Supersede chains, decay scoring, LLM importance, consolidation, archival

Smart Promotion

Evidence → durable memory with conflict guards, merge resolution, and audit trail

Privacy Tiers

4-tier (ephemeral / private / durable / shared) with cascade forgetting

Admission Control

Write-time gating: noise filter, importance floor, dedup, rate limiting

Memory Lint

Contradiction, duplicate, stale, and orphan detection with health score

Offline Consolidation

dream command: clustering, merging, pruning of accumulated memories

Reasoning & Structure

Capability

Description

Knowledge Graph

Entity relation graph with PPR algorithm for multi-hop questions

Constructive Retrieval

Multi-source candidate expansion + grounded context reconstruction

Narrative Architecture

3-layer autobiographical metadata (life-period → general-event → specific-event)

Skill Memory

Store, retrieve, and promote executable skills from recurring patterns

Predictive Reminders

Behavioral-signal prediction engine surfaces "you might need this" suggestions

6 Categories

profile, preferences, entities, events, cases, patterns — with category-aware merge strategies

Visibility & Operations

Capability

Description

Dashboard

Web UI with stats, category distribution, growth trends, and health

Workflow Observation

Dedicated append-only workflow health records, outside regular memory

Structured Assets

Pins, briefs, and distilled summaries — not just raw logs

Data Checkup

Data quality health checks on the memory store (including source health)

Source Heartbeats

Automatic ingest health tracking per data source with staleness alerts

Export Graph

Export interactive HTML knowledge graph visualization

Batch Operations

Store up to 20 memories in a single call with dedup

Connector Framework

Standard connector-v1 format for external data sources with example adapters


Architecture

  CLIENTS                    ACCESS                      CORE ENGINE                    STORAGE
  ──────────────────────     ───────────────────────     ────────────────────────────   ──────────────────────

  Claude Code                MCP over stdio              Retriever                      LanceDB
  Codex                ───▶  44 tools, 3 tiers    ───▶   vector + BM25 + RRF     ───▶   vector + columnar
  Kimi · Antigravity                                     Classifier · 6 categories
  Doubao desktop                                         Context composer
                             HTTP API :4318              resume_context                 Jina embeddings v5
  your scripts · cron  ───▶  21 endpoints          ───▶  Decay · Weibull half-life ─▶   1024-dim, task-aware
                                                         Conflict · audit + merge
  phone app            ───▶  read-only gateway     ───▶  Capture: evidence → durable
                             :8791, token-gated

Internal Design

  • L0 / L1 / L2 Dynamic Folding — every memory stores 3 granularity layers (one-liner / bullet summary / full content); retrieval dynamically selects which layer to return based on relevance score and token budget

  • Weibull Decay + Emotion Modulation — memories decay along a parametric Weibull curve; importance scores modulate the half-life, and emotional salience extends it further (up to 30%)

  • Vector Pre-filter + LLM Dedup — 90% of dedup decisions use cheap cosine similarity (>= 0.92); only borderline cases invoke LLM judgment, keeping costs low without sacrificing accuracy

  • Category-Aware Merge Strategiesprofile and preferences use merge-on-conflict (latest wins); events and cases use append-only (history preserved)

  • Display Score vs Elimination Score — dual-track retrieval: tier floor prevents core memories from ever dropping out, while decay boost lets fresh memories surface temporarily without permanently displacing stable ones

Full architecture deep-dive: docs/architecture.md


Who Can Connect

The data layer does not know what your client looks like. RecallNest exposes the same LanceDB store through three outlets, so the right one is picked per client — not per protocol.

What your client can do

Route

Verified with

Run a local command (CLI agent)

MCP over stdio

Claude Code, Codex, Kimi, Antigravity

Run a local command (GUI app, MCP config filled by hand)

MCP over stdio

Doubao desktop — same shape as Cherry Studio / ChatBox

Only speak HTTP

HTTP API

custom agents, scripts, cron

Run on another machine

swap the stdio command for ssh <host> recallnest-mcp

four clients on a laptop reading one store on a home server

Two consequences worth stating plainly:

  • Not tied to one protocol. A GUI chat app that supports MCP config connects the same way a terminal agent does. A client that can only issue HTTP requests still reads the same memory.

  • Not tied to one machine. Because the MCP transport is stdio, the launch command is yours to define — point it at ssh and every client on every machine shares a single source of truth instead of each host growing its own database.

Adding a client does not mean changing RecallNest. A capable client writes one config line; a limited one gets a thin gateway in front of the HTTP API.

AI apps on a phone: the read-only gateway

The HTTP API (:4318) binds to 127.0.0.1 and rejects any request whose Host header is not local. That is deliberate — it also exposes write routes (/v1/store, /v1/checkpoint), so putting it on a public address would hand out write access.

To let an AI app on your phone read the same memory, put a read-only gateway in front:

openssl rand -hex 32 > ~/.config/recallnest/gateway-token
chmod 600 ~/.config/recallnest/gateway-token

bun run api        # local API on :4318
bun run gateway    # read-only gateway on :8791 → forwards to :4318

The gateway allows read routes only (/recall, /search, /stats, /health); every write route is a 404. Bearer token compared in constant time, per-minute rate limit, hard caps on request and response size. Put it behind a tunnel (Tailscale Serve/Funnel, Cloudflare Tunnel, …) to reach it from a phone.

curl -X POST https://<your-tunnel>/recall \
  -H "Authorization: Bearer $(cat ~/.config/recallnest/gateway-token)" \
  -H 'content-type: application/json' \
  -d '{"query":"how did we fix that deploy issue","limit":3,"allScopes":true}'

Optional: set RECALLNEST_GATEWAY_FILE_ROOTS="notes=/abs/path,wiki=/abs/path" to add GET /files/search, a read-only ripgrep search over markdown directories you name (the query is passed as an argv element, never through a shell). Leave it unset and the route does not exist.

The gateway also binds to 127.0.0.1 by default — exposing it is the tunnel's job. Evaluate that risk yourself.

This is how the author connected OpenMinis on an iPhone: the phone app reaches the gateway over a Tailscale Funnel and queries the same memory store. The interesting part is what it reads back — its own history. Those conversations get exported, flow back, and are indexed, so a phone agent that cold-starts every time ends up with memory that survives its sessions.

Quick Start

/plugin marketplace add AliceLJY/recallnest
/plugin install recallnest@AliceLJY

RecallNest starts automatically with Claude Code. No manual MCP config needed.

Claude Code prompts for a Jina API key during installation. The key is stored through Claude Code's sensitive plugin configuration, while the generated config and LanceDB database live in the plugin's persistent data directory rather than the versioned plugin cache.

The Claude Code plugin and npm package share one release version and are updated together.

Requires: Bun. Dependencies install on first start.

Option B: npm install

npx recallnest --help          # run directly
# or
npm install -g recallnest      # install globally
recallnest doctor

Works with Node.js 22+ (via tsx) or Bun. No git clone needed.

Option C: Manual setup

git clone https://github.com/AliceLJY/recallnest.git
cd recallnest
bun install
cp config.json.example config.json
cp .env.example .env
# Edit .env → add your JINA_API_KEY

Start the server

bun run api
# → RecallNest API running at http://localhost:4318

Try it

# Store a memory
curl -X POST http://localhost:4318/v1/store \
  -H "Content-Type: application/json" \
  -d '{"text": "User prefers dark mode", "category": "preferences"}'

# Recall memories
curl -X POST http://localhost:4318/v1/recall \
  -H "Content-Type: application/json" \
  -d '{"query": "user preferences"}'

# Check stats
curl http://localhost:4318/v1/stats

Connect your terminals

bash integrations/claude-code/setup.sh
bash integrations/agy/setup.sh
bash integrations/codex/setup.sh

Each script installs MCP access and managed continuity rules, so resume_context fires automatically in fresh windows.

Index existing conversations

bun run src/cli.ts ingest --source all
bun run seed:continuity
bun run src/cli.ts doctor

Images: addressable, not embedded

Conversations contain images. A text memory layer does not. The usual answer is a multimodal embedding model — encode every image into the same space as the text. That is right for photo libraries. It is the wrong shape here, for a cheap reason: in a conversation an image almost never arrives alone. It comes wrapped in "look at this error", and the reply right after it usually describes what was in the picture. The words around the image are already an index of it. What was missing was never semantic search over pixels — it was knowing a picture is sitting there at all.

So RecallNest does not encode images. It records how many images are in the session a memory came from, and lets you decide whether to open the original transcript. Meaning is resolved on demand, by whatever model is asking, at the moment it matters.

The cost is worth stating plainly: no multimodal model, no re-embedding, no image storage, no change to any vector. Backfilling 21,319 existing memories touched metadata only.

Two design choices in it were not obvious, and both were wrong on the first attempt.

Session-level, on purpose

The marker counts the whole session, not the turn — coarser than it first looks like it should be, and the coarseness is the point.

A turn that is nothing but a pasted screenshot has almost no text, so it never cleared the length gate and never entered the store. Measured on real transcripts, 12.5% of turns containing a pasted image were dropped whole — including the ones worth the most, like seven screenshots with no caption, or "here are the steps" attached to a picture that is the steps. A turn-level marker has nothing to attach to for exactly those. A session-level marker lands on that session's other memories, which did get stored, and those are what a search surfaces.

The trade-off is undisguised: every memory from a session carries the same count, so the images may have nothing to do with the row you are looking at. The line says in this session, not in this memory, for that reason.

Two classes, because they answer different questions

Bucket

What it is

The question it answers

user-pasted

Pictures a human put into a message

Where is that screenshot I sent?

agent-made

Everything else the session produced

What did the page look like? What did I generate?

Keeping only the first is tempting — a person searching their own memory wants their own screenshots. But an agent reconstructing its past work wants the other: the diagram it drew, the rendering it captured, the illustration it made for a post. Of 1,767 sessions carrying images, 1,103 contain no human-pasted image at all. Keep one bucket and those sessions go silent — precisely the ones where the agent did visual work.

The second bucket is a complement, not a list

The first implementation defined agent-made images by enumeration: inside tool_result, inside payload.output, inside tool.result. Every location was real. The list was still wrong, because the set of ways an image can appear only grows, and an enumeration silently drops whatever it did not anticipate.

So the second bucket is a complement: count every image signal in the record, subtract the ones positively identified as human-pasted, attribute the rest without asking where it came from. Across 9,619 transcripts:

Enumerated

Complement

Agent-made images

5,812

10,938

Sessions with any image

1,507

1,767

Human-pasted images

1,629

1,629

The enumeration missed 5,126 images and 376 sessions — nearly half. The largest class it dropped was image generation, which lives in neither container the list knew about. Human-pasted counts are identical under both definitions, which is the check that matters: widening the second bucket did not contaminate the precise one. A regression test feeds the parser an image_generation_call — a shape the source never names — and asserts it lands in the second bucket; under the enumerated implementation that test fails.

One caveat: the complement counts signals, not certified pictures. A single generation can leave both a call and a completion record and be counted twice. That direction was chosen deliberately — the question is "is there anything here to look at", not "exactly how many".

Interfaces

RecallNest serves two interfaces:

  • MCP (stdio) — for any client that can launch a command: CLI agents (Claude Code, Codex, Kimi, Antigravity) and GUI apps that accept an MCP config (Doubao, Cherry Studio, ChatBox)

  • HTTP API — for custom agents, SDK-based apps, and any HTTP client

Agent framework examples

Examples live in integrations/examples/:

Framework

Example

Language

Claude Agent SDK

memory-agent.ts

TypeScript

OpenAI Agents SDK

memory-agent.py

Python

LangChain

memory-chain.py

Python


Tool

Description

workflow_observe

Store an append-only workflow observation outside regular memory; accepts idempotencyKey for retry-safe writes

workflow_health

Inspect workflow observation health or show a degraded-workflow dashboard

workflow_evidence

Build an evidence pack for a workflow primitive

store_memory

Store a durable memory for future windows

store_workflow_pattern

Store a reusable workflow as durable patterns memory

store_case

Store a reusable problem-solution pair as durable cases memory

promote_memory

Explicitly promote evidence into durable memory

promote_scan

Scan recent evidence and auto-promote qualifying memories into durable storage

promote_synthesis

Scan dream-synthesized conclusions and promote the ones their own evidence set supports

list_conflicts

List or inspect promotion conflict candidates

audit_conflicts

Summarize stale/escalated conflict priorities

escalate_conflicts

Preview or apply conflict escalation metadata

resolve_conflict

Resolve a stored conflict candidate (keep / accept / merge)

checkpoint_session

Store the current active work state outside durable memory; accepts idempotencyKey for retry-safe writes

latest_checkpoint

Inspect the latest saved checkpoint by session or scope

resume_context

Compose startup context for a fresh window

search_memory

Proactive recall at task start

explain_memory

Explain why memories matched

distill_memory

Distill results into a compact briefing

brief_memory

Create a structured brief and re-index it

pin_memory

Promote a scoped memory into a pinned asset

export_memory

Export a distilled memory briefing to disk

list_pins

List pinned memories

list_assets

List all structured assets

list_dirty_briefs

Preview outdated brief assets created before the cleanup rules

clean_dirty_briefs

Archive dirty brief assets and remove their indexed rows

memory_stats

Show index statistics

memory_drill_down

Inspect a specific memory entry with full metadata and provenance

auto_capture

Heuristically extract and store memory signals from text (zero LLM calls)

set_reminder

Set a prospective memory reminder to surface in a future session

consolidate_memories

Cluster near-duplicate memories and merge them (dry-run by default)

store_skill

Store an executable skill with trigger conditions and verification

retrieve_skill

Retrieve matching executable skills by semantic similarity

scan_skill_promotions

Scan cases/patterns for promotion candidates to skills

manage_alias

Add, remove, list, or explain user query aliases for BM25 retrieval

list_tools

Discover available tools by tier (core/advanced/full)

batch_store

Store up to 20 memories in a single call with dedup

distill_session

Distill a conversation into structured knowledge via 3-layer pipeline

import_conversations

Import conversations from Claude Code, ChatGPT, Slack, and more

data_checkup

Run data quality health checks on the memory store

dream

Run offline memory consolidation (clustering, merging, pruning)

memory_lint

Run memory quality checks: contradictions, duplicates, stale entries, orphans

forget_memory

Cascade-delete a memory with KG cleanup, pin archival, and audit trail

export_graph

Export memories as an interactive HTML knowledge graph

Base URL: http://localhost:4318

Endpoint

Method

Description

/v1/recall

POST

Quick semantic search

/v1/store

POST

Store a new memory

/v1/capture

POST

Store multiple structured memories

/v1/pattern

POST

Store a structured workflow pattern

/v1/case

POST

Store a structured problem-solution case

/v1/promote

POST

Promote evidence into durable memory

/v1/conflicts

GET

List or inspect promotion conflict candidates

/v1/conflicts/audit

GET

Summarize stale/escalated conflict priorities

/v1/conflicts/escalate

POST

Preview or apply conflict escalation metadata

/v1/conflicts/resolve

POST

Resolve a stored conflict candidate (keep / accept / merge)

/v1/checkpoint

POST

Store the current work checkpoint

/v1/workflow-observe

POST

Store a workflow observation outside durable memory

/v1/checkpoint/latest

GET

Fetch the latest checkpoint by session or scope

/v1/workflow-health

GET

Inspect workflow health or return a degraded-workflow dashboard

/v1/workflow-evidence

GET

Build a workflow evidence pack from recent issue observations

/v1/resume

POST

Compose startup context for a fresh window

/v1/search

POST

Advanced search with full metadata

/v1/stats

GET

Memory statistics

/v1/lint

GET

Memory quality lint report

/v1/health

GET

Health check

Full documentation: docs/api-reference.md

# Search & explore
bun run src/cli.ts search "your query"
bun run src/cli.ts explain "your query" --profile debug
bun run src/cli.ts distill "topic" --profile writing
bun run src/cli.ts stats

# Workflow observation
bun run src/cli.ts workflow-observe resume_context "Fresh window skipped continuity recovery." --outcome missed --scope project:recallnest --idempotency-key smoke-2026-06-26
bun run src/cli.ts workflow-health resume_context --scope project:recallnest
bun run src/cli.ts workflow-evidence checkpoint_session --scope project:recallnest

# Conflict management
bun run src/cli.ts conflicts list
bun run src/cli.ts conflicts list --attention resolved
bun run src/cli.ts conflicts list --group-by cluster --attention resolved
bun run src/cli.ts conflicts audit
bun run src/cli.ts conflicts audit --export --format md
bun run src/cli.ts conflicts escalate --attention stale
bun run src/cli.ts conflicts show af70545a
bun run src/cli.ts conflicts resolve af70545a --keep-existing
bun run src/cli.ts conflicts resolve af70545a --merge
bun run src/cli.ts conflicts resolve --all --keep-existing --status open

# Memory health & visualization
bun run src/cli.ts lint                         # memory quality report
bun run src/cli.ts lint --scope project:myapp   # lint a specific scope
bun run src/cli.ts graph --open                 # export & open knowledge graph
bun run src/cli.ts graph --max-nodes 50         # smaller graph

# Ingestion & diagnostics
bun run src/cli.ts ingest --source all
bun run src/cli.ts doctor

Web UI

bun run src/ui-server.ts
# → http://localhost:4317

What's new

v3.0 raised the runtime floor to Node 22 (the only breaking change — Bun users are unaffected) and gave synthesized conclusions a road into stable memory: a dream insight can now be promoted on the strength of its own validated evidence set, instead of being permanently stuck on the evidence layer where nothing downstream could lean on it.

It also fixed a rate-limit reply that could trigger an unbounded request storm — measured at over 61,000 requests in five seconds against an endpoint asking us to slow down. Found by the new HTTP contract tests, which drive the real client classes against a loopback server instead of stubbing the SDK.

Existing LanceDB data opens in place; there is no export or import step.

Full history — v3.0 through v1.0, with the upgrade notes for each — is in CHANGELOG.md.

Multilingual Support

RecallNest works out of the box with English. For multilingual memory (Chinese, Japanese, Thai, and 20+ more), install babel-memory with the language packs you need:

# Chinese
npm install babel-memory jieba-wasm

# Japanese
npm install babel-memory @sglkc/kuromoji

# Thai
npm install babel-memory wordcut

# European languages (German, French, Spanish, Russian, etc.)
npm install babel-memory snowball-stemmers

# Multiple languages at once
npm install babel-memory jieba-wasm @sglkc/kuromoji snowball-stemmers

RecallNest auto-detects babel-memory at startup — no configuration needed. Without babel-memory, RecallNest still works perfectly with standard BM25 text search.


Project Status & Roadmap

RecallNest is actively maintained. All major architecture phases are complete — see the full Roadmap for current priorities and future plans.

Maintainers: see Publishing RecallNest for the npm Trusted Publishing, validation, and recovery process.


Relationship to memory-lancedb-pro

RecallNest started as a fork of memory-lancedb-pro and shares its core ideas around hybrid retrieval, decay modeling, and memory-as-engineering-system. The key difference:

  • memory-lancedb-pro is an OpenClaw plugin — it adds long-term memory to a single OpenClaw agent.

  • RecallNest is a standalone memory layer — it serves CLI agents, GUI chat apps and plain HTTP callers simultaneously through MCP + HTTP API, with session continuity, structured assets, and conflict management built in.

Credit

Source

Contribution

memory-lancedb-pro by @win4r

Fork base — hybrid retrieval, decay modeling, and memory architecture

Claude Code

Foundation and early project scaffolding

OpenAI Codex

Productization and MCP expansion

Special thanks to Qin Chao (@win4r) and the CortexReach team for the foundational work.

Part of the 小试AI open-source AI workflow:

Project

Description

babel-memory

Multilingual preprocessing for BM25 — 27+ languages, zero deps

cc-empire (private)

Hooks/rules/methodology — the connective tissue of the whole ecosystem

telegram-ai-bridge

Telegram bots for Claude, Codex, Agy, and Kimi

tg-bridge-channel

Sister Telegram bridge using Claude Agent View background sessions

wechat-ai-bridge

Run Claude Code / Codex in WeChat with session management

openclaw-tunnel

Docker ↔ host CLI bridge (maintenance mode — LanceDB test only)

digital-clone-skill

Build digital clones from corpus data

claude-code-studio

Multi-session collaboration platform for Claude Code

workflow-orchestrator

Natural-language pipeline orchestrator for Claude Code

License

MIT

Available Tools

30 tools
auto_captureA

Extract memory-worthy items from a conversation turn using lightweight heuristics (zero LLM calls). Detects preferences, identity facts, decisions, corrections, explicit memory instructions, and workflow patterns. Items that pass salience filtering are stored as durable memories. Use this when you want to analyze a block of conversation text and automatically capture any signals worth remembering.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesConversation text to analyze for memory-worthy signals
scopeYesRequired scope such as project:recallnest or session:abc123
sourceNoHow this memory was capturedagent

TDQS

A4.1/5.0
Behavior4/5

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

Without annotations, the description discloses key behavioral aspects: 'Items that pass salience filtering are stored as durable memories' indicates a write side effect, and 'zero LLM calls' offers performance transparency. However, it does not elaborate on deduplication, error handling, or the impact on existing memories, which keeps it short of a 5.

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 three sentences, starting with the core action and resource, then listing detected signal types, then stating the storage outcome and usage trigger. Every sentence adds value, and the key information is front-loaded.

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?

The tool has no output schema and no annotations, so the description should cover return values and edge cases. It explains the storage side effect and usage, but does not mention what the tool returns (e.g., captured items or confirmation) nor behavior when no memory-worthy items are found.

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 100%, so the baseline is 3. The description's phrase 'analyze a block of conversation text' aligns with the 'text' parameter but adds no extra nuance for 'scope' or 'source' beyond what the schema already provides.

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 uses a specific verb 'Extract' and resource 'memory-worthy items from a conversation turn', clearly stating the tool's function. It lists concrete signal types (preferences, identity facts, decisions, etc.) and highlights the zero-LLM heuristic approach, which distinguishes it from sibling tools like store_memory or distill_memory.

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 'Use this when you want to analyze a block of conversation text and automatically capture any signals worth remembering,' providing clear usage context. However, it does not mention when not to use it, nor does it point to any alternative tools, so it lacks exclusionary guidance.

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

batch_storeA

Store multiple memories in a single call with deduplication. Side effect: persists up to 20 entries. Use when you have several facts to store at once, more efficient than repeated store_memory calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYes
sourceNoagent
memoriesYes

TDQS

A4.1/5.0
Behavior4/5

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

Discloses deduplication and persistence limit of 20 entries. Without annotations, this is helpful. Lacks details on error handling or idempotency, but core behavioral traits are covered.

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?

Two sentences, no wasted words, front-loaded with the main action and key benefit. Ideal length for tool descriptions.

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?

Lacks explanation of return value (e.g., success confirmation or error feedback). Does not mention the required 'scope' parameter, leaving ambiguity about its purpose. For a tool with nested input, more detail is needed.

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?

No schema description coverage (0%) and description adds no meaning beyond the schema. Does not explain the purpose of 'scope' or 'source' or the structure of each memory object. Agents would need to infer from 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?

Clearly states the tool stores multiple memories with deduplication, distinguishes it from repeated store_memory calls. 'Store multiple memories in a single call' is a specific verb+resource pairing.

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?

Explicitly tells when to use: 'Use when you have several facts to store at once, more efficient than repeated store_memory calls.' Provides clear context and alternative.

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

brief_memoryA

Create a structured memory brief by retrieving and summarizing relevant memories, then persist it as a reusable asset indexed for future recall. Use this when you want to consolidate scattered knowledge on a topic into a single retrievable document. Side effect: writes a new brief asset to disk and indexes it in the vector store for future search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of source memories to include in the brief (default: 8)
queryYesNatural language topic or task to brief, e.g. 'deployment pipeline architecture decisions'
scopeNoRestrict search to a specific scope, e.g. 'project:myapp'. Omit to use the default scope
titleNoHuman-readable title for the brief asset, e.g. 'Q1 Auth Migration Summary'. Auto-generated if omitted
profileNoRetrieval profile that tunes ranking weights: 'writing' for narrative, 'debug' for technical, 'fact-check' for high-precision
allScopesNoSet to true to search across all scopes instead of the default scope
sessionIdNoSession identifier to infer session-scoped search, e.g. 'abc123'

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 the full burden. It explicitly discloses the side effect: 'writes a new brief asset to disk and indexes it in the vector store for future search.' This is transparent about what the tool does beyond the primary action, though it does not discuss permissions or 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 consists of two sentences: the first defines the action and effect, the second gives usage advice and side effects. It is front-loaded with the primary purpose, contains no redundant information, and every sentence serves a clear function.

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 7 parameters, no output schema, and no annotations, the description covers purpose, usage hint, and side effects. However, it does not describe what the tool returns (e.g., asset ID or summary) nor explain interactions between parameters like scope and allScopes. This leaves gaps for an agent trying to invoke the tool correctly.

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 100% coverage, with descriptions for all 7 parameters. The tool description does not add additional parameter-specific information beyond what the schema provides. According to guidelines, when coverage is >80%, baseline is 3, and the description does not improve upon that.

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 begins with 'Create a structured memory brief by retrieving and summarizing relevant memories, then persist it as a reusable asset indexed for future recall.' This clearly states the verb (create), resource (memory brief), and outcome (persisted asset). It distinguishes from siblings like search_memory (retrieve only) or store_memory (store raw) by specifying consolidation into a single retrievable document.

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 says 'Use this when you want to consolidate scattered knowledge on a topic into a single retrievable document.' This provides clear context for when to use the tool. However, it does not explicitly state when not to use it or name alternative tools, though the sibling list implies alternatives exist.

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

checkpoint_sessionA

Store a compact checkpoint of the current work state. Use this when a task spans windows or terminals and you need the next session to recover decisions, open loops, and next actions without polluting durable memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNoOptional task label
filesNoRelevant files or paths
scopeNoOptional shared scope; defaults to session:<sessionId>
summaryYesCompact summary of the current work state
entitiesNoRelevant projects, tools, or people
decisionsNoKey decisions already made
openLoopsNoUnresolved questions or pending items
sessionIdYesCurrent session identifier
updatedAtNoOptional override; defaults to now
nextActionsNoNext actions to take
idempotencyKeyNoOptional stable request key; repeated saves with the same key replace the prior checkpoint

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It conveys that the operation is a non-durable, session-based write, but does not detail idempotency behavior, overwrite semantics, or rate limits. The idempotencyKey parameter implies stability, but this is not described.

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 two sentences long with no extraneous words. It front-loads the action and immediately follows with usage scenario. Every sentence adds value.

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?

For a tool with 11 parameters and no output schema, the description covers the core purpose and usage context but lacks details on return values, side effects, and idempotency. It is adequate but not fully complete.

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 100%, so the baseline is 3. The description mentions 'decisions, open loops, and next actions' which map to parameters, but adds no significant meaning beyond the schema descriptions. It does not explain parameter relationships or required fields 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 the tool stores a 'compact checkpoint of the current work state' with a specific verb and resource. It distinguishes from sibling memory tools by emphasizing 'without polluting durable memory' and targeting session-spanning use cases.

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 says to use this tool when a task spans windows or terminals and the session needs to recover decisions, open loops, and next actions. While it does not list alternatives or when not to use, the context is sufficiently specific to guide appropriate use.

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

data_checkupA

Run health checks on the memory database: vector dimensions, orphans, tier distribution, and conflict backlog. Read-only. Use when diagnosing data quality issues or before a consolidation run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 explicitly states the tool is read-only and lists the checks performed. However, it does not describe the output format or error handling, but the read-only nature is clearly communicated.

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 two sentences, concise, front-loaded with the action, and contains no redundant information. Every part adds value.

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 purpose, usage, and read-only nature. It lacks details about output format or how results are presented, but for a health-check tool with no output schema, this is acceptable. Could be slightly more complete.

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 no parameters, so the description naturally does not add parameter semantics. Baseline for zero-parameter tools is 4, and the description is sufficient.

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 runs health checks on the memory database, listing specific aspects (vector dimensions, orphans, tier distribution, conflict backlog) and explicitly indicates it's read-only. This distinguishes it from mutation tools like batch_store or forget_memory.

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?

Description explicitly states when to use: 'diagnosing data quality issues or before a consolidation run,' and notes it is read-only, providing clear guidance on appropriate contexts.

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

distill_memoryA

Distill retrieved memories into a compact briefing with source map, key takeaways, and reusable evidence. Use this when you need a synthesized summary of stored knowledge on a topic rather than raw search results. Returns a structured briefing with citations. Read-only — does not modify stored memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of retrieved memories to include in the distillation (default: 8)
queryYesNatural language topic or task to distill, e.g. 'authentication migration decisions'
scopeNoRestrict search to a specific scope, e.g. 'project:myapp'. Omit to use the default scope
profileNoRetrieval profile that tunes ranking weights: 'writing' for narrative, 'debug' for technical, 'fact-check' for high-precision
allScopesNoSet to true to search across all scopes instead of the default scope
sessionIdNoSession identifier to infer session-scoped search, e.g. 'abc123'

TDQS

A3.6/5.0
Behavior3/5

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

The description states it is read-only and does not modify stored memories, which is a key behavioral trait. However, without annotations, it does not disclose other behaviors like auth needs, rate limits, or output structure beyond 'structured briefing with citations'.

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 three concise sentences, each adding value: purpose, usage context, and return type plus read-only nature. No 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?

Given 6 parameters (all well-described in schema) and no output schema, the description adequately covers purpose, when to use, and a key behavior (read-only). It lacks comparison to similar tools like 'brief_memory' but is otherwise complete.

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 100%, so the description adds no extra meaning beyond the schema explanations for parameters like 'query', 'limit', 'scope', etc. Baseline score of 3 applies.

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 distills retrieved memories into a compact briefing with source map, key takeaways, and reusable evidence, distinguishing it from raw search results. However, it does not explicitly differentiate from siblings like 'brief_memory' or 'distill_session'.

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 advises using this when a synthesized summary is needed rather than raw search results, but it does not explicitly name alternative tools or specify when not to use it.

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

distill_sessionA

Distill a conversation session into structured knowledge and persist to long-term memory. Three layers: (1) microcompact clears old tool results at zero cost, (2) LLM summarizes into 9 dimensions, (3) extracts durable knowledge into RecallNest. Use when a session is ending or context is getting large. Side effect: persists extracted memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesMemory scope for persisted knowledge, e.g. 'project:recallnest'
persistNoWhether to persist extracted knowledge to RecallNest (default: true)
messagesYesConversation messages to distill
preserveRecentNoKeep the N most recent messages verbatim (default: 6)
keepRecentToolsNoKeep the N most recent tool results during microcompact (default: 5)

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 the full burden. It discloses the three-step process (microcompact, LLM summarization into 9 dimensions, extraction to RecallNest) and explicitly notes the side effect of persisting extracted memories. This goes beyond typical descriptions, though it lacks details on return values.

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 structured and front-loaded with purpose, followed by a breakdown of the three layers, a usage hint, and a side effect note. It is longer than some descriptions, but every sentence adds value and is not repetitive.

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 purpose, process, usage context, and side effects. With no output schema, it does not explain return values, but the tool's primary output is persistence, which is mentioned. It is reasonably complete for a tool of this complexity, though it could detail the 9 dimensions.

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 description coverage is 100%, so the baseline is 3. The description does not add parameter-specific meaning beyond what the schema already explains; it references the process (e.g., microcompact) but does not elaborate on any parameter semantics.

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 'distill', the resource 'conversation session', and the outcome 'structured knowledge' with persistence to long-term memory. It distinguishes itself from sibling tools like store_memory or distill_memory by naming RecallNest and the three-layer process.

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 gives an explicit usage trigger: 'Use when a session is ending or context is getting large.' It does not mention alternatives or when not to use, but the context provided is clear enough for an agent to decide.

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

dreamA

Run a full memory consolidation cycle (Orient, Gather, Consolidate, Prune). Side effect: may archive low-value entries and generate insight memories. Use when memory count is high and you need periodic maintenance.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoSet to true to force consolidation even if recent write count is below the automatic threshold
scopeNoScope to consolidate, e.g. 'project:myapp'. Matched exactly by default — a scope name is treated as itself, not as a prefix family. Omit to consolidate across all scopes
familyMatchNoSet to true to also consolidate child scopes sharing this prefix (e.g. 'memory' would additionally pull in 'memory:pivot'). Off by default: merging sibling scopes into one clustering round mixes unrelated material.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly discloses side effects: 'may archive low-value entries and generate new insight memories.' It also signals the mutating nature of the operation through 'prune' and 'consolidate,' which is important behavioral context beyond the input schema.

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

Conciseness5/5

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

The description is compact: one sentence defines the operation, one sentence covers side effects and when to use it. Every sentence earns its place, and the core action is front-loaded rather than buried in a long explanation.

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 memory-maintenance tool with three fully documented parameters and no output schema, the description covers the essentials: operation, workflow phases, side effects, and usage trigger. It could be more comprehensive by naming related maintenance tools or stating output/return value expectations, but it is sufficient for an agent to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter descriptions already document force, scope, and familyMatch well. The tool description does not add additional parameter-level detail, which is acceptable because the schema carries the load, but the description itself contributes no beyond-schema value for parameters.

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 a specific verb and resource: 'Run a full memory consolidation cycle' with named phases (Orient, Gather, Consolidate, Prune). It clearly describes what the tool does without relying on the name alone, though it does not explicitly differentiate itself from closely related sibling tools like distill_memory or memory_lint.

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 gives an explicit usage condition: 'Use when memory count is high and you need periodic maintenance.' This gives the agent actionable context for when to choose this tool, though it does not mention when not to use it or point to alternative lighter-weight maintenance tools such as distill_memory.

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

explain_memoryA

Explain why memories matched a query: retrieval path, freshness, scope, and matched terms. Read-only. Use when search results seem unexpected and you need to debug ranking or scope filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of matched results to analyze and explain (default: 5)
queryYesSearch query to explain — natural language or keywords, e.g. 'auth migration'
scopeNoRestrict to a specific scope, e.g. 'project:myapp'. Omit to use default scope
profileNoRetrieval profile that tunes ranking: 'debug' for technical, 'fact-check' for precision
categoryNoFilter results by memory category, e.g. 'preference', 'decision', 'fact'
allScopesNoSet to true to search across all scopes instead of the default scope
sessionIdNoSession identifier to infer session-scoped search, e.g. 'abc123'

TDQS

A4.2/5.0
Behavior4/5

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

The description declares 'Read-only,' which is essential for behavior understanding. It explains what aspects are analyzed (retrieval path, freshness, etc.). Without annotations, the description carries the burden, and it adequately discloses that no modifications occur. However, it could mention that the tool does not alter memory state.

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 two concise sentences: the first explains purpose and output, the second provides usage guidance. 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 the 7 parameters and good schema descriptions, the description covers purpose, usage context, and read-only nature. It mentions what the explanation includes (retrieval path, freshness, etc.), but without an output schema, it does not detail the exact return format. Still, it is largely complete for an explainer 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?

All 7 parameters have descriptions in the schema (100% coverage), so the baseline is 3. The description does not add additional meaning beyond the schema; it provides a high-level overview without elaborating on parameter interactions.

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: 'Explain why memories matched a query: retrieval path, freshness, scope, and matched terms.' The verb 'explain' and resource 'memories matched a query' are specific. It distinguishes from sibling tools like search_memory by focusing on explanation rather than retrieval.

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 tells when to use the tool: 'Use when search results seem unexpected and you need to debug ranking or scope filtering.' This provides clear guidance, though it does not explicitly name alternatives or state when not to use it.

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

export_graphA

Export memories as an interactive HTML knowledge graph. Creates a self-contained HTML file with a force-directed visualization. Open in any browser. Use when the user wants to visualize their memory network.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional scope filter
maxNodesNoMaximum nodes to include (default 200)

TDQS

A4.2/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 of behavioral disclosure. It clearly states the tool 'creates a self-contained HTML file with a force-directed visualization' and that the file can be 'opened in any browser.' This transparently conveys that the tool produces a file artifact without modifying memory. While it doesn't explicitly state it is read-only, the export nature implies non-destructiveness, which is adequate.

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 three sentences, each contributing essential information: what it does, what it produces, and when to use it. There is no redundancy or filler, and the most important information is front-loaded.

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 is complete for a simple export tool with two optional parameters. It covers the output format, usability in a browser, and the intended use case. It doesn't mention how the file is delivered (e.g., file path) or how scope/maxNodes affect the result, but these are covered by the schema and the tool's simple nature, so it is sufficiently complete.

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 description coverage is 100%, with both parameters (scope and maxNodes) already described in the schema. The description adds no additional meaning about how these parameters affect the graph output, so it does not exceed the baseline. The schema already provides the necessary semantics.

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 function: 'Export memories as an interactive HTML knowledge graph.' It specifies the verb (export), resource (memories), and output format (interactive HTML graph), distinguishing it from sibling tools like export_memory. The added use case 'Use when the user wants to visualize their memory network' further clarifies its purpose.

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 an explicit use case: 'Use when the user wants to visualize their memory network.' This gives clear context for when to invoke the tool. However, it does not mention when not to use it or mention alternatives among sibling tools, such as export_memory, so it falls short of a 5.

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

export_memoryA

Export a distilled memory briefing to a markdown or JSON file on disk. Side effect: writes an export artifact file. Use when you need an offline-readable snapshot of knowledge on a topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of source memories to include in the export (default: 8)
queryYesTopic or task to export, e.g. 'auth migration decisions'
scopeNoRestrict to a specific scope, e.g. 'project:recallnest'. Omit to use default scope
formatNoExport format: 'md' for markdown, 'json' for structured JSONmd
profileNoRetrieval profile for ranking, e.g. 'writing'
allScopesNoSet to true to search across all scopes instead of the default scope
sessionIdNoSession identifier to infer session-scoped search, e.g. 'abc123'

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It mentions the side effect of writing an export artifact file, which is good, but lacks details on file overwriting, permissions, or other behavioral implications.

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?

Two sentences concisely deliver the action, format, side effect, and use case. No redundant information, perfectly front-loaded.

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 complexity of 7 parameters and no output schema, the description is minimal. It covers the high-level purpose but lacks explanation of what 'distilled' means or how output is structured. Schema compensates partially.

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 description coverage is 100%, with each parameter having a clear description. The tool description adds minimal extra meaning beyond 'distilled memory briefing' which is not elaborated. Baseline 3 is appropriate.

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 exports a distilled memory briefing to markdown or JSON, distinguishing it from the sibling 'export_graph' which exports graph data.

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 a clear usage context: 'when you need an offline-readable snapshot of knowledge on a topic.' It does not explicitly mention when not to use or alternatives, but the purpose is well-defined.

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

forget_memoryA

Permanently forget a memory with full cascade: delete primary entry, remove KG triples, demote related memories, and log an audit trail. Requires confirm=true for durable-tier memories. Use when the user explicitly requests a memory be forgotten, or to clean up sensitive/incorrect data.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional scope filter for permission check
reasonNoReason for forgetting (recorded in audit trail)
confirmNoRequired confirmation — must be true for durable-tier memories
memoryIdYesMemory ID to forget (full UUID or 8+ hex prefix)

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description discloses key behavioral traits: permanence, cascade effects (deletion, KG removal, demotion, audit), and the confirmation requirement for durable-tier memories. It covers the essential destructive nature but omits details on error handling or idempotency.

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?

Three concise sentences with no wasted words. The action is front-loaded; the second sentence adds a critical condition; the third provides usage context. Every sentence earns its place.

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 no output schema or annotations, the description sufficiently covers the tool's purpose, cascade behavior, and usage. It lacks details on return values or failure modes, but the core functionality is well explained.

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?

All parameters are fully described in the schema (100% coverage), so the description adds no new information beyond restating the confirmation behavior for durable-tier memories already present in 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 specifies a clear verb ('forget') and resource ('memory') with a detailed cascade of actions (delete primary entry, remove KG triples, demote related memories, log audit trail). It distinguishes itself from sibling tools like store_memory or search_memory by describing a unique destructive operation.

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?

Provides explicit usage scenarios: 'when the user explicitly requests a memory be forgotten, or to clean up sensitive/incorrect data.' While it doesn't list negative cases or alternatives, the guidance is clear and directly applicable.

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

import_conversationsA

Import a conversation file (Claude Code JSONL, Claude.ai JSON, ChatGPT JSON, Slack JSON, plaintext, or connector-v1 JSON) into memory. Auto-detects format or use explicit format parameter. Messages are normalized and stored via the standard persistMemory pipeline. For connector-v1 format, use the standard ConnectorOutputV1 schema (see docs/connector-spec.md).

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesTarget scope for imported memories, e.g. 'project:myapp'
formatNoConversation format. Use 'auto' to detect automatically. 'connector-v1' for standard connector output.auto
contentYesRaw file content to import

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 discloses that messages are normalized and stored via the standard persistMemory pipeline, and that format auto-detection is available. This provides useful process context, though it does not address error handling or side effects, meriting a 4.

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 three sentences, front-loaded with the primary purpose and lists formats efficiently. Every sentence earns its place, with no redundant information, earning a 5.

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?

The tool has no output schema, and the description does not explain return values or error scenarios, which is a notable gap for an import tool. However, the description does cover the input formats and processing pipeline, so for moderate complexity it scores a 3.

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 already provides detailed descriptions for all three parameters, achieving 100% coverage. The description adds minimal semantic value beyond the schema, only mentioning the explicit format parameter and connector spec reference, so the baseline 3 is appropriate.

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 imports conversation files into memory and lists supported formats. It is specific about the resource and action, but does not explicitly differentiate from siblings like store_memory or batch_store, so it earns a 4.

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 importing conversation files in specific formats but does not explicitly state when to use this tool over alternatives or when not to use it. There are no exclusions or alternative tool mentions, so it scores a 3.

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

latest_checkpointA

Fetch the most recent saved checkpoint for a session or shared scope. Read-only. Use when you need to inspect current work state without running a full resume_context.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoShared scope filter, e.g. 'project:recallnest'
sessionIdNoSession identifier filter, e.g. 'abc123'

TDQS

A4/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 disclosure burden. It explicitly states 'Read-only,' which is a key trait, but does not mention behavior when no checkpoint exists, parameter precedence, or return format. It adds some value but remains sparse.

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?

Two sentences, front-loaded with the core action and scope, followed by a use case. No redundant information or excessive length.

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 simple tool with two optional parameters and no output schema, the description covers the essentials: what it does, when to use it, and that it is read-only. Minor omissions (e.g., behavior with both parameters or no parameters) prevent a 5, but it is largely complete.

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 100%, with both parameters described with examples. The description only rephrases 'session or shared scope' without adding new meaning beyond the schema. Baseline 3 is appropriate because the schema does the heavy lifting.

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 states a specific verb ('Fetch'), the resource ('most recent saved checkpoint'), and scope ('for a session or shared scope'), clearly distinguishing it from siblings like checkpoint_session (saves) and resume_context (full resume). It also identifies itself as read-only.

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?

Provides explicit guidance: 'Use when you need to inspect current work state without running a full resume_context,' which tells when to use and contrasts with the alternative. It does not detail when to use one parameter over the other, but this is a minor gap.

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

list_assetsA

List recent structured memory assets (pinned memories and distilled briefs) sorted by creation date. Read-only. Use when you need an inventory of persisted knowledge artifacts — for example, before creating a new brief to avoid duplicates. Returns asset type, title, scope, creation date, and file path for each entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of assets to return, sorted most-recent-first (default: 12, max: 50)

TDQS

A4.3/5.0
Behavior4/5

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

Declares 'Read-only' which is key for a non-destructive tool. Discloses sorting by creation date. With no annotations provided, description covers essential behavioral traits adequately, though could mention pagination or 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?

Description is very concise with four short sentences, each adding unique value: verb+resource, read-only, usage guidance, and return fields. No wasted 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 the tool's simplicity (one optional parameter, no output schema), description fully explains what is returned (asset type, title, scope, creation date, file path) and provides usage context. No gaps.

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 description coverage is 100%, so baseline is 3. Description adds context like 'recent' and 'sorted by creation date' but does not substantially add meaning beyond what the schema already provides for the 'limit' parameter.

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 verb (List), resource (structured memory assets) with specific types (pinned memories and distilled briefs), and sorting order. Differentiates from sibling 'list_pins' by including both pins and distillations.

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?

Explicitly says when to use: for inventory of knowledge artifacts, with example of avoiding duplicates before creating a brief. Lacks explicit when-not or alternative tool mentions, but context is clear.

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

list_pinsA

List pinned memory assets sorted by creation date, showing title, scope, importance score, and file path. Read-only. Use when you need to review high-value memories that were explicitly pinned via pin_memory, or to check if a topic already has a pinned reference before creating a new one.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of pinned assets to return, sorted most-recent-first (default: 10, max: 50)

TDQS

A4.5/5.0
Behavior4/5

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

The description explicitly states 'Read-only', which is a key behavioral trait in the absence of annotations. It also mentions sorting order. While more details (e.g., pagination) could be added, the essential safety information is present.

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?

Two sentences, no redundant words, front-loads the core purpose. Every sentence adds value.

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?

For a simple list tool with one optional parameter and no output schema, the description adequately covers purpose, usage, and behavior. No missing critical information.

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 schema already provides comprehensive documentation for the single 'limit' parameter (description, default, min, max). The description adds no additional param-specific information, so baseline 3 is appropriate.

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 'list', the resource 'pinned memory assets', and includes details like sorting by creation date and displayed fields. It effectively distinguishes from sibling tools like pin_memory.

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?

Explicitly tells when to use: 'review high-value memories' or 'check if a topic already has a pinned reference before creating a new one.' This provides clear guidance and implicitly advises against misuse.

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

list_toolsA

List available RecallNest tools with one-line descriptions, filtered by tier. Read-only. Use when you need to discover advanced or governance tools beyond the core set.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNoWhich tier of tools to list. Returns tools at this tier and below.advanced

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 carries the full burden. It explicitly states 'Read-only,' disclosing the safety profile. It also mentions the filtering behavior by tier. This is sufficient for a simple listing tool.

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 two sentences, front-loaded with the primary action, and contains no wasted words. It efficiently conveys purpose and usage context.

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?

For a simple tool with one optional parameter and no output schema, the description covers all essential aspects: purpose, read-only safety, usage context, and filtering. It is complete for the tool's complexity.

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 description coverage is 100% with the 'tier' parameter fully described (enum, default, and explanation). The description's 'filtered by tier' adds no new information beyond the schema, so baseline 3 applies.

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 available RecallNest tools with one-line descriptions, filtered by tier' with a specific verb and resource. It distinguishes from sibling tools like list_assets and list_pins by focusing on tools rather than other entities.

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 gives explicit guidance: 'Use when you need to discover advanced or governance tools beyond the core set.' This provides clear context on when to use the tool, though it does not explicitly name alternatives (e.g., list_assets) or list exclusions.

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

memory_drill_downA

Retrieve the full or overview-level content of a single memory entry. Read-only. Use when search returned compact summaries and you need the complete text or L1 overview.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesMemory ID or unique prefix (at least 8 hex chars), e.g. 'a1b2c3d4'
levelNoContent depth: 'overview' (L1) or 'full' (L2, default)full

TDQS

A4.2/5.0
Behavior3/5

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

The description states 'Read-only,' which is a behavioral trait. Since no annotations are provided, this is helpful. However, it does not disclose other behaviors such as error handling for invalid IDs, output format details, or performance characteristics. For a simple read operation, this level is adequate but not rich.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the primary action and resource, then a clear usage directive. Every clause earns its place with no 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?

The tool has no output schema, so the description carries the burden of explaining return values. It states the content level ('full or overview-level') and the context (search summaries), which is sufficient for a simple retrieval. It does not elaborate on edge cases, but for this low-complexity tool, it is adequately complete.

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 100% with descriptions for both 'id' and 'level'. The description adds meaning by explaining 'full' as L2 and 'overview' as L1, which maps directly to the enum values. It also clarifies the tool's purpose relative to search results, adding context 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 the action (Retrieve), the resource (a single memory entry), and the scope (full or overview-level content). It also distinguishes itself from sibling tools like search_memory by explicitly noting it retrieves complete text or L1 overview rather than compact summaries.

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 a specific use case: 'Use when search returned compact summaries and you need the complete text or L1 overview.' This gives clear context for when to invoke the tool, but it does not explicitly mention when not to use it or name alternative tools as exclusions.

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

memory_lintA

Run memory quality lint checks: contradictions, duplicates, stale entries, and orphans. Read-only. Returns a health score (0-100) and actionable findings. Use for periodic memory hygiene or before consolidation.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional scope filter, e.g. 'project:recallnest'. Omit to lint all scopes
verboseNoInclude all individual findings in output (default: summarized)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description correctly carries the safety disclosure by stating 'Read-only.' It also discloses the high-level behavior (runs lint checks, returns a health score and actionable findings). This is adequate for a non-destructive tool, though it could detail whether findings are summaries or individual entries (the verbose parameter hints at this).

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 two sentences, front-loads the action and purpose, and provides value in every clause. No padding or redundant restatement of the tool name. It earns perfect marks for conciseness.

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 is complete for a simple read-only tool with no output schema: it states the return value (health score 0-100 and actionable findings) and outlines its primary use cases. It does not overspecify but covers the essentials needed for an agent to call it correctly.

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

Parameters3/5

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

The input schema already provides full descriptions for both parameters (scope as an optional filter, verbose as a boolean toggling individual findings). The description does not add further semantic detail beyond the schema, so the baseline of 3 is appropriate given 100% schema coverage.

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 opens with a specific verb 'Run' and resource 'memory quality lint checks', then enumerates the exact checks (contradictions, duplicates, stale entries, orphans). This clearly distinguishes it from sibling tools like memory_stats (stats) and data_checkup (data integrity), making the tool's 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 Guidelines4/5

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

Provides explicit usage context: 'Use for periodic memory hygiene or before consolidation.' This tells the agent when to invoke it. It does not explicitly state when not to use it or name alternatives, but the guidance is sufficient for a focused linting tool.

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

memory_statsA

Show aggregate statistics of the memory database: total entries, counts by source and category. Read-only. Use when you need an overview of memory store health or size.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description only adds 'Read-only' as behavioral context. No details about response size, performance, or idempotency. Adequate but minimal.

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?

Two sentences, front-loaded with key purpose and outputs. No extraneous information. Highly efficient.

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?

For a tool with no parameters, no output schema, and a simple aggregate function, the description fully explains input, output, and usage context. Differentiates from many sibling tools effectively.

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?

No parameters exist, so schema coverage is trivially 100%. Baseline 3 is appropriate as description adds no parameter-specific meaning beyond stating the output, which is about results, not inputs.

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 shows aggregate statistics (total entries, counts by source and category). It is distinct from sibling tools like memory_drill_down or search_memory which provide detailed or filtered data.

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?

Explicitly states when to use: 'when you need an overview of memory store health or size.' It also declares read-only nature. Could be improved by mentioning limitations or alternatives.

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

pin_memoryA

Pin a retrieved memory as a high-importance reusable asset on disk. Side effect: boosts importance to 0.95, writes pin asset file, and indexes it. Use when a search result is critical and should be surfaced in future recalls.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOriginal query that led to this pin, e.g. 'auth decisions'
scopeNoExplicit scope filter, e.g. 'project:recallnest'
titleNoHuman-readable title for the pin, e.g. 'Auth migration decision'
profileNoRetrieval profile for ranking, e.g. 'debug'
summaryNoShort summary override for the pinned asset
allScopesNoWhen true, allow cross-scope reads to find the memory
memory_idYesMemory ID or unique prefix from search/explain output, e.g. 'a1b2c3d4'
sessionIdNoSession identifier to infer session:<id> scope, e.g. 'abc123'

TDQS

A4.2/5.0
Behavior4/5

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

Discloses side effects: boosts importance to 0.95, writes pin asset file, indexes it. With no annotations, the description carries full responsibility and covers key behavioral impacts. Could mention if pinning makes a memory non-deletable, but current detail is sufficient.

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?

Two sentences, zero wasted words. First sentence defines action and side effects; second sentence states when to use. Information is front-loaded and efficient.

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?

Covers purpose, usage, and side effects. No output schema exists, but return value is not critical. Missing edge cases like memory not found or duplicate pinning, but overall adequate for agent invocation.

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 100% with descriptions for all 8 parameters. The tool description adds no extra meaning beyond what the schema already provides, so baseline 3 is appropriate.

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 action ('Pin a retrieved memory'), the resulting state ('high-importance reusable asset'), and the specific side effects (boosts importance to 0.95, writes asset file, indexes it). It distinguishes this tool from siblings like 'list_pins' and 'store_memory' by focusing on pinning an existing memory for future recall.

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?

Explicitly instructs 'Use when a search result is critical and should be surfaced in future recalls,' providing clear context. Does not mention when not to use or alternative tools, but guidance is direct and actionable.

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

promote_memoryA

Promote an evidence memory into durable memory with an authority upgrade. Side effect: creates a new durable entry linked to the source evidence. Use when a transcript snippet or imported artifact contains a fact worth keeping across windows.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags
textNoOptional cleaned durable text; defaults to the source entry text
scopeYesRequired target scope such as project:recallnest or session:abc123
sourceNoHow this promotion was capturedagent
categoryNoOptional target durable category; defaults to the source evidence category or its originalCategory
memoryIdYesExisting evidence memory ID or unique prefix
importanceNoImportance score from 0 to 1
canonicalKeyNoOptional stable key for merge/update semantics

TDQS

A3.9/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 full burden. It discloses the side effect of creating a new durable entry linked to the source, but does not detail other behaviors such as whether the original evidence is affected or permissions required.

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 two concise sentences with no fluff. The purpose and usage are front-loaded, making it easy for an agent to parse quickly.

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 no output schema and no annotations, the description covers core purpose and side effect but lacks details on return values, error conditions, or behavioral nuances for a tool with 8 parameters.

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 description coverage is 100%, so baseline is 3. The description adds minimal extra context beyond schema, mostly restating defaults and purposes. No significant additional 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?

The description clearly states the verb 'promote' and the resource 'evidence memory into durable memory', with a side effect. It distinguishes from sibling tools like store_memory by specifying the promotion aspect and authority upgrade.

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 guides when to use: 'when a transcript snippet or imported artifact contains a fact worth keeping across windows'. It implies context but does not mention alternatives or when not to use, missing a point.

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

resume_contextA

Compose startup context for a fresh window by combining durable memory, patterns, cases, and the latest checkpoint. Read-only. Use when entering a new session and you need to recover prior decisions, open loops, and next actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoOverride recall mode: 'full' (default), 'light' (<300 tokens), 'summary' (checkpoint only), 'off'
taskNoOptional current task or question to bias recall
scopeNoOptional shared scope for project or terminal continuity
profileNoRetrieval profile
sessionIdNoOptional session identifier to recover the latest checkpoint
limitPerSectionNoMax items per section
includeLatestCheckpointNoWhether to include the latest checkpoint summary

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It states 'Read-only' which discloses a key behavioral trait. No other side effects are mentioned, but for a read-only composition tool, this is adequate.

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?

Three short sentences with no fluff. Each sentence adds value: purpose, read-only flag, usage context. Front-loaded and efficient.

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 tool with 7 optional parameters and no output schema, the description covers purpose and usage well. It does not describe the return format, but the tool's nature suggests a composed context summary, which is implicit.

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 100%, so baseline is 3. The description adds little beyond schema: it mentions components but does not elaborate on parameters like task, scope, or mode. No additional semantic value.

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 composes startup context from durable memory, patterns, cases, and checkpoint, and explicitly says it is read-only. It distinguishes from siblings by specifying its use for session recovery, not storage or search.

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 says 'Use when entering a new session and you need to recover prior decisions, open loops, and next actions,' providing clear usage context. It does not explicitly list alternatives or when not to use, but the context is sufficient.

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

retrieve_skillA

Retrieve executable skills matching a task description by semantic similarity. Read-only. Use when you need a stored procedure to act on, not just recall knowledge.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of matching skills to return, sorted by relevance (default: 3)
queryYesNatural language task description to match, e.g. 'deploy the app to production'
scopeNoRestrict to skills in a specific scope, e.g. 'project:myapp'. Omit to search all scopes

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 the full burden of behavioral disclosure. It explicitly states 'Read-only' and 'matching by semantic similarity,' which are critical for an agent to know the operation has no side effects and how matching works. It does not explain return format or error behavior, but the disclosed traits are essential and clear.

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 only two sentences, front-loaded with the core action, and contains no redundant phrases. Each clause contributes value: the action, the matching mechanism, the read-only safety, and the usage context.

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?

The tool has no output schema, so the description should clarify what the return value looks like. It says 'skills' but does not state whether a list is returned, relevance scoring, or any result structure. While usage and purpose are well covered, this gap lowers completeness for a retrieval 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?

The input schema provides thorough descriptions for all three parameters (query, limit, scope), covering semantics, defaults, and constraints. The description adds no additional parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

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 specifies the tool's function: 'Retrieve executable skills matching a task description by semantic similarity.' This is a specific verb+resource+mechanism that distinguishes it from siblings like search_memory (knowledge recall) and store_skill (storing procedures). The phrase 'executable skills' and 'not just recall knowledge' further set it apart.

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 gives explicit usage guidance: 'Use when you need a stored procedure to act on, not just recall knowledge.' This tells the agent when to use this tool and differentiates it from knowledge retrieval, though it does not name an alternative tool explicitly. It implies the alternative but lacks a direct sibling reference.

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

search_memoryA

Search indexed memories by hybrid relevance (vector + BM25 + reranking) and return ranked results with optional temporal filtering. The shown score is a fused ranking score (0-100%), NOT pure cosine similarity — read it as relative ranking within this result set, not as match confidence. Read-only, but may fire stored reminders as a side effect. Use proactively at the start of tasks, when debugging, writing, or when the user references past work.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoFilter memories stored after this date (ISO format YYYY-MM-DD, or relative like '最近30天', 'last 7 days')
graphNoEnable KG graph traversal (PPR) for relationship-aware search. Use when query involves entity relationships (e.g. 'what tools does Alice use', 'Bob的朋友').
limitNoMax results to return
queryYesSearch query — natural language or keywords
scopeNoOptional explicit scope
beforeNoFilter memories stored before this date (ISO format YYYY-MM-DD, or relative)
renderNoResult rendering mode: verbatim (default, original order) or highlight (reorder by contextual relevance to query)verbatim
profileNoRetrieval profile
validAtNoQuery memories valid at a specific point in time (ISO date, e.g. '2025-06-15'). Returns only memories whose validity window covers this date.
categoryNoFilter by memory category: profile (identity/background), preferences (habits/style), entities (projects/tools/people), events (past happenings), cases (problem-solution pairs), patterns (reusable workflows)
topicTagNoFilter by topic tag (e.g. 'auth', 'deploy', 'testing'). Only returns memories tagged with this topic.
allScopesNoWhen true, explicitly allow cross-scope search
sessionIdNoOptional session identifier to infer session:<id> scope
reconstructNoReturn LLM-synthesized reconstruction alongside raw results. Requires RECALLNEST_CONSTRUCTIVE_RETRIEVAL=true.
detail_levelNoResult detail level: brief (ID+score+one-liner), normal (default, table), full (include metadata), adaptive (per-result L0/L1/L2 fidelity by relevance within an 8k token budget — high-relevance gets full text, lower gets summary/one-line)normal
includeExpiredNoWhen true, include expired memories in results (demoted 80%). Default: only active/non-expired.
includeArchivedNoWhen true, also return archived/superseded/consolidated memories (default: only active)
includeRelatedScopesNoWhen true, also query configured related scopes from scopeRelations and show them in a separate sidecar section. Requires an explicit or inferred scoped search; never changes the main result ranking.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and excels: it discloses the important caveat that the score is a fused ranking score, not cosine similarity, and that the tool is read-only but may fire stored reminders as a side effect. These are non-obvious behavioral traits that materially affect interpretation and safety.

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 three sentences, each earning its place: the first defines the core operation, the second clarifies output semantics, and the third covers side effects and usage timing. It is front-loaded and free of filler.

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 an 18-parameter tool with no output schema, the description gives essential high-level context: hybrid retrieval, ranked results, score interpretation, side effects, and recommended usage scenarios. However, it does not describe the return format or pagination behavior, which would be helpful given the tool's complexity, but the extensive schema compensates for most gaps.

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 description coverage is 100%, so the baseline is 3. The description adds only general context about hybrid relevance and temporal filtering, but does not explain specific parameters beyond what the schema already provides. It neither detracts from nor significantly enhances the schema's parameter documentation.

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 searches indexed memories using hybrid relevance (vector + BM25 + reranking) and returns ranked results with temporal filtering. This distinguishes it from siblings like store_memory, auto_capture, and memory_drill_down by naming the specific retrieval behavior and output shape.

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?

It provides concrete guidance on when to use the tool: proactively at task start, when debugging, writing, or when the user references past work. It does not explicitly mention when not to use it or name alternative tools, so it stops short of the full exclusionary guidance that would earn a 5.

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

set_reminderA

Set a prospective memory reminder that auto-triggers during future search_memory calls when the trigger keywords match. Side effect: stores a reminder entry. Use when you need a future nudge tied to a specific context.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesRequired scope
actionYesWhat to remind about when the trigger fires
triggerYesTrigger condition — keywords that should activate this reminder
expiresInDaysNoOptional: auto-expire after N days

TDQS

A3.6/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 full burden. It discloses a side effect ('stores a reminder entry') and explains the auto-trigger mechanism, but lacks details on permissions, rate limits, or error behavior.

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, consisting of two sentences plus a side-effect note. It is front-loaded with the key purpose and usage, though the side-effect could be integrated more naturally.

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 lack of output schema and annotations, the description adequately explains the core functionality and trigger behavior. However, it does not describe return values or error conditions, which would be helpful for a complete understanding.

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 description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond repeating 'trigger keywords' and 'action,' so baseline score of 3 applies.

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 sets a prospective memory reminder that triggers automatically during search_memory calls, distinguishing it from general memory storage tools. The verb 'set' and resource 'prospective memory reminder' are specific.

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 explicit usage guidance: 'Use when you need a future nudge tied to a specific context.' It does not mention when not to use or provide alternatives, but the context is clear enough.

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

store_caseA

Store a reusable case as durable memory. Use this when you identify a concrete problem-and-solution pair worth reusing across future windows, such as a debugging fix, continuity cleanup, migration lesson, or implementation recovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags
scopeYesRequired scope such as project:recallnest or session:abc123
titleYesShort case title
toolsNoOptional tools, commands, or interfaces involved
sourceNoHow this case was capturedagent
contextNoOptional context or preconditions
outcomeNoOptional result or resolution
problemYesWhat problem happened
importanceNoImportance score from 0 to 1
canonicalKeyNoOptional stable key for merge/update semantics
debugFramingNoOptional break-loop 五维归因 (rootCause/whyPriorFixFailed/defense/systematicExtension/knowledgeFix)
solutionStepsYesOrdered solution steps

TDQS

A3.7/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 burden of behavioral disclosure. It mentions 'durable memory' and 'reusable across future windows,' implying persistence and cross-session usage. However, it doesn't disclose behaviors like how duplicates are handled (despite canonicalKey in schema), whether the operation is idempotent, or any side effects on existing memory. This is adequate but incomplete for a mutation tool.

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?

Two sentences, front-loaded with purpose and immediate usage guidance. No fluff, no repetition of schema content. Every phrase earns its place.

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?

The tool has 12 parameters including a nested object and enum, but the schema covers their meaning. The description provides solid when-to-use context but omits how a stored case integrates with retrieval or other sibling tools, and doesn't mention output or confirmation. For an agent to invoke correctly, the description plus schema are sufficient, but it lacks deeper system integration context.

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 schema has 100% description coverage with detailed parameter descriptions (e.g., scope format, debugFraming dimensions). The tool description adds no extra parameter semantics beyond naming the 'problem-and-solution pair' which maps to problem and solutionSteps. Baseline 3 is appropriate because the schema does the heavy lifting.

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 stores a 'reusable case as durable memory' and provides concrete examples (debugging fix, continuity cleanup). It has a specific verb and resource, and the examples help distinguish it from vague memory tools. However, it doesn't explicitly differentiate from sibling tools like store_memory or store_workflow_pattern, which also store knowledge.

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 gives explicit when-to-use guidance: 'Use this when you identify a concrete problem-and-solution pair worth reusing across future windows.' It lists several example scenarios. It doesn't name alternatives or say when not to use it, but the context is clear and actionable.

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

store_memoryA

Store a durable memory when the user shares a stable preference, identity fact, project entity, reusable pattern, or solved case that should survive future windows. Do not use this for transient task state; use it only for memory worth keeping.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags
textYesMemory text to store
scopeYesRequired scope such as project:recallnest or session:abc123
sourceNoHow this memory was capturedmanual
categoryNoDurable memory categoryevents
topicTagNoOptional topic tag for intra-scope partitioning (e.g. 'auth', 'deploy', 'testing'). Auto-detected if omitted.
dependsOnNoOptional freshness dependencies (borrowed). Declare what this memory depends on so recall shows a cheap validity verdict (exact/compatible/uncertain/invalid). Items: {kind:'file'|'git-rev', ref, expected?}. file → ref=path, expected=mtime-ms string; git-rev → ref=repo path, expected=commit hash (short ok). expected may be an array: first=exact, rest=compatible set. Omit expected for existence-only checks.
eventTimeNoOptional event time: when the event actually happened (ISO date or ms), distinct from storage time.
confidenceNoOptional confidence override: number (0-1) or {score, reliability}. Auto-assigned from source if omitted.
importanceNoImportance score from 0 to 1
validUntilNoOptional expiration: ISO date string or ms timestamp. Memory will be deprioritized after this time.
privacyTierNoPrivacy tier: ephemeral (auto-expire, no KG), private (persist, no KG), durable (default), shared (cross-scope)durable
canonicalKeyNoOptional stable key for merge/update semantics

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden and does disclose that memories are durable and survive future windows. However, it does not mention write semantics, return value, deduplication, overwrite behavior, or any operational effects beyond persistence.

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 two sentences, front-loaded with the core purpose and immediately followed by a usage exclusion. Every sentence earns its place and there is no redundant filler.

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?

The schema fully documents parameters, but the description lacks behavioral completion such as return values, error conditions, or how stored memories are later surfaced. For a 13-parameter write tool with no output schema and no annotations, it gives adequate selection guidance but not full operational context.

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 100% parameter coverage with detailed descriptions for every parameter, so the baseline is 3. The description adds general context about durable memory but provides no parameter-specific meaning beyond what the schema already documents.

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 stores durable memory for stable preferences, identity facts, project entities, reusable patterns, or solved cases, and explicitly contrasts it with transient task state. It is specific about the kind of content and the resource being written, and the exclusion distinguishes it from transient-state tools.

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 gives explicit conditions for use ('when the user shares a stable preference...') and a clear when-not ('Do not use this for transient task state'). It does not explicitly name sibling tools like store_case or store_workflow_pattern as alternatives, so the routing guidance is strong but not exhaustive.

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

store_skillA

Store an agent-readable skill runbook with trigger conditions, instruction content, and verification steps. Side effect: persists a new skill entry and indexes it. Use when you identify a reusable procedure worth surfacing across sessions. NOTE: RecallNest does NOT execute skills — implementation is a runbook agents read as context, not a script we run. (v2.5 收缩,2026-05-27)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesUnique skill identifier, e.g. 'deploy_production' or 'run_migrations'
tagsNoOptional categorization tags, e.g. ['deployment', 'production']
scopeYesScope to store the skill under, e.g. 'project:recallnest'
sourceNoHow this skill was captured: 'manual' by user, 'agent' by AI, or 'api' programmaticallyagent
descriptionYesNatural language description of what the skill does (used for semantic retrieval matching)
inputSchemaNoJSON Schema defining the skill's input parameters, e.g. {"env": {"type": "string"}}
verificationNoSteps to verify the skill executed correctly, e.g. 'check deployment URL returns 200'
implementationYesAgent-readable runbook content: markdown steps, natural language workflow, or structured procedure. RecallNest does NOT execute this — agents read it as context to follow.
triggerPatternYesNatural language pattern describing when to suggest this skill, e.g. 'user asks to deploy to production'
implementationTypeYesSkill runbook type. Currently only 'instruction_sequence' is supported — RecallNest stores runbooks for agents to read, does not execute them. (v2.5 schema 收缩,2026-05-27)

TDQS

A3.9/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 explicitly discloses the side effect ('persists a new skill entry and indexes it') and the critical non-execution behavior (RecallNest does NOT execute skills). This addresses common misconceptions and provides useful behavioral context beyond a simple 'store' action.

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 primary action, followed by side effect, usage, and a crucial warning. It is concise and readable, though the trailing version note '(v2.5 收缩,2026-05-27)' is extraneous for an agent.

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 tool has 10 parameters and no output schema, but the schema covers all parameters comprehensively. The description adds usage context, side effects, and a non-execution warning, making the overall tool context sufficiently complete for an agent to use it correctly. Some details like duplicate handling or return value are absent, but not critical for a store operation.

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 description coverage is 100%, so the baseline is 3. The description echoes the non-execution note already present in the implementation parameter schema, but does not add new parameter semantics beyond what the schema provides.

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 stores an 'agent-readable skill runbook' with trigger conditions, instruction content, and verification steps. This specifies the resource and purpose, but does not explicitly distinguish from sibling tools like store_workflow_pattern or store_case, so it falls short of a 5.

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 clear usage context: 'Use when you identify a reusable procedure worth surfacing across sessions.' It does not mention exclusions or direct alternatives, but the provided context is sufficient for an agent to decide when to invoke this tool.

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

store_workflow_patternA

Store a reusable workflow pattern as durable memory. Use this when you identify a repeatable process worth reusing across fresh windows, such as startup continuity, debugging routines, review flows, or handoff steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags
scopeYesRequired scope such as project:recallnest or session:abc123
stepsYesOrdered workflow steps
titleYesShort pattern title
toolsNoOptional tools, commands, or interfaces involved
sourceNoHow this pattern was capturedagent
outcomeNoOptional expected outcome
triggerYesWhen this workflow should be used
importanceNoImportance score from 0 to 1
canonicalKeyNoOptional stable key for merge/update semantics

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry full transparency. It mentions 'durable memory' indicating persistence, but doesn't disclose merge/update behavior via canonicalKey, whether it overwrites, or any other operational details. It adds some context but not rich behavioral detail.

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?

Two sentences, both purposeful. The first explains the core function, the second provides usage context and examples. 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?

For a tool with 10 parameters and no output schema, the description gives solid context (what and when). It lacks details on return values and update semantics, but the examples and clarity make it fairly complete for an agent.

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 description coverage is 100%, with all 10 parameters having descriptions. The description doesn't add additional parameter meaning beyond what the schema already provides, so baseline 3 is appropriate.

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 with a specific verb ('Store') and resource ('reusable workflow pattern as durable memory'). It differentiates from sibling tools like store_memory or store_skill by focusing on workflow patterns and provides concrete examples (startup continuity, debugging routines).

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?

It gives explicit guidance on when to use ('when you identify a repeatable process worth reusing across fresh windows') with examples. It doesn't explicitly mention when not to use or name alternatives, but the 'when' is clear and memorable.

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

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: batch storage, summarization, debugging, session management, memory lifecycle operations, and various queries. No two tools overlap in function, ensuring an agent can reliably select the correct tool.

Naming Consistency4/5

Most tool names follow the verb_noun pattern (e.g., batch_store, checkpoint_session, export_memory). A few, like memory_stats and data_checkup, use noun_noun but are still descriptive. The overall convention is consistent and predictable.

Tool Count5/5

15 tools is well-scoped for a comprehensive memory management server. It covers storage, retrieval, summarization, session state, and maintenance without being overwhelming.

Completeness4/5

The tool set covers the full memory lifecycle: store, recall, summarize, manage, and forget. A minor gap is the absence of a dedicated raw search tool (search is embedded in distill_memory) and no direct update tool, but pinning and promoting offer partial modification.

Maintenance

ActivityActive
ResponsivenessWithin a week

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

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/AliceLJY/recallnest'

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