Skip to main content
Glama

AI Agent 的会话没有跨会话记忆:每次新会话都需要重新解释你是谁、项目背景、既有决策。Memkin 把散落在飞书(私信、群聊、邮件、日历、文档、任务)和 AI 编程会话(Claude Code、Codex、Hermes)里的信息提取为结构化信号——实体、决策、任务、发现、知识、关系——存入你自己机器上的知识图谱,并通过 MCP 提供给任何 Agent 查询和写回。数据全程保留在本机。

核心特性

  • 飞书采集:私信、群聊、邮件、日历、文档、任务、消息搜索共 7 个源,增量采集 + 历史回填。见飞书采集指南

  • AI 会话采集:Claude Code(~/.claude/projects/)、Codex(~/.codex/)、Hermes/OpenClaw(~/.openclaw/agents/

  • MCP 服务器:36 个工具(默认暴露 15 个高意图工具),支持 stdio 与 Streamable HTTP 两种传输。见 MCP 接入指南

  • 信号提取:LLM Pipeline 提取 7 类结构化信号,双层噪声过滤(规则 + LLM 打分),每条信号可溯源到原始消息

  • 混合检索:tsvector 全文(支持中文)+ pgvector 向量,RRF 融合排序

  • 知识图谱:信号锚定到实体(人、项目、工具),有向链接图,跨平台人物身份归并

  • 隐私:写入前脱敏(可逆 / 不可逆双轨),存储零云依赖(PGLite 嵌入式数据库),可选 Ollama 本地嵌入

  • 常驻服务memkin up 注册开机自启 daemon,定时采集,带运行历史与告警

  • 记忆巩固:hot → warm → cold 分层轮转、死链修复、偏好推断

  • Obsidian 双向同步:导出为 Markdown vault,编辑后导回

  • Web UI:Dashboard、时间线、力导向知识图谱、搜索

完整清单见功能清单

Related MCP server: suasor

快速上手

一键安装(推荐,注册为后台常驻服务):

curl -fsSL https://raw.githubusercontent.com/AndreLYL/memkin/main/scripts/install.sh | sh

脚本依次执行:安装 Node 运行时(如缺失)→ npm install -g memkin → 打开浏览器 setup 向导(填入 LLM API Key)→ memkin up 注册开机自启后台服务,并把 MCP 配置写入本机已安装的 AI 客户端(Claude Code、Codex、Hermes/OpenClaw)。

临时试用(不安装后台服务):

npx memkin start     # 无配置时自动进入 setup 向导,完成后启动服务并打开 Web UI

服务管理与卸载:

memkin status        # 查看后台服务状态
memkin down          # 停止服务并取消开机自启
memkin down && memkin uninstall && npm rm -g memkin    # 完全卸载

前置条件:Node.js >= 18(安装脚本会自动处理)。

接入 AI Agent

memkin install 把 MCP 配置和记忆使用指令写入本机 AI 客户端,支持 Claude Code、Claude Desktop、Cursor、Codex、Windsurf、Hermes/OpenClaw:

memkin install                      # 探测已安装的客户端并接入
memkin install --agent claude-code  # 指定单个客户端
memkin install --dry-run            # 预览将修改的文件
memkin extract --source claude-code # 把历史会话提取为记忆
memkin hooks install                # (可选)Claude Code 自动召回 hooks

接入后重启客户端即可。传输方式(stdio / Streamable HTTP)、手动配置和 hooks 说明见 MCP 接入指南

使用场景

以下问题均可在接入 Memkin 的 Agent 中直接提问,回答带 [n] 引用,可溯源到原始消息:

问题

使用的工具

"明天要见张总谈续约,该注意什么?"

prep_for_person 从历史互动推断沟通画像,按本次目标给出建议

"生成今天的日报"

daily_report 聚合当天私聊、群聊、邮件、会议纪要、日历为 7 段日报

"智驾为什么无法激活?"

troubleshoot 按排查手册(playbook)给出有序排查步骤

"memkin 项目现在进展如何?"

get_session_context 返回聚合的决策、待办与最近时间线

"上周和这位同事聊了什么?"

recall 把私信、会议、后续任务合成为带引用的回答

界面预览

架构

数据流为 5 层:数据源采集 → 信号提取 → 本地存储 → 接口输出;人物身份、记忆巩固、调度三个模块横切各层。

内容

配置与上手

TUI 配置中心 / 浏览器向导,自动检测与连接测试

采集

飞书 7 源 + Claude Code / Codex / Hermes,增量 + 历史回填

信号提取

分块 → 双层噪声过滤 → LLM 抽取 → 打分 → 隐私脱敏

记忆存储

PGLite + pgvector,混合检索(全文 + 向量 + RRF)

接口

CLI、MCP、REST API、Web UI、Obsidian

运行平台:macOS / Linux / Windows(默认 PGLite,零外部依赖)。可选的自管理本地 Postgres 引擎支持 macOS(arm64 / x64)与 Linux(x64 / arm64)。详见架构详解

常用命令

命令

说明

memkin start

启动(无配置时自动进入 setup)

memkin up / down / status

后台服务:注册开机自启 / 停止 / 状态

memkin install

接入 AI 客户端

memkin extract --source <name>

从数据源提取信号

memkin search <query>

搜索记忆

memkin doctor

环境诊断

完整命令见 CLI 参考

文档

路线图

  • 更多数据源:钉钉、企业微信、微信聊天记录、本地文档

  • 提取质量:跨 block 共享上下文、加权准入评分、按实体聚合叙事

  • 自然语言问答

  • Web UI:记忆编辑(当前只读)、信号溯源审计视图

致谢

Memkin 的设计与实现受益于以下项目:

  • lark-cli —— 飞书开放平台官方 CLI,Memkin 的飞书 user 态采集构建在它之上

  • GBrain —— brain-first 检索约定、自布线知识图谱与带引用的合成回答

  • OpenHuman —— Memory Tree 层级压缩与 Obsidian 互通的设计

  • mem0 —— Agent 记忆层的先行者

与它们相比,Memkin 侧重:飞书等中国职场工具的采集、本地优先零云依赖、Agent 经 MCP 读写。

贡献

Bug 报告和功能建议请提交 issue。开发流程见 CONTRIBUTING.md

License

Apache License 2.0

Available Tools

23 tools
add_timeline_entryAdd Timeline EntryA

add_timeline_entry

Append a dated memory event to an existing page.

When to use: record project progress, decisions, or notable events. When NOT to use: full page replacement; use put_page. Returns: ok plus slug/date/summary. On error: fix invalid date or find the correct page slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesISO date or datetime for the event.
slugYesExisting page slug.
detailNoOptional event detail.
sourceNoLegacy display source string.
summaryYesShort event summary.
provenanceNoOptional SourceRef provenance object.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the write succeeded.
dateYesTimeline event date.
slugYesPage slug.
summaryYesTimeline event summary.

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 discloses the return shape ('ok plus slug/date/summary') and error handling. It implies mutation via 'append,' but lacks details on permissions or idempotency. Still, it provides key behavioral context.

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

Conciseness5/5

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

Very concise at 6 lines, structured with markdown headers. Every sentence adds value: action, usage, return, error. Front-loaded with the core purpose.

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

Completeness4/5

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

Given 6 parameters, 3 required, an output schema, and no annotations, the description covers purpose, usage, error, and return. It omits details on optional parameters (detail, source, provenance) but the schema covers them. Adequate for an agent to use 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 coverage is 100%, so baseline is 3. The description does not add extra meaning beyond what the schema provides for parameters. It only references three required parameters in the return hint, without deeper explanation.

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 'Append a dated memory event to an existing page,' using a specific verb and resource. It distinguishes itself from the sibling tool `put_page` by specifying when not to use it ('full page replacement; use put_page').

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

Usage Guidelines5/5

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

Explicitly provides when-to-use ('record project progress, decisions, or notable events') and when-not-to-use ('full page replacement; use put_page'). Includes error recovery guidance ('fix invalid date or find the correct page slug').

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

daily_reportDaily Report (Cross-Channel)A

daily_report

Generate a synthesized cross-channel daily report in 7 fixed sections.

When to use: 'help me write today's daily report' — aggregate the day's signals (mail / IM / calendar / docs) into 今日概览 / 今日完成 / 推进中 / 我的待办 / 待回复与被@ / 人脉动态 / 明日提醒. When NOT to use: arbitrary recall; use recall/query. Returns: a SynthesisResult with sections[] + answer + citations + gaps. On error: ensure the date is a valid ISO date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoReport date as `YYYY-MM-DD`. Defaults to today (local time).

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It discloses the fixed 7-section structure, return type (SynthesisResult with sections, answer, citations, gaps), and error behavior (valid ISO date required). No contradictions with missing annotations.

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?

Concise, well-structured with explicit sections (title, description, when to use/not, returns, error). Every sentence adds essential information without redundancy. Front-loaded with core purpose.

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

Completeness5/5

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

For a simple one-parameter tool with no output schema, the description fully covers purpose, usage, return structure, and error handling. No gaps given the tool's complexity.

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% for the single parameter 'date', but description adds value by specifying format (YYYY-MM-DD), default (today local time), and error condition. Baseline 3 plus extra context yields 4.

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 states 'Generate a synthesized cross-channel daily report in 7 fixed sections' – a clear verb+resource+scope. It explicitly distinguishes from siblings by naming 'recall' and 'query' as alternatives for arbitrary recall, making purpose unmistakable.

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

Usage Guidelines5/5

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

Explicit when-to-use ('help me write today's daily report') with a list of aggregated signals, and a clear when-NOT-to-use ('arbitrary recall; use recall/query'). Provides context for tool selection.

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

explore_graphExplore Memory GraphA

explore_graph

Explore graph relationships around a page.

When to use: understand dependencies, mentions, collaborators, and nearby entities. When NOT to use: raw page content; use get_page_context. Returns: focus node, graph nodes, and edges with bounded depth. On error: search for the correct slug first.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesFocus page slug.
depthNoTraversal depth, default 2, max 5.
directionNoTraversal direction.

Output Schema

ParametersJSON Schema
NameRequiredDescription
edgesYesGraph edges.
focusYesFocus page.
nodesYesGraph nodes.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so the description must cover behavioral traits. It mentions bounded depth, return structure (focus node, graph nodes, edges), and error handling (search for correct slug). While it doesn't discuss auth or rate limits, it provides sufficient context for a read-only graph exploration.

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

Conciseness5/5

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

Description is concise and well-structured with sections (When to use, When NOT to use, Returns, On error). Every sentence adds value; there is no redundancy.

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

Completeness5/5

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

Given the tool's complexity (graph traversal with depth/direction), the description explains what it returns, how to handle errors, and provides usage guidance. The presence of an output schema (though not detailed here) further supports completeness.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond what the schema already provides for slug, depth, and direction. It repeats parameter names but offers no additional semantic context.

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 explores graph relationships around a page, using a specific verb and resource. It distinguishes itself from sibling tools like get_page_context by explicitly noting when not to use it.

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 'When to use' and 'When NOT to use' guidance, including a specific alternative (get_page_context). This helps agents decide between this tool and its siblings.

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

get_entity_profileGet Entity ProfileA

get_entity_profile

Full profile for an entity: signals + timeline.

When to use: need a comprehensive view of a person, project, or tool. Returns: entity page with all linked signals and timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_slugYesEntity slug, for example `entities/alice`.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It states the return type ('entity page with all linked signals and timeline') but lacks details on side effects, permissions, or limitations. Adequate but not rich.

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

Conciseness5/5

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

Three concise sentences plus a header, front-loaded with purpose. No wasted words.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description covers the core behavior. It could mention time range or ordering, but overall it is reasonably complete for decision-making.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter well-described in the schema. The description does not add extra meaning beyond what the schema provides (e.g., format or constraints), so baseline 3 applies.

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

Purpose5/5

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

The verb 'get' and resource 'entity profile' are clear. The description states it returns a comprehensive view with signals and timeline, distinguishing it from siblings like list_signals_by_entity (only signals) and timeline_feed (only timeline).

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

Usage Guidelines4/5

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

The description includes a 'When to use' clause specifying need for a comprehensive view of a person, project, or tool. However, it does not mention when not to use or list alternatives.

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

get_healthGet HealthA

get_health

Return Memkin MCP health and capability metadata.

When to use: diagnose database counts, MCP version, and legacy tool exposure. When NOT to use: retrieve memory content; use read tools. Returns: status, page/chunk counts, MCP version, and legacy setting. On error: inspect server logs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYesStored page count.
chunksYesStored chunk count.
statusYesHealth status.
read_onlyYesWhether this server hides write tools.
mcp_versionYesMemkin package version exposed by MCP.
capabilitiesYesCapability flags.
legacy_tools_exposedYesWhether legacy MCP tools are exposed.
mcp_contract_versionYesMCP contract version.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description fully carries the burden. It discloses return fields (status, page/chunk counts, MCP version, legacy setting) and error handling (inspect server logs). However, it does not explicitly state that the tool is read-only or has no side effects.

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

Conciseness5/5

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

The description is extremely concise with no wasted words. It uses clear structure with headings and bullet-like sections. Every sentence adds value, e.g., 'On error: inspect server logs.'

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

Completeness5/5

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

Given zero parameters and the presence of an output schema, the description is complete. It covers purpose, usage, return values, and error handling. No additional information is needed for this simple health-check tool.

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 has zero parameters, and schema description coverage is 100% (empty). The description does not need to add parameter meaning. Baseline for 0 parameters is 4, which is appropriate.

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

Purpose5/5

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

The description explicitly states 'Return Memkin MCP health and capability metadata.', which is a specific verb and resource. It clearly distinguishes from sibling tools like 'get_entity_profile' or 'get_session_context' by focusing on health diagnostics.

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 provides explicit usage guidelines: 'When to use: diagnose database counts, MCP version, and legacy tool exposure.' and 'When NOT to use: retrieve memory content; use read tools.' This clearly directs the agent to appropriate alternatives.

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

get_page_contextGet Page ContextA

get_page_context

Read a page plus nearby memory context.

When to use: after finding a slug and needing page, tags, links, backlinks, timeline, or chunks in one call. When NOT to use: broad recall without a slug; use query or search first. Returns: page, tags, limited related context, and provenance. On error: if the slug is missing, search for the correct slug first.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPage slug to read, for example `projects/memkin`.
limitNoMaximum related items per section, default 20, max 100.
includeNoOptional context sections to include.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesMemkin page.
tagsYesTags on the page.
linksYesOutgoing links.
chunksNoOptional page chunks.
timelineYesPage timeline entries.
backlinksYesIncoming links.
provenanceNoCompact source provenance.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses return values (page, tags, limited related context, provenance) and error handling (if slug missing, search for correct slug first). However, it does not explicitly state the tool is read-only or mention any side effects. This is a minor gap, hence 4.

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

Conciseness5/5

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

Highly concise and well-structured with headings, bullet points, and clear separation of sections. Each sentence is informative without redundancy.

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

Completeness5/5

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

Given the presence of an output schema and the tool's moderate complexity, the description covers usage, error handling, parameter context, and return values adequately. It also differentiates from siblings, making it complete for agent decision-making.

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

Parameters3/5

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

Schema coverage is 100% with good parameter descriptions. The description adds minimal extra meaning beyond the schema; it mentions 'limit' implicitly via 'maximum related items' but the schema already says that. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the purpose: 'Read a page plus nearby memory context.' It uses a specific verb ('Read') and resource ('page'), and distinguishes from siblings like `put_page` (write) and `query`/`search` (broad recall).

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?

Explicit when-to-use: 'after finding a slug and needing page, tags, links, backlinks, timeline, or chunks in one call.' Also when-not-to-use: 'broad recall without a slug; use `query` or `search` first.' Clearly guides agent decision.

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

get_session_contextGet Session ContextA

get_session_context

Load working memory for session bootstrap.

When to use: at the start of every session to understand what is active and pending. Returns: recent activity summary for the given day window.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of recent days, default 7.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided. Description mentions returning a recent activity summary but omits details like side effects (likely none), data scope, or performance. Adequate but not comprehensive.

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

Conciseness5/5

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

Extremely concise with clear structure: heading, purpose, usage, return. Every sentence is informative.

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

Completeness3/5

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

Tool has one optional parameter and no output schema. Description covers purpose and basic return type but lacks detail on the summary structure. Adequate for a simple tool but could be improved.

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 describes the only parameter 'days' fully. Description adds no new meaning beyond 'given day window'. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool loads working memory for session bootstrap, with a specific verb and resource. It distinguishes itself from siblings as a session-wide context loader.

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

Usage Guidelines4/5

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

Explicitly says when to use: at the start of every session. Does not cover when not to use, but context makes it clear.

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

list_person_handlesList Person HandlesA

list_person_handles

List all handles for a canonical person.

When to use: check known aliases for a person. Returns: array of handles with kind, value, and strength.

ParametersJSON Schema
NameRequiredDescriptionDefault
canonical_slugYesCanonical person page slug.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral information. It states the return format (array of handles with kind, value, strength), which is helpful. However, it does not clarify if the operation is read-only or disclose any side effects, authentication needs, or rate limits, which is adequate but not thorough.

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

Conciseness4/5

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

The description is brief, consisting of a heading, a one-sentence definition, a usage line, and a returns line. It is front-loaded and to the point, with no unnecessary information, though it could benefit from better structure (e.g., separate sections).

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 (one parameter, no nested objects, no output schema), the description covers the essential aspects: what it lists and its purpose. It does not mention pagination or optional filtering, but for a 'list all' tool this is acceptable.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for the sole parameter 'canonical_slug' as 'Canonical person page slug.' The tool description does not add further meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action: 'List all handles for a canonical person.' It uses a specific verb and resource, and distinguishes itself from sibling tools like link_person_alias or remove_person_alias which modify or delete handles.

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 explicit context: 'When to use: check known aliases for a person.' It gives a clear use case, though it does not mention when not to use or list alternatives, which would elevate the score.

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

list_signals_by_entityList Signals by EntityA

list_signals_by_entity

List all signals anchored to an entity.

When to use: retrieve decisions, tasks, knowledge, etc. for a specific person/project/tool. Returns: signals with type, title, and summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum signals, default 20.
entity_slugYesEntity slug, for example `entities/alice`.
signal_typesNoOptional signal type filter.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It describes the tool as a read operation (list) but does not disclose any behavioral traits such as authentication requirements, rate limits, or side effects. The description is minimal and adequate but lacks depth.

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

Conciseness5/5

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

The description is extremely concise: two lines of substantive content plus a heading. Every sentence adds value: purpose, usage context, and return format. No wasted words.

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

Completeness4/5

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

The tool has 3 parameters (1 required) and no output schema. The description explains it returns signals with type, title, and summary, which is sufficient for basic use. However, it could mention pagination behavior given the limit parameter, and it lacks details on ordering or filtering behavior. Slightly incomplete but acceptable.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all three parameters. The description adds no extra meaning beyond the schema; it only mentions returned fields. Baseline of 3 is appropriate since the description does not enhance parameter understanding.

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 lists all signals anchored to an entity, with specific verb 'List' and resource 'signals anchored to an entity'. It distinguishes from siblings like search or query by specifying the scoped retrieval for a specific person/project/tool.

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

Usage Guidelines4/5

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

The description includes 'When to use: retrieve decisions, tasks, knowledge, etc. for a specific person/project/tool' which gives clear context for appropriate usage. However, it does not explicitly mention when not to use or alternatives, so it lacks exclusions.

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

manage_tagsManage TagsA

manage_tags

Add or remove tags on a page.

When to use: classify memory pages with stable tags. When NOT to use: graph relationships; use manage_links. Returns: ok plus action/slug/tags. On error: search for the page slug or provide at least one tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExisting page slug.
tagsYesOne or more tag names.
actionYesWhether to add or remove tags.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the write succeeded.
slugYesPage slug.
tagsYesManaged tags.
actionYesPerformed tag action.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the full burden. It discloses that the tool mutates tags, returns 'ok plus action/slug/tags', and gives error-handling hints ('search for the page slug or provide at least one tag'). Lacks details on idempotency or concurrent usage, but adequate for its simplicity.

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?

Concise at ~6 lines with clear headings and bullet-like structure. Every sentence serves a purpose: purpose, usage guidance, return type, and error handling. No redundancy.

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

Completeness5/5

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

Given a simple tool with 3 parameters, full schema coverage, and an output schema (implied by 'Returns: ...'), the description covers all essential aspects: purpose, usage, return, and error recovery. It is complete for an AI 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 coverage is 100% (all three parameters described in schema). The description adds only marginal value ('stable tags' context) and does not enhance understanding beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description starts with 'Add or remove tags on a page' – a clear verb+resource+action. It distinguishes itself from 'manage_links' which handles graph relationships, making the tool's unique purpose immediately obvious.

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

Usage Guidelines5/5

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

Explicitly states when to use ('classify memory pages with stable tags') and when NOT to use ('graph relationships; use manage_links'). Also provides error recovery guidance, leaving no ambiguity for an AI agent.

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

merge_personsMerge PersonsA

merge_persons

Merge one person into another, moving all handles.

When to use: two person pages represent the same individual. Returns: ok plus merged handles.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesSource person slug to merge from.
intoYesTarget person slug to merge into.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states that it merges and moves handles and returns 'ok plus merged handles', but does not disclose whether the source person is deleted or other potential side effects.

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

Conciseness5/5

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

The description is extremely concise with no wasted words: a short header, a one-sentence action, a usage hint, and a return statement, all front-loaded.

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

Completeness3/5

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

While the description provides usage context and mentions the return value, it lacks details about side effects (e.g., deletion of source, handling of shared data) that would be important for a destructive merge operation.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions ('Source person slug' and 'Target person slug'). The description adds minimal value beyond the schema, meeting the baseline.

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

Purpose5/5

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

The description clearly states the verb 'merge' and resource 'persons', and the purpose of moving all handles when two person pages represent the same individual, distinguishing it from similar tools like link_person_alias.

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 when-to-use guidance ('two person pages represent the same individual'), but does not mention alternatives or when not to use it, which would improve the score.

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

prep_for_personPrep for Person (Communication Strategy)A

prep_for_person

Prepare goal-conditioned communication strategy for a person from their passively-inferred communication profile.

When to use: before talking to someone — get evidence-cited, ethical suggestions on how to communicate with them, optionally toward a specific goal. When NOT to use: raw facts about the person; use get_entity_profile/query. Returns: a SynthesisResult (cited suggestions + gaps). Suggestions only — never manipulation. Profiling is passive and local; the four-color shell is a popular mapping, not a clinical diagnosis. On error: ensure the person page slug exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNoOptional goal for this conversation.
personYesPerson page slug, e.g. `people/zhang-san`.

TDQS

A4.9/5.0
Behavior5/5

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

Discloses that profiling is passive and local, the four-color shell is a mapping not a clinical diagnosis, and tool returns suggestions only—never manipulation. Also notes error handling for missing page slug. No annotations exist, so description carries full burden.

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?

Well-structured with clear sections (What it does, When to use/not use, Returns, On error). Each sentence is purposeful and concise, no wasted words.

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

Completeness5/5

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

Given two parameters, no output schema, and no annotations, the description provides thorough context: purpose, usage boundaries, return type, ethical note, and error guidance. Fully adequate for the tool's complexity.

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

Parameters4/5

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

Schema coverage is 100% with both parameters described. Description adds extra context like 'toward a specific goal' for the optional goal parameter, which enriches understanding beyond schema.

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

Purpose5/5

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

Clearly states the tool prepares a goal-conditioned communication strategy from a passively-inferred profile. Uses specific verb 'prepare' and resource 'communication strategy'. Distinguishes from sibling `get_entity_profile` which provides raw facts.

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

Usage Guidelines5/5

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

Explicitly states 'When to use: before talking to someone' and 'When NOT to use: raw facts; use get_entity_profile/query'. Provides clear guidance on alternatives.

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

put_pagePut PageA

put_page

Create or update a Memkin page idempotently.

When to use: write a durable memory page. When NOT to use: append a dated event; use add_timeline_entry. Returns: ok, slug, changed flag, content hash, previous hash, and updated_at. On error: fix slug or non-empty content.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesStable page slug, for example `decisions/use-pglite`.
contentYesFull markdown content, optionally with YAML frontmatter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the write succeeded.
slugYesPage slug.
changedYesWhether content changed.
updated_atYesPage update timestamp.
content_hashYesCurrent content hash.
previous_hashNoPrevious content hash, if any.

TDQS

A4.4/5.0
Behavior4/5

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

Despite no annotations, the description discloses idempotency, return fields (ok, slug, changed flag, etc.), and error advice. Missing details on authentication or rate limits, but core behaviors are covered well for a simple write tool.

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

Conciseness5/5

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

Concise, well-structured with short sections. Front-loaded with purpose and usage. Every sentence adds value without repetition.

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 (2 params, 100% schema coverage, output schema present via described returns), the description covers purpose, usage, returns, and error handling. Could mention more about content format but schema already specifies 'Full markdown content'.

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?

Input schema has 100% coverage with clear descriptions for slug and content. Description adds error hint ('fix slug or non-empty content') but does not significantly enhance meaning beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

Description clearly states 'Create or update a Memkin page idempotently', identifying the resource and action. It distinguishes from sibling tool add_timeline_entry by specifying the use case for durable pages vs. dated events.

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?

Explicit 'When to use' and 'When NOT to use' sections provide clear guidance, including a direct alternative (add_timeline_entry). This helps the agent decide correctly.

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

querySemantic Memory QueryA

query

Semantic search across Memkin memory.

When to use: fuzzy, conceptual recall across people, projects, decisions, tasks, and prior work. When NOT to use: exact keyword matching; use search instead. Do not look for source-specific tools; use filters. Returns: ranked results with slug, title, type, snippet, score, and provenance. On error: broaden filters or retry with fewer constraints.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoInclusive upper time bound as an ISO date or datetime.
fromNoInclusive lower time bound as an ISO date or datetime.
typeNoLimit results to page types such as `decision`, `task`, or `person`.
limitNoMaximum number of results. Search tools default to 20 and clamp to 50.
queryYesNatural language search query, for example `上周部署方案`.
channelNoLimit results to a stable source channel id, for example `dm/wechat/wxid_123`.
platformNoLimit results to one or more source platforms, for example `wechat` or `feishu`.
participantNoLimit results to memories involving this exact participant display name.
source_typeNoLimit results to one or more source types, for example `dm`, `group`, or `document`.
channel_nameNoLimit results to a human-readable channel name, for example `产品评审群`.
exclude_typesNoExclude these page types from results.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYesRanked memory results.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses that results are ranked with fields like slug, title, type, snippet, score, provenance. Gives error recovery guidance. Could mention default limit and clamping behavior (present in schema but not description), but overall adds value.

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 structured bullets and headings. Four compact lines (excluding title) that front-load purpose and include return format and error context. No wasted words.

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

Completeness4/5

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

Given output schema exists (not shown but indicated), description adequately covers return summary and error handling. With 11 parameters, description is comprehensive enough for agent decision-making. Minor omission: default limit/clamping not restated.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add parameter-specific details beyond the schema, merely referencing 'filters' generically. Meets baseline but does not exceed.

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 'Semantic search across Memkin memory,' clearly stating the verb and resource. It distinguishes from sibling 'search' by specifying fuzzy/conceptual recall versus exact keyword matching.

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

Usage Guidelines5/5

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

Explicitly states when to use ('fuzzy, conceptual recall') and when NOT to use ('exact keyword matching; use `search` instead'). Also provides error handling advice ('broaden filters or retry with fewer constraints').

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

recallRecall Memory (Synthesized)A

recall

Recall a synthesized, cited summary about an entity, query, or time window.

When to use: a quick composed recall with citations and gap flags. When NOT to use: raw snippets; use query/search. Returns: a SynthesisResult (answer + citations + gaps). On error: provide at least one of entity, query, or time.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNoTime window (ISO dates).
queryNoFree-text semantic query.
entityNoAnchor entity slug, e.g. `people/zhang-san`.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the return type (SynthesisResult with answer, citations, gaps) and error handling (at least one parameter required). It implies a read-only operation but does not explicitly state safety guarantees. Still, it provides substantial behavioral context.

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

Conciseness5/5

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

Five clearly separated sections (title, description, usage, returns, error) with no redundant information. Every sentence serves a purpose, and the structure is easy to scan.

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

Completeness5/5

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

Given the tool's moderate complexity (3 parameters, no output schema), the description covers purpose, parameter constraints, output format, error behavior, and sibling differentiation. An agent can confidently use this tool without additional context.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by stating the constraint 'provide at least one of entity, query, or time', which is not in the schema. This compensates for the lack of enum or additional constraints.

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 recalls a synthesized, cited summary for an entity, query, or time window. It uses a specific verb-resource pair and distinguishes from siblings by noting it provides composed recall with citations vs raw snippets from query/search.

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?

Explicit 'When to use' and 'When NOT to use' sections with specific alternative tool names (query, search). This is textbook perfect guidance, leaving no ambiguity about when to invoke this tool.

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

recanonicalize_personRecanonicalize PersonA

recanonicalize_person

Rename a person's canonical slug.

When to use: correct or update a person's canonical page slug. Returns: ok plus updated handles.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesNew canonical slug.
fromYesCurrent canonical slug.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the action and return ('ok plus updated handles') without disclosing side effects, permission requirements, or whether the operation is destructive. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is very short and front-loaded, with no wasted words. Every sentence serves a purpose, but it lacks some details, preventing a perfect score.

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 simplicity of the tool (2 required string parameters, no output schema), the description is adequate but minimal. It does not explain whether the slug must exist, or any constraints on the rename, leaving some gaps for a complete understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond the schema's property descriptions for 'from' and 'to.' It provides no extra context or 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 'Rename a person's canonical slug,' using a specific verb and resource. This distinguishes it from sibling tools like 'merge_persons' and 'link_person_alias,' which handle different operations.

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?

Explicit guidance is given: 'When to use: correct or update a person's canonical page slug.' It does not provide alternatives or explicit when-not-to-use scenarios, but the context is clear enough for this purpose.

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

remove_person_aliasRemove Person AliasA

remove_person_alias

Remove a handle from any person.

When to use: correct a wrong alias assignment. Returns: ok.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesHandle kind.
valueYesHandle value to remove.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits beyond the minimal action. It omits details on permissions, side effects (e.g., if handle doesn't exist), 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.

Conciseness4/5

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

The description is very short and direct, with no redundant information. Every sentence serves a purpose, though it could be slightly expanded for clarity.

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

Completeness2/5

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

Given no output schema and the tool being a deletion action, the description lacks completeness. It does not explain the meaning of the return value 'ok' or provide prerequisites or error 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?

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; it merely restates 'handle' without clarifying formats or constraints.

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

Purpose5/5

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

The description clearly states the verb 'Remove' and the resource 'a handle from any person', distinguishing it from sibling tools like 'link_person_alias' which adds handles.

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

Usage Guidelines4/5

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

It provides a specific use case: 'correct a wrong alias assignment'. However, it lacks guidance on when not to use it or alternatives.

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

synthesizeSynthesize MemoryA

synthesize

Synthesize a cited, gap-aware answer from memory using an intent template.

When to use: you want a composed answer (not raw snippets) about an entity, time window, or query. When NOT to use: raw ranked snippets; use query/search. Returns: answer with inline [n] citations, citations[], and gaps[] (stale / missing). On error: ensure the intent is registered and the scope is non-empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoRetrieval scope (entity / time / query).
intentYesRegistered synthesis intent, for example `recall`.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, but the description details return structure (answer with citations, citations[], gaps[]) and error requirements (intent registered, scope non-empty). Lacks info on auth or rate limits but sufficient for a non-destructive tool.

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

Conciseness5/5

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

Extremely concise: one sentence for main action, then bullet-pointed usage guidance, return, and error handling. Every sentence earns its place, front-loaded with purpose.

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

Completeness4/5

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

With no output schema, description covers return values and error states. Mentions gaps and citations. Could detail the exact shape of citations and gaps, but overall complete for a synthesis tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds minimal value beyond schema: notes intent must be registered, and gives example 'recall'. Not significantly augmenting.

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?

Explicitly states it synthesizes a cited, gap-aware answer from memory using an intent template. Clearly differentiates from siblings like query/search which return raw snippets.

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 when-to-use (composed answer) and when-not-to-use (raw snippets, use query/search). Offers concrete alternative tools.

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

timeline_feedTimeline FeedA

timeline_feed

Read global timeline memories.

When to use: recent activity reviews, date-bounded recall, and source-filtered timeline scans. When NOT to use: page-specific context; use get_page_context. Returns: timeline entries with slug, title, type, summary, time, snippet, and provenance. On error: fix invalid date filters and retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoInclusive upper time bound as an ISO date or datetime.
fromNoInclusive lower time bound as an ISO date or datetime.
typeNoLimit results to page types such as `decision`, `task`, or `person`.
limitNoMaximum number of results. Search tools default to 20 and clamp to 50.
queryNoOptional keyword filter for timeline summary/detail/title.
channelNoLimit results to a stable source channel id, for example `dm/wechat/wxid_123`.
platformNoLimit results to one or more source platforms, for example `wechat` or `feishu`.
participantNoLimit results to memories involving this exact participant display name.
source_typeNoLimit results to one or more source types, for example `dm`, `group`, or `document`.
channel_nameNoLimit results to a human-readable channel name, for example `产品评审群`.
exclude_typesNoExclude these page types from results.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entriesYesTimeline feed entries.

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses return fields and error handling hints ('On error: fix invalid date filters and retry'). Although no annotations are provided, the description effectively communicates the read-only nature and basic 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?

The description is concise, well-structured with headings, and front-loads essential info. Each sentence serves a purpose without redundancy.

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

Completeness5/5

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

Given the tool's complexity (11 parameters, optional, output schema exists), the description covers purpose, usage guidelines, return format, and error handling, providing a complete picture for the agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters well. The description adds minimal additional meaning beyond aligning with use cases like date-bounded and source-filtered scans.

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 'Read global timeline memories,' using a specific verb and resource. It explicitly distinguishes from the sibling tool 'get_page_context' by stating when NOT to use this tool.

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 provides explicit 'When to use' and 'When NOT to use' sections, mentioning alternatives like 'get_page_context'. This gives clear guidance on appropriate contexts.

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

troubleshootTroubleshoot (Playbook)A

troubleshoot

Walk through a troubleshooting playbook in one shot.

When to use: '怎么排查 X' — pull the matching playbook pages, ordered along their precedes chain, into a step-by-step procedure with branch meanings ('命中 X → 含义/下一步'). When NOT to use: general recall; use recall/query. Returns: a SynthesisResult with ordered steps + [n] citations + gaps. On error: rephrase the symptom or save a playbook page first.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSymptom or problem to troubleshoot, for example `智驾无法激活`.

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses pulling playbook pages along the precedes chain, returning a SynthesisResult with steps, citations, and gaps, and error handling. Missing explicit read-only/state-modifying indication, but otherwise transparent.

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?

Well-structured with sections, front-loaded with main purpose. Each sentence adds value; no redundancy. Length appropriate for the tool's complexity.

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

Completeness5/5

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

Given the single parameter, no output schema, but description explains return type (SynthesisResult with steps, citations, gaps). Covers when to use, when not, error handling, and output structure. Complete for effective use.

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

Parameters4/5

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

Schema coverage is 100% with one parameter query described. The description adds value beyond schema by providing an example ('智驾无法激活') and explaining how the parameter is used (symptom/problem).

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 walks through a troubleshooting playbook in one shot, with a specific verb ('walk through') and resource ('playbook'). It distinguishes from siblings like recall/query via explicit when-to-use and when-not-to-use guidance.

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

Usage Guidelines5/5

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

Explicitly states when to use ('怎么排查 X') and when NOT to use ('general recall; use recall/query'), with clear alternatives and error handling advice ('rephrase the symptom or save a playbook page first').

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. 23 tool updatesv0.1.0
    • First observedadd_timeline_entry
    • First observeddaily_report
    • First observedexplore_graph
    • First observedget_entity_profile
    • First observedget_health
    • First observedget_page_context
    • First observedget_session_context
    • First observedlink_person_alias
    • First observedlist_person_handles
    • First observedlist_signals_by_entity
    • First observedmanage_links
    • First observedmanage_tags
    • First observedmerge_persons
    • First observedprep_for_person
    • First observedput_page
    • First observedquery
    • First observedrecall
    • First observedrecanonicalize_person
    • First observedremove_person_alias
    • First observedsearch
    • First observedsynthesize
    • First observedtimeline_feed
    • First observedtroubleshoot

TDQS

A3.9/5.0

Scored across 23 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap among retrieval tools (query, search, recall, synthesize) which could confuse an agent. However, descriptions clearly differentiate them by use case.

Naming Consistency3/5

Tool names mix patterns: some use verb_noun (add_timeline_entry, get_page_context), while others are single verbs (query, recall, search, synthesize, troubleshoot). This inconsistency adds cognitive load.

Tool Count4/5

23 tools is reasonable for a memory management system covering pages, persons, graph, timeline, and synthesis. No obvious bloat or sparsity.

Completeness3/5

Covers core CRUD for pages but lacks delete operations and a dedicated create_person tool. Also missing a list_tags or list_all_pages tool, leaving some gaps in the surface.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-first, file-based memory layer for AI agents — one shared Markdown vault across Claude, Codex, Gemini, Cursor and any MCP client. Provides read/write memory tools with an audit trail, per-agent trust levels, and Git sync; no cloud and no lock-in.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Local-first memory server that stores notes, contacts, and future data as a unified entity graph, providing hybrid retrieval (vector + keyword) for AI assistants via MCP.
    1
    MIT