Skip to main content
Glama

wasurenagusa

Teach your AI coding agent to learn from its mistakes.

npm version License: MIT Node.js Ko-fi

wasurenagusa (forget-me-not) — a Japanese flower whose name means "don't forget me."


The Problem

AI coding agents are powerful but amnesiac. Every session starts from scratch — your project conventions, past decisions, and hard-learned lessons vanish the moment a session ends.

Existing solutions either require manual effort or simply store raw memories that grow until they overwhelm the context window.

Related MCP server: memory-bank-mcp

The Solution

wasurenagusa is an MCP server that doesn't just remember — it learns.

  1. Detects mistakes automatically — Catches retry patterns, user frustration, and repeated failures

  2. Distills lessons into principles — LLM compresses hundreds of raw entries into a handful of actionable rules

  3. Converts negatives to positives — Generates positiveRule alongside each principle: "don't do X" becomes "do Y instead." Research shows LLMs follow affirmative instructions significantly better than prohibitions (Pink Elephant problem)

  4. Compresses config into themes — LLM groups scattered settings into coherent summaries, preserving facts like ports and paths

  5. Injects only what matters — Consolidated wisdom + active settings only. No template bloat, no duplicate entries.

  6. Hybrid search (full-text + semantic) — SQLite-backed storage with local embedding inference (no external API needed). Full-text search with Japanese support + vector semantic search, merged and deduplicated. Works completely offline.

  7. Smart tag retrieval — LLM-generated weighted tags + composite scoring (freshness, tag weight, access frequency) optimize retrieval priority without discarding any data.

  8. Memory stash/restore — Temporarily stash memories out of the active context to save context window space, then restore them when needed. Ideal for long sessions with sub-agents.

Fully automated via Claude Code hooks — zero configuration after setup.

Real-world impact

From the author's daily use across 8 production projects (with cross-project memory sharing between them):

1,581 "dont" entries   →  5-9 principles per project    (LLM consolidation)
  each with positiveRule  →  affirmative-only injection  (Pink Elephant fix)
29 config entries      →  4-5 thematic summaries        (LLM consolidation)
21,800 chars raw data  →  6,200 chars injected           (71% reduction)

Demo

  1. Session 1: Claude uses port 3000 — user corrects it to 8080

  2. Stop Hook: wasurenagusa auto-analyzes the conversation and records the mistake

  3. Session 2: Claude correctly uses port 8080 without being told


Why wasurenagusa

Most memory tools store what happened. wasurenagusa teaches your AI why things went wrong — and ensures it never repeats the same mistake.

It's not a memory bank. It's a learning system.

wasurenagusa

claude-mem

mcp-memory-service

CLAUDE.md

Auto-detect mistakes

Yes (retry + sentiment)

No

No

No

Auto-consolidate (LLM)

Yes (dont→principles, config→themes)

No

Yes (decay-based)

No

Vector semantic search

Yes (local inference, offline)

Yes (ChromaDB)

Yes (SQLite-vec / ChromaDB)

No

Memory tiers (short/mid/long)

Yes (cosine distance thresholds)

No

No

No

Auto-promotion (intensity)

Yes (access count → intensity 5)

No

No

No

Zero-effort via hooks

Yes

Yes

Partial

No

Human-readable storage

No (SQLite — auto-migrated from v1 Markdown)

No (SQLite)

No (SQLite-vec)

Yes

Multi-LLM support

Gemini / OpenAI / Anthropic (embedding is local — no API key needed)

Claude only

Local (MiniLM-L6-v2)

N/A

Token-efficient retrieval

Yes (index → detail, 70-90% savings)

Yes (3-layer)

N/A

No

Cross-project memory

Yes (top 5 active projects)

No

No

No

License

MIT

AGPL-3.0

Apache-2.0

N/A


How It Works

Session Start (Hook) — injection mode
  → Checks if consolidation is stale
  → Spawns background LLM worker if needed (non-blocking)
  → Spawns background embedding backfill worker (non-blocking)
  → Injects consolidated config + principles (layer 1) + recent 30-day entries (layer 2) + owner profile
  → Vector search injects semantically related short-term memories (layer 3)
  → Cross-project vector search injects related memories from other active projects (layer 4)
  → Only customized settings injected (defaults stripped)

Session Start (Hook) — agent mode
  → Injects dont summary + config index + owner profile (minimal footprint)
  → No vector search at startup (deferred to on-demand recall)

User Prompt (Hook) — agent mode
  → Injects 1-line reminder: "search memory if relevant"
  → Main agent spawns memory-recall sub-agent as needed
  → Sub-agent runs memory_search → returns summary only (no raw data in main context)
  → Survives compaction (re-injected on every user message)

