Skip to main content
Glama

global-memory — cross-client global memory for AI instruction presets

English | 简体中文

Tell an AI a reusable requirement once ("always use a formal tone in emails", "write commit messages in English"), confirm it, and it is stored for the long term. From then on, every connected AI tool (Claude Code / Claude Desktop / Codex CLI / Gemini CLI) recalls it automatically by scope — and a trust curve decides whether to ask you again before applying it.

Unlike "fact memory" products such as OpenMemory, this stores behavioral constraints you place on the AI. The core promise is control: nothing is saved without your confirmation, presets can be confirmed before they apply, every action leaves a visible trace, and everything can be uninstalled in one command. The full design is in DESIGN.md (Chinese).

  • What it is: an MCP server (stdio) + a management CLI + a local web admin

  • Runtime: Node ESM, no build step; all dependencies are pinned inside the project directory (./pixi + node_modules) — nothing is installed system-wide

  • Memory data: ~/.global-memory/memories.json (outside the repo, shared by all clients)

  • Platform: currently verified on macOS (Apple Silicon) only — pixi.toml targets osx-arm64 and consent dialogs use osascript; other platforms fall back to in-conversation confirmation

  • Language: CLI output, dialogs, the web admin, and the generated SKILL.md are currently in Chinese


Quick start

git clone https://github.com/chy4pro/global-memory-mcp.git
cd global-memory-mcp
./pixi install && ./pixi run setup    # project-local Node + npm deps (pixi bootstraps itself into ./.pixi-home on first run)
./bin/global-memory setup --dry-run   # preview which files would be written
./bin/global-memory setup             # connect every detected AI tool on this machine
./bin/global-memory status            # show integration status

setup only touches clients it detects, and does four things (all backed up, marked, idempotent, and reversible):

  1. MCP registration: writes each tool's config (Claude Code ~/.claude.json, Claude Desktop claude_desktop_config.json, Codex ~/.codex/config.toml, Gemini ~/.gemini/settings.json), all pointing at bin/global-memory (a self-contained launcher that uses the project-local Node). An existing same-named entry written by someone else is skipped, never overwritten

  2. Skill links: the canonical workflow SKILL.md lives only in ~/.global-memory/skills/global-memory/; each tool's skills directory gets a symlink — edit once, every tool picks it up (falls back to a version-marked copy if symlinks fail)

  3. L1 hook (Claude Code): a SessionStart hook in ~/.claude/settings.json deterministically injects applicable presets

  4. L2 standing instructions (Codex/Gemini): a marked section appended to AGENTS.md / GEMINI.md

Original files are backed up with timestamps to ~/.global-memory/backups/ before any change. Afterwards, whenever a client launches the server it self-heals: it restores a missing canonical skill / skill link, hook, or instruction section — but never touches MCP registration.

The configs store the launcher's absolute path. If you move the repository, run uninstall and then setup again.

Related MCP server: House Rules

