Skip to main content
Glama

synapse-mcp

你的编程 AI 智能体的结构化大脑。

Free Pro MCP Compatible Languages 100% Local Zero Data Egress


Synapse-MCP 是免费、100% 本地运行的 MCP 服务器,能将你的代码库转为持久化且随附于设备本地的 AST 知识图。Claude、Cursor、Copilot 以及每个支持 MCP 的智能体都能获得精确的调用者树、语义搜索和零幻觉的重构能力——它的令牌开销比使用 shell 工具降低 60%。你的代码永远不会离开你的机器。

# Linux / macOS
curl -fsSL https://downloads.synapse-mcp.dev/install.sh | sh

# Windows PowerShell
irm https://downloads.synapse-mcp.dev/install.ps1 | iex

什么是 Synapse MCP?

如果你用过 AI 编码助手——Claude、Copilot、Cursor、Devin——你大概已经注意到,在真正 修改 代码之前,它们会花大量时间先去 寻找 代码。它们会 grep 文件、查看 imports、搜索函数名、一个文件接一个文件地打开。这种探索过程成本很高:既消耗 token,又浪费时间,而且有时候仍然会出错。

Synapse 正好解决这个问题。

它是MCP 服务端——一个常驻后台进程,它连入你的 AI 智能体并赋予一组新的工具。它给你的智能体提供的并不是一个文件系统加搜索框,而是一个针对整个代码库预先生成的知识图:每个函数、每个类、每条调用关系、每个模块边界——都已经建立索引并结构化了,能够在毫秒级内就绪并可供查询。

通俗地来说

试想一下一个入职第一天的新员工,和一个在这套代码库里已经工作多年的资深工程师的差别。

新员工会去打开文件、搜索各种东西、四处提问,并会被各种陌生的命名搞糊涂。每一次任务都会先从“探索”开始。

资深工程师早已对一切都了然于胸。他们会径直走到正确的文件,并在修改之前就已经明白改动会影响哪些下游行为,还清楚地知道要跑哪些测试。他们不会先探索——他们直接行动。

Synapse 正是把你的 AI 智能体变成那位资深工程师。 知识图只构建一次,并随着你的代码变化自动更新,而且在每一次智能体请求时都能立即被查询到——这一切都不需要让代码离开你的机器。

我为什么要用它?

没有 Synapse

有 Synapse

智能体手动 grep 文件、手动读取 import、打开 10 个文件才找到一个函数

一次工具调用就能返回所需代码块、它的调用者以及相关测试

每次会话都是从零开始

图谱数据在多次会话中保留并不断优化

智能体写入一个文件,lint 运行失败,文件本身就是坏的

write_safely 工具先进行校验,失败会自动回滚

你粘贴一条 栈信息并希望自己的 CLHint 不要出错

resolve_stack 可把它直接映射到你的 AST 图,并建议一个修复

代码审查完全靠手工

review_diff 在代码提交前对爆炸半径和破坏的调用约定进行排序

你不需要改变智能体处理工作的方式。你也不需要改变自己的流程。你只需要开始使用 Synapse 并注册你的代码库,你的智能体立刻就会被优化。


Related MCP server: Reporecall

本地优先,永远如此。

🔒 你的代码永远不会离开你的机器。 Synapse 完全运行在你的硬件上——它不建立云端索引,不将你的源码用于 API 调用,不进行遥测数据采集,也没有任何供应商锁定。

大多数代码智能工具 통해把代码发送到云端服务以构建索引。Synapse 不这样做。完整的 AST 图——每个函数、每一条边、每个嵌入表示——都在本地构建并存储在一个持久化的本机设备存储中。当图谱构造完成后,你的智能体直接通过 MCP 查询。不会传出去任何内容。

这:

以下场景尤其需要这种设计:

  • 企业环境和受监管环境 ——源代码留在安全边界以内

  • 开源贡献者 —— 未发布的在工作不被泄漏

  • 所有重视速度的用户 —— 本地图谱查询亚毫秒延迟,不会发生网络往返。


Why Synapse?

标准智能体 grep 文本,而 Spreadsheet 从不预构建的 AST 图谱中提供 Search in text。

"四次工具调用,零文件读取,零 grep。在使用 Synapse 时,智能体把自己的 token 花在任务本身——而不是花在寻找代码上。" —— Synapse 基准报告

Benchmark —— 自动化安全审计 · 500k 行代码 · 同一种前沿模型

度量

Synapse vs. shell 工具

Tokens & 成本

−60%(降低 60%)

速度

提速 2.2 倍

工具调用次数

−47%(减少 47%)

准确度

100% —— 完全一致

发送到云端的数据

0 字节

更少的工具调用 + 无网络延迟 = 智能体迭代效率显著提升。


特性一览

特性

描述

🔒 100% 本地且私有

图谱在本地创建并存储,没有任何云端依赖,也不会产生任何数据出站,也不会因查询网络产生数据出站

⚡ 亚毫秒级图谱查询

本地内存存储可以实现即时响应——不超过任何 API 往返时间,不会损耗智能体预算

🚀 SmartCrusher 压缩

自动对响应最小化 30–60%:短线密钥、删除空值、缩短路径。在“大纲”模式中可忽略函数体,从而由 token 消耗 30% 就能扫描 20 个以上的文件

三种完全搜索

语义搜索——英语自然语言——以及符号方式与正则表达式——都返回结构化chunk ID,而不是原始文本中丢出一大段文件

可迁移的调用者图

对任意函数(无论有多深)都能事先知道它的直接调用者和传递调用者。支持可配置深度、置信度与边标签

安全原子的写入

在虚拟环境中执行验证模拟, 记录爆炸后后果,并以原子方式写入。如果有 lint 失败自动回滚,不会留下损坏的文件

即时崩溃定位

粘贴 一段堆栈跟踪,立即获得时把它映射到 AST 图中的根因分析——以及建议使用的复现方式。不依赖运行时

变更审查与影响分析

通过传入一个 diff 或 commit 区间,在push之前得到评估的扩展影响范围、失效的契约、对应的测试以及容易遗漏的地方

持久化的智能体记忆

能保存不同会话中写下的摘要。SynAPSE 用File 得越多,诊断越行

测试不易

根据图——而无需实际运行你的测试——就可以得到覆盖率范围、测试映射,还有需要优先执行的测试用例

代码库 X 光

一次审计即可得到:语言检测、公共 /API 表面、删除死代码的安全性、模块间依赖图、契约扫描以及重构建议


语言支持

支持超过 50 种语言,并支持多种仓库。所有主流编程语言的 AST 感知代码块边界抽象与依赖边抽取,无需插件,无需额外配置,也无需云服务。

Elixir Python TypeScript JavaScript Go Rust OCaml Haskell F# Clojure Scala Java Kotlin Swift C C++ C# Ruby PHP Dart Zig Erlang Julia Groovy Solidity GraphQL HCL / Terraform Protobuf SQL Shell PowerShell Lua ...and more


安装指南

请参阅以下指南中的快速开始,也可以访问 synapse-mcp.dev/download 了解完整指南和图形化界面安装程序。


价格

Free 版 —— Golden Graph · 永久免费

特性

说明

AST 索引

数秒内为超过 50 种语言的 1000 个以上文件建立 AST 索引

搜索模式

语义搜索、符号搜索、正则搜索——结构化返回,而不是文件摘要

调用者 graph

通过置信度分数遍历一切直接的上层和间接时调用方与 被调用者

深入洞察

API 表面、删除安全性、依赖关系图与重构候选

压缩技术

SmartCrusher 在将负载传给您的 LLM 之前减去 30–60%

隐私与安全

100% 本地——没有任何云端依赖,无任何数据出站

Pro 专业版 —— Shadow Graph · $19 / 月

通常节省下来的 token 费用已超过订阅费用。

特性

说明

安全写入

模拟、验证、lint 失败自动回滚

变更审查

对爆炸半径、更新损坏的契约以及风险优先级进行审查,并在提交前发现

崩溃解析

从 Stack 代码追踪到根因,并给出可复现测试建议

测试智能

覆盖率分段以及精确的缺口指定

持久化记忆

会话之间的摘要保留

知识缓存

随着时间的推移,被请求的查询会重新训练并改善结果排名


Synapse 从每次会话中学习

大部分 AI 工具没有记忆。每次会话都从零开始——智能体又要重新通读同样的文件,重写找到同样的函数,又会提相同的问题。这对时间和 token 的成本都是高昂的。

Synapse 与众不同。它维护一份持久化的、设备本地的知识图谱,在每次会话中不断积累。但除了存储图谱之外,它还内置了一个学习与强化层——你使用得越多,它就越智能。

学习机制——用大白话解释

可以把它想象成一位非常有条理、且随时记笔记的同事。

1. 摘要永久留存

当一个 agent(或你)解释某个函数的功能时——"This handles Stripe webhook validation and checks for duplicate events"——Synapse 会把它永久写入图谱。下一次会话中,任何触碰该函数的 agent 都会自动获得你的解释。你只需写一次,所有 agent 永远受益。

2. 会自我学习的查询 每次搜索返回有用结果、且 agent 实际采用了它时,Synapse 都会悄悄记录这种关联:“当有人问 X 时,chunk Y 正是正确答案。” 久而久之,常见查询中最好用的结果会自动浮现到顶部——不需要任何人手动调优。这就是检索强化:图谱会基于真实使用来改进自己的排序。

3. 显式提升 如果某个结果特别重要,你还可以直接告诉 Synapse:“对于支付处理相关的查询,始终优先展示这个 chunk。” 这条指令会本地保存,并在此后的每次会话中都得到遵守。

4. 缺口检测 Synapse 会跟踪代码库中哪些部分被查询最多、却还没有对应的解释说明。它可以按需展示这些缺口——这样你就清楚知道,五分钟的备注写在哪个位置,会对未来 agent 会话产生最大影响。