During Session
  → memory_save auto-generates embedding via local inference (no API call)
  → memory_save enriches tags with LLM-assigned weights (0.0-1.0) (when API key available)
  → Theme shift triggers background re-tagging of related past entries
  → memory_search merges keyword + vector semantic + tag-weighted results
  → Vector hits increment access counts → auto-promote to intensity 5 at threshold

Session End (Hook)
  → LLM analyzes the conversation
  → Detects mistakes, frustration, retry patterns
  → Auto-saves lessons learned (with embedding)
  → Deduplicates against existing entries before saving
  → Updates active projects tracker (top 5 recent projects)

Background (async workers)
  → Consolidates "dont" entries → behavioral principles
  → Consolidates "config" entries → thematic summaries
  → Backfills embeddings for entries created before vector layer (20/run)
  → Results used in next session start

Quick Start

💡 Recommended: Paste this README into Claude Code and ask it to set up wasurenagusa for you. It'll handle everything below automatically.

Prerequisites

  • Node.js 18+

  • Claude Code (CLI)

  • No external API key required for core memory features (embedding runs locally)

  • Optional: API key for LLM consolidation/analysis — Gemini / OpenAI / Anthropic

1. Install

npm install -g wasurenagusa-mcp

Or from source:

git clone https://github.com/tsutushi0628/wasurenagusa-mcp.git
cd wasurenagusa-mcp
npm install && npm run build
npm link

npm run build automatically runs chmod +x on CLI entry points. No manual permission setup needed.

2. Configure

Create ~/.wasurenagusa/.env:

# Set at least one API key
GEMINI_API_KEY=your-key-here
# OPENAI_API_KEY=your-key-here
# ANTHROPIC_API_KEY=your-key-here

Variable

Required

Description

GEMINI_API_KEY

One of three

Google Gemini API key

OPENAI_API_KEY

One of three

OpenAI API key

ANTHROPIC_API_KEY

One of three

Anthropic API key

LLM_PROVIDER

No

gemini (default), openai, or anthropic

LLM_MODEL

No

Override the default model for your provider

MEMORY_DIR

No

Memory directory (default: .wasurenagusa)

MAX_ENTRIES_PER_CATEGORY

No

Entry limit per category before auto-archiving (default: 100)

LOG_RETENTION_DAYS

No

Log retention period in days (default: 30)

SLACK_WEBHOOK_URL

No

Slack notifications for autonomous tasks

3. Register MCP Server

claude mcp add wasurenagusa -- wasurenagusa-mcp

4. Set Up Hooks

⚠️ Required — Without this step, memory is never injected at session start. This is the most commonly missed setup step.

Add to ~/.claude/settings.json (or settings.local.json if you prefer to keep hooks separate):

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "wasurenagusa-context",
            "timeout": 5
          }
        ]
      }
    ],
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "wasurenagusa-context",
            "timeout": 5
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "wasurenagusa-analyze",
            "timeout": 30
          }
        ]
      }
    ],
    "PreCompact": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "wasurenagusa-context",
            "timeout": 15
          }
        ]
      }
    ]
  }
}

5. Start Using

Launch Claude Code. That's it.

  • First session: .wasurenagusa/ directory is created automatically

  • After first conversation: Stop Hook analyzes and saves important context

  • Second session onward: accumulated wisdom is auto-injected at start

Add .wasurenagusa/ to your .gitignore — it contains project-specific memory data.


Memory Categories

Category

What it stores

File

config

API URLs, ports, auth locations

memory.db

dont

Mistakes, anti-patterns, user frustrations

memory.db

decision

Architecture decisions, tech choices

memory.db

log

Implementation records, resolved errors

memory.db

snippet

Frequently used commands & queries

memory.db


MCP Tools

Tool

Description

memory_get_context

Get config + consolidated principles (auto-called at session start)

memory_search

Lightweight index search (ID, title, tags only). Use project: "active" for cross-project search

memory_get_detail

Get full detail by ID(s)

memory_save

Save a memory entry explicitly

memory_stash

Temporarily stash memories to save context window space

memory_restore

Restore previously stashed memories back into active context

memory_delete

Delete entries by ID

task_submit

Submit an autonomous task for 24/7 execution

task_status

Check task execution status

task_action_list

List and manage pending human actions

project_init

Initialize project quality standards


CLI Commands

Command

Purpose

Invoked by

wasurenagusa-context

Output config + dont + vector memories to stdout

SessionStart / UserPromptSubmit / PreCompact Hook

wasurenagusa-analyze

LLM-analyze conversation and auto-save

Stop Hook

wasurenagusa-backfill

Generate embeddings for entries without vectors