How it works

  • Recall: at the start of a task the AI calls recall_presets (with the project name and task type). Presets not yet due for review apply directly; due ones go through the consent broker:

    • Local macOS session: due presets are merged into one checklist dialog (all pre-selected, at most 8 per dialog; unchecking = rejecting that preset; "hand over to chat" = handle them one by one in the conversation; after 60 s of no input each preset is resolved by its unattended_policy). If only one preset is due, a single confirm dialog with a 45 s countdown is used instead

    • Non-macOS, SSH sessions, or GLOBAL_MEMORY_CONSENT=conversation: falls back to one-by-one confirmation in the conversation; the AI reports results via record_usage

    • The outcome is announced in a one-line user_notice (composed by the server, relayed verbatim by the model); nothing is shown when there is nothing to report

  • Unattended: mode=unattended (scheduled jobs, etc.) never shows dialogs and resolves by unattended_policyapply / skip / by_trust (apply if harmless or trust ≥ L2, otherwise skip); always_ask presets are never auto-applied. Unattended decisions go into a pending re-confirmation backlog

  • Risk tiers: each preset has a risk tier — harmless (preferences with no bad outcome, e.g. language/format: confirmed once when saved, never prompts again) / normal (default, follows the trust curve) / sensitive (destructive operations, security, credentials: never batched, always a single dedicated confirmation). The AI proposes the tier at save time and you approve it together with the save

  • Trust curve: a fixed, explainable ladder — L0 asks every time → L1 review after 1 auto-apply → L2 after 3 → L3 after 7 days → L4 after 30 days → L5 after 90 days (cap). An explicit confirmation moves up one level; a rejection or override halves the level; silence is not consent — unattended applications never advance the curve. confirm_policy can pin a preset to always_ask / always_auto

  • Saving: the AI spots a durable requirement → proposes a scope (global / project / task type + free-form category) → you confirm → it is stored (on the dialog channel the server shows its own confirmation dialog as a guarantee; rejection or timeout means it is not saved). Duplicates are detected automatically, and existing presets in the same scope are returned so the AI can check for contradictions

  • Correction: when you override an applied preset on the spot, the AI must point it out and diagnose with one question — one-off exception / scope too broad / outdated / badly worded — and handle each case accordingly

  • Management: say "show / tidy up my memories" to the AI — browse, search, edit, disable, delete, and deep consolidation (semantic de-duplication / disabling stale presets / clustering presets into a dedicated skill)

  • SessionStart injection (Claude Code): the hook runs global-memory recall-context, uses the current directory name as the project name, and lists applicable presets plus the pending re-confirmation count — informational only, no dialogs, no usage counting

MCP tools

Tool

Purpose

recall_presets

Recall and resolve applicable presets (applied / skipped / pending_confirmation / backlog / suggestions)

record_usage

Report confirmation results gathered in conversation (confirmed / rejected / overridden)

save_requirement

Save a durable requirement the user has confirmed

list_memories / update_memory / delete_memory

Browse, edit, delete

memory_overview

Statistics and health checks

start_consolidation / apply_consolidation

Deep consolidation: produce proposals → apply atomically after user approval

Configuration (environment variables)

Variable

Effect

GLOBAL_MEMORY_CONSENT

auto (default: dialogs on a local macOS session, conversation otherwise) / dialog / conversation (if you dislike pop-ups)

GLOBAL_MEMORY_BATCH_CAP

Max presets per checklist dialog (default 8 — an attention budget)

GLOBAL_MEMORY_NO_AUTO_SYNC=1

Disable self-healing on server start

GLOBAL_MEMORY_DIR

Data directory (default ~/.global-memory)

GLOBAL_MEMORY_AI

Pin the AI provider: claude / codex / gemini (auto-detected by default)

GLOBAL_MEMORY_RAW_DIR

Output directory for extract-raw (default <repo>/raw-memories)

GLOBAL_MEMORY_HOME

Fake HOME from which all client paths are derived (for tests)

Memory migration and built-in AI features

The tool can call the AI CLIs already installed on your machine (claude / codex / gemini — auto-detected, falls back to the next on failure, no API key needed):

./bin/global-memory extract-raw [--clean]  # collect memories from every local AI tool → raw-memories/ (with provenance)
./bin/global-memory distill                # have an AI distill raw memories into presets, then review repeatedly until clean
./bin/global-memory web [port]             # web admin, default http://127.0.0.1:7777