最终的结果,是一个会复利式增长的代码库模型。图谱越来越丰富,排序越来越精准,agent 在重复探索已经理解的内容上花费的时间越来越少。

🔒 学习层完全本地运行。没有任何查询、摘要、也在使用信号信号离开你的电脑。

✨ 学习与记忆系统是 Pro 功能。这是我们投入最具原创性工程的部分——构建一套反馈循环,让后续每个 agent 会话都肉眼可见地更快。


MCP 工具参考

Synapse 通过 Model Context Protocol 曝光了 13 个精准工具。所有工具都接受 compress_payload 标识(默认 true),它会在零信息损失的前提下启用 SmartCrusher 压缩——响应 token 减少 30–60%。

标记为 FREE 的工具在所有方案中可用。标记为 PRO 的工具需要 Pro 订阅($19/月)。真正的核心工程——安全原子写入与回滚、跨会话学习、崩溃解决、变更影响分析——都属于 Pro 功能。


ask_synapse — FREE

这是默认的自然语言入口。 用最简单自然的语言提问或描述任务,Synapse 会把它路由到最优底层工具,返回可安全执行的的 next_tool_calls,并给出 completion_state 与 agent_instruction,让你始终知道下一步该做什么。

几乎任何任务都先使用它:代码检索、删除安全检查、编辑、debugging、测试分析、管理操作都行。如果要提“我可以删除 X 吗?”、“X 还在使用吗?”或者“我应该保留 X 吗?”这类问题,请捎带 inputs.chunk_id;如果不知道,就提供 repo_id 并在 inputs.symbol 中指定一个带 fixed shape 的精确定位函数依赖。如果用户只给了一段文字描述,不要靠猜——请他给出具体符号,或展示候选候选结果。

{ "query": "Where is the retry logic for the payment service?", "repo_id": "my-org/my-repo" }

synapse_search_codebase — FREE

按含义、名称、模式找代码。 一个工具里面有三种搜索方式:

Action

Description

semantic

自然语言语义相似度搜索,查找 “Find all places that handle auth errors”(所有处理鉴权错误的地方)。搜索结果基于语义,不基于关键字。

symbol

通过函数、类、模块或类型名精确检索具体命名符号。

regular expression

对内存索引图进行完整 PCRE 正则搜索。返回 chunk ID、行号与标签——但不返回原始文件正文。

{ "action": "symbol", "query": "PaymentService", "repo_id": "my-org/my-repo" }

synapse_explore_graph — FREE

围绕任意类型 chunk 做关系探索。 输入一个 chunk ID(来自任意搜索结果),可以从任意方向遍历 AST 依赖图谱。

操作

描述

callers

一个函数的全部直接与递归调用者,支持可调深度和置信度评估。

callees

指定 chunk 所调用的所有函数/模块。

context

周边 rich context — 调用者、被调用者、同域成员、相关 chunk。全能邻域信息。

cycles

检测图中是否有循环依赖链。

在改动任何函数之前,先用它看清楚影响完整影响范围。

{ "action": "callers", "chunk_id": "abc123", "depth": 3 }

synapse_get_context — FREE

高级上下文收集,适用于编辑、新功能开发和解释场景。

操作

描述

context

完全开放的语义调研——并行执行语义语义检索、精确匹配、模糊匹配和图遍历,一次完成。

edit

安全编辑预防包:调用者、被调用者、必读文件、常见测试文件,以及在动手前完整做风险评估。

explain

用简单语言清楚说明某个 chunk 到底做什么。

onboard

智能推荐一个子系统的最佳阅读顺序——想快速上手不熟悉的代码库时,特别有效。

{ "action": "edit", "intent": "Refactor the caching layer to use Redis", "repo_id": "my-org/my-repo" }

synapse_inspect_files — FREE

以结构感知的方式来读取源码文件与这些 chunk。

操作

说明

read_files

读取文件,可指定行号范围,也支持 format: “outline”(去掉函数体、只保留签名,token 可省 60–80%)。

read_chunk

直接从内存索引中,按 chunk 读取,不需要磁盘 I/O,秒级返回。

count_lines

统计当前代码库被索引的代码总行数。

配合 format: “outline” 一遍扫描 20+ 个文件,社会被消耗的 token 成本降到很低。只有当非真实实现不可时,才该用 format: “full”。

{ "action": "read_files", "files": [{ "path": "lib/my_module.ex", "ranges": ["45-80"] }], "format": "outline" }

⚠️ Linting 工作流提醒:当你在排查空格/.issue 或格式问题时,读文件时请传 compress_payload: false。SmartCrusher 在返回内容之前会先去掉行尾空格,而你本来正是要找这些空格类问题。


synopsis_modify_files — PRO

安全地编辑代码——验证通过则原子写入,失败会全部回滚。

这是我们最引以为傲的机制之一。Agent 直接写文件很危险:一旦 lint 不过,就可能留下损坏的文件、没写完的函数,或者直接让代码库 build 不了。write_safely 的方法是在内存中模拟这次编辑,预先跑一遍你自己项目的 lint 规则,只有 lint 通过才会在真正被称为“已写入到磁盘”。无论什么状况,都能保证原始文件不被破坏。

操作

等级

描述

write_safely

PRO

模拟、lint 验证、原子化落地。失败自动回滚,文件绝不会被留在半损坏状态。

find_and_replace

PRO

在已索引的代码图谱上执行全局查找和替换,并带模式匹配。

delete_chunk

PRO

从图谱/索引中移除 grant+ node。它不是源代码删除建议;删除任何源码之前,请先使用 dead_code 模块证据。

先配合 synapse_get_context(edit 动作)查看行为上下文,再做任何 edit 尝试。

{ "action": "write_safely", "path": "lib/my_module.ex", "content": "..." }

synapse_change_review — PRO

代码在配送前先想清楚影响范围。

在推送前,Synapse 会先映射你 diff 涉及的所有 chunk,明确相关风险,识别是否有破坏的协议契约,并告诉你该该哪些测试会对全套风险更稳。这相当于把人工代码评审中一项通常耗时 20–40 的中等规模改动,变成一次即时操作。

操作

描述

analyse_diff

对 diff 做结构分析:这 diff 里涉及哪些 chunk,改动会扩散到哪些地方。

review_diff

完整评审:风险排序、盲点识别、可能被破坏这件事的契约,以及建议运行的测试清单。

effect

编辑后续冲击范围检查:确认一次已提交的变更真正影响什么。

喂给它原始 diff 字符串或一个 commit range,就能得到可执行的检查建议,运算在你 push 之前。

{ "action": "review_diff", "diff": "..." }

synapse_codebase_insights — FREE

一次调用拿到整个代码库层面的分析。 当某个 agent 需要判断一个符号或一行 chunk 是否仍在被使用、是否安全删除时,操作方式通常是 ask_synapse,但也可以直接与之对应的 dead_code 动作接出来。

操作

描述

detect

对当前项目做语言识别工程。

public_api

提取某个 module 或整个代码库的完整公共 API 表面。

dead_code.

只读式删除安全级检查:输入 chunk_id 或带有限定人数的符号,输出生产环境被调用情况、测试被调用情况、置信度、注意事项与 safe_to_safe_delete 标量。

contracts

扫描接口 / 行为 / 协议契约及其具体实现。

dependencies

模块间依赖图:谁 import 了谁。

overview

一个适用于高层视野的代码库架构提纲,汇总为简洁的 Overview。

refactor_opportunities

重点识别:重复逻辑、过于臃肿的模块,以及紧密耦合的焦点模块哪里没有。

{ "action": "overview", "repo_id": "my-org/my-repo" }

“删除安全”类问题通常应当经由 ask_synapse 进入,这能保证 route 将来会发起路由检索、缺失 input 时有引导,以及 agent_instruction 一致传递:

{
  "query": "Can I delete this chunk?",
  "repo_id": "my-org/my-repo",
  "inputs": { "chunk_id": "my-org/my-repo:lib/parser.ex:120" }
}
{
  "query": "Is Parser.parse/2 still used?",
  "repo_id": "my-org/my-repo",
  "inputs": { "symbol": "Parser.parse/2" }
}

如果没有可用的 chunk_id,请传入 repo_id 加上一个带元数限定的符号,例如 Parser.parse/2;描述性文字应产生澄清或候选结果,而不是猜测性的删除决策。

解读 dead_code 时,请阅读 preferred_identifier、valid_input_patterns、scope、clause_level_analysis、safe_to_delete、deletion_risk、confidence、caveats 以及 supporting_evidence.production_callers / supporting_evidence.test_callers。dead_code 是函数级别的;子句级可达性目前被报告为不支持。有生产环境调用者意味着应保留;仅有测试调用者或可见性未知的情况应作为警示呈现,而不是自动删除。


synapse_test_quality — PRO

测试发现与覆盖率分析——无需测试运行器。

直接从 AST 图推导测试覆盖率与缺口——完全不需要运行任何测试。这对于大型代码库尤其有用,因为完整的测试套件可能需要数分钟才能执行完。Synapse 能在几秒钟内告诉您什么已覆盖、什么未覆盖,以及下一步应聚焦何处。

操作

描述

coverage

覆盖率区间分析——哪些函数已被测试,哪些存在缺口

find_tests

定位与特定符号或文件相关的测试,按置信度排序

recommend_test_targets

基于图结构给出最需要测试的函数排名列表

setup_trunk

配置 Trunk 用于 linting 集成

{ "action": "find_tests", "symbol": "PaymentService.charge" }

synapse_debug_trace — PRO

直接从 AST 图进行调试与执行追踪。

粘贴原始堆栈跟踪,即可获得根本原因分析,将每一帧直接映射到您的索引代码块,并附上建议的复现测试以及导致该结果的调用链。无需运行时、无需调试器、无需重新运行失败场景。

操作

描述

resolve_stack

粘贴堆栈跟踪;获得映射到图上的根本原因分析,并附复现测试建议。无需运行时