Background (auto-spawned)

wasurenagusa-rebuild

Repair corrupted memory data (dedup, re-sort logs)

Manual

wasurenagusa-spec-update

Auto-update spec documents

cron / systemd timer

wasurenagusa-consolidate-all

Run consolidation across all active projects

Manual / Scheduler

wasurenagusa-scheduler

Install/uninstall/status nightly consolidation scheduler

Manual


Output Mode

wasurenagusa supports two output modes for the SessionStart Hook, configurable per project via .wasurenagusa/config.json.

Mode

Description

Best for

injection (default)

Injects full memory text at session start

Environments without sub-agents (Cursor, Windsurf, etc.)

agent

Injects minimal index at session start + memory-recall reminder on each user message. Details retrieved on-demand via sub-agents

Claude Code + Agent Teams

Configuration

Add outputMode to your project's .wasurenagusa/config.json:

{
  "outputMode": "agent"
}

If the file doesn't exist or outputMode is not set, the default is "injection" (full backward compatibility).

When using "agent" mode with Claude Code Agent Teams, add these rules to your project's CLAUDE.md:

- Read/write memories via sub-agents (memory_search / memory_get_detail / memory_save)
- Do not bring raw memory data into the main context
- When system-reminder suggests memory recall, spawn a sub-agent to run memory_search and return summary only

Advanced Features

Vector Memory Tiers

wasurenagusa introduces a biologically-inspired memory system powered by local embeddings. Every memory is converted to a 384-dimensional vector, enabling meaning-based retrieval that goes far beyond keyword matching.

Three-tier architecture with cosine distance thresholds:

Tier

Threshold

Use case

Short-term

≤ 0.2

Highly relevant — auto-injected at session start

Medium-term

≤ 0.45

Contextually related — surfaced during memory_search

Long-term

≤ 0.7

Loosely related — discoverable but not proactively shown

Automatic promotion: Every time a memory is retrieved via vector search, its access count increments. After 5 retrievals, the memory auto-promotes to intensity: 5 — ensuring frequently-needed knowledge gets maximum weight in consolidation. Long-dormant memories can be "woken up" by relevance and eventually earn top intensity through repeated access.

How it works:

memory_save
  → Text → local inference (Hugging Face Transformers) → embedding → SQLite (sqlite-vec)

memory_search "authentication setup"
  → Full-text search (FTS5, Japanese support) ─┐
  → Embed query → vector similarity search     ─┤→ merge, deduplicate → results
                                                └→ increment access count
                                                   → auto-promote if threshold met

SessionStart Hook
  → Embed project name → short-tier search → inject related memories

No external API required — embeddings are generated locally via @huggingface/transformers. Data is stored in SQLite with sqlite-vec for vector indexing. Works completely offline.

Automatic migration from v1 — existing Markdown-based memory files are automatically migrated to SQLite on first run. No manual steps required.

Smart Tag Retrieval

Smart Tag Retrieval improves search precision through three mechanisms — without ever deleting or forgetting data:

  1. Weighted tag enrichment at save time — When you save a memory, the LLM generates descriptive tags and assigns each a weight (0.0-1.0). Concrete facts like port numbers or API endpoints receive high weights; generic categories receive low weights.

  2. Background re-tagging on theme shift — When a new topic is detected, a background worker updates tags on related past entries so they stay discoverable under the new context.

  3. Composite scoring — Search results are ranked by a blend of freshness, tag weight, and access frequency — surfacing the most relevant memories first.

All memories are preserved at full fidelity. Smart Tag Retrieval only optimizes retrieval priority, never discards data.

Cross-Project Memory

wasurenagusa automatically tracks your top 5 most recently used projects and searches across their memories for relevant context.

How it works:

  1. Stop Hook records each project session in ~/.wasurenagusa/scheduler/active-projects.json

  2. SessionStart searches other active projects' vector stores (short tier ≤ 0.2, high-relevance only)

  3. memory_search with project: "active" searches across all active projects (keyword + vector)

Example: You're working on project-a and previously discussed authentication in project-b. When you start a session in project-a and the topic is related, wasurenagusa automatically surfaces the relevant auth memories from project-b.

No configuration needed — works automatically after two or more projects have been used.

LLM Consolidation

When memory entries accumulate, the LLM automatically compresses them into compact summaries:

  • Dont entries → 5-9 behavioral principles scored by sourceCount × maxIntensity. Each principle includes both the original rule (❌→💡→✅ format) and a positiveRule (affirmative-only phrasing). The positiveRule is injected by default — research on the Pink Elephant problem shows LLMs struggle with negation in instructions.

  • Config entries → 4-5 thematic summaries (e.g., 29 entries → 5 themes preserving all ports, paths, URLs)