extract-raw details:

  • Memory sources: Claude Code user-level CLAUDE.md and per-project memory/, Codex AGENTS.md, Gemini GEMINI.md (this tool's own marked sections stripped), and this tool's existing preset store

  • Full transcripts are copied verbatim (no provenance header, so the formats stay valid; they are not fed into distill or search): Claude Code session jsonl, Codex sessions/ rollouts + history.jsonl, Gemini tmp/<project>/chats/session-* + logs.json

  • Codex / Gemini sources are allow-listed, so credential files such as auth.json and oauth_creds.json are not copied; however ~/.hermes and ~/.openclaw/memory (if present) are collected as whole directories — every md/txt/json file under 1 MB — without credential filtering

  • Claude Desktop chats live in the cloud; there is no local plaintext to extract

⚠️ raw-memories/ is a plaintext copy of your local AI memories and full conversation transcripts. It is excluded in .gitignore — never commit or share it.

Presets produced by distill always start at L0 trust — you are still asked the first time each one is used; AI consolidation never bypasses consent.

Web admin (zero-dependency node:http, listens on 127.0.0.1 only): statistics and health checks, search/filter, enable/disable/delete, risk-tier tags, plus AI management — give an instruction in natural language ("merge and tighten the communication presets"); the AI only produces proposals, and nothing runs until you approve them one by one or all at once. The Raw memories section at the bottom browses every extract-raw file read-only (grouped by source), with instant plain-text search (line excerpts + highlighting, no AI) and AI semantic search (relevant files + reasons; hallucinated paths are filtered out).

⚠️ The web admin has no login and no Origin/CSRF checks: while it is running, a malicious web page open in your browser could in theory send modifying requests to 127.0.0.1:7777. Stop it with Ctrl+C when you are done.

Command line

Install & maintain
  global-memory setup [--dry-run]                 connect local AI tools
  global-memory status                            show per-tool integration status
  global-memory uninstall [--dry-run] [--purge]   revert all writes (--purge also deletes memory data)

Manage the store (day to day, just tell the AI "manage memories")
  global-memory list [--all]                      list presets (--all includes disabled/archived)
  global-memory show <id>                         full JSON of one preset
  global-memory enable|disable <id>               enable / disable
  global-memory rm <id>                           delete
  global-memory stats | export | path             stats & health / export whole store as JSON / storage path

Migration & AI consolidation
  global-memory extract-raw [--clean] | distill | web [port]

Internal
  global-memory                                   start the MCP server (stdio)
  global-memory recall-context                    called by the Claude Code SessionStart hook

pixi tasks work too: ./pixi run serve, ./pixi run cli <subcommand>.

Client support

Client

MCP

Local skill

Recall guarantee

Claude Code (CLI / Desktop Code / IDE)

✓ symlink

SessionStart hook (deterministic)

Codex CLI

✓ symlink

AGENTS.md standing instructions

Gemini CLI

✓ symlink

GEMINI.md standing instructions

Claude Desktop (Chat mode)

✗ (platform limitation)

MCP server instructions as fallback

Data & privacy

All personal data lives outside the repo (except raw-memories/, which is git-ignored):

Location

Contents

~/.global-memory/memories.json

The preset store (JSON + file lock + atomic writes)

~/.global-memory/skills/global-memory/

Canonical SKILL.md

~/.global-memory/backups/

Timestamped backups taken by setup / uninstall before editing configs

Each client's config

MCP registration, skill symlink, hook, marked sections in AGENTS.md / GEMINI.md

<repo>/raw-memories/

extract-raw output (git-ignored)

Uninstall: ./bin/global-memory uninstall (removes only content marked as written by this tool; data is kept); --purge also deletes ~/.global-memory.

Development & testing

./pixi run test    # 45 tests: trust / store / consent / setup (fake HOME) / ai-pipeline (stub) / server (real stdio end-to-end) / web API

All tests use temporary directories (GLOBAL_MEMORY_DIR / GLOBAL_MEMORY_HOME / GLOBAL_MEMORY_RAW_DIR), and dialogs and AI calls are stubbed, so your real environment is never touched.

Design document (Chinese): DESIGN.md

Source map

File

Responsibility

src/cli.js

Entry point; no args = start the MCP server, subcommands = install / manage / migrate / web

src/server.js

MCP server + the 9 tool definitions; triggers self-heal on start

src/store.js

Storage: JSON + file lock + v1→v2 migration + scope matching + health heuristics + atomic consolidation

src/trust.js

Trust curve: ladder scheduling, confirm-to-promote / reject-to-halve, unattended resolution, system suggestions

src/consent.js

Consent broker: osascript single/checklist dialogs / conversation fallback / direct resolution

src/notice.js

user_notice text (composed by the server, relayed verbatim by the model)

src/clients.js

Client adapter matrix (detection / config / skills / hook paths)

src/setup.js

setup / status / uninstall / self-heal; backup-and-merge, no clobbering, idempotent

src/skill-template.js

Canonical SKILL.md content (four-duty skeleton + red lines) + version marker

src/extract.js

Enumerates local memory sources and extracts them into raw-memories/

src/ai.js

AI provider layer: detect/invoke local claude/codex/gemini CLIs, fallback, JSON parsing

src/distill.js

Consolidation engine: raw → AI distillation into the store → iterative review

src/web.js

Zero-dependency web admin (node:http, 127.0.0.1 only)

bin/global-memory

Self-contained launcher: runs the CLI with the project-local pixi Node

test/

Unit tests + fake-HOME install flow + AI pipeline stubs + real stdio end-to-end + web API

Roadmap (Phase 2+, not implemented yet)

npm release (configs switch to npx -y) | Linux/Windows dialogs | MCP sampling enhancements | guided graduation of presets into skills | BYOK scheduled consolidation | cloud sync / team sharing. See DESIGN.md §12.

License

MIT

Available Tools

9 tools
apply_consolidation落地整理提案A

原子地执行用户已确认的整理操作清单。仅限用户主导的管理场景。op: update(带 fields)/ delete / disable / archive(可带 note 注明去向)/ create(带 fields)。Atomically apply user-approved consolidation operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationsYes

TDQS

A3.6/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 does disclose atomicity ('原子地'/'Atomically') and enumerates the operation types (update/delete/disable/archive/create), which is meaningful. But it does not disclose the consequences of destructive ops (e.g., whether delete is irreversible or archive is restorable), error handling on partial failure, or response behavior—significant gaps for a mutation tool with zero annotation coverage.

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

Conciseness3/5

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

The description is compact but redundant: the first Chinese clause ('原子地执行用户已确认的整理操作清单') and the final English sentence ('Atomically apply user-approved consolidation operations') convey the same message twice, which wastes space. The op-semantics clause earns its place, but the bilingual duplication could be trimmed to a single canonical sentence.

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 batch mutation tool with five operation types, no output schema, and no annotations, the description covers purpose, atomicity, and op semantics but omits what happens on success or failure—particularly since the atomic guarantee makes rollback behavior relevant. A note on return values or error semantics would substantially improve completeness, though the essential usage contract is present.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does meaningfully. 'op: update(带 fields)/ delete / disable / archive(可带 note 注明去向)/ create(带 fields)' maps each op enum value to its associated parameters, clarifying that update and create require fields and archive accepts a note for destination. The id parameter and the structure of fields are left unexplained, but the op-to-parameter mapping adds real value beyond the bare schema.

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: 'Atomically apply user-approved consolidation operations' / '原子地执行用户已确认的整理操作清单' (atomically execute the user-confirmed consolidation operations list). The 'user-approved' qualifier hints at a distinction from the sibling start_consolidation, but it never names the sibling explicitly, so the differentiation is implicit rather than stated.

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 phrase '仅限用户主导的管理场景' (only for user-led management scenarios) plus '用户已确认' (user-confirmed) provides clear context about when the tool is appropriate: after the user has approved the operations. However, it does not explicitly name alternatives such as start_consolidation or state when-not-to-use conditions beyond the 'user-led only' constraint.

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

delete_memory删除记忆A

永久删除一条预设。必须先向用户复述内容并获明确确认;临时不用应改为 status=disabled。Permanently delete (confirm with user first; prefer disabling).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.3/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 warns that the action is permanent and requires explicit user confirmation first, which covers the most critical safety aspects of a destructive operation. It does not detail side effects or error behavior, but for a simple one-parameter delete this is acceptable.

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

Conciseness4/5

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

The description is short and front-loaded with the core action and safety requirement. The bilingual repetition is redundant but still compact, and the key usage guidance is easy to parse. It earns a high score for efficiency, with minor points off for duplicated content.

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 low complexity of a one-parameter delete with no output schema, the description covers the essential context: what the tool does, when to use it, and the critical confirmation requirement. It is complete enough for an agent to invoke it correctly, though it omits details about response or failure handling.

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 0% description coverage for the only parameter, id, so the description must compensate. It provides context by identifying the target as a '预设/preset', allowing the agent to infer that id identifies the preset to delete. However, it does not explicitly document the id parameter or any constraints, so compensation is only partial.

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 a specific action ('永久删除/Permanently delete') on a specific resource ('预设/preset') and distinguishes itself from mere updates by emphasizing permanence. It also implicitly separates this tool from update_memory by mentioning disabling as an alternative.

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?

The description gives explicit when-to-use and when-not-to-use guidance: permanent deletion only after user confirmation, and temporary disuse should be handled by setting status=disabled. This is actionable and points toward the alternative behavior without ambiguity.

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

list_memories查看/搜索记忆B

列出或搜索已保存的预设。所有过滤条件可选。List/search saved presets.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo在内容和分类中做关键词搜索
statusNo
projectNo
categoryNo
task_typeNo

TDQS

B3/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 behavioral burden. It communicates a non-mutating list/search action and notes that all filters are optional, but it does not state the default result when no filters are given, the scope of the search, or output/pagination behavior.

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

Conciseness3/5

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

The description is short and starts with the core action, but the Chinese and English halves largely restate each other ('列出或搜索已保存的预设' vs 'List/search saved presets'). It is minimal and not overly verbose, yet the duplication slightly undermines conciseness.

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?

For a tool with five optional parameters, no annotations, and no output schema, the description is too thin. It does not clarify how memories relate to presets, what each filter selects, or what the tool returns, leaving an agent with incomplete context for invocation.

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

Parameters2/5

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

Schema description coverage is only 20%: only query is documented in the schema. The description adds only 'all filters optional' and does not explain project, category, task_type, or status semantics, so it fails to compensate for the low schema coverage.

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 uses a specific verb and resource: 'list/search saved presets,' which clearly names the operation. It is weakened by a terminological mismatch: the tool name and title say 'memories' (记忆) while the description says 'presets' (预设), and it does not explicitly contrast itself with siblings like recall_presets or memory_overview.

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 phrase 'all filter conditions are optional' gives clear calling context (no required parameters), but there is no guidance on when to choose this tool over recall_presets or memory_overview. Usage is implied rather than explicitly scoped.

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

memory_overview记忆库总览A

统计 + 体检指标(疑似重复/陈旧候选/毕业候选簇/待补确认/上次整理时间)。用户说"看看我的记忆"时先调这个。Overview with health checks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral burden. It implies a read-only diagnostic via 'Overview with health checks' and enumerates returned metrics, but it never explicitly states that the tool has no side effects or will not mutate the memory store.

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 and front-loaded: the core statistics/health-check purpose comes first, followed by a clear invocation trigger and a concise English summary. Every part earns its place.

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 zero-parameter overview tool with no output schema, the description is complete: it provides the trigger phrase, states the tool's scope, and enumerates the returned health-check categories. An agent has what it needs to invoke and interpret the call.

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 zero parameters and the schema is already 100% covered by an empty properties object. There is no parameter information for the description to add, so the 0-parameter baseline of 4 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 identifies a diagnostic overview of the memory store: '统计 + 体检指标' and lists the health dimensions (suspect duplicates, stale candidates, graduated candidate clusters, pending confirmation, last organization time). This distinguishes it from list_memories and other sibling tools, making the resource and purpose unambiguous.

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 explicitly sets the trigger condition: '用户说"看看我的记忆"时先调这个', so an agent knows when to call it first. It does not state negative conditions or compare to siblings by name, but the provided context is enough.

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

recall_presets召回适用预设A

开始任务时调用,召回适用于当前上下文的预设并完成确认(服务器可能向用户弹系统确认框,等待返回即可)。返回终态:applied=已应用(照单执行)、skipped=不要应用、pending_confirmation=请在对话中逐条向用户确认(结果用 record_usage 回报)、backlog=待补确认(方便时向用户提及)、suggestions=单条转达的系统建议。返回的 user_notice 必须原样转述给用户。Recall and resolve applicable presets; relay user_notice verbatim.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNointeractive=用户在场(默认);unattended=无人值守任务(不弹框,直接按各预设 unattended_policy 裁决)
projectNo当前项目名(目录/仓库名)
task_typeNo当前任务类型(自由文本,如 "开发"、"通讯");不明确则省略,明确后再补调

TDQS

A4.3/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 does so well: it discloses that the server may pop a confirmation dialog, enumerates the terminal states, and mandates verbatim relay of user_notice. This gives an agent clear behavioral expectations beyond the schema.

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

Conciseness4/5

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

The description is front-loaded with the core call timing and purpose, then lists terminal states and follow-up actions efficiently. The English summary at the end repeats the Chinese content, adding slight redundancy, but there is no 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?

Despite having no output schema, the description enumerates the return terminal states and their required actions, which is nearly complete. It does not specify the exact JSON response shape beyond those states, but for a tool with three optional parameters this is a strong definition.

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 parameter descriptions already explain mode, project, and task_type. The tool description itself adds no parameter-specific detail beyond the schema, so the baseline of 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 opens with a specific verb and resource: '开始任务时调用,召回适用于当前上下文的预设并完成确认'. It clearly distinguishes what the tool does from the sibling memory-management tools, and the terminal-state list plus the record_usage handoff further clarify its role.

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 explicitly states when to call it ('开始任务时调用') and gives handling guidance for each terminal state, including reporting pending_confirmation results via record_usage. It also distinguishes interactive vs unattended mode, but it does not explicitly say when not to use it or contrast it with list_memories/memory_overview.

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

record_usage回报确认结果A

回报对话中完成的预设确认结果(pending_confirmation 的逐条答复、backlog 补确认、纠正流程的推翻)。confirmed=用户确认沿用;rejected=用户拒绝;overridden=应用后被用户当场推翻。Report per-preset consent outcomes resolved in conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
outcomesYes各预设的确认结果

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden. It explains three enum values (confirmed, rejected, overridden) but omits unattended_applied and unattended_skipped, which are in the schema. It also fails to disclose side effects, required permissions, or response behavior, leaving significant behavioral gaps.

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

Conciseness4/5

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

The description is concise, front-loading the purpose and defining key result values. It mixes Chinese and English, but that is not a major flaw. It could be slightly more structured, but it is appropriately sized.

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?

The tool has one parameter, no output schema, and no annotations. The description leaves out two enum values and domain-specific terms (pending_confirmation, backlog, correction flow) without explanation. It also does not cover when to use it relative to alternatives, making it incomplete for an agent to invoke 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%, so the baseline is 3. The description adds value by explaining the meaning of three result values and the context of pending_confirmation, but it does not explain the two unattended enum values, leaving the parameter semantics incomplete.

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 reports per-preset consent outcomes resolved in conversation, with a specific verb ('report') and resource. The Chinese text adds precision by specifying '预设确认结果' (preset confirmation results) and enumerating three result semantics, making it distinct from sibling memory-management 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 provides clear context: it is used when reporting confirmation results from conversation, including pending_confirmation replies, backlog re-confirmation, and overrides. It does not explicitly name alternatives or exclusions, but the context is unambiguous given the sibling tools' focus on memory operations.

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

save_requirement保存用户要求为预设A

把用户确认过的可复用要求保存为预设。调用前必须已向用户展示提炼表述+建议分类并获明确同意(弹框通道下服务器会再次弹框担保,超时不保存)。单次指令不入库。返回 potential_conflicts=同作用域/分类的既有预设——检查语义矛盾,矛盾则提议更新旧预设而非新增。user_notice 原样转述。Save a user-confirmed durable requirement.

ParametersJSON Schema
NameRequiredDescriptionDefault
riskNo风险档(由你提议,随保存确认一并经用户认可):harmless=无坏后果的偏好(语言/格式类),保存确认一次后免复核弹框;normal=默认,走信任曲线+批量勾选框复核;sensitive=涉及破坏性操作/安全/凭据等,始终单条强确认框
contentYes要求内容,简洁的指令式表述
projectNo限定项目名;不传 = 不限
categoryNo自由分类标签
task_typeNo限定任务类型(自由文本);不传 = 不限
confirm_policyNosmart=信任曲线调度复核(默认);always_ask=每次都问;always_auto=永不复核(仅用户明确要求时)
unattended_policyNo无人值守裁决:by_trust=按信任值(默认);apply=保护性约束建议用(跳过比应用更危险时);skip=保守跳过

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 important traits: the dialog channel triggers another server-side confirmation, timeout means no save, and the tool returns potential_conflicts while passing through user_notice verbatim. It also clarifies that semantic conflicts should be handled by proposing an update to the old preset rather than creating a new one.

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 front-loads the core purpose and the required precondition, then adds output semantics in compact clauses. The final English sentence is slightly redundant with the opening Chinese sentence, but it does not bloat the description. Overall it is appropriately sized and structured.

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?

Because there is no output schema, the description explicitly explains the return value potential_conflicts and the user_notice passthrough, which an agent needs to decide how to handle conflicts. It also covers timeout/no-save behavior and the single-instruction exclusion. For a 7-parameter tool with no annotations, this is sufficient to invoke it correctly.

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%, so the baseline is 3, but the description adds meaning to content and category by requiring that they be the refined expression and suggested category shown to and agreed by the user. It also reinforces how consent and risk/confirmation policies interlock. This is genuine extra semantics beyond the schema's field descriptions.

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 opens with a concrete action—"把用户确认过的可复用要求保存为预设"—and clearly identifies the resource as a user-confirmed durable requirement. It also adds a scope exclusion: single-use instructions are not stored. It does not explicitly name sibling tools, so differentiation relies on the preset concept rather than an explicit pointer.

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 states a hard precondition: the user must have seen the refined wording and suggested category and explicitly agreed, with a timeout causing no save. The "单次指令不入库" sentence signals a when-not condition. It does not recommend a specific alternative for single-use instructions, so it stops short of full alternative guidance.

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

start_consolidation开始记忆整理A

仅在用户主动要求整理记忆时调用。返回全库与体检指标。你的任务:产出整理提案清单(合并语义重复、解决矛盾、提炼表述、陈旧停用、聚类毕业成 skill),以清单呈现、由用户驱动决定,再用 apply_consolidation 落地。Start a user-initiated consolidation pass.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/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 behavioral burden. It discloses that the call returns the full library and health metrics, that the agent should produce a proposal list, and that changes are applied later via apply_consolidation rather than automatically. It does not explicitly state whether any internal state is modified, but the 'user-driven, then apply' framing strongly implies this call itself does not apply changes.

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 dense and front-loaded, starting with the key call condition. The Chinese portion carries detailed actionable guidance, while the trailing English sentence 'Start a user-initiated consolidation pass' is somewhat redundant with the title and opening clause, but the overall text remains focused and every other 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 absence of an output schema, the description adequately explains return values (full library and health metrics) and the expected deliverable (a proposal list covering deduplication, contradiction resolution, refinement, retirement, and skill clustering). It also specifies the user-driven decision flow. A more complete description could outline the exact proposal-list format, but the current text gives enough context for correct invocation and downstream behavior.

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 zero parameters)Skip? Actually the schema has no properties, so there is no parameter semantics burden. The baseline for a 0-parameter tool is 4, and the description appropriately uses the space to explain the intended workflow rather than inventing parameter 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 names a specific verb+resource: starting a memory consolidation pass only on user request. It also differentiates itself from the sibling apply_consolidation by explicitly saying that the proposal list is landed via apply_consolidation, so the agent can tell the two tools apart.

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?