trace_behaviour

追踪某种 behavior 或回调在图中的执行路径

{ "action": "resolve_stack", "stack_trace": "..." }

synapse_knowledge_cache — PRO

学习与强化层。能够跨会话持续存在的持久化知识。

这是 Synapse 最独特的能力。关于其工作原理的通俗易懂解释,请参阅 Synapse 从每次会话中学习。需要逐字保留原文的地方除外。

操作

描述

save_summary

为某个 chunk 附加一条自然语言描述。今后每次查询涉及到该 chunk 时,都会自动获得你的说明

query

按意图搜索缓存——检索来自先前会话的推荐/被提升结果

learn

显式将某 chunk 提升到某个查询,立即改进未来结果的排序

suggest

找出缺少摘要的高流量 chunk——在这些 chunk 上投入能改善所有未来的会话

{ "action": "save_summary", "chunk_id": "abc123", "summary": "Handles Stripe webhook validation and idempotency checks." }

synapse_manage_repos — FREE

在 Synapse 图中注册、列出和管理仓库。

操作

描述

list

列出所有已注册的仓库及其索引状态

register

注册新的仓库根目录。自动检测 Git worktrees 以实现仅增量索引

archive

暂停某仓库的索引,但不删除其数据

restore

重新激活已归档的仓库

keep

关闭合并提示,保持覆盖层现状不变

unregister

将仓库从图中完全移除

update_excludes

更新全局配置/模式,将某些路径从索引中排除

{ "action": "register", "path": "/path/to/my-repo" }

synapse_indexer_control — FREE

健康检查与索引器管理。

操作

描述

status

当前索引阶段、文件数量、嵌入就绪状态以及每个仓库的状态

health

系统健康检查——确认服务器已启动且图存储可访问

trigger

手动触发某个特定仓库的重新索引

{ "action": "status", "repo_id": "my-org/my-repo" }

synapse_capability_manifest — FREE

自描述的工具表面。 返回当前运行版本 Synapse 可用的完整工具、操作和参数列表。对于代理启动新会话时初始化,或检查已连接服务器提供的功能非常有用。

{}

Git Worktree 支持

Synapse 通过 Virtual Worktree Overlay (VWO) 透明地支持 Git worktrees:

  • 增量索引 —— 只对修改/添加/删除的文件重新索引。几乎即时完成(< 50ms)。

  • 覆盖层优先级 —— worktree 的 chunk 会自动覆盖 主仓库 的 chunk。

  • 并行 Agent 工作流 —— 在多个单独 worktree 中自由运行子 agent,而无需重复主索引。


在任何地方工作

Synapse 实现了开放的 Model Context Protocol。如果您的工具能讲 MCP,它就能与 Synapse 协同工作。

IDE 与编辑器: Cursor · Windsurf · VS Code · Zed · JetBrains AI

代理: Claude Code · GitHub Copilot · Devin · Aider · Cline · Continue.dev · Replit Agent · Amazon Q · OpenHands · SWE-agent · Plandex · Antigravity

工具: Sourcegraph Cody · Qodo · Tabnine


快速开始

完整 安装 指南 & GUI 安装程序: synapse-mcp.dev/download

Linux / macOS

curl -fsSL https://downloads.synapse-mcp.dev/install.sh | sh

下载并运行安装脚本 —— 安装前先检查

Windows

powershell -c "irm https://downloads.synapse-mcp.dev/install.ps1 | iex"

从 PowerShell 运行 —— 请先检查脚本

安装程序会自动检测您的 MCP 客户端(Cursor、Claude Code、Windsurf、VS Code 等)并写入正确配置。


隐私

100% 本地化。 Synapse 完全在您自己的机器上运行。没有任何代码会离开您的环境,无云端依赖,无数据外传。您的代码库始终属于您。


参与贡献 —— 帮助 Agent 更好地使用 Synapse

这是您能做出的最有战略意义的贡献。

大语言模型的训练语料中包含海量代码,开发者通常用 grep、find、cat 和 ls 去探索代码库。这种“肌肉记忆”已经刻进了模型的权重中。当 一个 agent 进入新项目时,它的第一反应往往是 grep——即使有更聪明、更廉价的工具可用。

Synapse 附带了一组 agent skill 文件(.agents/skills/synapse-mcp/SKILL.md、AGENTS.md),这些文件会在 session 开始时由 agent 加载。它们通过给 agent 明确的调度规则、反模式和示例工具调用,来覆盖 grep 的本能。这些文件实际上就是“脉动”的运行时训练——它教 agent 的是 如何 使用工具,而不仅仅是这些工具能做什么。

问题所在: 我们能写的只有我们观察到的。而您可能已经发现了具体 agent 的无视失败模式、路由缺口或用词问题。而我们没有。技能文件会通过真实世界使用反馈迅速改进。

期待您的贡献

领域

贡献方向

反模式(Anti-patterns)

您观察到的 agent 行为,并对 Synapse 应该抑制的(例如“我的 agent 在加载 skill 后仍然 grep”)

路由规则

agent 选择了错误 Synapse 工具的案例——当时查询是什么,它本来应该怎么做?

好的措辞/提示词

如果某个具体指令措辞能有效抑制 agent 退回 grep,请分享它

agent 的特定怪癖

Claude、GPT-4o、Gemini、Copilot 行为倾向不同。Agent 专属的 AGENTS.md 片段会非常有帮助

新工具示例

skill 中尚未覆盖的控制器 (patterns) 的具体有效 JSON 示例

缺失的流程

skill 没有任何指导为客服的常见场景(调试、新成员加入、核心重构等)

如何参与

  1. 创建 issue —— 描述您发现的失败模式或空白。请提供 agent 名称、问题查询以及“实际发生 vs 应该发生”的信息。

  2. 提交 PR —— 直接编辑 AGENTS.md 或 .agents/skills/synapse-mcp/SKILL.md 文件。Skill 文件的 PR 审核和合并非常快——不需要测试。

  3. 共享 benchmark —— 如果您在自己的代码库上比较了 Synapse 和 shell 工具并得到量化结果,我们愿意发布它们。

skill 文件位于 仓库 根目录和 .agents/ 目录。它们是纯 Markdown——无需了解 Elixir 知识。只要能描述哪里出了问题,您就能写出修复。


接下来 —— Myelix Agents · 2026 年 Q3 发布

Synapse 为您的既有 AI agents 提供了一份精确的代码库地图。Myelix Agents 是下一步:从零开始构建的 AI 编程 agent,从而在编码之前就学会 思考。

现代 agent 通常是被动反应——读取文件、修改、寄期待;而 Myelix Agents 会进行周密规划。它们维护一个明确的任务模型,在触碰代码之前先思考风险,整合以前的 session 中积累的学习(通过 Synapse 的知识图),并在出错时调整修正路径。

准确 > 速度,思考 > grep。

Synapse Pro 订阅用户将获得优先体验资格。 立即加入 waitlist →


支持

需要帮助吗? 打开一个 issue,我们会回复您。Bug 报告、新功能请求以及集成咨询均欢迎提交。


链接


Available Tools

14 tools
ask_synapseAsk SynapseA

Default Synapse entry point for codebase questions, deletion-safety checks, edits, reviews, debugging, test discovery, repository administration, and capability discovery. It routes natural-language objectives through the existing granular tools while preserving their entitlement, readiness, validation, and mutation-safety checks. Pass top-level repo_id and path to scope repository work, and pass exact identifiers in inputs when prose might be ambiguous.

REPLACES: manual Synapse tool and action selection. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Use first for ordinary Synapse requests.

Usage (long): Describe the objective in query and provide concrete identifiers or mutation payloads separately. Prefer top-level repo_id and path for scope; context.repo_path and context.target_file are accepted compatibility aliases. For deletion-safety wording such as 'can I delete X?' or 'is X still used?', provide inputs.chunk_id when available, otherwise repo_id plus an exact arity-qualified inputs.symbol so ask_synapse can route to synapse_codebase_insights/dead_code; descriptive prose without one exact target must ask for clarification instead of guessing. Inspect completion_state, agent_instruction, and follow only the returned safe next_tool_calls guidance when the response is incomplete.

NameRequiredDescriptionDefault
pathNoCanonical repository-relative path filter or target. Prefer this top-level field for file scope.
depthNo
limitNo
queryYesNatural-language question or objective.
formatNo
inputsNoExplicit action data. Mutation content and replacements must be supplied here.
confirmNo
contextNoTyped symbols, stack traces, diffs, or other routing context. Prefer top-level repo_id and path for scope; context.repo_path and context.target_file remain compatible aliases.
repo_idNoCanonical registered repository identifier. Prefer this top-level field for repository scope.
feedbackNoExplicit feedback bound to an earlier route.
route_idNoOpaque route binding returned by an earlier incomplete response.
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
preview_digestNo
compress_payloadNoSet false to disable lossless response-key compression.
wait_for_ready_msNoOptional timeout in ms to wait for the indexer to finish warming up and enter an idle state before executing. Use to ensure stable results.
confirmation_tokenNoOpaque binding returned by a pending mutation.

TDQS

A4.3/5.0
Behavior4/5

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

There are no annotations, so the description must carry the behavioral burden. It does so well by disclosing routing through existing granular tools, preserving entitlement/readiness/validation/mutation-safety checks, automatic compression, clarification behaviour for ambiguous targets, and the incomplete-response protocol via completion_state, agent_instruction, and next_tool_calls. It does not explicitly mention side-effect potential or confirmation semantics, but the information is generally 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 clearly structured into an overview, replacement statement, and short/long usage guidance. It is a bit longer than necessary, with some repetition around the same 'Use first' and 'instead of alternatives' ideas, but every section earns its place given the tool's complexity and broad role.

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

Completeness4/5

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