Consolidation runs as a detached background process during session start, and optionally as a nightly scheduled job (2:00 AM). Results are cached as JSON and used from the next session onward. Staleness is detected by comparing file modification times and entry counts.

Raw entries are always preserved. The consolidated version is injected at session start; original entries remain searchable via memory_search.

Positive Rule Conversion

Every consolidated principle stores two forms:

Field

Format

Purpose

rule

❌ Bad pattern → 💡 Why it's bad → ✅ Correct behavior

Full context for memory_get_detail

positiveRule

Affirmative-only action statement ("do X", "use Y")

Injected into LLM context

Why? LLM attention mechanisms activate concepts mentioned in negations — "don't use innerHTML" still activates "innerHTML." Affirmative instructions ("use textContent") activate only the desired behavior. The raw user feedback (dont.md) is preserved unchanged; conversion happens only at the consolidation layer.

Memory Intensity (1-5)

Every dont entry carries an intensity score (1-5) representing the severity of the lesson:

Intensity

Meaning

Example

5

Rage / resignation — user nearly gave up

"I told you 10 times, STOP doing this"

4

Strong frustration — explicit anger

"No! Don't do that!"

3

Clear correction — firm but calm

"That's wrong, do it this way"

2

Mild note — gentle guidance

"Next time, prefer X over Y"

1

Suggestion — informational

"FYI, we usually do it like this"

Auto-detection: The LLM analyzes user messages for emotional signals (exclamation marks, strong language, repeated corrections) and assigns intensity automatically. Conversation metadata (turns since last positive feedback, message length ratio) provides additional boost signals.

Manual override: Pass intensity: N to memory_save to set or adjust the score.

Scoring formula: During consolidation, each principle gets score = sourceCount × maxIntensity. Principles are sorted by score descending — frequently repeated, high-anger lessons appear first with stronger wording.

Auto-Archiving

Each memory category has an entry limit (default: 100). When exceeded, oldest entries are automatically moved to archive files (*-archive.md). Logs have separate 30-day rotation. Your data is never deleted — just moved out of the active search path.

Sentiment Detection

Detects user frustration through text patterns, message length changes, and absence of positive signals. Records what went wrong, why, and what to do instead.

Autonomous Tasks

Submit tasks via task_submit and wasurenagusa runs them using Claude CLI as a subprocess. The LLM evaluates completion conditions and retries if needed. Useful for spec updates, refactoring, and test generation.

Owner Profile

On first run, an owner-profile.md template is generated. Fill it in to teach the AI your decision-making preferences for autonomous task execution.

Only sections you've actually customized are injected — default selections and empty fields are automatically stripped, keeping injection minimal.

Nightly Consolidation Scheduler

Instead of only consolidating at session start, you can schedule nightly consolidation across all active projects — like "sleeping on it overnight."

# Install (macOS: launchd, Linux: crontab)
wasurenagusa-scheduler install

# Check status
wasurenagusa-scheduler status

# Remove
wasurenagusa-scheduler uninstall

Runs daily at 2:00 AM, consolidating dont and config entries for all recently active projects. This ensures your AI starts every morning with freshly organized principles, even if you never close your sessions.


Current Limitations

  • Claude Code only — Hook-based auto-injection requires Claude Code. The MCP server itself works with any MCP-compatible client, but without auto-injection.


Design Philosophy

  • Autonomous by default, manual by choice — Hooks automate everything. Manual tools exist but are optional.

  • Context-efficient — LLM consolidation + smart filtering achieves 71% injection reduction. Two-stage retrieval (index then detail) further reduces on-demand consumption.

  • SQLite storage — All memory stored in SQLite with sqlite-vec for vector indexing. Auto-migrated from v1 Markdown format.

  • Externalized prompts — LLM prompts live in prompts/ as plain text. Iterate without rebuilding.


Development

npm run build        # Compile TypeScript
npm test             # Run tests
npm run test:watch   # Watch mode

License

MIT


Japanese README (日本語)

Available Tools

10 tools
memory_deleteA

メモリエントリを削除する。memory_searchで取得したIDを指定して削除。 複数IDを一括指定可能。カテゴリをまたいだ削除もOK。

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes削除したいエントリのID配列

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It mentions cross-category deletion scope and bulk capability, but fails to mention whether deletion is permanent, if there are permission requirements, or error handling behavior when IDs don't exist.

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?

Four compact sentences with zero waste: action definition, ID source requirement, bulk capability, and scope flexibility. Information is front-loaded with the core action first, followed by constraints and capabilities.

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 single-parameter deletion tool without output schema, the description adequately covers the operational workflow (search-then-delete) and key behavioral constraints (bulk, cross-category). Minor gap in not describing the operation's result or permanent nature, but sufficient for correct invocation.

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

