Synapse MCP
synapse-mcp
코딩 AI 에이전트를 위한 구조적 브레인.
Synapse-MCP는 무료이며 100% 로컬에서 실행되는 MCP 서버입니다. 코드베이스를 지속적인 온디바이스 AST 지식 그래프로 변환합니다. Claude, Cursor, Copilot 등 모든 MCP 호환 에이전트는 정확한 호출자 트리, 시맨틱 검색, 그리고 환각 없는 리팩토링을 얻습니다 — 셸 도구보다 토큰 비용이 60% 낮습니다. 여러분의 코드는 절대 여러분의 컴퓨터를 떠나지 않습니다.
# Linux / macOS
curl -fsSL https://downloads.synapse-mcp.dev/install.sh | sh
# Windows PowerShell
powershell -c "irm https://downloads.synapse-mcp.dev/install.ps1 | iex"Synapse MCP란 무엇인가요?
AI 코딩 어시스턴트(Copilot, Cursor, Devin 등)를 사용해 보셨다면, 코드를 변경하려고 하기 전에 코드를 찾는 데 많은 시간을 쓰는 것을 보셨을 겁니다. 파일을 grep하고, import 문을 읽고, 함수 이름을 검색하고, 파일을 계속 열고 또 엽니다. 그 탐색은 비용이 많이 듭니다. 토큰을 소모하고, 시간이 걸리며, 그래도 에이전트가 때로는 잘못 판단합니다.
Synapse MCP가 이 문제를 해결합니다.
Synapse MCP는 MCP 서버입니다. AI 에이전트에 연결되어 새로운 도구 세트를 제공하는 백그라운드 프로세스이니다. 파일 시스템과 검색 상자 대신, Synapse는 에이전트에게 코드베이스 전체의 사전 구축된 지식 그래프를 제공합니다. 모든 함수, 모든 클래스, 모든 호출 관계, 모든 모듈 경계 — 인덱싱되고 구조화되어 밀리초 단위로 쿼리할 준비가 된 상태입니다.
쉽게 설명하면
입사 첫날의 새 신입사원과 그 코드베이스에서 수년 간 일해 온 시니어 엔지니어의 차이를 생각해 보세요.
새 신입사원은 파일을 열고, 검색하고, 질문을 던질며, 낯선 이름에 혼란스러워합니다. 모든 작업은 탐색으로 시작합니다.
시니어 엔지니어는 모든 것이 어디에 있는지 이미 알고 있습니다. 옳은 파일로 바로 가고, 변경의 하류 영향을 미디어 이해하며, 어떤 테스트를 실행해야 할지 압니다. 탐색하는 것이 아니라 바로 행동합니다.
Synapse는 AI 에이전트를 시니어 엔지니어로 바꿉니다. 지식 그래프는 한 번 구축되고, 코드가 변경되면 자동으로 갱신되며, 매 에이전트 요청마다 즉시 쿼리됩니다. 이 모든 과정에서 어떤 코드도 여러분의 기기를 떠나지 않습니다.
왜 사용해야 하나요?
Synapse 없이 | Synapse와 함께 |
에이전트가 파일을 grep하고, import 문을 읽고, 함수 하나를 찾으려 파일을 연달아 엽니다 | 도구 호출 한 번으로 정확한 코드 조각, 호출자, 그리고 테스트를 반환합니다 |
모든 세션이 제로에서 시작합니다 | 그래프가 세션을 넘어 지속되고 개선됩니다 |
에이전트가 파일을 썼는데 lint가 실패되어 파일이 깨집니다 |
|
스택 트레이스를 붙여넣고 되기를 바랍니다 |
|
코드 리뷰가 수동입니다 |
|
인덱스를 만들기 위해 코드를 클라우드 서비스로 전송합니다 | 모든 것이 로컬에서 실행 — 데이터 외부 유출이 전혀 없습니다 |
에이전트가 동작하는 방식을 바꿀 필요가 없습니다. 워크플로우를 바꿔야 할 필요도 없습니다. Synapse를 설치하고 저장소를 등록하기만 하면 에이전트가 즉시 더 똑똑해집니다.
Related MCP server: Reporecall
로컬 우선. 언제나.
🔒 여러분의 코드는 절대 여러분의 기기를 떠나지 않습니다. Synapse는 전적으로 여러분의 하드웨어에서 실행됩니다. 클라우드 인덱싱도, 소스코드를 보내는 API 호출도, 텔레메트리도, 벤더 종속도 없습니다.
대부분의 코드 인텔리전스 도구는 인덱스를 만들기 위해 코드를 클라우드 서비스로 보냅니다. Synapse는 그렇게하지 않습니다. 완전한 AST 그래프 — 모든 함수, 모든 엣지, 모든 임베딩 — 는 로컬에서 구축되어 지속적인 온디바이스 스토어에 저장됩니다. 그래프가 준비되면 에이전트는 MCP를 통해 직접 쿼리합니다. 외부로 나가는 것이 없습니다.
다음과 같은 경우에 중요합니다.
엔터프라이즈 및 규제 대상 환경 — 소스 코드가 사내나 경계를 벗어나지 않습니다
오픈소스 기여자 — 공개하지 않은 작업이 그대로 공개되지 않은 상태로 남습니다
속도를 소중히 여기는 모든 사람 — 로컬 그래프 쿼리는 서브-밀리초 지연 시간입니다. 네트워크 라운드 트립이 전혀 없습니다
왜 Synapse인가?
일반 에이전트는 텍스트를 grep합니다. Synapse는 사전 구축된 AST 그래프에서 압축된 구조적 슬라이스를 제공합니다. 호출자, 피호출자, 커버리지 갭, 계약(contract), 요약을 단 하나의 MCP 호출로 처리하는 것 가지입니다.
"도구 호출 4번. 파일 읽기 0번. grep 0번. Synapse를 쓰면 에이전트는 탐색이 아니라 실제 작업에 토큰을 쓰습니다." — Synapse 벤치마크 보고서에서
벤치마크 — 자율 보안 감사 · 500k LOC 코드베이스 · 동일 프론티어 모델
지표 | Synapse vs 셸 도구 |
토큰 & 비용 | −60% |
속도 | 2.2× 빠름 |
도구 호출 수 | −47% |
정확도 | 100% — 동일 |
클라우드로 보낸 데이터 | 0바이트 |
더 적은 도구 호출 + 네트워크 지연 없음 = 훨씬 더 빠른 에이전트 루프.
주요 기능
기능 | 설명 |
🔒 100% 로컬 & 프라이빗 | 그래프가 여러분의 기기에서 구축되고 저장됩니다. 클라우드 의존성 0, 데이터 이그레스 0, 쿼리 시 네트워크 지연 0 |
⚡ 서브밀리초 그래프 쿼리 | 로컬 인메모리 스토어라 응답이 즉각적입니다 — 에이전트 예산을 조금이라도 잠아먹는 API 라운드트립 없음 |
🚀 SmartCrusher 압축 | 응답이 자동으로 30–60% 압축됩니다: 짧은 키, null 제거, 상대 경로 전환. 아웃라인 모드로 본문을 제거하고, 토큰 비용의 아주 일부로 20개 이상 파일을 훑을 수 있습니다 |
세 가지 검색 모드 | 시맨틱(일반 영어), 심볼 조회, 완전한 PCRE 정규식 — 모두 원시 파일 덤프가 아닌 구조화된 청크 ID를 반환합니다 |
전이 호출자 그래프 | 어떤 함수의 직접 및 간접 호출자를 한 줄도 건드리 전에 알 수 있습니다. 깊이, 신뢰도 점수, 엣지 라벨 설정 가능 |
안전한 원자적 쓰기 | 메모리에서 편집을 시뮬레이션하고, 영향 범위를 파악한 후, 원자적으로 실제 쓰기. lint 실패 시 자동 롤백. 파일이 깨진 채로 남지 않습니다 |
즉각 충돌 해결 | 스택트레이스를 붙여넣고, AST 그래프에 매핑된 근본 원인과 재현 테스트 제안을받으세요. 실시간 작업이 필요 없음 |
변경 리뷰 & 영향 | 드 또는 커밋 범위를 넣으면 대상자의 푸시 전에 영향 범위 순위, 깨진 계약, 실행해야 할 테스트, 놓칭 영역을 알려 줍니다. |
지속 에이전트 메모리 | 어떤 세션에서 만든 요약이 다음 세션에도 이어집니다. Synapse 사용이 많아질수록 코드베이스 모델이 더 명확해집니다 |
테스트 지능 | 커버리지 밴드, 테스트 매핑, 순위 테스트 대상을 그래프에서 유도합니다 — 테스트 스위트를 실행할 필요가 없습니다. |
코드베이스 X-Ray | 언어 감시, 공개 API 표면, 데드 코드 삭제 안전성, 모듈 간의존성 그래프, 계약(contract) 스캔, 리팩토링 기회를 "한 번의 호출로" 제공합니다 |
언어 지원
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
설치
아래의 Quick Start 하다시피 참고하거나, 전체 가이드와 GUI 설치 프로그램은 synapse-mcp.dev/download에서 확인할 수 있습니다.
요금
Free — 골든 그래프 · $0영원
기능 | 세부사항 |
AST 인덱싱 | 50개 언어에 걸쳐 파일 10,000개+를 수 초 만에 인덱싱 |
검색 | 시맨틱, 심볼 & 정규식 — 파일 덤프가 아닌 구조화된 결과 |
호출자 그래프 | 신뢰도 점수와 함께 직접 & 전이 호출자 탐색 |
코드베이스 인사이트 | API 표면, 삭제 안전성, 의존성 그래프 & 리팩토링 후보 |
압축 | SmartCrusher가 LLM에게 전달되 기 전에 페이로드를 30–60% 절약 |
개인정보 보호 | 100% 로컬 — 클라우드 의존성 0, 데이터 외부 유출 0 |
Pro — Shadow Graph 그래프 · $19 / 월
⏱ 일반적인 토큰 절약액이 구독 비용을 초과합니다.
항목 | 세부 |
안전한 쓰기 | 시뮬레이션, 검증 & lint 실패 시 자동 롤백 |
변경 리뷰 | 영향 범위, 깨진 계약 & 위험 순위 지정 |
충돌 해결 | 스택 트레이스 → 근본 원인 → 재현 테스트 |
테스트 지능 | 커버리지 밴드 & 정밀한 갭 타게팅 |
지속 메모리 | 요약이 세션에 걸쳐 유지됩니다 |
지식 캐시 | 쿼리가 시간이 지남에 따라 결과 랭킹을 개선합니다 |
##Synapse는 세션마다 학습합니다
대부분의 AI 도구에는 메모리와 없습니다. 세션이 시작할 때마다 초기화됩니다 — 에이전트는 같은 파일을 읽고, 같은 함수를 발견하다, 같은 질문을 반복합니다. 이는 비용과도 느린 일입니다.
Synapse는 다릅니다. 모든 세션에 걸쳐 축적되는 지속적인 온디바이스 지식 그래프를 유지합니다. 그리고 단순히 그래프를 저장하는 것을 넘어, 사용할수록 더 똑똑해지는 학습 및 강화 계층이 내장되어 있습니다.
학습이 작동하는 방식 — 쉬운 용어로
메모를 잘 정리하는 체계적인 동료를 떠올려 보세요.
1. 지속되는 요약
에이전트(또는 사용자)가 함수가 무엇을 하는지 설명하면 — "This handles Stripe webhook validation and checks for duplicate events" — Synapse는 이를 그래프에 영구적으로 기록합니다. 다음 세션에서 해당 함수를 다루는 모든 에이전트는 자동으로 여러분의 설명을 전달받습니다. 한 번만 작성하면 모든 에이전트가 영구히 혜택을 받습니다.
2. 스스로 학습하는 쿼리 검색이 유용한 결과를 반환하고 에이전트가 그 결과를 사용할 때마다 Synapse는 *"누군가 X를 물어보면 청크 Y가 정답이었다"*는 연관을 조용히 기록합니다. 시간이 지나면 자주 묻는 질문에 가장 유용했던 결과가 누군가 수동으로 조정하지 않아도 자동으로 상단에 떠오릅니다. 이것이 검색 강화입니다. 실제 사용 데이터로 그래프가 자체 랭킹을 개선하는 것입니다.
3. 명시적 우선 순위 지정 특정 결과가 특히 중요하다면 Synapse에 직접 지시할 수 있습니다: "결제 처리에 관한 질문에는 이 청크를 항상 먼저 표시해 주세요." 이 지시 사항은 로컬에 저장되며 이후 모든 세션에서 지켜집니다.
4. 누락 감지 Synapse는 코드베이스에서 가장 많이 조회되는데 설명이 연결되지 않은 부분을 추적합니다. 이를 요청 시 알려주므로, 5분 분량의 주석이 향후 에이전트 세션에서 가장 큰 영향을 줄 위치가 정확히 어디인지 알 수 있습니다.
결과는 복리 효과를 내는 코드베이스 모델입니다. 그래프는 더 풍부해지고 랭킹은 더 정확해지며, 에이전트는 이미 이해된 것을 다시 탐색하는 시간을 덜 씁니다.
🔒 학습 계층은 완전히 로컬에서 동작합니다. 어떤 쿼리, 요약, 사용 신호도 사용자의 기계를 절대 떠나지 않습니다.
✨ 학습 및 메모리 시스템은 Pro 기능입니다. 향후 에이전트 세션을 측정 가능할 정도로 더 빠르게 만드는 피드백 루프를 만드는 동안 — 우리가 가장 독창적인 엔지니어링 작업을 집중한 부분이 바로 여기입니다.
MCP 도구 참조
Synapse는 Model Context Protocol을 통해 13개의 정밀 도구를 제공합니다. 모든 도구는 compress_payload 플래그(기본값 true)를 지원하며, SmartCrusher 압축을 활성화해 정보 손실 없이 응답 토큰을 30~60% 줄입니다.
**FREE**로 표시된 도구는 모든 요금제에서 이용할 수 있습니다. **PRO**로 표시된 도구는 Pro 구독($19/월)이 필요합니다. Pro 기능에는 더 롤백이 가능한 안전한 원자적 쓰기, 세션 간 학습, 중단 복구, 변경 영향 분석 등 삶 것이다 독창적인 엔지니어링이 담겨 있습니다.
ask_synapse — FREE
데폴트 자연어 진입점입니다. 모든 코드베이스 질문이나 작업을 간단한 영어문로 전달하세요. Synapse는 이를 가장 적절한 기본 도구로 라우팅하고, 따라야 할 안전한 next_tool_calls를 반환하며, completion_state와 agent_instruction을 함께 보고해서 다음에 무엇을 해야 할지 항상 알 수 있습니다.
실질적으로 모든 상태 작업 — 코드 탐색, 삭제 안전성 확인, 편집, 디버깅, 테스트 분석, 관리 — 에서 우선 활용하세요. "X를 삭제해도 되나요?", "X는 아직 사용되나요?", "X를 유지해야 하나요?" 같은 질문이라면, 명확할 경우 inputs.chunk_id를 포함하세요. 그렇지 않으면 repository_id(엄밝게는 repo_id) 및 inputs.symbol에 인자 수(arity)로 한정된 정확한 심볼명을 포함하세요. 사용자가 설명적인 문장만 제공한다면 추측하지 말고 구체적인 심볼을 요청하거나 후보를 보여 주세요.
{ "query": "Where is the retry logic for the payment service?", "repo_id": "my-org/my-repo" }synapse_search_codebase — FREE
의미, 이름, 패턴으로 코드를 찾습니다. 하나의 도구로 지원되는 세 가지 검색 모드:
Action | Description |
| 청크 임베딩에 대한 자연어 유사도 검색. "인증 오류를 처리하는 모든 사용자를 찾아 달라" |
| 함수, 클래스, 모듈, 타입 이름으로 정확한 이름 기반 심볼 조회 |
| 인덱싱된 그래프 전체에서 PCRE 매칭을 이용한 인메모리 검색. 원천 텍스트가 아니라청크 ID, 줄 번호, 태그를 반환합니다. |
{ "action": "symbol", "query": "PaymentService", "repo_id": "my-org/my-repo" }synapse_explore_graph — FREE
이미 알려진 청크를 중심으로 한 관계를 탐색합니다. (검색 결과가 제공한)청크 ID를 바탕으로 AST 의존성 그래프를 어떤 방향으로든 이동할 수 있습니다.
Action | Description |
| 함수의 모든 직접/전이 호출자, 설정 가능한 깊이와 신뢰도 점수와 함께 제공 |
| 주어진 청크가 호출하는 모든 함수/모듈 |
| 인접 범위를 포함한 풍부한 주변 정보 — 호출자, 피호출자, 형제 정의, 관련 청크, 사이클가 있는 경우 사이클 정보까지 |
| 그래프에서 순환 의존성 연쇄 탐지 |
어떤 함수를 수정하기 전에 이 도구를 먼저 사용하여 전체 폭발 범위(blast radius)를 이해하세요.
{ "action": "callers", "chunk_id": "abc123", "depth": 3 }synapse_get_conatext — FREE
편집, 온보딩, 설명을 위한 고급 콘텍스트 수집.
| Action | Description |
| ---------- | --- |
| find | 열린 의미 탐색 — 의미, 정확, 퍼지, 그래프 탐색을 한 번에 병렬로 쓰는 기능 |
| edit | 사전 편집 안전 패킷: 호출자, 피호출자, 반드시 읽어야 하는 파일, 예상 테스트, 계획된 변경에 대한 위험 평가 |
| then leads | 특청 청크가 무엇을 하는지 쉽게 설명 |
| onboard | 하위 시스템에 대한 안내식 읽기 지도 — 낯선 코드를 이해하는 데 최적 |
{ "action": "edit", "intent": "Refactor the caching layer to use Redis", "repo_id": "my-org/my-repo" }synapse_inspect_files — FREE
구조적 인식을 바탕으로 원본 파일과 청크를 얻습니다.
| Action | Description | 설명 |
| ------------- | --------------------------------------------------------------------------------------------------------------------- |
| read_files | 선택적 줄 범위와 format: "outline" 지원(함수 본문 제거, 시그니처만 유지 — 토큰 60–80% 절약) |
| read_chunk | 인메모리 문자열 저장소에서 직접 지정 ID에 통해 단일 청크를 읽기 — 즉시 응답, 디스크 I/O 없음 |
| count_lines | 코드베이스 전체에 걸친 인덱싱된 총 줄 수 계산 |
format: "outline"을 전달하면 토큰 비용의 일부로 20개 이상 파일을 스캔할 수 있습니다. 완전한 구현이 필요한 경우에만 format: "full"을 사용하세요.
{ "action": "read_files", "files": [{ "path": "lib/my_module.ex", "ranges": ["45-80"] }], "format": "outline" }⚠️ 린팅 워크플로 주석: 공백/포맷 위반을 조사하기 위해 파일을 읽을 때는
compress_payload: false를 전달하세요. SmartCrusher는 콘텐츠를 반환하기 전에 추(들여쓰기) 공백을 제거하므로, 수정하려는 해당 위반 사항이 숨을 수 있습니다.
synapse_modify_files — PRO
안전하게 코드를 편집합니다 — 린터 검증을 거치며 실패하면 원자적으로 롤백됩니다.
이 기능은 우리가 또한 가장 자랑스러워하는 것 중 하나입니다. 에이전트의 일반적인 에제 파일 쓰는 것은 위험합니다 — 린터 오류는 손상된 파일, 반쯤 작성된 함수, 또는 빌드되지 않는 커밋을 의미합니다. write_safely는 편집을 메모리에서 시뮬레이션하고, 프로젝트 고유의 리터를 그 결과에 대해 실부하면서, 검증이 통과한 바이트만 디스크에 기록함으로써 이 문제를 완전히 제거합니다. 만약 검증이 실패한다면, 원본 파일은 그대로 유지됩니다.
| Action | Tier | Description |
|:---------- |:----- |: --------------------------------------------------------------------------|
| write_safely | PRO | 시뮬레이션, 린트 검증, 원자적 쓰기. 실패 시 자동 롤백 — 파일이 절대 깨진 상태로 남지 않음 |
| find_and_replace | PRO | 인덱스 그래프 전체에 걸친 패턴 매칭 기반 글로벌 탐색 및 교체 |
| delete_chunk | PRO | 그래프/인덱스에서 청크(스니펫) 제거. 원본 코드를 직접 삭제하는 안내는 아니며, 원본 제거 판단 전에 실제 dead_code 증거를 사용해야 합니다. |
항상 synapse_get_context의 edit 액션과 짝을 맞추어 먼저 호출자와 영향 범위를 파악하세요.
{ "action": "write_safely", "path": "lib/my_module.ex", "content": "..." }synapse_change_review —PRO
푸시 전에 diff를 검토하고 폭발 영향 경로를 평가하세요.
푸시하기 전에 Synapse가 diff가 접촉은 모든 청크를 매핑하고, 위험도를 평가하며, 계약의 파손 여부를 확인하고 어떤 테스트를 실행할지 알려줍니다. 이 과정은 중간 규모의 변경에 대해 통상적으로 20–40분이 소요되는 수작업 코드 리뷰 파도릉 대체합니다.
Action | Description |
| diff 구조 분석: 어떤 청크가 변했고 그것들이 무엇에 영향인가 |
| 전체 리뷰: 위험 등급, 사각 지대, 파손된 계약, 권장 실행 테스트 |
| 게시 편집 후 영향 검증 — 커밋된 변경이 무엇과 접촉 중인지 확인 |
diff 문자열 또는 커밋 범위를 입력하고, 푸시 전에 실행 가능한 결과물을 얻으세요.
{ "action": "review_diff", "diff": "..." }synapse_codebase_insights — FREE
단일 호출로 코드베이스 전채 분석. 특정 심볼이나 청크가 여전히 사용되는지, 혹은 삭제해도 안전한지에 대한 함수 단위 증거가 필요할 때는 dead_code 액션(일반적으로 ask_synapse 통해서)을 사용하세요.
Action | Description | |
| 워크스페이스 전체의 언어로르 감지 | |
| 모듈 또는 전체 코드베이스의 공개 API 표면 전체 추출 | |
| 읽기 전용 함수 수준 삭제 안전 판정: | |
| 인터페이스/동작/규약(contract) 계약들과 그 구현 두를 스캔 | |
| 모듈 간 의존성 그래프 — 누가 누구가 import 하는지 | |
| 코드베이스 아키텍처의 일관된 최상수 개요 | |
` |
| 리팩터링 구간 변화: 중복 구성, 과대 모듈, 결합도가 높은 부분 확인 |
{ "action": "overview", "repo_id": "my-org/my-repo" }삭제 안전 관련 질문은 라우팅, 누락된 입력 유도, 그리고 agent_instruction이 보존되도록 일반적으로 ask_synapse를 통해 접속이 권장됩니다.
{
"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 같은 아리티(arity)가 명시된 심볼을 전달하세요. 서술형 문장은 추측된 삭제 결정이 아니라 명확화나 후보군을 제시해야 합니다.
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는 함수 수준이며 절(clause) 수준의 도달 가능성은 현재 지원되지 않는 것으로 보고됩니다. 프로덕션 호출자가 있으면 유지해야 하고, 테스트 전용 호출자나 가시성이 불확실한 경우에는 자동 삭제가 아닌 주의 사항으로 제시해야 합니다.
synapse_test_quality — PRO
테스트 발견 및 커버리지 분석 — 테스트 러너가 필요 없습니다.
AST 그래프에서 직접 테스트 커버리지와 공백을 도출합니다. 테스트를 단 하나도 실행하지 않고도 말이죠. 전체 테스트 스위트를 실행하는 데 몇 분이 걸리는 대규모 코드베이스에서 특히 강력합니다. Synapse는 어떤 함수가 테스트되고 있고 어디에 공백이 있는지, 그리고 어떤 부분에 집중해야 하는지 몇 초 만에 알려줍니다.
Action | Description |
| 커버리지 밴드 분석 — 어떤 함수가 테스트되고 어디에 공백이 있는지 |
| 특정 심볼 또는 파일과 관련된 테스트를 신뢰도 순으로 찾아줍니다 |
| 그래프를 기반으로 테스트가 가장 필요한 함수 순위 목록 |
| 린트 통합을 위해 Trunk 설정 |
{ "action": "find_tests", "symbol": "PaymentService.charge" }synapse_debug_trace — PRO
AST 그래프에서 직접 디버깅 및 실행 경로 추적.
원시 스택 트레이스를 붙여넣으면 각 프레임을 인덱싱된 청크에 직접 매핑한 근본 원인 분석을 돌려받습니다. 재현 테스트 제안과 해당 경로로 이어진 호출 체인도 함께 제공됩니다. 런타임, 디버거, 실패 시나리오를 다시 실행하지 않아도 됩니다.
Action | Description |
| 스택 트레이스를 붙여넣고 그래프에 매핑된 근본 원인 분석과 재현 테스트 제안을 받으세요. 런타임 불필요입니다. |
| 그래프를 통해 behaviour 또는 callback의 실행 경로를 추적합니다. |
{ "action": "resolve_stack", "stack_trace": "..." }synapse_knowledge_cache — PRO
학습 및 강화 계층. 세션을 초월해 유지되는 지속적인 지식.
이것은 Synapse의 가장 독특한 기능입니다. 작동 원리에 대한 쉬운 설명은 Synapse Learns From Every Session 문서를 참조하세요.
Action | Description |
| 청크에 쉬운 영어로 설명을 첨부합니다. 이후 해당 청크에 접근하는 모든 쿼리가설명을 자동으로 얻습니다. |
| 의도에 따라 캐시를 검색하고 이전 세션의 강화된 결과를 검색합니다. |
| 특정 쿼리에 대해 명시적으로 청크를 강화하고, 향후 결과 순위를 즉시 개선합니다. |
| 요약이 없는 트래픽이 높은 청크를 찾습니다. 여기에 투자하면 모든 향후 세션이 개선됩니다. |
{ "action": "save_summary", "chunk_id": "abc123", "summary": "Handles Stripe webhook validation and idempotency checks." }synapse_manage_repos — FREE
Synapse 그래프에서 저장소를 등록, 목록화, 관리합니다..
Action | Description |
| 인덱싱 상태를 포함한 모든 등록된 저장소를 표시합니다. |
| 새 저장소 루트를 등록합니다. Git 워크트리를 자동으로 감지해 delta 전용 인덱싱을 수행합니다. |
| 데이터를 제거하지 않고 저장소의 인덱싱을 일시 중지합니다. |
| 보관된 저장소를 다시 활성화합니다. |
| dirty-merged 워크트리 경고를 닫고 오버레이를 그대로 유지합니다. |
| 그래프에서 저장소를 완전히 제거합니다. |
| 인덱싱에서 제외할 경로를 정의하는 glob 패턴을 갱신합니다. |
{ "action": "register", "path": "/path/to/my-repo" }synapse_indexer_control — FREE
상태 확인 및 인덱서 관리.
Action | Description |
| 현재 인덱싱 단계, 파일 수, 임베딩 준비 상태, 저장소별 상태 |
| 시스템 상태 확인 — 서버가 작동하고 그래프 저장소에 접근 가능한지 |
| 특정 저장소의 다시 인덱싱을 수동으로 요청합니다. |
{ "action": "status", "repo_id": "my-org/my-repo" }synapse_capability_manifest — FREE
자기 문서화 도구 표면. 실행 중인 Synapse 버전에서 사용 가능한 도구, 액션, 매개변수의 전체 목록을 반환합니다. 에이전트가 새 세션을 부팅하거나 연결된 서버에서 사용할 수 있는지를 확인할 때 유용합니다.
{}Git 워크트리 지원
Synapse는 **가상 워크트리 오버레이(VWO)**를 통해 Git 워크트리를 투명하게 지원합니다:
델타 인덱싱 — 수정/추가/삭제된 파일만 다시 인덱싱됩니다. 거의 즉시 (< 50ms).
오버레이 우선순위 — 워크트리 청크가 부모 저장소 청크를 자동으로 덮어씁니다.
병렬 에이전트 워크플로우 — 메인 인덱스를 복제하지 않고 별도의 워크트리에서 여러 하위 에이전트를 생성합니다.
어디서나 사용 가능
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는 전적으로 사용자 기기에서 실행됩니다. 어떤 코드도 환경 밖으로 나가지 않으며, 클라우드 의존성도, 데이터 유출도 없습니다. 코드베이스는 항상 사용자의 것입니다.
기여 — 에이전트가 Synapse를 더 잘 활용하도록 돕기
이것은 가장 영향력 있는 기여를 가능하게 여기는 것입니다.
LLM은 개발자가 코드베이스를 탐색할 때 grep, find, cat, ls를 사용하는 수많은 코드를 통해 학습되었습니다. 그 근육 기억은 모델 가중치에 자리합니다. 에이전트가 새 프로젝트에 들어오면 더 똑똑하고 비용 효율적인 도구가 있어도 먼저 grep을 시도합니다.
Synapse는 에이전트가 세션 시작 시 로드하는 에이전트 스위트 파일 집합(.agents/skills/synapse-mcp/SKILL.md, AGENTS.md) 을 제공합니다. 이 파일들은 명확한 라우팅 규칙, 안티패턴, 실제 도구 호출 예시를 통해 grep 본능을 대체합니다. 사실상 메타 계층을 위한 런타임 교육으로, 도구가 무엇을 할 수 있는지 뿐만 아니라 어떻게 사용해야 하는지 가르칩니다.
문제는: 우리는 우리가 관찰한 것만 기록할 수 있습니다. 여러분은 특정 에이전트가 무시하는 실패 패턴, 라우팅 갭, 혹은 무시하는 표현을 보았을 수 있습니다. 우리는 그것을 아직 보지 못했습니다. 스킬 파일은 실제 사용 보고서를 통해 더 발전합니다.
우리가 여러분의 도움을 받고 싶은 분야
분야 | 함께 공유할 내용 |
안티패턴 | Synapse가 억제해야 할 에이전트 행동 (예: 스킬을 로드한 후에도 여전히 |
라우팅 규칙 | 에이전트가 잘못된 Synapse 도구를 선택한 사례 — 쿼리가 무엇이고, 어떤 것을 올바른가? |
효과적인 표현 | 특정 지시 표현이 에이전트를 안정적으로 |
에이전트별 특성 | Claude, GPT-4o, Gemini, Copilot은 각각 다른 경향이 있습니다. 에이전트마다 특화된 |
새 도구 예시 | 스킬에 아직 포함되지 않은 동작에 대한 구체적인 JSON 예시 |
누락된 워크플로우 | 스킬이 안내를 제공하지 않는 시나리오(디버깅, 온보딩, 대형 리팩터링 등) |
기여하는 방법
이슈를 여세요 your head – 관찰한 실패 원인 또는 격차를 설명하세요. 사용한 에이전트, 쿼리, 실제 수행된 일과 있어야 했던 일을 포함하세요.
PR을 열어 주세요 –
AGENTS.md또는.agents/skills/synapse-mcp/SKILL.md를 직접 수정하세요. 스킬 파일 PR은 테스트가 필요 없이 빠르게 검토되고 병합됩니다.벤치마크를 공유하세요 – 여러분의 코드베이스에서 Synapse 대 쉘 도구를 비교한 것이나 숫자가 있다면 우리가 공개하고 싶습니다.
스킬 파일은 저장소 루트와 .agents/에 있습니다. 일반 Markdown이라 Elixir 지식이 필요 없습니다. 무엇이 잘못됐는지 설명할 수 있다면 해결책도 적을 수 있습니다.
다음 단계 — Myelix Agents · 2026년 Q3 출시 예정
Synapse는 시존 AI 에이전트에게 코드베이스의 정밀 경로를 제공합니다. Myelix Agents는 그 다음 단계입니다. 코드 작성 전에 생각하는 것을 최우선으로 만든 AI 코딩 에이전트입니다.
현재의 에이전트는 파일을 읽고, 변경하고, 좋은 결과를 기대하는 방식으로 반응합니다만, Myelix Agents는 계획합니다. 명시적인 작업 모델을 유지하고, 코드에 닿기 전에 위험을 판단하며, 이전 세션의 학습(Synapse 지식 그래프를 통해)을 활용하고, 문제가 발생하면 경로를 수정합니다. 속도보다 정확도. grep보다 사고.
Synapse Pro 사용자에게는 얼리 액세스가 제공됩니다. 대기자 명단 →
지원
도움이 필요하신가요? 이슈를 열어 주시면 답변드리겠습니다. 버그 보고, 기능 요청, 통합 질문 모두 환영합니다.
링크
🌐 synapse-mcp.dev — 웹사이트 및 문서
🔒 개인정보 정책
Available Tools
14 toolsask_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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Canonical repository-relative path filter or target. Prefer this top-level field for file scope. | |
| depth | No | ||
| limit | No | ||
| query | Yes | Natural-language question or objective. | |
| format | No | ||
| inputs | No | Explicit action data. Mutation content and replacements must be supplied here. | |
| confirm | No | ||
| context | No | Typed 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_id | No | Canonical registered repository identifier. Prefer this top-level field for repository scope. | |
| feedback | No | Explicit feedback bound to an earlier route. | |
| route_id | No | Opaque route binding returned by an earlier incomplete response. | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| preview_digest | No | ||
| compress_payload | No | Set false to disable lossless response-key compression. | |
| wait_for_ready_ms | No | Optional 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_token | No | Opaque binding returned by a pending mutation. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| include_tools | No | When true, include per-tool descriptors. | |
| include_groups | No | When true, include capability group definitions. | |
| schema_version | No | Requested manifest schema version. Defaults to the latest stable schema. | |
| compress_payload | No | Set false to disable lossless response-key compression. | |
| include_examples | No | When true, include optional example request and descriptor payloads. | |
| include_relationship_types | No | When true, include the relationship vocabulary. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to perform. | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| compress_payload | No | Set false to disable lossless response-key compression. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to perform. | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| compress_payload | No | Set false to disable lossless response-key compression. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to perform. | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| compress_payload | No | Set false to disable lossless response-key compression. |
TDQS
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.
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.
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.
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.
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.
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:
chunk_id (direct) — fastest, use when already known.
repo_id + symbol — resolves the symbol and runs in one call.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to perform. | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| compress_payload | No | Set false to disable lossless response-key compression. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter results by entity kind (used in action 'find'). | |
| line | No | Line number within file_path (used in action 'edit'). | |
| path | No | Filter results by partial path (used in action 'find'). | |
| depth | No | Callee traversal depth (used in action 'onboard', default 3). | |
| limit | No | Maximum number of results to return. | |
| query | No | Natural language query or symbol name. Required for 'onboard' (entry point for the reading guide); used in 'find' for semantic/symbol search. | |
| action | Yes | Context action to perform. | |
| format | No | Include structured result metadata and relevance provenance for action 'find'. | markdown |
| intent | No | Describe what you plan to change (used in action 'edit'). | edit behaviour safely |
| symbol | No | Target symbol name (alternative to chunk_id for action 'edit'). | |
| repo_id | No | Repository 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_id | No | Target chunk identifier (used in action 'edit' and 'explain'). | |
| language | No | Filter results by language (used in action 'find'). | |
| file_path | No | Target file path (alternative to chunk_id for action 'edit'). | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| risk_level | No | The risk level of your change (used in action 'edit'). | medium |
| exclude_tests | No | Exclude test files from results (used in action 'find'). | |
| compress_payload | No | Set false to disable lossless response-key compression. | |
| wait_for_ready_ms | No | Optional 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
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One 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 |
| path | No | Absolute or repo-relative path to re-index (used in trigger) | |
| force | No | Force re-index even if checksum unchanged (used in trigger) | |
| action | Yes | The action to perform. | |
| repo_id | No | Target repository identifier (optional for status/trigger) | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| include_profile | No | Include vectorisation and language/kind profile (used in status, slower). | |
| compress_payload | No | Set false to disable lossless response-key compression. | |
| wait_for_ready_ms | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | A substring path filter (used in 'count_lines'). | |
| files | No | A path string, a %{path, ranges} object, or a list of either (used in 'read_files' and 'count_lines'). | |
| action | Yes | The inspection action to perform. | |
| format | No | The return format: 'full' for complete contents, 'outline' for signature-only compression. | full |
| repo_id | No | Repository ID to resolve relative paths, scope filters, or count every indexed file when files and path are omitted. | |
| chunk_id | No | The chunk ID to read (used in 'read_chunk'). | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| max_read_bytes | No | Total byte budget across all files for full-file reads (default 10 MB). Ignored when ranges are specified. | |
| compress_payload | No | Set false to disable lossless response-key compression. | |
| wait_for_ready_ms | No | Optional 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_file | No | Per-file byte cap for full-file reads (default 10 MB). Ignored when ranges are specified. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to perform. | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| compress_payload | No | Set false to disable lossless response-key compression. |
TDQS
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.
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.
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.
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.
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.
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:
archive — keep graph searchable, stop indexing
unregister — delete graph data permanently
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | CRITICAL: MUST be a full absolute path to the repository (e.g. /Users/name/repo). NEVER use '.' or relative paths. Required for register. | |
| merge | No | When true, append excludes to the existing list instead of replacing it (used in update_excludes) | |
| action | Yes | The action to perform. | |
| exclude | No | Optional relative directory paths to exclude from indexing (used in register, update_excludes) | |
| repo_id | No | Stable 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_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| compress_payload | No | Set false to disable lossless response-key compression. | |
| wait_for_ready_ms | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by entity kind (used in 'find_and_replace'). | |
| lint | No | Set false to bypass Trunk validation and write unconditionally (used in 'write_safely'). | |
| path | No | Filter by partial file path (used in 'find_and_replace'). | |
| files | No | List of file write operations (used in 'write_safely'). Each entry requires path and mode. | |
| limit | No | Max number of files to modify (safety limit, 1-100, used in 'find_and_replace'). | |
| query | No | The PCRE regular expression to search for (used in 'find_and_replace'). | |
| action | Yes | The modification action to perform. | |
| dry_run | No | Always 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_id | No | Repository ID to resolve relative paths or scope filters. | |
| chunk_id | No | The chunk ID to permanently delete (used in 'delete_chunk'). | |
| language | No | Filter by language (used in 'find_and_replace'). | |
| pre_check | No | Set true to run a blast radius analysis before writing (used in 'write_safely'). | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| replacement | No | The replacement string. Supports backreferences like \1, \2, etc (used in 'find_and_replace'). | |
| case_insensitive | No | Set to true to ignore case (used in 'find_and_replace'). | |
| compress_payload | No | Set false to disable lossless response-key compression. | |
| wait_for_ready_ms | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter results by entity kind (e.g., function, module). | |
| path | No | Filter results by partial file path. | |
| fuzzy | No | Enable fuzzy matching (default true, used in symbol). | |
| limit | No | Maximum number of results to return. | |
| query | No | Search query (natural language for semantic, regex for regex, symbol name for symbol). | |
| action | Yes | Search mode to execute. | |
| symbol | No | Symbol name to look up (alternative to query for action 'symbol'). | |
| repo_id | No | Repository 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. | |
| language | No | Filter results by programming language. | |
| min_score | No | Minimum similarity score (used in semantic, default 0.6). | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| exclude_tests | No | Exclude test files from search results (default true, used in semantic). | |
| match_per_line | No | Return 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_insensitive | No | Ignore case in regex search (default false, used in regex). | |
| compress_payload | No | Set false to disable lossless response-key compression. | |
| wait_for_ready_ms | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to perform. | |
| max_tokens | No | Approximate final response budget in tokens (500-32000, default 4000). | |
| compress_payload | No | Set false to disable lossless response-key compression. |
TDQS
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.
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.
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.
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.
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.
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.
14 tool updates
v3.13.0- First observed
ask_synapse - First observed
synapse_capability_manifest - First observed
synapse_change_review - First observed
synapse_codebase_insights - First observed
synapse_debug_trace - First observed
synapse_explore_graph - First observed
synapse_get_context - First observed
synapse_indexer_control - First observed
synapse_inspect_files - First observed
synapse_knowledge_cache - First observed
synapse_manage_repos - First observed
synapse_modify_files - First observed
synapse_search_codebase - First observed
synapse_test_quality
TDQS
Scored across 14 tools
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.
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.
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.
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
Related MCP Connectors
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Codebase intelligence for AI agents — dead code, blast radius, ownership.
Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.
Codebase knowledge graph — architectural awareness for AI coding agents via MCP
Related MCP Servers
- AlicenseAqualityAmaintenanceEnterprise-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.262,582 npm3,360AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceZero-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 npm37MIT
- AlicenseNot gradedqualityCmaintenanceTurn 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 npm14GPL 3.0

knowingofficial
AlicenseNot gradedqualityAmaintenanceContent-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 JSON24Apache 2.0