Given that the tool has 16 parameters, nested objects, no output schema, and no annotations, the description does a good job of covering the common and even advanced flow: scoping, exact identifier, mutation payload, feedback/identity, confirmation_token, compression, and next_tool_calls. It does not fully explain return shape, confirmation UI authority explicit cases, or when the agent should bypass the router, so I deduct a little for those gaps.

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 schema description coverage is 69%, and the description adds meaning beyond the schema in the right places: it explains query, top-level repo_id/path vs. global aliases, where mutation payload must live, how deletion-safety targets should be supplied, and how to use returned route ids. However, certain parameters such as depth, limit, format, and preview_digest remain unexplained.

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 identifies the tool as the default Synapse entry point that routes natural-language objectives across a defined set of tasks (questions, deletion-safety, edits, reviews, debugging, test discovery, repo administration, capability discovery). It distinguishes the tool from the granular sibling tools by framing it as the intelligent router preferred over manual tool selection.

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

Usage Guidelines4/5

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

The description gives explicit, actionable guidance: use this first, prefer top-level repo_id and path, supply concrete identifiers in inputs, and for deleting queries provide chunk_id or a qualified symbol rather than vague prose. It stops short of presenting a clear when-not-to-use case or alternatives for bypassing the router, but the routing context is strong.

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

synapse_capability_manifestCapability ManifestA

Return a structured manifest describing SynapseMCP's live tool surface, including schemas, mutation characteristics, static safety classification, and tool relationships.

REPLACES: reading MCP tool schemas manually, trial-and-error tool discovery. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Returns a structured manifest of live Synapse MCP tool capabilities.

Usage (long): Use this to discover tool schemas, mutation characteristics, and capability relationships. Includes quick_start onboarding steps and readiness_routing to understand which tools work at each indexing phase.

NameRequiredDescriptionDefault
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
include_toolsNoWhen true, include per-tool descriptors.
include_groupsNoWhen true, include capability group definitions.
schema_versionNoRequested manifest schema version. Defaults to the latest stable schema.
compress_payloadNoSet false to disable lossless response-key compression.
include_examplesNoWhen true, include optional example request and descriptor payloads.
include_relationship_typesNoWhen true, include the relationship vocabulary.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden and delivers spef: it says the output is 'live', includes 'mutation characteristics', 'safety class', 'tool relationships', and mentions compression and token behavior. It could explicitly state no side-effects, but the content is substantially transparent for a meta/manifest tool.

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 organized into sections and is mostly useful, but the 'Usage (short)' line duplicates the first sentence almost verbatim ('Return a structured manifest...' / 'Returns a structured manifest...'). This redundancy costs the description a higher score.

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?

Without an output schema, the description compensates by enumerating what the manifest includes: schemas, mutation characteristics, safety classification, relationships, ready routing, and quick_start. It gives enough for an agent to understand the return surface, though it could still describe the manifest's literal top-level format.

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 explains all 7 optional parameters. The description adds no new per-parameter detail beyond referencing compression and discovery, which is consistent with the baseline value for when schema does the heavy lifting.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Return a structured manifest describing SynapseMCP's live tool surface,' and enumerates concrete contents (schemas, mutation characters, static safety classification, tool relationships). This clearly distinguishs it from the 11 siblings, none of which present a meta-manifest of the tool surface.

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

Usage Guidelines4/5

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

The description gives explicit usage context: 'a replaces: reading MCP tool schemas manually h trial-and-error tool discovery' and says 'Use this tool instead of these alternatives'. It doesn't cover when-not-to-use or name sibling alternates, but the context is unmistakeable.

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

synapse_change_reviewChange ReviewA

Analyses and reviews proposed changes (via diff, commit range, chunk list, or file list). High-level actions include:

  • 'analyse_diff': parses and orientates a change set quickly (modified symbols, must-read files, tests to run, contract signals).

  • 'review_diff': performs a detailed safety and risk review of proposed edits, highlighting blind spots and state/event contract changes.

  • 'impact': evaluates blast radius, downstream callers, and change risk.

REPLACES: git diff, manual diff review, grep_search for impact analysis. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Analyse diffs, review change risks, and evaluate downstream impact.

Usage (long): Inspect commit/branch diffs, review code changes for structural risks, or calculate blast radius impact before refactoring. Use after making changes to verify safety, or before merging to assess risk.

NameRequiredDescriptionDefault
actionYesThe action to perform.
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
compress_payloadNoSet false to disable lossless response-key compression.

TDQS

A4.5/5.0
Behavior4/5

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

There are no annotations, so the description must carry the behavioral burden. It discloses what each action produces—modified symbols, must-read files, tests to run, contract signals, blind spots, blast radius, downstream callers, and change risk—and mentions automatic token compression. It does not explicitly state read-only behavior, but the analysis/review framing strongly implies it.

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

Conciseness4/5

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

The description is well-structured with a punchy lead sentence, action bullets, and explicit replacement topic. However, the Usage short and Usage long sections partially repeat the same guidance, and the REPLACES paragraph is slightly redundant with the opening line.

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

Completeness4/5

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

Given no output schema and no annotations, the description does a good job of covering all three action modes and their outcome categories, plus when to invoke the tool. It is slightly weakened by not explaining exactly how the diff/commit-range/file-list input is provided, since no input parameter exposes it.

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%, but the description adds substantial semantic value beyond the bare 'action' property by explaining what each enum value does. It also links compress_payload to the token-compression behavior and describes the high-level result categories agents can expect, which helps parameter selection.

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

Purpose5/5

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

The description begins with a specific verb and resource: 'analyses and reviews proposed changes' via diffs, commit ranges, chunk lists, or file lists. It further clarifies the three concrete action modes and explicitly distinguishes itself from alternatives like git diff, manual diff review, and grep_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?

The description explicitly says 'REPLACES: git diff, manual diff review, grep_search' and tells the agent to use this tool 'instead of these alternatives'. It also gives situation-specific guidance: use after making changes to verify safety, or before merging to assess risk, plus when to inspect commit/branch diffs or before refactoring.

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

synapse_codebase_insightsCodebase InsightsA

Analyses codebase structures, API boundaries, contracts, dependencies, and deletion safety. High-level actions include:

  • 'detect': returns percentage language and framework breakdown, file count, and recommended linter audits.

  • 'public_api': lists public modules and functions, helper heuristics, and external callers count.

  • 'dead_code': performs a read-only function-level deletion-safety check for one exact symbol or chunk_id. Prefer chunk_id from a previous Synapse result; otherwise pass repo_id plus an arity-qualified symbol such as Parser.parse/2. It reports whether the symbol appears dead, splits production and test callers, explains confidence and deletion risk, marks clause-level analysis as unsupported, and tells the agent what to do next without deleting source.

  • 'contracts': scans interface boundaries (JSON/HTTP/CLI) and outward-facing schemas.

  • 'dependencies': builds an inter-module dependency graph.

  • 'overview': returns a consolidated repository overview.

  • 'refactor_opportunities': surfaces code quality improvement candidates.

REPLACES: grep_search for API surface discovery, wc for codebase sizing, manual language detection, find for framework detection. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Detect languages, identify public APIs, check deletion safety, build dependency graphs, and surface refactoring opportunities.

Usage (long): Analyze language mix, list public API surfaces, run function-level deletion-safety checks by chunk_id or repo_id + symbol, scan interface boundaries (JSON/HTTP/CLI), build dependency graphs, surface refactoring opportunities, or retrieve a consolidated repository overview. Use 'dead_code' as the backend for ask_synapse questions like 'can I delete X?', 'is X still used?', or 'should I keep X?'. Provide chunk_id, or repo_id plus one exact symbol; bare function names are resolved only when one arity variant is indexed. If the user only gives descriptive prose, ask for the concrete symbol rather than guessing. Read scope, clause_level_analysis, safe_to_delete, deletion_risk, confidence, caveats, and supporting_evidence.production_callers/test_callers before advising. Use 'detect' to understand the language mix before choosing search modes.

NameRequiredDescriptionDefault
actionYesThe action to perform.
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
compress_payloadNoSet false to disable lossless response-key compression.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and responds well for 'dead_code': it labels the check read-only, highlights that no source is deleted, lists confidence/risk/caveats, and disposes of unsupported clause-level analysis. Other actions get lighter treatment and no return-shape details, so the transparency is good but not complete.

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 organized as a summary, per-action bullets, then a short usage block; it is front-loaded and uses lists well for a multi-action tool. The 'Usage' wording does partially repeat the action list, but the repetition is moderate for the complexity being described.

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 no-output-schema tool with seven action modes, the dead_code sub-case is very complete. Other actions are described enough to be understood but 'refactor_opportunities' remains under-specified, and the schema does not actually expose the personnel IDs/symbols/chunk identifiers the description asks for, leaving an invocation gap.

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

Parameters3/5

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

All three actual parameters already have schema descriptions, so the description is not required to carry the parameter documentation burden. It does add meaning by explaining what each action enum value accomplishes. However, the dead_code instructions tell the agent to pass repo_id/symbol/chunk_id arguments that are absent from the provided input-schema, which is misleading for actual call construction.

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 opening sentence names concrete resources — codebase structures, API boundaries, contracts, dependencies, and deletion safety — and the action bullets map directly to the schema enum, so the tool's purpose is clear and distinguishable from search/modify siblings. It loses a point because 'refactor_opportunities' is part of the enum but only mentioned in passing rather than given an explicit action bullet.

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

Usage Guidelines4/5

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

It gives explicit guidance for the most complex case: use 'dead_code' as the backend for ask_synapse questions like 'can I delete X?', and prefers the chunk_id over a raw symbol. It also tells the agent to ask for the concrete symbol instead of guessing and to use 'detect' before choosing search modes. It stops short of naming when-not scenarios or explicit sibling exclusions.

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

synapse_debug_traceDebug TraceA

Traces code paths or resolves error stack traces to understand execution flow and debug issues. High-level actions include:

  • 'trace_behaviour': maps the execution flow of a function (branching, state access, side effects, tests).

  • 'resolve_stack': parses a runtime crash stack trace and matches frames to repository chunks, root cause, and tests.