The description opens with an explicit usage condition: '仅在用户主动要求整理记忆时调用' (only call when the user actively requests memory consolidation). It further clarifies that the process is user-driven and that apply_consolidation is the tool that applies the changes, making the division of labor between sibling tools explicit.

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

update_memory修改记忆A

修改预设:内容、作用域、分类、策略、启用/停用/归档。需用户已确认该修改。未传字段不变;project/task_type/category 传 "" 清除。内容实质改写会重置信任(新表述=未验证的新承诺)。user_notice 原样转述。Update a preset (user-approved).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
riskNo风险档:harmless=免复核弹框;normal=信任曲线+批量勾选框;sensitive=始终单条强确认
statusNo
contentNo
projectNo
categoryNo
task_typeNo
confirm_policyNo
unattended_policyNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations available, the description carries the burden of behavioral disclosure and does so well: it explains partial-update semantics (unspecified fields stay unchanged), clearing semantics for project/task_type/category, and the trust-reset side effect of substantive content rewrites. The mention of 'user_notice 原样转述' is problematic because user_notice is not a schema property and additionalProperties is false, creating confusion.

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 compact and front-loaded: a quick list of what can be updated followed by three high-value behavioral caveats. The user_notice sentence is tangential and slightly dilutes focus, but otherwise every sentence contributes.

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 mutation tool with no annotations and no output schema, the description covers the key operational context: user approval, field-unchanged behavior, clear semantics, and trust reset. It omits explicit explanations of the two policy enums and does not describe the return/confirmation payload, leaving some gaps but overall enough for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is only 11%, so the description must compensate; it does add useful meaning for partial updates, clearing, and trust reset. However, it does not explain the semantics of risk, confirm_policy, or unattended_policy beyond what the enum values imply, and the user_notice comment references a non-existent parameter.

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 identifies the action ('Update/修改') and resource ('a preset'), and enumerates the categories of changes (content, scope, classification, policy, status). This distinguishes it from the sibling tools that list, recall, delete, or consolidate memories, though the Chinese title '修改记忆' could be slightly ambiguous until the description clarifies 'preset'.

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 states an important precondition: the modification must already be user-confirmed ('需用户已确认该修改'), which helps an agent know when it is appropriate to call the tool. However, it does not explicitly name alternatives or exclusion conditions, so an agent must infer when to prefer recall_presets, save_requirement, or delete_memory instead.

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. 9 tool updatesv2.0.0
    • First observedapply_consolidation
    • First observeddelete_memory
    • First observedlist_memories
    • First observedmemory_overview
    • First observedrecall_presets
    • First observedrecord_usage
    • First observedsave_requirement
    • First observedstart_consolidation
    • First observedupdate_memory

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have clearly distinct roles: recall/record_usage, list/overview, and start_consolidation/apply_consolidation are well separated. The only potential confusion is between update_memory and apply_consolidation (both can modify presets) and between delete_memory and apply_consolidation's delete, but the usage context (direct user action vs. consolidation workflow) disambiguates them.

Naming Consistency4/5

Eight of nine tools follow a consistent verb_noun pattern (record_usage, list_memories, update_memory, start_consolidation, apply_consolidation, recall_presets, save_requirement, delete_memory). memory_overview breaks the pattern by being noun_noun, but it is still readable and clearly the odd one out.

Tool Count5/5

Nine tools is a well-scoped size for a memory/preset management server. Each tool covers a distinct operation or workflow stage—CRUD, recall, usage reporting, and consolidation—without redundancy or bloat.

Completeness5/5

The tool surface covers the full lifecycle: save_requirement creates presets, list_memories/memory_overview/recall_presets read them, update_memory plus apply_consolidation handle updates/disable/archive, and delete_memory covers deletion. The two-phase consolidation workflow and record_usage for outcome tracking round out the domain with no obvious gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to maintain persistent conversations and context between sessions through automated saving and global installation across projects. Provides zero-configuration memory persistence with automatic conversation history preservation.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Provides persistent memory for AI assistants like Claude, enabling them to remember user identity, projects, and conversations across sessions and platforms via natural language commands.
    29
    408 npm
    2
    MIT