Parameters4/5

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

While the schema has 100% coverage (baseline 3), the description adds valuable semantic context by specifying that IDs come from 'memory_search' (workflow prerequisite) and explicitly noting that multiple IDs can be bulk-specified, reinforcing the array nature of the 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?

The description explicitly states 'メモリエントリを削除する' (Delete memory entries), providing a specific verb and resource. It clearly distinguishes this as the sole deletion tool among siblings (memory_save, memory_search, memory_update_intensity, etc.).

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

Usage Guidelines4/5

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

The description provides clear workflow guidance by specifying that IDs should be obtained from 'memory_search' first. It also notes bulk and cross-category deletion capabilities. However, it lacks explicit 'when not to use' guidance or mention of alternatives like memory_update_intensity for partial modifications.

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

memory_get_contextA

config(設定情報)とdont(やってはいけないこと)を一括取得する。 通常はSessionStart Hookで自動注入されるため、手動で呼ぶ必要は少ない。 セッション途中でコンテキストを再確認したい場合に使用。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully conveys the SessionStart Hook injection pattern, which is critical operational context. However, it lacks explicit statements about read-only safety, idempotency, caching behavior, or the structure of the returned config/dont data, leaving gaps in the safety/behavioral profile.

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 sentences with zero waste: (1) function definition, (2) automatic usage pattern/warning, (3) exceptional manual usage case. The logical flow moves from what it does, to the common case (don't use), to the edge case (do use). Japanese text is economical and every clause 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?

For a zero-parameter retrieval tool, the description adequately covers the operational context (hook injection) and identifies the returned data categories (config and dont). However, given the absence of annotations and output schema, it could be improved by explicitly confirming the read-only nature of the operation or describing the return format structure.

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 input schema contains zero parameters (empty object). According to calibration rules, zero parameters establishes a baseline score of 4. The description correctly does not invent parameter documentation where none exist, and the 100% schema coverage is vacuously satisfied.

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 explicitly states the tool performs batch retrieval ('一括取得') of specific resources: 'config' (configuration) and 'dont' (constraints/things not to do). It clarifies what 'context' means in this domain, effectively distinguishing it from siblings like memory_get_detail or memory_search which likely operate on specific memories rather than system context.

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

Usage Guidelines5/5

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

Provides explicit usage guidance: it states when NOT to use the tool ('通常はSessionStart Hookで自動注入されるため、手動で呼ぶ必要は少ない' - rarely needed manually because it's auto-injected at session start) and specifically when TO use it ('セッション途中でコンテキストを再確認したい場合' - when reconfirming context mid-session). This clear conditional guidance prevents unnecessary invocations.

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

memory_get_detailA

memory_search で取得したIDを指定して、メモリのフル詳細を取得する。 複数IDを一括指定可能。必要なものだけ取得してトークンを節約すること。

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes取得したいメモリエントリのID配列

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses batch capability ('複数IDを一括指定可能') and cost implications (token saving). However, lacks disclosure of error behavior (what happens if ID not found), idempotency, or safety characteristics beyond the implicit 'get' operation.

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?

Extremely concise with two efficient sentences. First sentence establishes purpose and batch capability; second provides optimization guidance. Zero redundancy, front-loaded with essential workflow information.

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

Completeness4/5

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

Given the tool's simplicity (1 parameter, no nested objects, 100% schema coverage), the description is appropriately complete. It explains the integration with memory_search (sibling tool) and batch behavior. Minor gap regarding error handling or return value description, but acceptable without output schema.

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%, establishing baseline 3. Description adds valuable semantic context that IDs should come specifically from memory_search (not arbitrary sources) and emphasizes batch retrieval capability, enriching the 'ids' parameter meaning beyond the schema's basic type description.

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 retrieves 'full details' (フル詳細) of memories using IDs, with specific verb+resource. It distinguishes from sibling memory_search by explicitly stating this tool requires IDs obtained from memory_search, establishing a clear workflow dependency.

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 prerequisite ('memory_search で取得したIDを指定して'), guiding users to search first. Includes specific optimization guidance ('必要なものだけ取得してトークンを節約') for efficient usage. Lacks explicit 'when not to use' or named alternatives, though the workflow implication is clear.

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

memory_saveA

メモリを保存する。カテゴリ:

  • config: API URL、ポート、認証情報などの設定

  • dont: やってはいけないこと、過去のミス、ユーザーが怒ったこと、AIのリトライパターン

  • decision: 決定事項、採用した方針

  • log: 実装したこと、解決したエラー

  • snippet: よく使うコマンド、クエリ、便利スクリプト

titleには検索しやすい具体的な名詞を含めること。

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesメモリのカテゴリ
titleYes1行の要約タイトル(20文字以内推奨)。検索用の具体的な名詞を含める。例: 「本番API URL」「ログ未読への怒り」
contentYes保存する内容の詳細
tagsNo検索用タグ(オプション、最大5個)
scopeNoスコープ(オプション)。推奨候補: frontend, backend, infra, design, spec, ai, general。自由入力も可
intensityNo怒られ度(オプション、1〜10の整数)。1=提案, 2=軽い注意, 3=明確な指摘, 4=強い不満, 5=激怒・諦め。6以上は手動ピン留め用(数値が大きいほどcontext注入で優先される)。指定時はLLM自動判定より優先される

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It successfully discloses behavioral semantics of the intensity parameter (the 1-10 scale meaning from '提案' to '激怒') and category taxonomy, but omits operational details like idempotency, overwrite behavior for duplicate titles, or error conditions.

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?

Perfectly structured with the core action front-loaded, followed by a scannable bulleted category list with inline semantics, and closing with specific title guidance. No redundant text; 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 the 100% schema coverage and lack of output schema, the description is appropriately complete for a save operation. It comprehensively covers the categorical taxonomy and intensity semantics that the schema cannot express fully, though it could briefly mention whether the operation returns an ID or confirmation.

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?

While the input schema has 100% description coverage (baseline 3), the description adds significant semantic value by detailing what each enum value in 'category' represents (e.g., 'config: API URL、ポート、認証情報などの設定') and expanding the 'intensity' parameter with the full semantic scale of anger levels (1=提案 through 5=激怒).

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 the specific verb+resource 'メモリを保存する' (save memory) and immediately distinguishes this as the creation tool among CRUD siblings by enumerating the five distinct category types (config, dont, decision, log, snippet) that can be saved.

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 extensive contextual guidance on when to use each category (e.g., 'config' for API URLs/auth, 'dont' for past mistakes, 'snippet' for commands) and specific title formatting instructions. Lacks explicit comparison to sibling tools like memory_update_intensity or memory_delete.

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

memory_update_intensityA

既存メモリエントリのintensity(重要度)だけを変更する。 ピン留め運用に使う: intensity 6以上を設定するとcontext注入で最優先される。 memory_searchで取得したIDを指定すること。

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes更新対象エントリのID
intensityYes新しいintensity値(1〜10の整数)。6以上は手動ピン留め用

TDQS

A4.4/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. It discloses critical behavioral details: setting intensity 6+ results in 'highest priority in context injection' (context注入で最優先される), explaining the ranking mechanism. It also clarifies this is a partial update (only intensity). It does not mention error handling for invalid IDs or idempotency, but covers the key domain-specific behavior.

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 tightly structured sentences with zero waste: (1) purpose/scope, (2) usage mechanics and threshold behavior, (3) prerequisite workflow. Information is front-loaded and every sentence earns its place. Appropriate length for the tool's complexity.

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?

Complete for a simple 2-parameter update tool. It explains the domain concept (intensity/pinning), references the necessary sibling tool (memory_search) for the workflow, and describes the priority system's effect. No output schema exists, but the description does not need to explain return values for this type of operation.

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

Parameters4/5

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

Schema coverage is 100%, establishing a baseline of 3. The description adds workflow semantics beyond the schema: it specifies that the ID should come from memory_search (establishing tool chaining) and elaborates on the 'context injection priority' effect of the intensity parameter, which is not fully explained in the schema's description of the number range.

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

Purpose5/5

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

The description clearly states it 'only changes the intensity of existing memory entries' (既存メモリエントリのintensityだけを変更する), using a specific verb and resource. It explicitly distinguishes itself from creation tools like memory_save by emphasizing 'existing' entries and narrowing scope to 'only intensity'.

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 clear context for when to use: 'Used for pin operation' (ピン留め運用に使う) and specifies the prerequisite workflow 'Specify the ID obtained from memory_search' (memory_searchで取得したIDを指定すること). However, it does not explicitly state when NOT to use it (e.g., for creating new entries) or name alternatives like memory_save.

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

project_initA

プロジェクトの初期設定を行う。自律タスク実行のために、プロジェクトの品質基準・フェーズ・判断基準を登録する。

操作モード:

  • mode="generate": 選択式の質問リストを生成

  • mode="save": 回答をもとにプロジェクトメタ情報を保存

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes操作モード
projectNameYesプロジェクト名
projectPathNoプロジェクトの絶対パス(mode=save時に必須)
initialInfoNoプロジェクトの初期情報(mode=generate時、省略可)
answersNo質問への回答(mode=save時に必須)。キーは質問のkey、値は選択した回答

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool registers project metadata and saves meta-information, and mentions the autonomous execution context. However, it fails to specify critical operational details: whether 'save' mode is destructive (overwrites existing), idempotent, requires specific file permissions for projectPath, or what side effects occur (file creation vs database storage).

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 efficiently structured with a clear purpose statement followed by operation mode bullets. Every sentence serves a function: the first defines the action and target, the second explains the 'why' (autonomous execution), and the bullets clarify the mode parameter semantics. No redundancy or filler text.

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

Completeness3/5

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

Given the tool's complexity (5 parameters, nested objects, conditional requirements, two distinct operating modes) and lack of output schema, the description adequately explains the input workflow but omits critical details about return values (what does 'generate' return? what does 'save' return?) and error conditions. For an initialization tool, it should also address idempotency concerns.

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?

While the schema has 100% coverage documenting each parameter, the description adds valuable workflow context explaining that 'generate' produces questions and 'save' consumes those answers to create metadata. It clarifies the semantic relationship between the mode, answers, and initialInfo parameters beyond the schema's standalone descriptions, though it doesn't add syntax details.

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 performs 'initial project setup' (プロジェクトの初期設定を行う) and specifies exactly what gets registered: 'quality standards, phases, and decision criteria for autonomous task execution' (品質基準・フェーズ・判断基準を登録する). It effectively distinguishes from siblings like memory_* (memory management) and task_* (task execution) by focusing on project metadata initialization.

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

Usage Guidelines3/5

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

The description explains the two-mode workflow (generate vs save) and implies the sequence (generate questions first, then save based on answers). However, it lacks explicit guidance on when to use this versus task_submit or memory_save, and doesn't specify prerequisites or conditions where this tool should not be used (e.g., existing projects).

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

task_action_listA

人間アクションリストを管理する。AIが解決できなかったタスクの一覧表示と対応操作。

操作モード:

  • mode="list"(デフォルト): アクションリストを表示

  • mode="resolve": タスクに対応(action: "retry"=再実行, "complete"=手動解決済み, "cancel"=対応不要)

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo操作モード(デフォルト: list)
taskIdNo対応するタスクID(mode=resolve時に必須)
actionNo対応アクション(mode=resolve時に必須)

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It successfully explains the semantics of actions (retry=re-execute, complete=manual resolution, cancel=no action needed) and conditional requirements, but lacks disclosure of side effects, return values, or safety profile (e.g., whether resolve operations are reversible).

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 optimally structured with a clear purpose statement followed by an 'Operation modes' section that efficiently delineates the two modes and their associated actions. Every sentence earns its place with zero redundancy.

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

Completeness3/5

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

Given the absence of an output schema and annotations, the description adequately covers the input parameters and operational modes but fails to describe what the 'list' mode returns or the success/failure behavior of the 'resolve' mode, leaving gaps in contextual completeness for a tool handling task lifecycle operations.

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?

While the schema has 100% coverage, the description adds significant value by explaining the operational semantics of enum values (e.g., clarifying that 'complete' means manually resolved and 'cancel' means no action needed) and explicitly noting conditional requirements for taskId and action that are not enforced in the schema's required fields.

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

Purpose5/5

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

The description clearly states it manages 'human action lists' specifically for 'tasks AI could not resolve' (AIが解決できなかったタスク), using specific verbs (管理する, 一覧表示, 対応操作). This effectively distinguishes it from siblings like task_submit (new tasks) and task_status (monitoring).

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 clear operational guidance through the two-mode structure (list vs resolve) and explains when each parameter is required (mode=resolve時に必須). However, it does not explicitly contrast with sibling tools like task_submit to clarify when to escalate to human action versus initial submission.

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

task_statusA

自律タスクの状態サマリを返す。pending/in-progress/completed/failed/human-required/cancelledの件数と直近20件のタスク一覧を表示。

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoプロジェクト名でフィルタ(省略時は全プロジェクト)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable context about pagination (20-item limit) and specific status taxonomy, but does not explicitly state safety characteristics (read-only nature) or error handling, leaving gaps an annotation would normally cover.

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 a single, dense sentence that front-loads the core function (returning status summaries) and efficiently packs in specific status values and result limits with zero 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?

Despite lacking an output schema, the description adequately compensates by detailing the return structure (count metrics + task list). For a single-parameter read operation, this provides sufficient completeness, though explicit safety confirmation would strengthen it further.

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%, documenting the optional 'project' filter parameter fully. The description does not mention the parameter, but since the schema is self-explanatory, it meets the baseline expectation without adding redundant information.

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 returns a status summary (状態サマリ) of autonomous tasks, specifying exact status categories (pending/in-progress/completed/failed/human-required/cancelled) and output format (counts + recent 20 items), effectively distinguishing it from sibling tools like task_submit (submission) and task_action_list (action listing).

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?

While the description implies usage context by detailing the output (status counts and recent tasks), suggesting it's for status overview/monitoring, it lacks explicit guidance on when to use this versus task_action_list or task_submit, and contains no 'when-not-to-use' exclusions.

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

task_submitA

自律タスクを投入する。AIが24/365で自動実行し、完了条件を満たすまでリトライする。

投入する4項目:

  • why: なぜやるか(背景・目的)

  • what: どんな体験/行動変容を与えたいか

  • done: 完了条件(機械検証可能な基準。例: "npx tsc通過 + vitest全パス")

  • project: プロジェクト名

ParametersJSON Schema
NameRequiredDescriptionDefault
whyYesなぜやるか(背景・目的)
whatYesどんな体験/行動変容を与えたいか
doneYes完了条件(機械検証可能な基準)
projectYesプロジェクト名

TDQS

A4.4/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 and successfully discloses critical behavioral traits: continuous execution (24/365), automatic retry logic, and completion-based termination. It could be strengthened by mentioning failure modes (e.g., max retry limits) or return values, but the execution model disclosure is substantial.

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?

Extremely efficient structure: one sentence for purpose/behavior, a header '投入する4項目:', then four bullet-style parameter definitions. Every line earns its place. The critical behavioral information (24/365, retry) is front-loaded before parameter details.

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 4-parameter flat schema with no output schema, the description adequately covers operational context. It explains what happens after invocation (AI takes over execution). Minor gap: doesn't describe the return value (likely a task ID) or how to reference the task later, though sibling tools suggest this functionality exists.

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%, establishing a baseline of 3. The description adds significant value by providing a concrete, syntax-rich example for the 'done' parameter: '例: "npx tsc通過 + vitest全パス"'. This example clarifies expected machine-verifiable formats beyond the schema's abstract description.

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 '自律タスクを投入する' (submit autonomous tasks) and immediately clarifies the unique execution model: 'AIが24/365で自動実行し、完了条件を満たすまでリトライする' (AI executes automatically 24/365, retrying until completion conditions are met). This specific verb+resource+behavioral scope clearly distinguishes it from siblings like task_status (query) or memory_save (storage).

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 24/365 auto-execution and retry behavior implicitly signals when to use this (for persistent background tasks) versus one-shot operations. While it doesn't explicitly name alternatives like 'use task_status to monitor progress,' the operational model is distinct enough to guide selection. Lacks explicit 'when not to use' guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.15.0
    • First observedmemory_delete
    • First observedmemory_get_context
    • First observedmemory_get_detail
    • First observedmemory_save
    • First observedmemory_search
    • First observedmemory_update_intensity
    • First observedproject_init
    • First observedtask_action_list
    • First observedtask_status
    • First observedtask_submit

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between memory_get_context and memory_get_detail, as both retrieve memory information. However, memory_get_context focuses on config and dont categories specifically, while memory_get_detail retrieves full details for any memory entry, which helps differentiate them. The other tools like memory_search, memory_save, and task-related tools are clearly distinct in their functions.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern throughout, such as memory_delete, memory_get_context, and task_submit. All tools use snake_case, which is uniform. The only minor deviation is project_init, which fits the pattern but stands out slightly as it doesn't start with a memory or task prefix, though it's still consistent in structure.

Tool Count5/5

With 10 tools, the count is well-scoped for the server's purpose, which appears to be memory management and task automation. This number allows for comprehensive coverage without being overwhelming, including operations for memory CRUD, context retrieval, and task lifecycle management, making it efficient for agents to handle.

Completeness4/5

The tool set provides good coverage for memory operations (save, search, get, delete, update) and task management (init, action list, status, submit), but there are minor gaps. For example, there's no tool for updating memory content beyond intensity, and task operations lack direct update or delete functions, though agents might work around this with existing tools like task_action_list for resolution.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A self-hosted MCP server that provides AI assistants with a shared, persistent SQLite-backed memory for storing and retrieving project context, decisions, and discoveries. It enables cross-session continuity and team-wide knowledge sharing to keep AI coding tools aligned and informed.
    3
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    An MCP server that gives AI assistants persistent memory across sessions. It stores project context, decisions, and progress in structured markdown files as well as a knowledge graph and sequential thinking for better memory storage.
    36
    29
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A local MCP server that gives AI assistants a long-term memory by capturing sessions verbatim and surfacing relevant context automatically.
    15
    872
    MIT