REPLACES: manual stack trace reading, grep_search for error origins, sequential file reads to trace execution. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Trace ranked execution paths and map crash stack traces to code chunks. Maps stack traces to chunks.

Usage (long): Trace execution flow (branching, state access, side effects) or resolve runtime stack traces to locate crash-site causes and tests. Use 'trace_behaviour' to understand how a function works without running it. Use 'resolve_stack' to map crash stack traces to indexed code chunks with root cause analysis.

NameRequiredDescriptionDefault
actionYesThe action to perform.
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
compress_payloadNoSet false to disable lossless response-key compression.

TDQS

A4.3/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 behavior burden. It does disclose that the tool does not run code and that it reduces token usage via automatic compression. However, it does not mention potential side effects of the save_to_file parameter, any indexing/prerequisite requirements, or whether resolution can fail for unknown stacks, so the transparency is incomplete.

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 purpose and organized into scannable sections: actions, REPLACES, short usage, and long usage. There is some redundancy between the short and long usage sections, but each section generally earns its place.

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

Completeness4/5

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

For a 3-parameter tool with no output schema and no annotations, the description provides enough context to understand what the tool does, when to choose each action, and what results conceptually look like. It does not fully describe output structure or prerequisite conditions, but the prose covers most of what an agent needs.

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 already covers all three parameters with high description coverage, giving a baseline of 3. The tool description adds meaningful semantics to the action enum by explaining exactly what 'trace_behaviour' and 'resolve_stack' do, while the schema still handles the function signature and save_to_file 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 opens with a specific verb and resource ('Traces code paths or resolves error stack traces...') and names two concrete high-level actions, each with clear inputs and outcomes. It clearly distinguishes this tool from the sibling tools like synapse_search_codebase or synapse_inspect_files.

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?

It explicitly states what this tool replaces: manual stack trace reading, grep_search for error origins, and sequential file reads, and tells the agent to use this instead. It also gives action-specific guidance: use trace_behaviour to understand function flow without running it, and use resolve_stack to map crash frames to chunks and root cause.

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

synapse_explore_graphExplore GraphA

Explores structural relationships within the codebase graph. High-level actions include:

  • 'callers': finds all chunks that call a given chunk, with transitive depth support (1–3).

  • 'callees': finds all functions, modules, or types that a chunk calls or depends on, with transitive depth support (1–3).

  • 'context': retrieves rich structural context (callers, callees, related chunks) around a specific chunk.

  • 'cycles': detects circular dependencies reachable from a given chunk. All four actions accept chunk_id OR (repo_id + symbol) OR (repo_id + file_path + optional line) — no separate lookup needed.

REPLACES: grep_search for caller discovery, manual import tracing, find_references, caller guessing. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Explore caller-callee dependency relationships and semantic context in the code graph. Pass symbol + repo_id directly — no separate lookup needed.

Usage (long): Trace incoming callers, downstream callees, detect cycles, or retrieve immediate neighbours/references for a code chunk. ALL four actions (callers, callees, context, cycles) accept:

  1. chunk_id (direct) — fastest, use when already known.

  2. repo_id + symbol — resolves the symbol and runs in one call.

  3. repo_id + file_path (+ optional line) — resolves by file position. Token-saving: both callers and callees support depth 1–3. Use depth: 2+ to get multi-hop results in a SINGLE call instead of chaining multiple depth-1 calls. One-call examples: callers: {action: 'callers', repo_id: 'MY_REPO', symbol: 'MyModule.my_fn', depth: 2} callees: {action: 'callees', repo_id: 'MY_REPO', symbol: 'MyModule.my_fn', depth: 2} cycles: {action: 'cycles', repo_id: 'MY_REPO', symbol: 'MyModule.my_fn'} Replaces manual import/caller guessing. Returns transitive callers/callees with depth control. Compression is on by default — graph results can be large.

NameRequiredDescriptionDefault
actionYesThe action to perform.
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
compress_payloadNoSet false to disable lossless response-key compression.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full disclosure burden and does it well: it explains transitive behavior, depth 1–3, automatic compression, and warns graph results can be large. It doesn't explicitly state 'read-only,' but the action names and context imply 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.

Conciseness4/5

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

The description is longer than typical but well-structured with bullets, preprocessing examples, and front-loaded action list. There is some redundancy, such as telling the message that 'no separate lookup needed' and 'Replaces...manual caller guessing' twice, but the overall shape is usable.

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?

The behavior context is complete for a read-only, no-annotations, no-output-schema tool. It covers what is returned, how to specify targets, depth options, token-saving, compression, and which alternatives to replace. The agent has enough information to select and invoke the tool in most realistic graph-query scenarios.

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 already documents all three declared properties, so baseline is 3. The description adds real semantics: action values, how chunk_id/repo+symbol/file_path are accepted, depth behavior, and actual invocation examples. However, it references target fields like repo_id, symbol, and depth that are missing from the input schema, which oils any agent invocation and prevents a pointerfect score.

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

Purpose5/5

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

The description states the core purpose clearly: 'Explores structural relationships within the codebase graph' and then catalogs the four concrete actions. It distinguishes itself from siblings by naming grep_search, find_references, and caller guessing as alternatives it replaces.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use the tool and what alternatives it replaces, plus three ways to specify a target and one-call examples. It also advises using depth 2+ for multi-hop results instead of chaining depth-1 calls.

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

synapse_get_contextGet ContextA

Retrieves rich context about the codebase for understanding, editing, explaining, or onboarding. Pass the exact repo_id to keep results focused on the intended repository, especially when multiple repositories are registered; if repo_id is unknown, call synapse_manage_repos with action 'list'. High-level actions include:

  • 'find': runs semantic search, exact symbol lookup, fuzzy matching, and call-graph traversal to locate relevant chunks. Without repo_id, it returns at most 5 high-confidence matches.

  • 'edit': gathers callers, callees, related tests, risk assessment, and behaviour boundaries before editing a chunk.

  • 'explain': produces a layered explanation of a chunk.

  • 'onboard': builds a subsystem reading order and learning path.

REPLACES: multi-file grep_search chains, sequential view_file reads, manual code comprehension. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Retrieve codebase context, explain chunks, build onboarding reading orders, or prepare pre-edit safety packs. Pass the exact repo_id to keep results focused on the intended repository. For the freshest just-edited path, use action 'edit' (analogous to current symbol lookup and graph context workflows).

Usage (long): Prepare context before edit, retrieve layered explanations, locate files/chunks for a feature, or construct reading paths. Pass the exact repo_id to keep results focused on the intended repository. If repo_id is unknown, call synapse_manage_repos with action 'list' and copy it verbatim. Without repo_id, action 'find' returns at most 5 high-confidence matches and reports meta.unscoped_retrieval. Action 'edit' is the essential pre-edit step — always call it before modifying code. It gathers callers, callees, tests, and risk in one call.

NameRequiredDescriptionDefault
kindNoFilter results by entity kind (used in action 'find').
lineNoLine number within file_path (used in action 'edit').
pathNoFilter results by partial path (used in action 'find').
depthNoCallee traversal depth (used in action 'onboard', default 3).
limitNoMaximum number of results to return.
queryNoNatural language query or symbol name. Required for 'onboard' (entry point for the reading guide); used in 'find' for semantic/symbol search.
actionYesContext action to perform.
formatNoInclude structured result metadata and relevance provenance for action 'find'.markdown
intentNoDescribe what you plan to change (used in action 'edit').edit behaviour safely
symbolNoTarget symbol name (alternative to chunk_id for action 'edit').
repo_idNoRepository identifier. Pass the exact repo_id to keep results focused on the intended repository and avoid matches from unrelated registered repositories. If unknown, call synapse_manage_repos with action 'list' and copy the repo_id verbatim. When omitted for 'find', only high-confidence matches are returned, capped at 5.
chunk_idNoTarget chunk identifier (used in action 'edit' and 'explain').
languageNoFilter results by language (used in action 'find').
file_pathNoTarget file path (alternative to chunk_id for action 'edit').
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
risk_levelNoThe risk level of your change (used in action 'edit').medium
exclude_testsNoExclude test files from results (used in action 'find').
compress_payloadNoSet false to disable lossless response-key compression.
wait_for_ready_msNoOptional timeout in ms to wait for the indexer to finish warming up and enter an idle state before executing. Use to ensure stable results.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It does well: it explains the at-most-5 high-confidence match cap without repo_id, mentions meta.unscoped_retrieval, details what each action gathers or produces, and discloses token compression behavior. A small gap is that it never explicitly states that this is a read-only operation and never mutates code, though calling it 'retrieves' strongly implies it.

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 well-structured and front-loaded with high-level purpose and actions, but it repeats key points: 'Pass the exact repo_id...' appears multiple times, and 'action edit' is emphasized twice. The 'Usage (short)' vs 'Usage (long)' sections also add redundancy. Overall, it is longer than necessary, but the information is organized and relevant.

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 complexity of this tool (19 parameters, no output schema, no annotations), the description is largely complete: it covers all four actions, tells the agent how to obtain a repo_id, explains behavior without repo_id, and describes what the edit action should gather. It does not fully describe the overall return value structure, but the action-level descriptions and the schema help bridge most of that gap.

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 full 100% description coverage, so the baseline is 3. The description adds meaningful semantics beyond the schema: it explains why action 'edit' is the essential pre-edit step, clarifies the impact of omitted repo_id, and breaks down what each high-level action does (e.g., find's multi-mode search, explain's layered explanation, and onboard's reading order). This is extra practical guidance, not just schema repetition.

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 identifies the tool's purpose: retrieving codebase context for understanding, editing, explaining, and onboarding. It names specific actions ('find', 'edit', 'explain', 'onboard') and directly distinguishes itself from alternatives like 'multi-file grep_search chains, sequential view_file reads' and manual code comprehension.

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 guidance on when to use this tool, when not to, and how to handle edge cases. It says to pass the exact repo_id, to call synapse_manage_repos with action 'list' when repo_id is unknown, and that action 'edit' is required before modifying code. It also includes 'Instead of these alternatives' guidance, which helps an agent route to the right tool.

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

synapse_indexer_controlIndexer ControlA

Controls and inspects the indexing pipeline and server health. High-level actions include:

  • 'health': cheap health probe for transport and runtime readiness. Call this first before anything else — one call tells you the server is alive and which tools are loaded.

  • 'status': returns per-repository indexing phase progress, ETS chunk counts, embedding readiness, unresolved edge counts, and top summary candidates. Pass repo_id for a fast direct lookup of one repository; omit it to see all repositories at once. Status responses are cached for 60 seconds when all indexers are idle (5/10 s during active indexing) — this prevents 50-repo installations from timing out.

  • 'trigger': triggers a re-index of a repository or a specific file/directory.

REPLACES: manual health probing, process monitoring, ad-hoc tool listing. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Confirms the server is alive and reports indexing progress per repository. Monitor indexing progress, health state, and trigger indexing manually. Always pass repo_id to status for a fast scoped lookup; omit it only when you need all repos.

Usage (long): Call 'health' first to confirm the server is running, then 'status' with a repo_id to check whether that repository is ready for search. The status response includes:

  • repos[]: one entry per matching repository, each with phase progress, chunk_count, indexed_files, embeddings_partial, repo_unresolved_edges (edges whose target chunk has not yet been indexed), and needs_summary (top chunks that have been queried but lack a cached summary, ranked by hit_count — use these as summarisation targets).

  • unresolved_edges: global total across all repos (useful for cross-repo health checks).

  • repo_id scoping: passing repo_id performs a direct SQLite lookup rather than scanning all registered repositories, making it safe to call at 50+ repo scale.

  • readiness_guide: shows which tool actions work at the current indexing phase.

  • include_profile: true adds language/kind chunk distribution breakdown (slower).

NameRequiredDescriptionDefault
modeNoOne of quick_pass, deep_dive_1, deep_dive_2, full, or x_repo. x_repo resolves unresolved cross-repo edges without a repo_id. (used in trigger)full
pathNoAbsolute or repo-relative path to re-index (used in trigger)
forceNoForce re-index even if checksum unchanged (used in trigger)
actionYesThe action to perform.
repo_idNoTarget repository identifier (optional for status/trigger)
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
include_profileNoInclude vectorisation and language/kind profile (used in status, slower).
compress_payloadNoSet false to disable lossless response-key compression.
wait_for_ready_msNoOptional timeout in ms to wait for the indexer to finish warming up and enter an idle state before executing. Use to ensure stable results.

TDQS

A4.6/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 behavioral burden and does so thoroughly. It discloses status caching with idle vs. active timing, trigger's re-index side effect, cheap vs. slower options, wait-for-idle behavior, direct SQLite lookup for repo-scoped status, and output compression for lower token usage.

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 structure is front-loaded and skimmable: action bullets, REPLACES, a short usage note, then detailed status output. It is slightly redundant because the later status-return block partially repeats and rephrases the earlier 'status' bullet, but the overall layout remains usable and organized.

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?

There is no output schema, so the description compensates by enumerating status fields, unresolved-edge counts, top candidates, caching behavior, and readiness guidance. For a 9-parameter tool with three distinct actions and no annotations, the description is comprehensive enough to drive the apparently action selection and parameter choice without external documentation.

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 already 100%, so the baseline is 3. The description adds meaningful context beyond the schema by explaining that repo_id selects a direct SQLite lookup, include_profile trades speed for detail, and trigger accepts a file/directory path. This helps the agent map intentions to parameters more accurately.

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 'Controls and inspects the indexing pipeline and server health,' which is a specific verb and resource, then elaborates with three concrete actions: health, status, and trigger. It clearly differentiates this tool from sibling content tools like synapse_search_codebase and synapse_modify_files, whose domains are code search and file editing rather than indexing pipeline control.

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

Usage Guidelines4/5

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

The description gives explicit usage sequencing ('health' first), repo_id scoping guidance, and a REPLACES line directing use instead of manual health probing, process monitoring, and ad-hoc tool listing. It lacks explicit when-not-to-use guidance against related sibling tools such as synapse_manage_repos, but the core usage context is still clear.

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

synapse_inspect_filesInspect FilesA

Inspects files in the workspace. High-level actions include:

  • 'read_files': reads one or more files from disk with line numbers, byte sizes, and metadata (supports directories too).

  • 'read_chunk': reads the full raw source of a specific code chunk from the in-memory store (no disk access).

  • 'count_lines': counts total lines across workspace files.

REPLACES: view_file, read_file, cat, wc, list_dir for file inspection. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Read files, chunks, or count lines in the workspace.

Usage (long): Inspect multiple source files with line numbers, retrieve raw chunk code, or perform line counts across files. Supports format: 'outline' to compress function bodies during retrieval, saving context tokens — use this when scanning many files. Compression is on by default — pass compress_payload: false to opt out for debugging.

NameRequiredDescriptionDefault
pathNoA substring path filter (used in 'count_lines').
filesNoA path string, a %{path, ranges} object, or a list of either (used in 'read_files' and 'count_lines').
actionYesThe inspection action to perform.
formatNoThe return format: 'full' for complete contents, 'outline' for signature-only compression.full
repo_idNoRepository ID to resolve relative paths, scope filters, or count every indexed file when files and path are omitted.
chunk_idNoThe chunk ID to read (used in 'read_chunk').
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
max_read_bytesNoTotal byte budget across all files for full-file reads (default 10 MB). Ignored when ranges are specified.
compress_payloadNoSet false to disable lossless response-key compression.
wait_for_ready_msNoOptional timeout in ms to wait for the indexer to finish warming up and enter an idle state before executing. Use to ensure stable results.
max_read_bytes_per_fileNoPer-file byte cap for full-file reads (default 10 MB). Ignored when ranges are specified.

TDQS

A4.3/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 transparency burden; it meets most of it by explaining that read_files reads from disk, read_chunk reads from an in-memory store with no disk access, and count_lines counts across workspace files. It also discloses default compression behavior, the compress_payload opt-out, and the outline format compression effect. It stops short of describing exact return shape or failure behavior, which would make it fully 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?

The description is well-structured with a front-loaded purpose, bulleted actions, a REPLACES note, and clear usage sections. There is a small redundancy between 'Usage (short)' and 'Usage (long)', which costs some conciseness, but the overall structure is highly scannable for an agent.

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

Completeness4/5

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

For a tool with three inner actions and eleven parameters, the description is fairly complete: it describes what each high-level action does, where the data comes from, the outline option for large scans, and the default compression behavior. There is no output schema, but the description provides enough return-oriented context for each action. The main gap is that it does not specify which parameters apply to which action, leaving the agent to infer those relationships from the schema.

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

Parameters3/5

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

The input schema already covers 100% of the parameters, so the baseline is 3. The description adds useful grouping of actions and states that read_files returns line numbers, byte sizes, and metadata, plus that outline compresses function bodies. However, for most parameters like repo_id, chunk_id, max_read_bytes, and wait_for_ready_ms, the description does not add meaningful meaning beyond the schema; thus it earns the baseline but not substantially more.

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 ('Inspects files in the workspace') and then enumerates three concrete high-level actions: read_files, read_chunk, and count_lines. It further disambiguates from legacy inspection tools by saying 'REPLACES: view_file, read_file, cat, wc, list_dir', so an agent clearly understands what this tool is for.

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 guidance on when to use this tool instead of older alternatives, noting it 'provides better results with 30-60% fewer tokens via automatic compression'. It also provides task-level advice: use 'outline' format when scanning many files, and pass 'compress_payload: false' to opt out for debugging, which is actionable usage direction.

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

synapse_knowledge_cacheKnowledge CacheA

Manages persistence, feedback loops, and learning metadata within the codebase graph. High-level actions include:

  • 'learn': records explicit query-to-chunk relevance; repeated evidence promotes cache hits.

  • 'save_summary': persists single or batch plain-English annotations on code chunks.

  • 'suggest': lists high-value chunks needing summary based on access history and traffic weight.

  • 'query': searches cached summaries, identifiers, and exact learned associations to recall established patterns.

REPLACES: repeated searches for the same patterns, manual note-taking, re-discovering code paths. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Record search feedback signals, save chunk summaries, suggest docs tasks, and query cached patterns.

Usage (long): Save feedback signals to cache search queries, write natural language summaries for chunks, suggest highest priority needs_summary targets, and query established patterns.

Call 'learn' after useful search results to record explicit query-to-chunk relevance; a single learn signal is queryable immediately but remains provisional until repeated evidence promotes it. Call 'save_summary' to permanently annotate chunks with natural language descriptions. Call 'query' with natural language, filenames, symbols, or chunk IDs to retrieve matching summarized chunks and exact learned associations.

NameRequiredDescriptionDefault
actionYesThe action to perform.
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
compress_payloadNoSet false to disable lossless response-key compression.

TDQS

A3.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It explains persistence, that learn signals are immediately queryable but provisional until promoted by repeated evidence, that save_summary permanently annotates chunks, and that suggest uses access history and traffic weight. This goes well beyond schema details, though it could be clearer about mutation side-effects and exact behaviors for save_summary beyond persistence.

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

Conciseness2/5

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

The description is substantially repetitive. The action list, 'Usage (short)', 'Usage (long)', and the later 'Call learn'/'Call query' paragraphs all restate the same action set with slight wording differences. It is conceptually organized, but several sentences do not earn their place because they reproduce information already covered.

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 four-action tool with no output schema and no annotations, the description covers most of what an agent needs to select, call, and understand each action. It defines behavior, input patterns, and outcome intent. It could be more complete by describing return payloads per action and explicitly naming what distinguishes this tool from the codebase search/insight siblings.

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 supports action semantics by explaining what each enum value does, but it does not deepen the semantics of max_tokens or compress_payload beyond what the schema already describes. This is acceptable given full 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 clearly states the tool's role as a persistence/knowledge cache and enumerates four concrete actions with explicit result types. It differentiates itself from raw searching by positioning itself as a cache for established patterns, though it does not explicitly distinguish itself from sibling tools such as synapse_search_codebase.

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 solid usage context: call learn after useful search results, call save_summary for permanent annotations, and call query with natural language/filenames/symbols/chunk IDs. It says this tool replaces repeated searches, manual notetaking, and rediscovery, but it does not name the actual sibling alternatives, leaving the when-not-to-use boundary slightly implicit.

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

synapse_manage_reposManage ReposA

Manages repository registrations. High-level actions include:

  • 'list': lists all configured repositories and their index state. Each row includes suggested_actions with ready-to-fire tool calls.

  • 'register': registers a new workspace for watching and indexing. Git worktrees are transparently auto-detected.

  • 'archive': marks a registered workspace as archived, stops its indexer, and keeps existing graph data searchable.

  • 'restore': marks an archived workspace active again and restarts indexing.

  • 'keep': dismisses a dirty-merged worktree advisory for the current session (signals that uncommitted changes are intentional).

  • 'unregister': permanently removes a repository from the registry and graph store.

  • 'update_excludes': updates the set of excluded paths for a repository. Clean Git worktrees whose branch work is already merged are auto-archived conservatively before indexing work is scheduled.

REPLACES: ls, find for workspace discovery, manual git worktree management. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Manage repository registrations, lifecycle, exclusions, and workspace lists.

Usage (long): Use to register new repositories, list registered repositories, manage active/archived lifecycle state, update exclude paths, or unregister repositories.

KEY WORKFLOW — always read suggested_actions first: Each 'list' row (both scoped and unscoped) contains a suggested_actions field with structured objects {label, tool, args}. These are ready-to-fire tool calls — pick the appropriate one and call it directly without reformatting.

DIRTY-MERGED WORKTREE ADVISORY: When a worktree branch is merged but has uncommitted changes, the row will contain dirty_merged_worktree: true and 3 suggested_actions:

  1. archive — keep graph searchable, stop indexing

  2. unregister — delete graph data permanently

  3. keep — changes are intentional, dismiss advisory for this session Call one of these immediately with just repo_id + action.

LIFECYCLE RULES: Use 'archive' for stale or merged worktrees; use 'restore' to reactivate indexing; use 'unregister' only for destructive removal; use 'keep' when changes are intentional.

When registering, you MUST provide an absolute path for root (e.g. /Users/name/repo). Do not use . or relative paths. Always call 'list' first if unsure of the repo_id.

NameRequiredDescriptionDefault
rootNoCRITICAL: MUST be a full absolute path to the repository (e.g. /Users/name/repo). NEVER use '.' or relative paths. Required for register.
mergeNoWhen true, append excludes to the existing list instead of replacing it (used in update_excludes)
actionYesThe action to perform.
excludeNoOptional relative directory paths to exclude from indexing (used in register, update_excludes)
repo_idNoStable identifier for the repository. For 'list': when provided, returns full detail for that one repo only (fast). When omitted, returns an enriched summary of all repos. Required for register, archive, restore, keep, unregister, update_excludes.
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
compress_payloadNoSet false to disable lossless response-key compression.
wait_for_ready_msNoOptional timeout in ms to wait for the indexer to finish warming up and enter an idle state before executing. Use to ensure stable results.

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries all behavior responsibility. It states that unregister permanently removes graph data, archive stops indexing but keeps graph searchable, restore restarts indexing, and keep dismisses advisory only for the session. The behavior of auto-detecting worktrees and auto-archiving clean merged worktrees is also disclosed.

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 uses a short introductory sentence, a numbered action list, a dedicated advisory block, and lifecycle rules. It is longer than typical descriptions, but every sentence is procedural or save-making. The critical warning about absolute paths appears immediately before telling the user to avoid '.' relative paths, so it is both front-loaded and actionable.

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?

This is a 8-parameter with no output schema, so the description must provide enough operational context. It does: it explains the return meaning of list, the unique dirty-worktree situation and recomended actions, the effect of archive/restore/keep/unregister, and the correct order of actions. The agent is fully equipped to sequence 'list' → respond to suggested_actions → invoke the proper action.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds meaning clearly beyond the schema: root must be an absolute path and never '.', repo_id is required for most actions and optional for quick single-repo detail, and 'list' rows actually return suggested_actions that trump the state-aware next step. This is exactly the kind of parameter insight an agent needs.

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

Purpose5/5

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

The description states a concrete responsibility — 'Manages repository registrations' — and enumerates all seven actions it supports. This makes the tool's boundary clear and distinguishes it from sibling tools such as search, file modification, or indexer control.

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 selection guidance: lifecycle rules say when to use archive vs restore vs unregister vs keep, and a 'REPLACES' block says to use this instead of ls/find and manual worktree management. It also instructs to call 'list' first when unsure of repo_id.

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

synapse_modify_filesModify FilesA

Modifies files in the workspace. For safe agent workflows, first call 'write_safely' with dry_run: true, pre_check: true, and lint: true; review the preview, then call again with dry_run: false only when applying. High-level actions include:

  • 'write_safely': writes content with atomic lint validation, dry-run semantic diff simulation, pre_check blast radius mapping, and automatic rollback on failure.

  • 'find_and_replace': runs global regex find-and-replace across matching indexed files with instant re-indexing.

  • 'delete_chunk': removes a chunk from the index.

REPLACES: write_to_file, replace_file_content, multi_replace_file_content, manual lint + commit cycles. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Preview and apply atomic safe file writes, global find-and-replace, or delete chunks.

Usage (long): Write files safely with automatic lint checks and revert on failure, run workspace-wide find and replace, or purge chunk entries. Always call synapse_get_context (edit) before this tool to understand callers, callees, and tests. For write_safely, first call with dry_run: true, pre_check: true, and lint: true so the agent sees semantic safety, compilation errors, contract warnings, and blast radius without touching disk. Apply with dry_run: false only after reviewing that preview. Validates with Trunk linter — rolls back atomically on lint failure.

NameRequiredDescriptionDefault
kindNoFilter by entity kind (used in 'find_and_replace').
lintNoSet false to bypass Trunk validation and write unconditionally (used in 'write_safely').
pathNoFilter by partial file path (used in 'find_and_replace').
filesNoList of file write operations (used in 'write_safely'). Each entry requires path and mode.
limitNoMax number of files to modify (safety limit, 1-100, used in 'find_and_replace').
queryNoThe PCRE regular expression to search for (used in 'find_and_replace').
actionYesThe modification action to perform.
dry_runNoAlways set true first to perform a semantic simulation of the proposed changes without writing to disk (used in 'write_safely'). Set false only after reviewing the preview and deciding to apply.
repo_idNoRepository ID to resolve relative paths or scope filters.
chunk_idNoThe chunk ID to permanently delete (used in 'delete_chunk').
languageNoFilter by language (used in 'find_and_replace').
pre_checkNoSet true to run a blast radius analysis before writing (used in 'write_safely').
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
replacementNoThe replacement string. Supports backreferences like \1, \2, etc (used in 'find_and_replace').
case_insensitiveNoSet to true to ignore case (used in 'find_and_replace').
compress_payloadNoSet false to disable lossless response-key compression.
wait_for_ready_msNoOptional timeout in ms to wait for the indexer to finish warming up and enter an idle state before executing. Use to ensure stable results.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations available, the description carries full disclosure burden and does so thoroughly. It reveals atomic lint validation, dry-run semantic simulation, blast radius mapping, rollback on lint failure, permanent chunk deletion, re-indexing, and the fact that dry_run: true never touches disk.

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 long, but the tool is complex and 17 parameters; bullets and separate Usage sections keep it scanable. There is some repeated safe dry-run guidance across the intro and long usage, preventing a perfect score.

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 no-annotation tool with no output schema, this description is unusually complete: safe workflow, action semantics, lint/rollback behavior, compression, and the required preceding call to get_conext are all present. An agent can safely invoke first dry-run and decide whether to apply.

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 already strong; the description adds the phase-driven semantics of dry_run/pre_check/lint and groups filters for find_and_replace. It does not describe every parameter, but it does meaningfully bind the most safety-critical and action-specific properties.

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 clear resource and scope ('files in the workspace') and then enumerates the three concrete actions: write_safely, find_and_replace, and delete_chunk. It also explicitly names the alternatives it replaces, so an agent can distinguish this tool from legacy or sibling editing tools without opening the schema.

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?

It gives a concrete safe workflow: call write_safely with dry_run, pre_check, lint true, review preview, then call apply with dry_run false. It also names a necessary preceding tool (synapse_get_context) and states when this tool should replace common alternative tools.

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

synapse_search_codebaseSearch CodebaseA

Searches the repository codebase using different modes. Pass the exact repo_id with every action to keep results focused on the intended repository; if repo_id is unknown, call synapse_manage_repos with action 'list'. High-level actions include:

  • 'semantic': cosine similarity search over in-memory embeddings; best for conceptual or descriptive queries.

  • 'symbol': fast exact/fuzzy symbol index lookup; best when looking for a named function, module, or class.

  • 'regex': line-matching grep over indexed source; best for exact string or pattern matching. Without repo_id, every action returns at most 5 high-confidence matches across indexed repositories and reports the policy in meta.unscoped_retrieval.

REPLACES: grep_search, find, rg, list_dir for code search. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Search codebase using semantic embeddings, symbol index, or regex grep. Pass the exact repo_id to keep results focused on the intended repository. For the freshest just-edited file, use actions 'symbol' or 'regex' (analogous to current symbol, regex, and graph context workflows).

Usage (long): Run a natural language semantic search, exact/fuzzy symbol lookup, or line-matching regex grep over indexed files. Pass the exact repo_id with every action to keep results focused on the intended repository. If repo_id is unknown, call synapse_manage_repos with action 'list' and copy it verbatim. Without repo_id, semantic requires score >= 0.75, fuzzy symbols require score >= 0.90, regex keeps exact textual matches, and every action is capped at 5 results. The response reports this in meta.unscoped_retrieval. Compression is on by default — pass compress_payload: false to opt out for debugging. Actions 'symbol' and 'regex' work immediately after quick_pass — they do not require embeddings. Action 'semantic' requires embeddings — avoid when repo_status.embeddings_partial is true.

NameRequiredDescriptionDefault
kindNoFilter results by entity kind (e.g., function, module).
pathNoFilter results by partial file path.
fuzzyNoEnable fuzzy matching (default true, used in symbol).
limitNoMaximum number of results to return.
queryNoSearch query (natural language for semantic, regex for regex, symbol name for symbol).
actionYesSearch mode to execute.
symbolNoSymbol name to look up (alternative to query for action 'symbol').
repo_idNoRepository identifier. Pass the exact repo_id to keep results focused on the intended repository and avoid matches from unrelated registered repositories. If unknown, call synapse_manage_repos with action 'list' and copy the repo_id verbatim. When omitted, semantic uses score >= 0.75, fuzzy symbols use score >= 0.90, and every action is capped at 5 results.
languageNoFilter results by programming language.
min_scoreNoMinimum similarity score (used in semantic, default 0.6).
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
exclude_testsNoExclude test files from search results (default true, used in semantic).
match_per_lineNoReturn per-line matches with file path, line number, and line content (like grep -n). Use this when hunting for specific function definitions or call sites — results include repo_id, file, line_number, line_content.
case_insensitiveNoIgnore case in regex search (default false, used in regex).
compress_payloadNoSet false to disable lossless response-key compression.
wait_for_ready_msNoOptional timeout in ms to wait for the indexer to finish warming up and enter an idle state before executing. Use to ensure stable results.

TDQS

A4.8/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. Discloses: compression behavior (on by default, opt-out for debugging), unscoped retrieval policy (5-result cap, score thresholds), embedding dependency (semantic requires embeddings, avoid when embeddings_partial), and freshness behavior (symbol/regex work immediately after quick_pass). This is remarkably thorough for a non-annotated 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?

Well-structured with short usage + long usage sections, action list, and explicit alternatives. Front-loaded key information (exact repo_id, action modes). Some redundancy between short and long usage sections (both repeat repo_id guidance) is a minor cost, but acceptable for a complex tool.

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 16-parameter complex tool with no output schema, the description covers action selection, result caps, score thresholds, repo scoping, fallback tip (call synapse_manage_repos list), and freshness behavior. Nothing critical is left out for correct invocation.

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

Parameters4/5

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

Schema already covers 100% of parameters with rich descriptions (per-action semantics, defaults, purpose). Description adds value by explaining cross-parameter dynamics (repo_id's effect on score thresholds, compress_payload's debugging use case) that the schema lacks. Slightly less than 5 because most parameter meaning is already in the schema rather than in the description.

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

Purpose5/5

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

States a specific verb+resource: searches codebase with 3 distinct modes (semantic, symbol, regex). Explicitly distinguishes from grep_search/find/rg/list_dir — names alternative tools it replaces. The three action modes are clearly differentiated by search type and use case.

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?

Gives explicit when-to-use guidance per action mode ('best for conceptual...', 'best when looking for...', 'best for exact...'). Explicitly names alternatives (grep_search, find, rg, list_dir) and states when to replace them. Also gives concrete behavioral guidance about repo_id and fallback actions.

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

synapse_test_qualityTest QualityA

Handles code quality, testing context, and linting control. High-level actions include:

  • 'coverage': reports production files with no, weak, or strong test coverage using the indexed graph.

  • 'find_tests': discovers behavioral tests, features, step definitions, or fixtures covering a symbol/query. Without repo_id, it returns at most 5 direct-confidence matches and stops once that bound is filled.

  • 'setup_trunk': automatically configures Trunk linting and enables recommended linters for a repository.

  • 'recommend_test_targets': recommends test targets (both unit/integration and BDD features) with behaviour summaries and coverage analysis.

REPLACES: grep_search for test files, find _test. patterns, manual test-to-code mapping. Use this tool instead of these alternatives for better results with 30-60% fewer tokens via automatic compression.

Usage (short): Report test coverage gaps, find relevant test files, recommend test targets, and configure Trunk linting.

Usage (long): Report static test coverage bands, locate feature files or unit tests for a symbol, recommend candidate files for unit and BDD test coverage (via recommend_test_targets) with behaviour summaries (excluding nested repositories/submodules by default, or opting in via targeted path filters), and run Trunk setup/audit check enable. Unscoped find_tests returns only direct-confidence matches, capped at 5.

NameRequiredDescriptionDefault
actionYesThe action to perform.
max_tokensNoApproximate final response budget in tokens (500-32000, default 4000).
compress_payloadNoSet false to disable lossless response-key compression.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations present, the description carries the full behavioral burden and mostly delivers: it discloses the 5-match cap, the direct-confidence limitation, nested repository exclusion, and default compression. It is slightly less transparent about setup_trunk's side effects on the existing lint configuration, but 'automatically configures Trunk linting and enables recommended linters' does convey that it changes repo state.

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 content is well-organized into actionable bullets and usage sections, and most sentences carry useful detail. However, there is noticeable redundancy: the 'Usage (short)' restates the action list, and the 5-match cap on unscoped find_tests is described twice. Trimming these would make it more concise.

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?

This is a multi-action tool with no annotations and no output schema, and the description is not enough on its own. It references repo_id, symbols, queries, and targeted path filters, but the schema only exposes action, max_tokens, and compress_payload; an agent cannot reliably determine how to provide the required inputs for find_tests or recommend_test_targets. Important return/result structure details are also absent.

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 and the description is not required to re-explain action, max_tokens, or compress_payload. The added prose references repo_id and symbol/query concepts, but those are not present in the input schema, so it makes parameter semantics somewhat ambiguous for an agent trying to construct valid calls.

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

Purpose5/5

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

The description begins with a clear scope of code quality, testing, and lint control, then enumerates four concrete actions with specific verbs: coverage reports, find_tests discovers, setup_trunk configures, and recommend_test_targets recommends. It also differentiates itself from generic test-file discovery via grep_search, making it distinct within its sibling set.

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

Usage Guidelines4/5

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

The description explicitly says to use this tool instead of grep_search, manual test file patterns, and manual test-to-code mapping, and gives a token-saving rationale. It also adds usage detail about scoped versus unscoped find_tests behavior. It does not fully articulate when NOT to use this tool versus the other synapse_* siblings, so it loses the top score.

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. 14 tool updatesv3.13.0
    • First observedask_synapse
    • First observedsynapse_capability_manifest
    • First observedsynapse_change_review
    • First observedsynapse_codebase_insights
    • First observedsynapse_debug_trace
    • First observedsynapse_explore_graph
    • First observedsynapse_get_context
    • First observedsynapse_indexer_control
    • First observedsynapse_inspect_files
    • First observedsynapse_knowledge_cache
    • First observedsynapse_manage_repos
    • First observedsynapse_modify_files
    • First observedsynapse_search_codebase
    • First observedsynapse_test_quality

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation4/5

Each Synapse tool has a clearly scoped domain (graph exploration, indexing, file work, retrieval, etc.), and a shared prefix prevents collisions. Still, there is some overlap between synapse_get_context's 'find', synapse_search_codebase, and synapse_explore_graph, and ask_synapse intentionally overlaps everything as a routing layer.

Naming Consistency4/5

All tool names use the uniform 'synapse_' prefix and snake_case, making them easy to group and remember. The naming mixes verb-led entries like synapse_inspect_files with noun-headed ones like synapse_capability_manifest or synapse_test_quality, which keeps things readable but not perfectly uniform.

Tool Count5/5

At 14 tools, the surface is substantial but still well-scoped. Each tool covers a distinct functional area rather than being a thin wrapper, so the count feels appropriate for the breadth of the code graph assistant.

Completeness5/5

The tool surface covers the full lifecycle: repository registration and indexing, health/status control, code search/context retrieval, graph exploration, diff review, debug tracing, safe file modification, test discovery, and knowledge caching. There are no obvious dead ends for the stated capabilities, and operators are well covered.

Maintenance

ActivitySlowing
ResponsivenessLimited data

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enterprise-grade (40m+ lines) codebase intelligence in a zero-setup, private and local MCP: managed indexing, hybrid semantic search, polyglot code dependency graphs, and DB/API/infra knowledge. Benchmark: 61% less tokens, 84% fewer calls, 37x faster than standard AI grep.
    26
    2,534 npm
    3,367
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Zero-tool-call codebase intelligence for Claude Code and MCP clients. Automatically injects the right code context, functions, callers, and call chains, before the LLM starts thinking. Replaces 4-6 grep/read round-trips with a single 5ms hook injection, cutting token usage by 3-8x.
    88 npm
    37
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Turn any codebase into an AI-readable neural map — with proof. Every claim linked to code anchors (line + SHA-256 hash), every context window optimized with greedy token budgeting, every session protected by drift detection. Tree-sitter indexing across 11 languages, cross-session learning, AI enrichment, and 28 MCP tools. Zero config — just connect and your AI agent remembers everything.
    20 npm
    14
    GPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Content-addressed code graph that produces ranked context for AI agents in one call. 22 MCP tools across indexing, blast radius, test scope, semantic diff, runtime traffic, and feedback-aware context packing. Incremental updates via Merkle DAG (no re-indexing). GCF wire format saves 84% tokens vs JSON
    24
    Apache 2.0