token-savior
⚔ token-savior
AI에게 코드베이스 전체를 먹이지 마세요. 대신 메스를 쥐여주세요.
코드베이스를 구조적으로 인덱싱하고 정밀한 쿼리 도구를 제공하는 MCP 서버입니다. AI 에이전트가 200개의 파일을 읽는 대신 200자의 정보만 읽도록 합니다.
find_symbol("send_message") → 67 chars (was: 41M chars of source)
get_change_impact("LLMClient") → 16K chars (154 direct + 492 transitive deps)
get_function_source("compile") → 4.5K chars (exact source, no grep, no cat)
analyze_config() → finds duplicates, secrets, orphan keys782개의 실제 세션에서 측정된 결과: 99% 토큰 절감.
왜 필요한가요?
모든 AI 코딩 세션은 동일하게 시작됩니다. 에이전트는 cat이나 grep을 사용하여 수십 개의 파일을 읽어 함수 하나를 찾고, 무엇이 더 깨질지 파악하느라 컨텍스트를 낭비합니다. 결국 첫 번째 수정이 이루어지기도 전에 토큰 예산의 절반이 사라집니다.
token-savior는 이러한 패턴을 완전히 대체합니다. 구조적 인덱스를 한 번 구축하고 git과 자동으로 동기화하며, "X가 어디에 있는가", "무엇이 X를 호출하는가", "X를 수정하면 무엇이 깨지는가"에 대한 질문에 밀리초 단위로 응답합니다. 응답 크기는 코드베이스 전체가 아닌 답변 내용에 맞춰집니다.
Related MCP server: astllm-mcp
수치
실제 세션에서의 토큰 절감 효과
프로젝트 | 세션 | 쿼리 | 사용된 문자 | 문자 (기본값) | 절감률 |
project-alpha | 35 | 360 | 4,801,108 | 639,560,872 | 99% |
project-beta | 26 | 189 | 766,508 | 20,936,204 | 96% |
project-gamma | 30 | 232 | 410,816 | 3,679,868 | 89% |
합계 | 92 | 782 | 5,981,476 | 664,229,092 | 99% |
"문자 (기본값)" = 에이전트가
cat/grep으로 읽었을 모든 파일의 총 소스 크기입니다. 이러한 절감 효과는 모델에 구애받지 않으며, 제공업체와 관계없이 인덱스가 컨텍스트 윈도우의 압박을 줄여줍니다.
쿼리 응답 시간 (110만 라인에서 밀리초 단위)
쿼리 | RMLPlus | FastAPI | Django | CPython |
| 0.01ms | 0.01ms | 0.03ms | 0.08ms |
| 0.00ms | 0.00ms | 0.00ms | 0.01ms |
| 0.02ms | 0.00ms | 2.81ms | 0.45ms |
| 0.01ms | 0.02ms | 0.03ms | 0.10ms |
인덱스 구축 성능
프로젝트 | 파일 | 라인 | 인덱스 시간 | 메모리 |
소규모 프로젝트 | 36 | 7,762 | 0.9s | 2.4 MB |
FastAPI | 2,556 | 332,160 | 5.7s | 55 MB |
Django | 3,714 | 707,493 | 36.2s | 126 MB |
CPython | 2,464 | 1,115,334 | 55.9s | 197 MB |
영구 캐시를 사용하면 이후 재시작 시 전체 빌드 과정을 건너뜁니다. CPython의 경우 캐시 적중 시 56초에서 1초 미만으로 단축됩니다.
지원 범위
언어 / 형식 | 파일 | 추출 항목 |
Python |
| 함수, 클래스, 메서드, 임포트, 의존성 그래프 |
TypeScript / JS |
| 함수, 화살표 함수, 클래스, 인터페이스, 타입 별칭 |
Go |
| 함수, 메서드(리시버), 구조체, 인터페이스, 타입 별칭 |
Rust |
| 함수, 구조체, 열거형, 트레이트, impl 블록, macro_rules |
C# |
| 클래스, 인터페이스, 구조체, 열거형, 메서드, XML 문서 주석 |
Markdown / Text |
| 헤딩 감지를 통한 섹션 |
JSON |
| 깊이 4까지의 중첩 키 구조, |
YAML |
| 중첩 키 계층, 배열 마커, 깊이 제한 4 |
TOML |
| 테이블, 키-값 쌍, 중첩 구조 |
INI / Properties |
| 섹션, 키-값 쌍 |
Environment |
| 변수 이름, 값 (보안 마스킹 포함) |
XML / Plist / SVG |
| 요소 계층, 속성 |
HCL / Terraform |
| 블록, 중첩 리소스, 키-값 쌍 |
Conf |
| 키-값 쌍, 블록 구조 |
Dockerfile |
| 명령어, 멀티 스테이지 빌드, FROM/RUN/COPY/ENV |
기타 모든 파일 |
| 라인 수 (일반 대체) |
51개의 도구
탐색
도구 | 기능 |
| 심볼 정의 위치 확인 — 파일, 라인, 타입, 20줄 미리보기 |
| 함수 또는 메서드의 전체 소스 |
| 클래스의 전체 소스 |
| 파일 또는 프로젝트 내 모든 함수 |
| 메서드와 기반 클래스를 포함한 모든 클래스 |
| 모듈, 이름, 라인을 포함한 모든 임포트 |
| 파일 또는 프로젝트 구조 요약 |
| 선택적 glob 필터가 포함된 인덱싱된 파일 목록 |
| 파일 수, 패키지, 주요 클래스/함수 |
| 인덱싱된 모든 파일에 대한 정규식 검색 |
| 전체 재인덱싱 강제 실행 (거의 필요 없음) |
컨텍스트 및 발견
도구 | 기능 |
| 올인원: 심볼 소스 + 의존성 + 호출자를 한 번의 호출로 가져옴 (3번의 호출 절약) |
| 기능 키워드와 관련된 모든 파일을 찾고 임포트를 추적 |
| API 경로 및 페이지 감지 (Next.js App Router, Express, pages/api) |
| React 컴포넌트 감지 ( |
| 코드베이스 전체에서 환경 변수 참조 찾기 |
영향 분석
도구 | 기능 |
| 심볼이 호출/사용하는 항목 |
| 심볼을 호출/사용하는 항목 |
| 직접 + 간접 의존성을 한 번의 호출로 확인 |
| 두 심볼 간의 최단 의존성 경로 (BFS) |
| 특정 파일이 임포트하는 파일들 |
| 특정 파일을 임포트하는 파일들 |
Git 및 Diff
도구 | 기능 |
| 브랜치, 앞서감/뒤처짐, 스테이징, 미스테이징, 추적되지 않음 |
| 변경된 파일을 텍스트 diff가 아닌 심볼 수준 요약으로 확인 |
| 특정 git 참조 이후의 심볼 수준 변경 사항 |
| 텍스트 diff 대신 심볼을 사용한 간결한 검토 뷰 |
| 변경된 파일로부터 간결한 커밋 요약 생성 |
안전한 편집
도구 | 기능 |
| 파일의 나머지 부분을 건드리지 않고 심볼 소스 교체 |
| 심볼 앞이나 뒤에 내용 삽입 |
| 편집 전 파일 세트 스냅샷 생성 |
| 체크포인트에서 복원 |
| 체크포인트와 현재 상태를 심볼 수준에서 비교 |
| 사용 가능한 체크포인트 목록 |
테스트 및 실행
도구 | 기능 |
| 변경된 심볼로부터 영향을 받을 가능성이 있는 pytest 파일 추론 |
| 영향받은 테스트만 실행 — 원시 로그가 아닌 간결한 요약 |
| 편집 + 영향받은 테스트 실행을 한 번의 호출로 수행 |
| 편집 + 검증 + 실패 시 자동 롤백 |
| 프로젝트 파일에서 테스트/린트/빌드/실행 명령어 감지 |
| 제한된 출력으로 발견된 작업 실행 |
설정 분석
도구 | 기능 |
| 설정 파일에서 중복, 비밀 정보, 오타, 고아 키 스캔 |
세 가지 검사를 실행합니다 (checks 매개변수를 통해 개별적으로 전환 가능):
중복 — 동일한 파일 내에서 두 번 정의된 키, Levenshtein 기반 오타 감지 (예:
db_hsotvsdb_host)비밀 정보 — 알려진 비밀 형식(API 키, 토큰, 개인 키)에 대한 정규식 패턴 및 고엔트로피 문자열에 대한 Shannon 엔트로피 분석
고아 키 — 실제 코드 사용량과 설정 키를 교차 참조합니다. 코드가 읽지 않는 키와 코드가 기대하지만 설정되지 않은 환경 변수를 감지합니다.
os.environ,process.env,os.Getenv,std::env::var등을 이해합니다.
지원 형식: .yaml, .yml, .toml, .ini, .cfg, .properties, .env, .xml, .plist, .hcl, .tf, .conf, .json
코드 품질
도구 | 기능 |
| 호출자가 없는 함수/클래스 찾기 (진입점, 테스트, 데코레이트된 라우트 제외) |
| 복잡도 점수(라인, 분기, 중첩, 매개변수 수)별 함수 순위 매기기 |
| 현재 함수 시그니처를 git 참조와 비교 — 제거/이름 변경된 매개변수, 변경된 기본값 플래그 지정 |
Docker
도구 | 기능 |
| Dockerfile 감사: 베이스 이미지, 노출된 포트, ENV/ARG 교차 참조, |
다중 프로젝트
도구 | 기능 |
| 프로젝트 간 임포트를 교차 참조하여 공유 의존성 찾기 |
통계
도구 | 기능 |
| 세션별 프로젝트당 누적 토큰 절감액 |
LSP와의 비교
LSP는 "이것이 어디에 정의되어 있는가?"에 답하고, token-savior는 "이것을 수정하면 무엇이 깨지는가?"에 답합니다.
LSP는 포인트 쿼리입니다: 하나의 심볼, 하나의 파일, 하나의 위치. LLMClient가 어디에 정의되어 있고 누가 직접 참조하는지는 찾을 수 있습니다. "LLMClient를 리팩토링하면 무엇이 간접적으로 깨지는가?"라고 물으면 LSP는 답을 주지 못합니다. AI는 수십 번의 참조 찾기 호출을 재귀적으로 수행하며 매 단계마다 파일을 읽어야 합니다.
CPython에서 get_change_impact("TestCase")를 실행하면 0.45ms 만에 154개의 직접 의존성과 492개의 간접 의존성을 찾아내며, 41MB를 읽는 대신 16KB의 문자만 반환합니다. 또한 LSP와 달리 언어 서버가 전혀 필요하지 않습니다. 하나의 바이너리로 Python + TS/JS + Go + Rust + C# + 설정 파일 + Dockerfile을 즉시 지원합니다.
설치
git clone https://github.com/Mibayy/token-savior
cd token-savior
python3 -m venv ~/.local/token-savior-venv
~/.local/token-savior-venv/bin/pip install -e ".[mcp]"설정
Claude Code / Cursor / Windsurf / Cline
프로젝트 루트의 .mcp.json에 추가하세요:
{
"mcpServers": {
"token-savior": {
"command": "/path/to/.local/token-savior-venv/bin/token-savior",
"env": {
"WORKSPACE_ROOTS": "/path/to/project1,/path/to/project2",
"TOKEN_SAVIOR_CLIENT": "claude-code"
}
}
}
}Hermes Agent
~/.hermes/config.yaml에 추가하세요:
mcp_servers:
token-savior:
command: ~/.local/token-savior-venv/bin/token-savior
env:
WORKSPACE_ROOTS: /path/to/project1,/path/to/project2
TOKEN_SAVIOR_CLIENT: hermes
timeout: 120
connect_timeout: 30TOKEN_SAVIOR_CLIENT는 선택 사항이지만, 라이브 대시보드에서 클라이언트별 절감액을 집계할 수 있게 해줍니다.
에이전트가 실제로 사용하게 만들기
AI 어시스턴트는 더 나은 도구를 사용할 수 있을 때도 기본적으로 grep과 cat을 사용합니다. 부드러운 지시는 합리화되어 무시되기 쉽습니다. CLAUDE.md 또는 이에 상응하는 파일에 다음을 추가하세요:
## Codebase Navigation — MANDATORY
You MUST use token-savior MCP tools FIRST.
- ALWAYS start with: find_symbol, get_function_source, get_class_source,
search_codebase, get_dependencies, get_dependents, get_change_impact
- Only fall back to Read/Grep when token-savior tools genuinely don't cover it
- If you catch yourself reaching for grep to find code, STOP다중 프로젝트 워크스페이스
하나의 서버 인스턴
Available Tools
69 toolsadd_field_to_modelB
Add a field to a model/class/interface. Supports .prisma, .py (dataclass, SQLAlchemy), .ts/.tsx.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Insert after the line containing this string. | |
| model | Yes | Model/class/interface name. | |
| project | No | Project name/path (default: active). | |
| file_path | No | Optional file path to disambiguate. | |
| field_name | Yes | Name of the new field. | |
| field_type | Yes | Type of the field (e.g. 'String', 'DateTime?', 'number'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose side effects (e.g., file modification), permissions, or error cases. It only mentions supported file types, which is minimal for a write operation.
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?
Two sentences with no wasted words. Front-loaded with the main purpose, followed by supported file types. Concise and effective.
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 description covers purpose and supported files but lacks behavioral context (e.g., file modification, success/failure, usage of optional parameters like 'after'). Adequate but not complete for a code modification tool.
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 description adds marginal value. It clarifies that the tool works across file types and for various models, but does not deeply explain parameters beyond the schema.
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 action (add a field) and the target resources (model/class/interface), and lists supported file types, distinguishing it from sibling tools like edit_lines_in_symbol or insert_near_symbol.
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?
No guidance on when to use this tool vs alternatives like insert_near_symbol or edit_lines_in_symbol. No exclusions or context provided, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_configA
Audit config files (.env/.yaml/.toml/.json): duplicates, secrets, orphans.
| Name | Required | Description | Default |
|---|---|---|---|
| checks | No | Checks to run | |
| project | No | Project name/path (default: active). | |
| severity | No | Severity filter | |
| file_path | No | Specific config file | |
| max_issues | No | Cap total issues shown (default 10, 0 = unlimited). Raise for full audit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the action but does not disclose whether the tool is read-only, what permissions are needed, rate limits, or output format. Minimal behavioral context beyond the check types.
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?
Single sentence with key information: action, file types, and check types. No fluff, front-loaded, every word 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?
With no annotations and no output schema, the description should provide more. It lists checks but does not explain what the tool returns (e.g., list of issues, counts). Adequate for a simple audit tool but leaves gaps about output and behavior.
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%, baseline 3. Description adds some context (e.g., 'Raise for full audit' for max_issues, default for project) but does not elaborate on the meaning of each check beyond enum names. Additional value is marginal.
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?
Clearly states the action (audit) and resource (config files of specific types .env/.yaml/.toml/.json) and specific check types (duplicates, secrets, orphans). Differentiates from siblings as no other tool targets config file auditing.
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?
Implies usage for config file auditing but provides no explicit guidance on when to use this tool vs alternatives (e.g., get_env_usage). No exclusions or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_dockerA
Audit Dockerfiles: base images, stages, exposed ports, ENV/ARG, cross-ref with config files.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose behavioral traits like read-only status, side effects, or how cross-referencing works, which is insufficient for safe tool invocation.
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 very concise, consisting of a single sentence that front-loads the main purpose without any redundant information.
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 simple tool with one parameter and no output schema, the description covers the core functionality well but could mention return format or scope limitations.
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%, and the description adds no extra meaning to the 'project' parameter beyond what the schema already provides.
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 audits Dockerfiles, listing specific aspects (base images, stages, exposed ports, ENV/ARG, cross-ref with config files), which is distinct from sibling tools like analyze_config.
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 implies the tool is for auditing Dockerfiles but provides no explicit guidance on when to use it vs. alternatives or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_commit_summaryC
Compact commit/review narrative with stats, hotspots, suggested type.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| max_files | No | Default 20. | |
| changed_files | Yes | ||
| max_symbols_per_file | No | Default 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full burden. It only states the output is a narrative but does not disclose whether the tool is read-only, modifies data, has side effects, or requires permissions. This is insufficient for a tool that likely processes file data.
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 a single concise phrase, which is efficient but lacks structure. It front-loads the main purpose but omits important details. It is not verbose, but could be more informative without adding bulk.
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 tool has 4 parameters (1 required) and no output schema or annotations, the description is incomplete. It does not explain what 'hotspots' or 'suggested type' mean, nor how the required parameter 'changed_files' should be formatted. The description fails to fully inform the agent 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?
The input schema has 75% description coverage (3 out of 4 parameters described with defaults). The tool description does not add any extra meaning beyond the schema. The 'changed_files' parameter lacks description in both schema and tool description, but overall baseline is 3 due to high 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 generates a compact narrative for commits/reviews with stats, hotspots, and suggested type. It distinguishes from sibling tools which are mainly analysis or search tools, but could be more specific about the input and output.
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?
No guidance is provided on when to use this tool versus alternatives. The description implies it's for commit/review summaries, but does not mention any conditions, exclusions, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_aggregateC
Aggregate over a capture: stats|count_lines|unique_lines|extract:|count:.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| pattern | No | Regex when transform is 'extract' or 'count' without inline regex. | |
| transform | No | stats (default) | count_lines | unique_lines | extract | count | extract:<regex> | count:<regex> |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It lists possible transforms but does not indicate whether the operation is read-only, whether it has side effects, what authorization is needed, or what the return value looks like. This leaves significant gaps.
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 very concise, consisting of a single line that lists the transform options. It is well-structured for a list, but could be more informative without losing conciseness. Every word serves a purpose, though the overall content is minimal.
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 tool has 3 parameters, no output schema, and no annotations, the description is insufficient. It does not explain what the tool returns, how to use the 'pattern' parameter with different transforms, or provide any usage examples. The description is too brief to fully guide an agent.
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 descriptions for transform and pattern (67% coverage). The description merely restates the transform options already present in the schema, adding no new information about parameters. It does not explain the 'id' parameter or provide context beyond what is already in the schema.
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 function: 'Aggregate over a capture' and lists specific transforms. It distinguishes from sibling tools like capture_get and capture_list, which have different purposes. However, it does not explain what a 'capture' is, leaving some ambiguity.
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 no guidance on when to use this tool versus alternatives such as capture_get, capture_search, or other siblings. It does not mention prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_getB
Read a capture (range: head/tail/all/preview/line:N-M).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Capture id (from search/list). | |
| range | No | head | tail | all | preview | line:start-end (default preview). | |
| max_bytes | No | Cap returned content size. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only operation ('Read'), but lacks details on error handling, invalid ranges, or authentication. With no annotations, it partially meets the burden.
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 a single concise sentence that conveys core purpose and range. It is front-loaded and avoids fluff, though it could be slightly more structured.
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 simple read tool with 3 parameters and no output schema, the description is adequate but minimal. It does not explain return format or behavior for edge cases, and has no annotations to compensate.
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 3. The description echoes the schema's parameter info without adding significant new meaning, only restating the range options.
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 'Read a capture' with clear range options, specifying the action and resource. It distinguishes itself from siblings like capture_list and capture_put.
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?
No guidance on when to use this tool versus alternatives such as capture_list or capture_search. The agent receives no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_listC
List recent captures (newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50). | |
| tool_name | No | ||
| session_id | No | ||
| project_root | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only states listing behavior; no disclosure of potential side effects, permissions, or output characteristics. Leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence that is front-loaded. However, it may be too brief given the number of parameters and sibling tools.
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?
With 4 parameters, no output schema, and multiple sibling capture tools, the description lacks essential context about what constitutes a capture, parameter effects, and return format. Incomplete for effective tool selection.
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 only 25% (only 'limit' has a description). The tool description adds no parameter meanings, failing to compensate for the lack of schema descriptions for session_id, project_root, and tool_name.
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 it lists recent captures with newest first ordering. However, it does not differentiate from sibling capture tools like capture_search or capture_aggregate.
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?
No guidance on when to use this tool versus alternatives. Siblings like capture_search and capture_aggregate suggest different filtering/aggregation purposes, but no distinction is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_purgeB
Delete captures by age/session/project (filter required).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| project_root | No | ||
| older_than_sec | No | Delete captures older than this many seconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description labels the tool as destructive ('Delete'), but provides no additional behavioral details such as irreversibility, required permissions, or side effects. With no annotations, the description carries the full burden and falls short.
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 a single, front-loaded sentence with no wasted words. However, it is slightly cryptic and could benefit from a bit more clarity.
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 description lacks details on return type, effect, and the contradiction between 'filter required' and schema having zero required parameters. Given no output schema or annotations, the description is insufficiently complete.
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 description lists three filter dimensions (age, session, project) corresponding to the schema parameters, but adds no details about units, formats, or constraints. Schema description coverage is low (33%), and the description does not compensate.
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 action ('Delete'), the resource ('captures'), and the filtering criteria ('by age/session/project'). It also indicates that a filter is required, which distinguishes it from list or get tools.
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 implies usage for deleting captures with filters, but does not explicitly state when to use this tool over siblings like capture_list or capture_search. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_putB
Sandbox a verbose tool output to FTS5 store; returns id + preview.
| Name | Required | Description | Default |
|---|---|---|---|
| meta | No | Free-form metadata stored alongside the capture. | |
| output | Yes | Full raw output to capture. | |
| tool_name | Yes | Logical tool name (e.g. 'Bash', 'WebFetch', 'mcp__playwright__snapshot'). | |
| session_id | No | Optional session id to scope retrieval. | |
| args_summary | No | Short human description of the call (URL, command, query). | |
| project_root | No | Optional active project root. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions writing to an FTS5 store and returning an id + preview, but omits critical details like side effects (overwriting?), idempotency, size limits, or authentication requirements. This is insufficient for a write operation.
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 a single sentence that conveys the core purpose and return value concisely. While it could include more detail, it avoids unnecessary words and front-loads the key action.
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 (6 parameters, nested objects, no output schema) and the family of sibling capture tools, the description is incomplete. It does not explain what 'preview' contains, how output is processed (e.g., truncation), or how parameters like 'meta' affect storage. The agent lacks sufficient information to use the tool correctly without external knowledge.
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 covers all 6 parameters with descriptions (100% coverage). The description adds no extra meaning beyond the schema, so it does not enhance parameter understanding. Baseline 3 is appropriate.
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 action: 'Sandbox a verbose tool output to FTS5 store' and its output: 'returns id + preview'. This distinguishes it from sibling capture tools like capture_get, capture_list, etc., which retrieve or manipulate captures differently.
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 offers no guidance on when to use this tool versus siblings such as capture_search or capture_get. It does not specify scenarios (e.g., 'use when you want to store output for later retrieval') or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_searchC
BM25 search across sandboxed tool outputs. Returns id, snippet, bytes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 20). | |
| query | Yes | FTS5 query (terms ANDed by default). | |
| tool_name | No | Restrict to a single source tool. | |
| session_id | No | ||
| project_root | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It fails to state if the tool is read-only, has side effects, or any rate limits. The only behavioral hint is 'BM25 search,' implying a read operation, but this is implicit.
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 extremely concise—one sentence and a short result list. Every word adds value with no redundancy. It is front-loaded and easy to parse.
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 five parameters, no output schema, and no annotations, the description is insufficient. It does not explain what 'sandboxed tool outputs' are, how session_id and project_root affect the search, or what the search algorithm does beyond BM25. The agent lacks necessary context to use the tool correctly without additional assumptions.
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 60%, with descriptions for query, limit, and tool_name. The tool description adds no additional parameter semantics beyond what the schema already provides. It does mention return fields, which may hint at output but not parameters. Baseline 3 is appropriate given moderate 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 performs BM25 search across sandboxed tool outputs, which is a specific verb and resource. It also lists return fields (id, snippet, bytes). While it distinguishes from sibling tools like capture_list and search_codebase, it doesn't explicitly differentiate its scope from, for example, capture_aggregate or search_in_symbols.
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 no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or typical scenarios. Siblings like capture_get or search_codebase exist but the description does not help an agent choose between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkpointB
Unified checkpoint CRUD. op = create | list (default) | restore | delete | prune | compare.
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | Operation to perform (default 'list'). | |
| project | No | Project name/path (default: active). | |
| keep_last | No | For op=prune: how many recent checkpoints to keep (default 10). | |
| max_files | No | For op=compare: max files compared (default 20). | |
| file_paths | No | For op=create: project files to snapshot. | |
| checkpoint_id | No | For op=restore/delete/compare: checkpoint identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully cover behavioral traits. It fails to disclose that delete and prune are destructive, what side effects exist, or any prerequisites (e.g., permissions, required state). For a CRUD tool, this is a significant gap.
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 very concise, front-loading the core purpose ('Unified checkpoint CRUD') and operation enum. Every word earns its place, though it could benefit from slightly more structure (e.g., grouping operations by type).
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 6 parameters, no output schema, and no annotations, the description is incomplete. It does not explain return values for list/compare, error states, or how operations like prune or compare work in practice. The tool's complexity demands richer context.
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?
Input schema has 100% description coverage for all 6 parameters, so the baseline is 3. The description adds no extra meaning beyond listing the operations; it does not explain parameter interactions or constraints beyond what the schema already provides.
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 'Unified checkpoint CRUD' and enumerates all operations (create, list, restore, delete, prune, compare), making the tool's purpose and resource obvious. It distinguishes from sibling tools which focus on analysis, code, and project actions.
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 lists operations and their default (list), providing some usage hints. However, it lacks explicit guidance on when to use this tool versus sibling checkpoint-related tools (like capture_* or memory_*) and does not specify when not to use each operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
corpus_buildC
Build a thematic corpus from observations filtered by type / tags / symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique per project. | |
| project | No | Project name/path (default: active). | |
| filter_tags | No | ||
| filter_type | No | ||
| filter_symbol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects (e.g., data creation/overwrite), permission requirements, or what 'build' entails. The tool may modify state, but this is unstated.
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 a single, efficient sentence (13 words) with no wasted information. It is front-loaded with the key action.
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?
With 5 parameters and no output schema or annotations, the description lacks critical context about what a 'corpus' is, what the tool returns, and any constraints. It is insufficient for an agent to fully understand the tool's behavior.
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 description summarizes the filter parameters (type, tags, symbol) but does not add detail beyond the schema. Schema coverage is only 40%, and the description fails to compensate with explanations of parameter format or constraints.
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 action ('Build a thematic corpus') and specifies the filtering criteria (type, tags, symbol). While it distinguishes from sibling 'corpus_query' implicitly, it does not explicitly contrast them.
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?
No guidance is provided on when to use this tool versus alternatives like 'corpus_query'. There is no mention of prerequisites, when-not to use, or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
corpus_queryA
Format all observations of a named corpus as markdown context + a question, ready for answering.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Corpus name previously built via corpus_build. | |
| project | No | Project name/path (default: active). | |
| question | Yes | Question to answer with the corpus context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description is the sole source. Only states formatting but doesn't disclose side effects (e.g., does it modify the corpus?), auth needs, or behavior on missing corpus. The term 'format' is vague.
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?
Single, focused sentence that front-loads the purpose. No redundant words or filler.
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?
No output schema, so description should clarify return format. It says 'markdown context + a question' but lacks specifics (e.g., structure, example). Error conditions not covered. Adequate for simple query tool but could be richer.
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 parameters are described in the input schema (100% coverage). The description adds 'ready for answering' but no extra semantics like default project or constraints on question format. Baseline 3 is appropriate.
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?
Description clearly states the action (format), resource (observations of a named corpus), and output (markdown context + question). Distinguishes from sibling corpus_build by specifying it operates on an already-built corpus.
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?
Implies usage after corpus_build, but no explicit guidance on when to use vs alternatives or when not to use. No mention of prerequisites like corpus existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_breaking_changesB
Breaking API changes vs a git ref: removed funcs/params, added required params, signature changes.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| since_ref | No | Git ref to compare against (default: "HEAD~1"). Can be a commit SHA, branch, or tag. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It lists detected change types but omits important details: whether the tool modifies state (likely read-only), output format, performance implications, or dependencies (e.g., requires a Git repository). This leaves the agent uncertain about side effects and expected output.
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?
Single sentence, front-loaded with key information. No wasted words; every part adds value. Perfectly concise for the amount of information provided.
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, the description should hint at return values, which it does indirectly by listing detected change types. However, it lacks information on how results are structured (e.g., diff list, summary). For a tool with only 2 parameters and high schema coverage, the description is adequate but not fully complete.
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 parameters are already documented. The description adds minimal value beyond the schema—it confirms the purpose but doesn't clarify parameter values beyond existing descriptions. Baseline 3 is appropriate as 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 clearly states the tool detects breaking API changes against a git ref and enumerates specific types of changes (removed funcs/params, added required params, signature changes). It uses a specific verb ('detect') and resource ('breaking API changes vs a git ref'), and distinguishes from sibling tools like 'get_changed_symbols' or 'find_hotspots'.
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?
No guidance on when to use this tool versus alternatives. The description does not mention when not to use it, prerequisites, or scenarios where other tools (e.g., 'get_changed_symbols') would be more appropriate. Implicitly, it is for comparing API versions, but lacks explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_project_actionsA
Detect conventional project actions from build files (tests, lint, build, run) without executing.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes the tool does not execute actions, providing safety insight. However, it lacks details on return format, potential side effects, or permissions needed, especially given no annotations are provided.
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 a single concise sentence that is front-loaded with the key purpose, containing no unnecessary words.
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 simple tool with one optional parameter and no output schema, the description adequately explains the core functionality. It could mention the output type but is sufficient.
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 covers the sole parameter fully (100% coverage), and the description adds no extra meaning or context for the parameter beyond the schema's 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?
The description clearly states the tool detects conventional project actions (tests, lint, build, run) from build files without executing them, which differentiates it from sibling tools like run_project_action.
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 implies usage for inspection before execution, but does not explicitly state when to use this tool over alternatives such as run_project_action or other detection tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_lines_in_symbolA
Exact string-replace inside an indexed symbol's body (like Edit but symbol-scoped, no Read first needed).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| file_path | No | Optional file path to disambiguate symbols. | |
| new_string | Yes | Replacement text. | |
| old_string | Yes | Exact text to find inside the symbol body (must be unique within the symbol unless replace_all=true). | |
| replace_all | No | If true, replace every occurrence in the symbol body (default false). | |
| symbol_name | Yes | Function/method/class name to edit inside. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description must fully disclose behavioral traits. It only mentions 'string-replace' but omits mutation side effects, permissions, or return behavior.
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?
Single, front-loaded sentence with no waste; efficiently conveys core purpose and key differentiator.
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?
With no output schema and no annotations, description is incomplete. It lacks return value info and behavioral details for a 6-param mutation tool.
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%. Description adds meaningful constraint that old_string must be unique within symbol unless replace_all=true, adding value beyond schema.
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?
Description clearly states verb ('string-replace') and resource ('indexed symbol's body'), and distinguishes from sibling 'Edit' by noting symbol-scoped and no read first needed.
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?
Description implies comparison with 'Edit' but does not explicitly state when to use this tool vs alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_dead_codeA
Project-wide audit of unreferenced functions/classes (zero callers, excludes entry points, tests, route handlers).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| max_results | No | Maximum number of dead symbols to report (default: 20). Header always shows true total; raise for full audit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It mentions exclusions and that the header shows total, but doesn't cover performance, side effects, or whether it modifies code. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action and scope. No unnecessary words; every part 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?
No output schema, so description should clarify return format. It mentions total in header but not the body structure. Adequate for a simple audit tool but leaves some ambiguity.
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% with parameter descriptions. The description adds value by explaining the 'max_results' header behavior and default, which goes beyond schema. Slightly above baseline.
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 it performs a project-wide audit for unreferenced functions/classes, specifying exclusions (entry points, tests, route handlers). It distinguishes from sibling tools like find_symbol or get_functions by its specific dead code focus.
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 implies use for identifying dead code, but lacks explicit when-not-to-use or alternative tool suggestions. Context is clear, but no exclusions or comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_hotspotsB
Rank functions by hotspot kind. complexity (all langs) | allocation (Java) | performance (Java).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Hotspot category (default 'complexity'). | |
| project | No | Project name/path (default: active). | |
| min_score | No | Minimum score to include (default: 0 for complexity, 1 for Java kinds). | |
| max_results | No | Maximum number of functions to report (default: 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only status, side effects, or required permissions. The term 'Rank' implies a non-destructive query, but explicit confirmation is missing.
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 concise, consisting of a single sentence that conveys the core purpose. However, the use of vertical bars and parentheses makes it slightly cryptic, warranting a 4 rather than a 5.
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 fails to explain what the tool returns (e.g., a ranked list of function names with scores). It also omits behavioral details like that it is read-only, leaving significant gaps for an agent.
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 100% coverage, providing a baseline of 3. The description adds value by noting that 'complexity' applies to all languages while 'allocation' and 'performance' are Java-specific, which is not captured in the schema.
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 ranks functions by hotspot kind, listing three specific categories. It uses a specific verb ('Rank') and resource ('functions by hotspot kind'), distinguishing it from diverse siblings like add_field_to_model or capture_list.
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 does not explicitly state when to use this tool vs. alternatives or when not to use. While the kind parameter suggests use cases, no guidance on exclusions or comparisons to sibling tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_impacted_test_filesB
Infer pytest files likely impacted by changed files or symbols.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| max_tests | No | Default 20. | |
| symbol_names | No | ||
| changed_files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only gives a high-level purpose. It does not disclose behavioral details such as whether it runs synchronously, requires project context, or how impact is computed.
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 one concise sentence that directly conveys the tool's purpose without unnecessary words or redundancy.
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 lack of an output schema and behavioral details, the description is insufficient for an agent to fully understand the tool's behavior and expected output, especially with four parameters.
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?
With 50% schema description coverage, the description adds context for 'changed_files' and 'symbol_names' by linking them to the tool's purpose. However, it does not fully compensate for the undocumented parameters.
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 verb 'infer' and the resource 'pytest files likely impacted by changed files or symbols,' distinguishing it from siblings like 'run_impacted_tests' which executes tests.
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 implies usage when analyzing test impact but provides no explicit guidance on when to use this tool versus alternatives like run_impacted_tests, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_import_cyclesA
Detect import cycles (strongly-connected components) in the file-level import graph (Tarjan's).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| max_cycles | No | Maximum number of cycles to return (default 20, 0 = unlimited). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavior. It mentions using Tarjan's algorithm, indicating a read-only analysis, but does not disclose performance implications, side effects, or output format details beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the tool's purpose with no unnecessary words or repetition. It is well-structured and front-loaded.
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 graph algorithms and the absence of an output schema, the description could provide more detail on the return format (e.g., list of cycles, nodes involved). It covers the core purpose but leaves room for better completeness.
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 100% description coverage for its two parameters, so the description adds no extra meaning beyond what's already in the schema. The schema itself is clear on defaults and limits.
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 verb 'detect', the resource 'import cycles', and the method 'Tarjan's algorithm' for finding strongly-connected components in the file-level import graph. It effectively distinguishes this tool from siblings like 'get_imports' or 'get_dependencies' by focusing on cycle detection.
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 implies the tool is for detecting import cycles but does not explicitly state when to use it over alternatives or provide exclusion criteria. No guidance on prerequisites or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_semantic_duplicatesA
Find duplicate functions. method='ast' (fast, hash-based, catches copy-paste) or 'embedding' (Nomic cosine, catches conceptual clones, tagged sim=min..mean per cluster).
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ast (default, fast, exact) or embedding (slower, catches conceptual clones). Embedding reuses the symbol_vectors index from search_codebase(semantic=True) — first call triggers a ~2min reindex. | |
| project | No | Project name/path (default: active). | |
| min_lines | No | Skip functions shorter than this (default 2). Applies to method='ast'. | |
| max_groups | No | Max duplicate groups to return (default 10). Raise for full audit. | |
| min_similarity | No | Cosine threshold for method='embedding' (default 0.90). Lower = more recall + more noise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: method performance characteristics, embedding triggering a ~2min reindex, parameter dependencies (min_lines applies to ast, min_similarity to embedding). It is honest about limitations and trade-offs.
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?
Two sentences that front-load the purpose and then provide key method distinctions. Every word is informative with no redundancy.
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?
While the description covers core behavior and parameter semantics well, it does not describe the output format (e.g., structure of duplicate groups) or error conditions. Given the absence of an output schema, this omission leaves the agent uncertain about what to expect from the response.
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 has 100% coverage, but the description adds value by cross-referencing parameters to methods (e.g., 'min_lines applies to ast', 'min_similarity for embedding'), explaining the embedding reindex side effect, and clarifying default thresholds (0.90 for min_similarity). This goes beyond the schema's parameter descriptions.
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 'Find duplicate functions' and distinguishes between two methods (AST and embedding), providing a specific verb-resource pair. No sibling tool overlaps with this exact purpose.
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 explains when to use each method (e.g., ast for copy-paste, embedding for conceptual clones) and mentions the embedding method reuses an index from search_codebase. However, it does not explicitly state when not to use the tool or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_symbolA
Locate a symbol: file, line, signature, minimal preview. Searches functions and classes by default — pass kinds=["variable"] for module globals, constants, and class attributes. A miss reports which kinds were searched.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| hints | No | Add a `_hints` key with next-step tool calls (default true). | |
| kinds | No | Symbol kinds to search. Default: function+class (plus variable when TOKEN_SAVIOR_VARIABLES=search). | |
| level | No | 0 full, 1 no preview, 2 minimal. | |
| names | No | Batch mode: list of names (max 10). Returns {name: result} dict. Mutually exclusive with 'name'. | |
| symbol | No | Alias de `name`. | |
| project | No | Project name/path (default: active). | |
| compress | No | Compact rows (default true). | |
| symbol_name | No | Alias de `name`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose all behavioral traits. It mentions result format on miss ('reports which kinds were searched') and default kinds, but does not cover other aspects like performance, side effects, or output structure for non-errors.
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?
Three sentences, each adding value: first states purpose, second gives default behavior + customization, third describes miss feedback. No wasted words.
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 9 parameters, no annotations, and no output schema, the description is somewhat short. It hints at output ('file, line, signature') but doesn't detail the structure. For a non-trivial tool, slightly more detail on output and batch mode would improve completeness.
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 89%, so the schema already documents parameters well. The description adds minimal extra meaning beyond the schema, mainly the miss reporting behavior tied to kinds. Baseline 3 is appropriate.
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 'Locate a symbol: file, line, signature, minimal preview', which is a specific verb and resource. It distinguishes from sibling tools like search_codebase by focusing on symbol definitions rather than general text 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 provides clear guidance on when to use this tool: for locating symbols, and how to customize with kinds. It lacks explicit exclusions or references to alternatives, but the default behavior and miss reporting give enough context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_chainA
Shortest dependency path between two symbols (BFS through the dep graph).
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Per-hop verbosity: 0=full (source_preview), 1=sig+file, 2=minimal name+file+line. Default 2. | |
| project | No | Project name/path (default: active). | |
| to_name | Yes | Target symbol name. | |
| from_name | Yes | Starting symbol name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full transparency burden. It discloses the algorithm (BFS) and the goal (shortest path), but does not address side effects, read-only nature, or potential performance implications. Basic but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It starts with the core purpose immediately. Perfectly concise and well-structured.
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 4 parameters (2 required, all with schema descriptions) and no output schema, the description covers the algorithm but lacks details like return format, typical use cases, or complexity hints. Adequate but not fully complete for a graph traversal tool.
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 adds minimal extra meaning beyond the schema (mentions BFS algorithm), but does not elaborate on parameter behavior or format. The level parameter's schema description is already detailed.
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 purpose: 'Shortest dependency path between two symbols (BFS through the dep graph).' It uses a specific verb ('get') and resource ('dependency path'), and is distinct from sibling tools like get_dependencies or find_import_cycles.
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 implies usage (finding shortest dependency path) but does not explicitly state when to use this tool vs alternatives (e.g., get_dependencies). No exclusions or context for selection are provided, making it merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changed_symbolsC
Symbol-level summary of worktree changes (or HEAD vs ref).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Compare base (omit=worktree). | |
| project | No | Project name/path (default: active). | |
| max_files | No | Default 20. | |
| max_symbols_per_file | No | Default 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It fails to disclose the output format (e.g., list of symbols, file counts), performance considerations, or any side effects. The phrase 'symbol-level summary' is ambiguous; an agent might not know what to expect.
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 a single sentence, which is concise but at the expense of necessary detail. It is front-loaded with the core purpose, but the lack of structure (e.g., no separate paragraphs for usage or output) reduces clarity.
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 tool has 4 parameters and no output schema, the description should elaborate on what 'symbol-level summary' means and the nature of the output. It does not provide enough context for an agent to confidently invoke it, especially without examples or return structure.
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 each parameter has a description in the input schema. The tool description does not add significant meaning beyond clarifying the comparison base (worktree vs ref). Baseline 3 is appropriate as schema already documents the parameters.
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 indicates it provides a symbol-level summary of worktree changes or changes against a ref. The verb 'get' and resource 'changed symbols' are specific. It distinguishes from siblings like get_git_status (which is file-level) and build_commit_summary (which is commit-level), though not explicitly.
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?
No explicit guidance on when to use this tool versus alternatives. The description implies it's for understanding symbol-level changes but does not exclude cases better served by other tools like detect_breaking_changes or get_change_impact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_change_impactB
Impact analysis: direct + transitive dependents of a symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| project | No | Project name/path (default: active). | |
| max_direct | No | 0=all. | |
| max_transitive | No | 0=all. | |
| max_total_chars | No | Default 50000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the function without disclosing behavioral aspects such as whether it is read-only, performance implications, required permissions, or handling of large dependency graphs. This is insufficient for an analysis 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 a single short sentence that is concise and free of waste. However, it is perhaps too brief and could benefit from slightly more detail without harming conciseness.
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 impact analysis and the absence of an output schema, the description should provide more context about what the tool returns (e.g., list of symbols, count, severity). The current description leaves the agent guessing about the output format and additional behavior.
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 80%, and the description adds context by naming 'direct + transitive dependents', which loosely maps to max_direct and max_transitive parameters. However, it does not add meaningful new details beyond the schema, so baseline 3 is appropriate.
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 'Impact analysis: direct + transitive dependents of a symbol' clearly states the tool's purpose: analyzing the impact of a symbol by finding its direct and transitive dependents. It uses specific terminology and distinguishes from siblings like 'get_dependents' and 'find_impacted_test_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?
The description does not provide any when-to-use or when-not-to-use guidance. It lacks mention of alternatives or context in which this tool is preferred over siblings, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_classesC
List classes (name, lines, methods, bases, file).
| Name | Required | Description | Default |
|---|---|---|---|
| hints | No | Append a `_hints` entry with next-step tool calls (default true). | |
| project | No | Project name/path (default: active). | |
| compress | No | Compact rows (default true). | |
| file_path | No | Filter to file (omit=all). | |
| max_results | No | Default 100. 0=unlimited. Truncated results carry a trailing `_truncated` marker with total count. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It only states 'List classes' with fields, but fails to disclose truncation behavior, default sorting, performance implications, or any side effects. The schema provides parameter details, but the description lacks essential behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (12 words) but includes output fields in parentheses. It is not overly verbose, but could be improved by front-loading key information like the tool's filtering capability. No structural issues.
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, the description should explain return values and behavior. It only lists field names without format details, truncation markers, or hints about pagination. The presence of a `_truncated` marker is only in the schema description. For a tool with 5 parameters, this is insufficient.
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 schema already documents all five parameters. The description adds no additional semantic value beyond the schema. It is baseline acceptable.
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 it lists classes with specific attributes (name, lines, methods, bases, file). This distinguishes it from sibling tools like get_functions or find_symbol, but could be more precise about the scope (e.g., entire project).
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?
No guidance on when to use this tool versus alternatives. The description does not mention when to prefer it over get_functions, find_symbol, or other listing tools, leaving the agent without context for decision making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_class_sourceB
Fetch a class source body (including methods).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| hints | No | Append a one-line get_full_context hint (default true). | |
| level | No | ||
| names | No | Batch mode: list of names (max 10). Returns {name: result} dict. Mutually exclusive with 'name'. | |
| project | No | Project name/path (default: active). | |
| file_path | No | ||
| max_lines | No | Cap lines (0=all, level=0 only). | |
| class_name | No | Alias de `name`. | |
| force_full | No | Bypass symbol cache. | |
| symbol_name | No | Alias de `name`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states the basic fetch action, omitting details about caching (force_full), error handling, or output format.
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 a single, well-structured sentence that immediately conveys the tool's purpose. No wasted words.
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 tool has 10 parameters and no output schema, a single sentence is insufficient. It fails to explain return values, parameter dependencies, or the behavior of options like level or max_lines.
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?
Despite 70% schema coverage, the description adds no parameter meaning beyond what the schema provides. It does not explain the interplay between parameters like name, names, force_full, or the overall effect of options.
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 action ('Fetch') and the resource ('class source body'), specifying it includes methods. This distinguishes it from siblings like get_function_source and get_classes.
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?
No guidance on when to use this tool versus alternatives. With many sibling tools for source retrieval, the description lacks any comparative context or usage constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_db_schemaB
Condensed SQL-migration snapshot: tables (cols, types, nullability, defaults), PKs, FKs, indexes, RLS policies.
| Name | Required | Description | Default |
|---|---|---|---|
| tables | No | Optional filter: only return these table names. | |
| dialect | No | SQL dialect -- currently only 'postgres' is implemented. | |
| project | No | Project name/path (default: active). | |
| migrations_dir | No | Relative or absolute path to the migrations directory (default: auto-detect). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions 'SQL-migration snapshot' but does not explain whether the tool requires a live database, reads from migration files only, or if it has side effects. Behavioral traits (e.g., idempotency, caching) are absent.
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?
Single sentence, front-loaded with key terms ('Condensed SQL-migration snapshot'), no redundant words. Every element (tables, cols, types, etc.) contributes to understanding the tool's output.
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 description lists the output components comprehensively. For a read-only schema tool with 4 optional parameters, this is mostly sufficient. However, it lacks information about error conditions, performance, or whether the schema is extracted from migrations or a live database. Still, it covers the main context.
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 4 parameters are described in the input schema (100% coverage). The description adds minimal extra meaning beyond restating the schema components. Baseline is 3 due to high schema coverage; no significant semantic enhancement from 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?
The description clearly specifies the tool's output: a condensed SQL-migration snapshot covering tables, columns, types, nullability, defaults, PKs, FKs, indexes, and RLS policies. This distinguishes it from sibling tools like 'get_full_context' or 'analyze_config', which focus on code analysis rather than database 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?
No explicit guidance on when to use this tool versus alternatives. The description does not state prerequisites, limitations, or suggest tools like 'discover_project_actions' for broader context. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dependenciesB
Outgoing deps of a symbol: what X calls/uses (downstream).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| depth | No | Transitive BFS depth (default 1). | |
| project | No | Project name/path (default: active). | |
| compress | No | Compact rows (default true). | |
| max_results | No | Default 100. 0=unlimited. Truncated results carry a trailing `_truncated` marker with total count. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like read-only status, output format, or performance considerations. It only states directionality and provides no additional behavioral context beyond the core purpose.
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 a single, front-loaded sentence that efficiently conveys the core purpose. However, it may be too terse, missing some useful context that could be added without becoming verbose.
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 tool has 5 parameters, no output schema, and no annotations, the description is incomplete. It does not explain the return format, the truncation behavior noted in the schema, or provide examples, making it harder for an agent to use effectively.
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 80% with most parameters already described. The description adds context for the required 'name' parameter by implying it refers to the symbol, but does not enhance understanding of other parameters like 'max_results' or 'depth' beyond schema defaults.
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 'outgoing deps of a symbol' and 'what X calls/uses (downstream)', which precisely defines the tool's function and distinguishes it from sibling 'get_dependents' (incoming dependencies).
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 implies use for outgoing dependencies but provides no explicit guidance on when to use this tool versus alternatives like 'get_call_chain' or 'find_impacted_test_files', nor any conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dependentsA
Incoming deps: who calls/uses X, direct references only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| project | No | Project name/path (default: active). | |
| compress | No | Compact rows (default true). | |
| max_results | No | 0=all. | |
| max_total_chars | No | Default 50000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It adds that only direct references are returned (a key constraint). However, it does not mention performance, side effects, permission requirements, or return format. The description is adequate but 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 a single, concise sentence that front-loads the core purpose ('Incoming deps') and scope ('direct references only'). No unnecessary words or repetition.
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?
With 5 parameters, no output schema, and no annotations, the description is minimal. It covers the basic function but lacks guidance on parameter usage, return format, and behavioral nuances. Considering the tool's simplicity, it is marginally adequate.
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?
Input schema has 5 parameters with 80% description coverage (4 of 5 have descriptions). The required parameter 'name' lacks a description, and the tool description does not clarify its format (e.g., symbol name vs. path). The description adds no extra meaning beyond the schema.
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 'Incoming deps: who calls/uses X, direct references only' clearly states the tool finds incoming dependencies (callers/users) for a given symbol, and specifies it returns only direct references. This distinguishes it from sibling tools like 'get_dependencies' (outgoing) and 'get_call_chain' (recursive).
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 implies the tool is used to find who calls or uses a symbol, but does not explicitly state when to prefer it over alternatives like 'find_dead_code' or 'get_change_impact'. No exclusions or when-not-to-use guidance are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_edit_contextA
Pre-edit bundle: source + direct deps + callers + same-file siblings + impacted tests.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| symbol | No | Alias de `name`. | |
| project | No | Project name/path (default: active). | |
| max_deps | No | Default 10. | |
| max_callers | No | Default 10. | |
| symbol_name | No | Alias de `name`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full disclosure. It does not mention that the tool is read-only, side effects, rate limits, or behavior when multiple identifier parameters are supplied. The aliasing (symbol, symbol_name) is not explained.
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?
A single, front-loaded sentence that concisely lists the bundle contents. No wasted words, immediately communicates the tool's purpose.
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 should describe the return structure more thoroughly. It lists components but omits output format or error scenarios. For a pre-edit tool, this is adequate but not fully comprehensive.
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 83%, so most parameter semantics are documented. The description adds little beyond listing components; it does not clarify how each parameter affects the bundle (e.g., max_deps limits). Baseline score is appropriate.
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 function: it provides a 'bundle' of information needed before editing, listing specific components (source, direct deps, callers, siblings, impacted tests). This is specific and distinguishes it from siblings that might only cover a subset.
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 implies use before editing but does not explicitly guide when to choose this over siblings like get_dependencies or find_impacted_test_files. No 'when not to use' or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entry_pointsA
Score functions by likelihood of being execution entry points: routes, handlers, main, exported APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| max_results | No | Maximum number of entry points to return (default 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states the tool 'score functions by likelihood' and gives examples, but it does not mention whether it is read-only, requires specific permissions, or how scoring works. The behavioral disclosure is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that conveys the tool's purpose and scope without any fluff. Every word is necessary and 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?
The tool lacks an output schema, yet the description does not mention the return format (e.g., a list of functions with scores). This omission leaves the agent uncertain about the output, making completeness only moderate.
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 max_results and project adequately. The description adds no further parameter context, meeting the baseline for high-coverage schemas.
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 the specific verb 'score' and resource 'functions', clearly indicating it ranks functions by entry-point likelihood. It distinguishes from sibling tools like get_routes and get_functions by focusing on scoring rather than simple listing.
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?
No guidance is provided on when to use this tool versus alternatives such as get_routes or get_functions. The description lacks context on appropriate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_env_usageA
Cross-reference an env var across code, .env files, and workflow configs. Shows where it's defined, read, written.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| var_name | Yes | Environment variable name (e.g. HELLOASSO_CLIENT_ID). | |
| max_results | No | Max results (0 = all, default 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It indicates the tool is a read-only analysis (shows usage) and names three file categories. However, it does not disclose typical behavioral traits such as performance on large codebases, auth/permissions needs, or whether results are aggregated. It is adequate but not enriched beyond minimal function.
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 two sentences long, front-loaded with the main action, and contains no extraneous information. It is efficient and scannable, though it could potentially add a brief note about the return format without significant bloat.
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, the description provides a minimal but sufficient overview of what the tool returns ('where it's defined, read, written'). For a simple cross-reference tool with only 3 parameters and no nested objects, this meets completeness needs. It does not explain result ordering or pagination, but that is acceptable for this complexity level.
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 covers all 3 parameters with descriptions. The tool description itself adds no extra parameter semantics beyond what the schema already provides. With 100% schema coverage, baseline score of 3 is appropriate.
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?
Description clearly states the tool's purpose: cross-referencing an env var across code, .env files, and workflow configs, showing where it's defined, read, written. It uses specific verbs ('cross-reference', 'shows') and a specific resource ('env var'), distinguishing it from sibling tools like search_codebase or find_symbol.
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?
Description implies when to use (when needing env var tracing across multiple file types) but does not explicitly state when not to use or mention alternatives among the many sibling tools. No exclusions or context about prerequisite conditions (e.g., environment setup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feature_filesC
Files matching a feature keyword + traced imports, classified by role (core, test, config).
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | ||
| project | No | Project name/path (default: active). | |
| max_results | No | 0=all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only partially discloses behavior. It mentions classification by role but omits details like how imports are traced, whether the search is recursive, file type restrictions, or return structure. More context is needed for an agent to understand side effects or limitations.
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 a single, concise sentence with no wasted words. It communicates the core purpose efficiently. However, it could be slightly more structured to separate the matching and classification aspects.
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 tool has 3 parameters, no output schema, and no annotations, the description is too minimal. It doesn't explain what 'feature keyword' means, how imports are resolved, what roles imply, or how results are sorted/limited. An agent may not have enough context to use the tool correctly.
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 67% coverage (keyword has no description). The description adds no parameter-specific details; it only says files are classified by role. For the keyword parameter, the schema doesn't explain its purpose, and the description doesn't compensate. The other parameters are somewhat documented in the schema but not enriched by 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?
The description clearly states the tool returns files matching a feature keyword and traced imports, classified by role (core, test, config). It uses a specific verb 'get' and identifies the resource as feature files. This distinguishes it from sibling tools like list_files and search_codebase, though it could be more explicit about the concept of 'traced imports'.
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?
No usage guidelines are provided. The description does not specify when to use this tool over alternatives, what prerequisites exist (e.g., project must be active), or what types of queries are appropriate. An agent would need to guess the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_dependenciesB
Files imported by this file (outgoing file-level import edges).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| file_path | Yes | Relative path to the file. | |
| max_results | No | Maximum number of results to return (0 = unlimited, default 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but omits behavioral details like performance, auth needs, or side effects. Only states purpose.
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?
Single sentence with no waste; every word adds value. Front-loaded and efficient.
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?
Lacks output schema; description insufficiently covers return format or error scenarios. Agents may not know structure of returned data.
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 baseline is 3. Description adds no extra meaning beyond schema parameter descriptions.
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 it returns files imported by a given file ('outgoing file-level import edges'), distinguishing it from siblings like get_file_dependents (incoming).
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?
No explicit guidance on when to use vs alternatives such as get_dependents or get_imports. The context implies usage through name and description but lacks explicit instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_dependentsB
Files that import this file (incoming file-level import edges).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| file_path | Yes | Relative path to the file. | |
| max_results | No | Maximum number of results to return (0 = unlimited, default 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It only states the output type without disclosing any behavioral traits like read-only nature, performance implications, or required permissions.
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 a single, concise sentence that immediately conveys the tool's purpose. No fluff or redundant information.
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 simple list tool with good schema coverage, the description is minimally adequate. However, it does not explain the return format, pagination behavior via 'max_results', or how 'project' is used, leaving some 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 input schema already fully describes all three parameters (100% coverage). The description adds no extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.
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 returns files that import a given file, specifying 'incoming file-level import edges'. It uses a specific verb ('get') and resource ('file dependents'), distinguishing it from siblings like 'get_dependents' by focusing on imports.
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?
No guidance is provided on when to use this tool versus alternatives such as 'get_file_dependencies' or 'get_dependents'. The description only states what it does, not when to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_full_contextC
Symbol bundle: location + source + deps/dependents (depth=1) or + change_impact (depth=2).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | compact (default): source head 80 lines + deps/dependents as names only. full: raw payload. | |
| name | No | Symbol name (function, method, class). | |
| depth | No | 0=symbol+source, 1=+deps/dependents (default), 2=+change_impact. | |
| names | No | Batch mode: list of names (max 10). Returns {name: result} dict. Mutually exclusive with 'name'. | |
| symbol | No | Alias de `name`. Symbol name (function, method, class). | |
| project | No | Project name/path (default: active). | |
| max_lines | No | Cap source lines (default 200). | |
| symbol_name | No | Alias de `name`. Symbol name (function, method, class). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only hints at return content for different depths but does not disclose behaviors like read-only nature, rate limits, or constraints (e.g., max_lines default). Batch mode via the 'names' parameter is undocumented.
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 extremely concise (one sentence) but it lacks structure and clarity. While brevity is valued, the sentence is cryptic and misses key details, making it less effective than it could be.
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 tool has 8 parameters, no output schema, and many sibling tools, the description is insufficiently complete. It does not explain batch mode, the 'mode' parameter, default values, or the purpose of other parameters like 'project' and 'max_lines'.
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 adds value by explaining the effect of the 'depth' parameter (deps/dependents vs. change impact) but does not clarify other parameters like 'mode', 'names', or 'max_lines' beyond what the schema already says.
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 it returns a 'Symbol bundle' with location, source, deps/dependents, and optionally change impact, indicating it provides comprehensive context about a symbol. However, it lacks an explicit verb (e.g., 'Retrieve') and uses jargon ('Symbol bundle'), slightly reducing clarity.
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 no guidance on when to use this tool versus sibling tools like get_dependencies, get_dependents, or get_change_impact. It does not mention that it can replace multiple separate calls, nor does it give any usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_functionsA
List functions in a file (file_path=...) or across the project.
| Name | Required | Description | Default |
|---|---|---|---|
| hints | No | Append a `_hints` entry with next-step tool calls (default true). | |
| project | No | Project name/path (default: active). | |
| compress | No | Compact rows (default true). | |
| file_path | No | Filter to file (omit=all). | |
| max_results | No | Default 100. 0=unlimited. Truncated results carry a trailing `_truncated` marker with total count. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses truncation behavior with _truncated marker, default behaviors for max_results, hints, and compress. Missing mentions of read-only nature or performance, but adequately covers key behaviors beyond empty annotations.
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?
Single, front-loaded sentence that captures the main purpose. Could be slightly more structured, but no wasted words.
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?
No output schema; description does not specify the structure of returned function entries (e.g., names, signatures, line numbers). Parameter descriptions help but return format is missing for complete agent usage.
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?
Input schema has 100% coverage with parameter descriptions. The description adds value by explaining the file_path vs all distinction and truncation behavior, going beyond schema defaults.
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?
Description clearly states the tool lists functions in a file or across the project, using specific verb and resource. It distinguishes from siblings like get_classes or find_symbol.
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 context for file_path vs project-wide use, but does not offer explicit when-to-use or when-not-to-use comparisons with sibling tools for symbol retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_function_sourceC
Fetch a function/method source body.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Function or method (e.g. 'MyClass.method'). | |
| hints | No | Append a one-line get_full_context hint (default true). | |
| level | No | ||
| names | No | Batch mode: list of names (max 10). Returns {name: result} dict. Mutually exclusive with 'name'. | |
| project | No | Project name/path (default: active). | |
| function | No | Alias de `name`. Function or method (e.g. 'MyClass.method'). | |
| file_path | No | ||
| max_lines | No | Cap lines (0=all, level=0 only). | |
| force_full | No | Bypass symbol cache. | |
| symbol_name | No | Alias de `name`. Function or method (e.g. 'MyClass.method'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states 'Fetch a function/method source body' but omits critical traits: is it a read-only operation? Does it have side effects? Are there performance considerations? Minimal information provided.
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 a single short sentence, which is concise. However, it is too brief for a tool with 10 parameters and no annotations. It could be expanded slightly without losing conciseness to cover key points.
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 tool's complexity (10 parameters, no output schema, no annotations), the description is severely incomplete. It does not explain the behavior of 'names' vs 'name', the 'level' parameter, or the 'hints' flag. The agent lacks sufficient context to use the tool effectively.
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 high (80%), so parameters are mostly explained in the schema. The description adds no additional meaning beyond the schema. Baseline 3 is appropriate.
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 action ('Fetch') and the resource ('a function/method source body'), distinguishing it from siblings like 'get_class_source' or 'get_functions'. While clear, it could be more specific about what 'source body' entails (e.g., the code definition).
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?
No guidance on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or when not to use it, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_git_statusB
Structured git status: branch, ahead/behind, staged, unstaged, untracked.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose read-only behavior, side effects, or error conditions beyond the obvious git status operation.
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?
Single sentence with all key info, no fluff, front-loaded.
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 simple tool with one optional parameter and no output schema, the description provides a list of output components, but lacks context like required git repo or behavior when no changes.
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 covers parameter completely; description adds no extra meaning beyond the schema's description. Baseline 3 due to high 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?
Description clearly states verb ('get') and resource ('git status'), listing components (branch, ahead/behind, staged, unstaged, untracked), distinguishing it from sibling tools.
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?
No guidance on when to use this tool vs alternatives (e.g., build_commit_summary) or when not to use it. Only implied by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_importsB
List imports (module, names, line).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| compress | No | Compact rows (default true). | |
| file_path | No | Filter to file (omit=all). | |
| max_results | No | Default 100. 0=unlimited. Truncated results carry a trailing `_truncated` marker with total count. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only states the action and output fields, but fails to mention that this is a read-only operation, any required permissions, or how results are paginated or truncated. Critical context is missing.
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 extremely concise (4 words) but is not a complete sentence. It is front-loaded and avoids fluff, but could benefit from rephrasing for clarity (e.g., 'Lists import statements including module, names, and line numbers').
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 4 parameters and no output schema, the description provides minimal context about the return format. While the schema covers parameter semantics, the tool lacks information on result ordering, truncation behavior (mentioned in max_results param), or how to interpret the output. It is functional but not fully complete.
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% with each parameter described. The description adds no additional semantics beyond the schema, so a baseline of 3 is appropriate. The description does hint at the output format ('module, names, line'), which is not in the schema.
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 'List' and resource 'imports', and explicitly mentions the returned fields (module, names, line). This clearly distinguishes it from sibling tools like get_dependencies or get_file_dependencies, which deal with different aspects of code relationships.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., get_dependencies, get_file_dependencies). There is no mention of prerequisites or typical use cases, leaving the agent to infer usage from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_summaryB
Project overview: file count, packages, top classes/functions, infra dirs.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits beyond the output content. It lacks details on error handling, performance, or whether it requires an active project.
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 a single, focused sentence that efficiently lists what the tool returns. No redundant or extraneous information.
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 description lists the kind of information returned but does not specify the structure or format (e.g., JSON keys). With no output schema, this leaves some ambiguity, but for a simple summary it is adequate.
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 coverage is 100% and the single parameter 'project' has a description. The tool description adds no additional meaning beyond what the schema already provides, so baseline of 3 is appropriate.
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 it provides a project overview including specific items (file count, packages, top classes/functions, infra dirs). This distinguishes it from sibling 'get_' tools like get_call_chain or get_structure_summary by focusing on a high-level summary.
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?
No explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or contrast with similar tools (e.g., get_structure_summary, get_full_context).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routesA
Detect API routes and pages in a Next.js App Router project: path, file, HTTP methods, type.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| max_results | No | Max routes to return (0 = all, default 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. The description implies a read-only detection operation but does not state safety (e.g., no modifications), required permissions, rate limits, or limitations. This lack of transparency leaves the agent uncertain about side effects and constraints.
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 a single sentence of 15 words with no unnecessary details. It is front-loaded with the core purpose and fits the tool's simple nature perfectly.
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 tool has no output schema, so the description should partly explain return values, which it does (path, file, methods, type). However, it omits details on pagination, error handling, or behavior when the project is not found. For a simple detection tool with zero required parameters, the description is minimally adequate but lacks completeness.
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 100% coverage with clear descriptions for both parameters (max_results, project). The description adds value by explaining the output structure (path, file, HTTP methods, type), which compensates for the absence of an output schema. This helps the agent understand what information will be returned.
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 detects API routes and pages in a Next.js App Router project, specifying the returned information (path, file, HTTP methods, type). This is a specific verb+resource combination that distinguishes it from sibling tools that deal with functions, classes, or code 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 provides clear context for when to use this tool (detecting routes in Next.js App Router projects) but does not explicitly state when not to use it or mention alternative tools. The guidance is implicit but sufficient given the tool's unique focus.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsC
Unified stats dispatcher. category = usage (default) | session_budget | tca | dcp | linucb | warmstart | leiden | speculation | lattice.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| category | No | Which stats subsystem to report (default 'usage'). | |
| context_type | No | For category=lattice: filter to one context (navigation/edit/review/unknown). | |
| budget_tokens | No | For category=session_budget: soft budget cap (default 200000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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?
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?
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?
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?
Including how it differs from other get_* tools would improve clarity.
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?
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_structure_summaryB
Structure of one file (functions, classes, imports, line counts), or project-wide if file omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| file_path | No | Relative path to a file in the project. Omit for project-level summary. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions returning structure elements but fails to disclose that the tool is read-only or whether it has side effects. Given the context of file analysis, it is likely safe, but the description does not clarify.
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?
A single, clear sentence that front-loads the core behavior. No extraneous words.
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 simple tool with two optional parameters and no output schema, the description is adequate but lacks details on the output format or depth of structure (e.g., recursive). It covers the basics but could be more complete.
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%, with file_path already documented as 'Omit for project-level summary.' The tool description adds no new information beyond what the schema provides, so it does little to enhance understanding.
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 explicitly states it returns 'Structure of one file (functions, classes, imports, line counts)' or project-wide if file omitted. It uses a specific verb and resource, and clearly distinguishes from siblings like get_functions or get_classes by offering a combined summary.
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?
No explicit guidance on when to use this tool vs. alternatives such as get_functions, get_classes, or get_project_summary. The description only states what the tool does, not when it is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_near_symbolB
Insert content before or after an indexed symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Alias de `content`. | |
| name | No | Alias de `symbol_name`. | |
| source | No | Alias de `content`. | |
| content | No | ||
| project | No | Project name/path (default: active). | |
| position | No | 'before' or 'after' (default after). | |
| file_path | No | ||
| new_source | No | Alias de `content`. | |
| symbol_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states 'Insert content before or after an indexed symbol,' which implies file modification but fails to mention side effects (e.g., potential code duplication, line shifting), required permissions, or whether the operation is reversible.
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 a single, concise sentence that front-loads the core action. It avoids unnecessary words. However, it could benefit from additional structuring to separate intent from behavior.
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 tool's complexity (9 parameters, no output schema), the description is insufficient. It fails to explain what an 'indexed symbol' is, how to specify the insertion point (project, file), or expected outcomes. The agent lacks critical context 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?
The input schema covers 67% of parameters with descriptions. The description adds no parameter-specific information beyond the schema. It mentions 'before or after,' which aligns with the 'position' parameter, but does not clarify the purpose of ambiguous parameters like 'file_path' or the multiple aliases for 'content.' A score of 3 is appropriate given moderate schema coverage and no value added.
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 action: 'Insert content before or after an indexed symbol.' It uses a specific verb and resource, and the phrase 'before or after' distinguishes it from sibling tools like replace_symbol_source or edit_lines_in_symbol which modify existing content rather than insert new content.
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 no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, typical use cases, or exclusions. The agent must infer usage context from the tool name and siblings alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesC
List indexed files, optionally filtered by glob.
| Name | Required | Description | Default |
|---|---|---|---|
| glob | No | Alias de `pattern`. Glob pattern to filter files (uses fnmatch). | |
| query | No | Alias de `pattern`. Glob pattern to filter files (uses fnmatch). | |
| pattern | No | Glob pattern to filter files (uses fnmatch). | |
| project | No | Project name/path (default: active). | |
| max_results | No | Maximum number of results to return (0 = unlimited, default 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only implies a read operation ('list') but omits details like whether it returns full file contents, pagination behavior, permissions needed, or 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?
A single efficient sentence front-loading the purpose. No superfluous words, but could be slightly more informative without losing conciseness.
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?
Incomplete for a tool with 5 optional parameters and many siblings. Lacks explanation of return format, default ordering, effect of max_results=0, and how glob filtering interacts with indexed files.
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 baseline is 3. The description adds minimal value beyond schema: it mentions aliases for pattern parameters but repeats the glob pattern explanation already in the schema.
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 'List indexed files, optionally filtered by glob,' which identifies the verb and resource. However, it does not differentiate from siblings like search_codebase or get_functions, which also list files or code elements.
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?
No guidance on when to use this tool vs alternatives (e.g., search_codebase for content search, get_classes for structural listing). No when-not or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List all registered workspace projects with index status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only, non-destructive operation through 'list', which is appropriate. However, it doesn't disclose error handling, empty results, or any permission requirements.
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?
A single, concise sentence with no superfluous words. Efficiently conveys the tool's purpose.
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 simple list tool with no parameters and no output schema, the description covers the basic functionality. However, it could mention the structure of the output (e.g., list of project names with status fields).
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?
With zero parameters, the baseline is 4. The description doesn't add parameter-specific information, but none is needed.
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 verb 'list' and the resource 'all registered workspace projects', and adds a specific detail 'with index status'. This distinguishes it from sibling tools like get_project_summary.
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?
No guidance on when to use this tool versus alternatives (e.g., get_project_summary, list_files). The description provides no context about typical use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_adminB
Single dispatch for all memory admin / maintenance ops (status, doctor, dedup_sweep, distill, roi_gc, consistency, vector_reindex, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Which memory-admin sub-operation to run. | |
| limit | No | Pagination/limit (where applicable). | |
| dry_run | No | Preview-only mode for sweeps/garbage collectors. | |
| project_root | No | Filter by project (where applicable). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden but only says 'single dispatch' and lists ops. It does not disclose destructive nature of ops like dedup_sweep or roi_gc, nor does it describe side effects, permissions, or error behavior.
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?
One sentence with no wasted words. Front-loaded with the core concept. Efficient and clear.
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?
Despite simple schema, the tool has 21 sub-ops with varying behavior. No output schema. Description is too brief to cover what the tool returns or how each op behaves, leaving significant gaps for the agent.
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 covers 100% of parameters, but the description adds minimal value beyond examples for the 'op' parameter. It does not explain the purpose or behavior of each op, nor groups them. Baseline is 3 due to schema coverage, but description is too vague.
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 it is a single dispatch for all memory admin/maintenance ops, listing examples. This is specific and distinguishes it from sibling tools like memory_get, memory_save, etc., which handle regular memory operations.
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 implies usage for admin/maintenance ops but does not provide explicit guidance on when to use it versus alternatives, nor does it list exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_deleteA
Soft-delete an observation by ID (sets archived=1).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Observation ID to archive. | |
| project | No | Project name/path (default: active). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that deletion is soft and sets archived=1, but with no annotations provided, it omits permissions, side effects, or return behavior. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, precise sentence with no extraneous words. Every word contributes to understanding the tool's function.
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 simple delete operation with 2 parameters, the description covers the core action. However, it does not specify return value or confirmation, which would be helpful given no output 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?
Schema coverage is 100%, so description adds minimal value beyond the schema. The phrase 'sets archived=1' reinforces the id parameter's effect but does not exceed baseline expectation.
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 verb 'soft-delete' and the resource 'observation by ID', with the specific mechanism 'sets archived=1'. It distinguishes from siblings like memory_get and memory_save.
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?
No guidance on when to use this tool versus alternatives (e.g., memory_admin or other deletion methods). No mention of prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_getB
Layer 3: full observation content by IDs (~200 tokens/result). Final progressive-disclosure layer.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Observation IDs. Each item may be an integer (42), a digit string ("42"), or a citation URI ("ts://obs/42"). | |
| full | No | If false (default), content trimmed to 80 chars. If true, full content. | |
| project | No | Project name/path (default: active). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behaviors. It mentions token count and progressive disclosure but does not confirm safe read-only operation, authentication needs, or 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 very concise with two sentences, front-loading essential info. However, the phrasing 'Layer 3: full observation content by IDs (~200 tokens/result)' is somewhat cryptic without broader context.
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, the description should explain return structure but only mentions content and token count. It omits handling of invalid IDs, error cases, and result format, leaving agents underinformed.
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 provides full coverage with descriptions for each parameter. The tool description does not add significant semantic detail beyond what the schema offers, meeting the baseline for high 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 retrieves full observation content by IDs and positions it as the final layer in a progressive-disclosure system, providing a specific verb and resource with clear differentiation from other layers.
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 mentions 'progressive-disclosure layer' but does not explicitly state when to use this tool versus alternatives like memory_search or memory_list, nor does it provide criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_indexC
Layer 1: compact index of recent observations — ID, type, title, importance, age, citation URI.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries to return (default 30). | |
| project | No | Project name/path (default: active). | |
| type_filter | No | Filter by observation type (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits beyond the return format. It does not indicate whether the operation is read-only, if it has side effects, or any performance implications.
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 a single, front-loaded sentence that efficiently conveys the purpose and return fields. No wasted words.
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 lack of output schema and annotations, the description is insufficient. It does not define 'recent', explain default entry count, list possible observation types, or clarify how indexing works.
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% with each parameter having a description. The description adds minimal extra meaning (e.g., 'recent observations' and field list), but does not elaborate beyond the schema defaults and optionality.
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 it returns a 'compact index of recent observations' with specific fields (ID, type, title, importance, age, citation URI). While the verb is implied, it distinguishes itself from sibling memory tools by focusing on 'index' rather than delete, get, save, or 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?
No guidance is provided on when to use this tool versus alternatives like memory_search or memory_get. There is no mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_saveC
Persist a fact, guardrail, or note across sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| why | No | ||
| tags | No | ||
| type | Yes | ||
| facts | No | Optional atomic facts (JSON array or bullet list). | |
| title | Yes | ||
| symbol | No | ||
| content | Yes | ||
| context | No | ||
| project | No | Project name/path (default: active). | |
| concepts | No | Optional conceptual tags (JSON array or comma list). | |
| ttl_days | No | ||
| file_path | No | ||
| is_global | No | ||
| narrative | No | Optional free-form narrative explaining the obs in prose. | |
| importance | No | 1-10 | |
| session_id | No | ||
| how_to_apply | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'persist across sessions,' omitting important details like overwrite behavior, idempotency, or storage limits.
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 very short (8 words) and front-loaded, but it sacrifices essential information. It is not well-structured for a tool with 17 parameters.
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 (17 params, no output schema, many siblings), the description is vastly inadequate. It provides almost no context for correct tool selection or 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 description coverage is low (29%), and the description does not clarify any parameters. It adds no value beyond the schema, failing to compensate for undocumented fields.
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 'Persist a fact, guardrail, or note across sessions,' which gives a general idea but only lists three enum values as examples, potentially misleading the agent about which types are accepted. It doesn't differentiate from sibling tools like memory_admin or memory_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?
No guidance on when to use this tool versus alternatives (e.g., memory_put or memory_delete). The description lacks context for selection among many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_searchB
Layer 2 FTS5 search over memory observations, compact rows with snippets (~60 tokens/result).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 20. | |
| query | Yes | FTS5 (AND/OR/NOT/phrase). | |
| project | No | Project name/path (default: active). | |
| type_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like side effects, authentication needs, or rate limits, but it only mentions FTS5 search and snippet token count, which is insufficient. Critical details like whether deletion mutation can occur are omitted.
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 a single sentence with key information front-loaded, achieving maximal conciseness without waste.
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, the description provides some context about return format (compact rows with snippets, ~60 tokens) but lacks full detail on row structure and fields. It is partially complete for a search tool.
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 75%, but the description adds minimal extra value: it restates FTS5 query syntax already in the schema. The undocumented 'type_filter' parameter is not explained, nor are default behaviors for missing optional parameters.
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 that this tool performs FTS5 search over memory observations and returns compact rows with snippets, which is specific and distinguishes it from sibling tools like memory_get or memory_save.
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?
No guidance on when to use this tool versus other memory-related tools or alternatives. The phrase 'Layer 2' is ambiguous and does not provide clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_symbolB
Move a symbol to a different file, updating imports in all call sites.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Symbol name to move. | |
| project | No | Project name/path (default: active). | |
| target_file | Yes | Relative path to the target file. | |
| create_if_missing | No | Create target file if it doesn't exist (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the symbol is moved and imports updated, but lacks details on side effects (e.g., whether changes are reversible, permission requirements, error handling, or behavior when target file exists). The create_if_missing parameter hints at file creation but is not mentioned in the description.
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 a single, front-loaded sentence that efficiently conveys the core action and a key side-effect. It is appropriately concise, though slightly more detail could be added without losing efficiency.
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 tool has 4 parameters, performs a potentially destructive operation (moving a symbol can break references), and lacks both annotations and an output schema, the description is too minimal. It omits important context like success/error behavior, whether the operation is undoable, and how the tool handles conflicts or missing prerequisites.
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 does not add additional meaning beyond what is covered in the parameter descriptions; it merely restates the tool's purpose. The interaction between parameters (e.g., how create_if_missing affects behavior) is not clarified.
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 action (Move), resource (a symbol to a different file), and a key side-effect (updating imports in all call sites). It effectively differentiates from siblings like replace_symbol_source or edit_lines_in_symbol.
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 no guidance on when to use this tool versus alternatives, nor does it specify prerequisites (e.g., symbol must exist, project must be active) or exclusions. With many sibling tools, the lack of usage context is a notable gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reasoning_listA
List stored reasoning chains by access_count then recency.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50). | |
| project | No | Project name/path (default: active). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions the resource and ordering but does not confirm read-only status, state effects, or pagination behavior beyond the schema's default limit. This is adequate for a simple list operation but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the purpose and ordering criteria. No redundant or filler words are present.
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 tool's simplicity (2 params, no output schema), the description is functional but incomplete. It fails to describe the output structure or return value, which is a gap since no output schema exists. The content is minimally complete for straightforward usage but could be improved.
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 baseline is 3. The description adds no additional meaning to the parameters beyond what the schema already provides (limit and project). It does not explain the default behavior or constraints.
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 action (list), the resource (reasoning chains), and the ordering (by access_count then recency). This effectively distinguishes it from siblings like reasoning_save and reasoning_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 implies when to use this tool (to list stored chains) but provides no explicit guidance on when not to use it or alternatives. With a sibling like reasoning_search for targeted queries, this gap leaves the agent without clear decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reasoning_saveB
Persist a reasoning trace (goal + steps + conclusion) for later reuse.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| steps | Yes | [{tool,args,observation},...] | |
| project | No | Project name/path (default: active). | |
| ttl_days | No | ||
| conclusion | Yes | ||
| confidence | No | 0.0-1.0 (default 0.8). | |
| evidence_obs_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'persist' without disclosing side effects, permissions requirements, overwrite behavior, or what happens to unsaved data. Remaining parameters like ttl_days and project are not explained.
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?
Single sentence is concise but lacks structure; no parameter list, examples, or separate sections. Every word earns its place, but more detail could be added without bloating.
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?
With 7 parameters, no output schema, and no annotations, the description is insufficient. It omits how saved traces are retrieved, what happens on duplicate goals, and how parameters like ttl_days affect persistence.
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 only 43% (3/7 parameters have descriptions). The description adds no extra meaning to parameters, leaving the agent to infer roles of goal, steps, conclusion, and optional fields from name alone.
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?
Description clearly states verb 'persist', resource 'reasoning trace', and components (goal, steps, conclusion). Distinguishes from siblings reasoning_list and reasoning_search which are for listing and searching saved traces.
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?
Implies usage for saving reasoning traces, but no explicit guidance on when to use versus alternatives, nor any when-not conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reasoning_searchB
Search stored reasoning chains by goal similarity (FTS5 + Jaccard).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 5). | |
| query | Yes | Goal-like query text. | |
| project | No | Project name/path (default: active). | |
| threshold | No | Minimum Jaccard similarity (default 0.3). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions the search technique but omits details on whether the tool is read-only, how results are returned, or any side effects, leaving significant gaps.
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 a single concise sentence with no wasted words, but it could be slightly more structured to improve readability.
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 tool's complexity (4 parameters, no output schema, no annotations), the description is too minimal. It fails to explain what 'reasoning chains' are, how results are ordered, or zero results behavior, leaving the agent with insufficient context.
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 baseline is 3. The description adds no additional meaning beyond the schema's descriptions; it merely restates 'Goal-like query text' for the query parameter.
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 searches stored reasoning chains by goal similarity, mentioning FTS5 and Jaccard, which distinguishes it from sibling tools like 'reasoning_list' and 'reasoning_save'.
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?
While the description implies usage for similarity-based search, it provides no explicit guidance on when to use this tool over alternatives such as 'corpus_query' or 'memory_search', nor any conditions for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reindexC
Rebuild the project index.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Rebuild even if no mtime changes detected. | |
| project | No | Project name/path (default: active). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits like whether the operation is destructive, requires permissions, or affects existing data. The minimal description fails to provide essential behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is efficient and appropriately sized for a simple operation, though it could be slightly more informative without becoming verbose.
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 tool's simplicity and the richness of the schema (covering both parameters), the description is minimally complete. However, it omits any explanation of return values or side effects, which would be helpful given the lack of an output 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?
Schema coverage is 100%, and the description adds no extra meaning beyond the schema's field descriptions. The tool's parameters are adequately explained in the schema, so the description does not need to compensate.
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 'rebuild' and clearly identifies the resource 'project index'. It effectively communicates the tool's primary action, though it could be more precise about what the index contains.
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?
No guidance is provided regarding when to use this tool versus alternatives such as 'corpus_build' or 'memory_index'. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_symbol_sourceB
Replace an indexed symbol's full source block directly.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Alias de `new_source`. Replacement source for the symbol. | |
| name | No | Alias de `symbol_name`. Function, method, class, or section name to replace. | |
| source | No | Alias de `new_source`. Replacement source for the symbol. | |
| content | No | Alias de `new_source`. Replacement source for the symbol. | |
| project | No | Project name/path (default: active). | |
| file_path | No | Optional file path to disambiguate symbols. | |
| new_source | No | Replacement source for the symbol. | |
| symbol_name | No | Function, method, class, or section name to replace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description merely says 'replace directly' without mentioning side effects (e.g., does it affect other references, is it undoable). For a mutation tool, this is insufficient.
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 a single, front-loaded sentence with no waste. However, it could be slightly more informative without losing conciseness.
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 (8 parameters with aliases, no output schema, no annotations), the description is too brief. It lacks details on return values, validation, prerequisites (e.g., symbol must exist), and side effects.
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 3. The description adds no extra meaning beyond the schema; it does not clarify the alias confusion (e.g., which parameter to prefer).
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 action: replace a symbol's full source block directly. It distinguishes from siblings like edit_lines_in_symbol or insert_near_symbol by specifying a full replacement.
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 no guidance on when to use this tool versus alternatives, such as when to replace a symbol's source entirely vs editing specific lines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_impacted_testsC
Run pytest on files impacted by the current worktree changes.
| Name | Required | Description | Default |
|---|---|---|---|
| compact | No | ||
| project | No | Project name/path (default: active). | |
| max_tests | No | ||
| timeout_sec | No | ||
| symbol_names | No | ||
| changed_files | No | ||
| include_output | No | ||
| max_output_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose behavior beyond the core action—no info on test execution details, error handling, output format, or effects (e.g., no mention of file modifications or state changes).
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?
A single sentence is concise, but it lacks structure—no separation of purpose, parameters, or behavior. The sentence is front-loaded with the key action, but brevity sacrifices completeness.
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 8 parameters, no output schema, and no annotations, the description is incomplete. It does not explain return values, parameter interdependencies, or edge cases (e.g., what happens if no impacted tests are found). The agent would need additional 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?
With only 13% schema coverage (only 'project' has a description) and no parameter details in the description, the agent must rely on parameter names. While names like 'changed_files' and 'timeout_sec' are somewhat intuitive, the description adds no value to clarify meaning or usage, leaving significant ambiguity.
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 runs pytest on files impacted by worktree changes, using a specific verb ('Run') and resource ('pytest on impacted files'). It distinguishes from siblings like 'detect_breaking_changes' and 'find_impacted_test_files', though 'impacted' is not precisely defined.
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?
No guidance on when to use this tool versus alternatives, no prerequisites or when-not-to-use conditions. The agent is left to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_project_actionB
Run a discovered project action by id (bounded output, bounded timeout).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name/path (default: active). | |
| action_id | Yes | e.g. 'python:test', 'npm:test'. | |
| timeout_sec | No | Default 120. | |
| include_output | No | ||
| max_output_chars | No | Default 12000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions 'bounded output, bounded timeout' which hints at constraints but does not disclose specifics like what happens on timeout, whether the action is destructive, or if any state changes occur. Insufficient for safe invocation.
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 a single concise sentence with front-loaded purpose and parenthetical constraints. Every word adds value, but it could be slightly more structured (e.g., separate section for constraints).
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 (5 parameters, no output schema, no annotations), the description adequately conveys the core purpose but is incomplete. It does not explain return values, error scenarios, or the precise meaning of 'bounded'. Leaves significant gaps for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so baseline is 3. The description only references the action_id parameter ('by id') and does not add meaning to other parameters like timeout_sec, max_output_chars, include_output, or project. No additional value over schema.
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 verb 'run' and the resource 'discovered project action', with the qualifier 'by id'. It distinguishes from sibling tools like 'discover_project_actions' which discovers actions, not runs them.
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 implies usage after discovering actions, but provides no explicit guidance on when to use this tool versus alternatives like 'run_impacted_tests' or 'ts_execute'. No when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codebaseB
Regex (default) or semantic (semantic=true) search across indexed files.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Alias de `pattern`. Regex pattern (regex mode) or natural-language description (semantic mode). | |
| query | No | Alias de `pattern`. Regex pattern (regex mode) or natural-language description (semantic mode). | |
| regex | No | Alias de `pattern`. Regex pattern (regex mode) or natural-language description (semantic mode). | |
| pattern | No | Regex pattern (regex mode) or natural-language description (semantic mode). | |
| project | No | Project name/path (default: active). | |
| semantic | No | If true, interpret `pattern` as a description and rank symbols by embedding cosine similarity. Returns enriched hits with signature/docstring/score. Default false (regex). | |
| max_results | No | Maximum number of results to return (default 100, 0 = unlimited). | |
| ignore_generated | No | Skip generated/minified files (default true). Regex mode only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the behavioral disclosure burden. It names the two modes and defaults but does not detail side effects, authentication needs, or result handling. The schema fills some gaps, but the description alone is minimal.
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 a single sentence that front-loads the key functionality (regex vs semantic search). It is concise and wastes no words, though it could include more context without losing conciseness.
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 8 parameters, many sibling tools, and no output schema, the description lacks details on return format, pagination, and result structure. The schema parameter descriptions hint at enriched hits, but agents need more explicit context to use the tool effectively.
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 parameters thoroughly. The tool description adds no extra semantic value beyond restating the two modes, which is baseline.
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 performs 'search across indexed files' with two explicit modes (regex default, semantic with semantic=true). It is specific and distinguishes from sibling tools that search other resources (e.g., memory_search, ts_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 provides no guidance on when to use this tool vs alternatives like ts_search or memory_search. It lacks context for selection criteria, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_in_symbolsB
Regex search that returns the enclosing function/class for each match, in addition to file:line.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Regular expression pattern to search for. | |
| project | No | Project name/path (default: active). | |
| max_results | No | Maximum number of results to return (default 100, 0 = unlimited). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of transparency. It reveals that matches include enclosing symbols, but does not disclose read-only nature, performance characteristics, or whether the search is file-system based. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence conveys the core functionality without any filler. Efficiently communicates the key behavior.
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 simple search tool with no output schema, the description covers return content. However, it lacks differentiation from sibling search tools and does not mention limits or edge cases (e.g., pattern syntax). Adequate but incomplete.
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?
Input schema covers all 3 parameters with descriptions (100% coverage). The description adds no additional semantic meaning beyond what the schema provides, so baseline 3 is appropriate.
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 it performs a regex search and returns enclosing function/class and file:line, which distinguishes it from generic search tools like search_codebase. However, it could be more explicit about its specific use case compared to sibling tools like find_symbol or ts_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?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or compare to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_project_rootA
Register a new project root and switch to it. If the path is already registered, this becomes a cheap active-root switch (no reindex) unless force=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Alias de `path`. Absolute path to the project root directory. | |
| path | No | Absolute path to the project root directory. | |
| root | No | Alias de `path`. Absolute path to the project root directory. | |
| force | No | Rebuild the index even if the project is already registered. | |
| project | No | Alias de `path`. Absolute path to the project root directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that switching is cheap unless force=true triggers reindex. Does not mention any destructive behavior or side effects, but the tool is non-destructive by nature.
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?
Two concise sentences front-load the core purpose and add a critical behavioral condition. No wasted words.
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?
With no output schema, the description does not mention return value, but the behavior is well-covered. For a registration/switch tool, it addresses the key behavioral nuance.
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 baseline is 3. Description adds value by explaining the force parameter's behavior (reindex vs cheap switch), going beyond schema's generic 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?
The description clearly states the tool registers a new project root and switches to it, distinguishing its dual role from sibling tools like 'switch_project' which likely only switches.
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 context on when reindexing occurs (when force=true or new path) versus cheap switching. Does not name alternatives, but behavior is clearly scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_projectC
Switch the active project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Project name (basename of path) or full path. | |
| path | No | Alias de `name`. Project name (basename of path) or full path. | |
| root | No | Alias de `name`. Project name (basename of path) or full path. | |
| project | No | Alias de `name`. Project name (basename of path) or full path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description alone must disclose behavior. It only states the action without any details on side effects, reversibility, or state changes. For a state-mutating tool, this is insufficient.
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?
Extremely concise single sentence. However, it is so brief that it risks under-specification, sacrificing clarity for brevity.
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 (4 parameters with aliases, no output schema), the description is too minimal. It does not explain the parameter semantics, the effect of switching, or how to confirm success.
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 no value for parameters. It repeats the tool name without explaining how to use 'name', 'path', 'project', or 'root', or clarifying the 'anyOf' constraint.
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?
Description clearly states the verb 'Switch' and the resource 'active project', making the basic purpose obvious. However, it does not distinguish from sibling tools like 'set_project_root' or 'list_projects', which could cause confusion.
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?
No guidance on when to use this tool versus alternatives. Does not mention prerequisites, context, or when to avoid using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ts_discoverA
Scan Claude Code transcripts for missed Token Savior opportunities (native-call chains that should have been a single TS call) and/or report TS-vs-native adoption ratios. Scans ALL transcript projects by default; pass project= to filter. format='table' (default) or 'json' returns ranked Findings; format='adoption' or 'adoption_json' returns the TS adoption summary with trend + worst sessions. Read-only, PII-safe.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Cap the number of findings returned (table/json only; default unlimited). | |
| format | No | Output format. 'table' (default) / 'json' = ranked missed-opportunity Findings. 'adoption' / 'adoption_json' = TS vs native adoption summary. | |
| project | No | Filter to sanitized project dirs whose name contains this substring (e.g. '-root'). Omit to scan ALL transcript projects under ~/.claude/projects/. | |
| since_days | No | Only consider events newer than now - since_days (default 7). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description classifies the tool as 'Read-only, PII-safe,' which compensates for the absence of annotations by disclosing key behavioral traits. It also mentions default scanning of all transcript projects. However, it does not detail side effects or output structure beyond high-level summaries.
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 a single, well-organized paragraph that front-loads the primary purpose, then covers defaults, format options, and safety. Every sentence is informative, and there is no redundancy or unnecessary wording.
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 tool has four parameters and no output schema. The description explains output categories (Findings, adoption summary) but does not detail the fields or structure of the returned data, which may require agents to infer from examples. For an analysis tool, this is adequate but not fully complete.
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?
With 100% schema description coverage, the baseline is 3. The description adds value by explaining what each format option returns (ranked Findings vs. adoption summary) and emphasizing the project filter, which goes beyond the schema's enumerated descriptions.
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 purpose: scanning Claude Code transcripts for missed Token Savior opportunities and reporting adoption ratios. The verb 'Scan' and resource 'Claude Code transcripts' are specific, and the description distinguishes it from siblings like ts_execute by focusing on analysis, not execution.
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 explains default behavior (scans all projects) and how to filter with 'project' parameter, and describes format options. However, it lacks explicit guidance on when to use this tool versus alternatives like ts_search or ts_execute, leaving usage context somewhat implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ts_executeA
Run a JS script in a Node sandbox with a typed facade. The script body executes as async () => { <body> }; use await tools.<name>(args) to call any allowed tool (find_symbol, get_function_source, get_dependents, search_codebase, replace_symbol_source, etc.). Return the final value. Collapses find->read->deps chains into one round-trip.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JS function body. Use `await tools.foo(args)` then `return value`. | |
| timeout_ms | No | Max script wall-clock in ms (default 30000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the async execution model, the mechanism to call other tools, and the chain collapsing behavior. It lacks details on error handling and sandbox restrictions but is largely 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 three concise sentences, front-loading the main purpose and providing essential details without wasting words.
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 tool's complexity and lack of output schema, the description explains the script execution model but does not specify the return value format or error behavior, leaving some 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?
Schema coverage is 100%, so parameters are already well-described. The description reinforces the script parameter's format but adds no new meaning beyond the schema. The timeout parameter is not mentioned 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?
The description clearly states it runs a JS script in a Node sandbox, explains the script body format, and distinguishes from sibling tools by highlighting that it collapses find->read->deps chains into one round-trip, which is a key differentiator.
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 provides clear guidance on how to construct the script body and lists allowed tools, implying it should be used to combine multiple tool calls. However, it does not explicitly state when not to use it or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ts_searchA
Find the top-K Token Savior tools most relevant to a natural-language query via embedding cosine similarity. Use when the manifest is in 'tiny' or 'code_mode' profile or you don't know which tool fits. Returns each candidate with its full inputSchema (format='schema') or a one-line TypeScript signature (format='ts') suitable for ts_execute scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Alias de `query`. Natural-language description of what you need (e.g. 'find dependents of update_user'). | |
| query | No | Natural-language description of what you need (e.g. 'find dependents of update_user'). | |
| top_k | No | How many tool candidates to return (default 5, max 12). | |
| format | No | 'schema' (default) returns JSONSchema; 'ts' returns a TypeScript signature for Code Mode scripts. Auto-set to 'ts' when profile=code_mode. | |
| pattern | No | Alias de `query`. Natural-language description of what you need (e.g. 'find dependents of update_user'). | |
| include_schema | No | If false, drop inputSchema from the response (smaller payload). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the output (candidates with inputSchema or TypeScript signature) but does not disclose whether the tool is read-only or has side effects. With no annotations, the description carries full burden, and a mention of non-destructiveness would improve transparency.
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 two sentences, front-loaded with the core purpose and method, then adds usage guidance and output details. No unnecessary words; every sentence adds value.
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 six parameters and no output schema, the description covers the main function and optional parameters well. It could mention search threshold or sorting, but the current detail is sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining the format parameter's auto-set behavior in code_mode, the aliasing of query/pattern/q, and the default/max for top_k. This goes beyond the schema's raw definitions.
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 finds top-K Token Savior tools relevant to a natural-language query via embedding cosine similarity. It distinguishes from sibling search tools like search_codebase, memory_search, and corpus_query by focusing specifically on tool discovery.
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 when the manifest is in 'tiny' or 'code_mode' profile or when unsure which tool fits, providing clear context. However, it does not explicitly state when not to use this tool or mention alternatives like direct tool invocation.
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. Dates show when Glama detected each change.
13 tool updates
v4.20.0- Changed
find_symbol3 fields changed- added
Input schema / properties / kindsAdded value: +{ + "description": "Symbol kinds to search. Default: function+class (plus variable when TOKEN_SAVIOR_VARIABLES=search).", + "items": { + "enum": [ + "function", + "class", + "variable" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / symbolAdded value: +{ + "description": "Alias de `name`. ", + "type": "string" +} - added
Input schema / properties / symbol_nameAdded value: +{ + "description": "Alias de `name`. ", + "type": "string" +}
- Changed
get_class_source2 fields changed- added
Input schema / properties / class_nameAdded value: +{ + "description": "Alias de `name`. ", + "type": "string" +} - added
Input schema / properties / symbol_nameAdded value: +{ + "description": "Alias de `name`. ", + "type": "string" +}
- Changed
get_edit_context4 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "name" + ] + }, + { + "required": [ + "symbol_name" + ] + }, + { + "required": [ + "symbol" + ] + } +] - added
Input schema / properties / symbolAdded value: +{ + "description": "Alias de `name`. ", + "type": "string" +} - added
Input schema / properties / symbol_nameAdded value: +{ + "description": "Alias de `name`. ", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "name" -]
- Changed
get_full_context2 fields changed- added
Input schema / properties / symbolAdded value: +{ + "description": "Alias de `name`. Symbol name (function, method, class).", + "type": "string" +} - added
Input schema / properties / symbol_nameAdded value: +{ + "description": "Alias de `name`. Symbol name (function, method, class).", + "type": "string" +}
- Changed
get_function_source2 fields changed- added
Input schema / properties / functionAdded value: +{ + "description": "Alias de `name`. Function or method (e.g. 'MyClass.method').", + "type": "string" +} - added
Input schema / properties / symbol_nameAdded value: +{ + "description": "Alias de `name`. Function or method (e.g. 'MyClass.method').", + "type": "string" +}
- Changed
insert_near_symbol6 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "symbol_name", + "content" + ] + }, + { + "required": [ + "symbol_name", + "source" + ] + }, + { + "required": [ + "symbol_name", + "new_source" + ] + }, + { + "required": [ + "symbol_name", + "code" + ] + }, + { + "required": [ + "name", + "content" + ] + } +] - added
Input schema / properties / codeAdded value: +{ + "description": "Alias de `content`. ", + "type": "string" +} - added
Input schema / properties / nameAdded value: +{ + "description": "Alias de `symbol_name`. ", + "type": "string" +} - added
Input schema / properties / new_sourceAdded value: +{ + "description": "Alias de `content`. ", + "type": "string" +} - added
Input schema / properties / sourceAdded value: +{ + "description": "Alias de `content`. ", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "symbol_name", - "content" -]
- Changed
list_files2 fields changed- added
Input schema / properties / globAdded value: +{ + "description": "Alias de `pattern`. Glob pattern to filter files (uses fnmatch).", + "type": "string" +} - added
Input schema / properties / queryAdded value: +{ + "description": "Alias de `pattern`. Glob pattern to filter files (uses fnmatch).", + "type": "string" +}
- Changed
replace_symbol_source6 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "symbol_name", + "new_source" + ] + }, + { + "required": [ + "symbol_name", + "content" + ] + }, + { + "required": [ + "symbol_name", + "source" + ] + }, + { + "required": [ + "symbol_name", + "code" + ] + }, + { + "required": [ + "name", + "new_source" + ] + } +] - added
Input schema / properties / codeAdded value: +{ + "description": "Alias de `new_source`. Replacement source for the symbol.", + "type": "string" +} - added
Input schema / properties / contentAdded value: +{ + "description": "Alias de `new_source`. Replacement source for the symbol.", + "type": "string" +} - added
Input schema / properties / nameAdded value: +{ + "description": "Alias de `symbol_name`. Function, method, class, or section name to replace.", + "type": "string" +} - added
Input schema / properties / sourceAdded value: +{ + "description": "Alias de `new_source`. Replacement source for the symbol.", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "symbol_name", - "new_source" -]
- Changed
search_codebase5 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "pattern" + ] + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "q" + ] + }, + { + "required": [ + "regex" + ] + } +] - added
Input schema / properties / qAdded value: +{ + "description": "Alias de `pattern`. Regex pattern (regex mode) or natural-language description (semantic mode).", + "type": "string" +} - added
Input schema / properties / queryAdded value: +{ + "description": "Alias de `pattern`. Regex pattern (regex mode) or natural-language description (semantic mode).", + "type": "string" +} - added
Input schema / properties / regexAdded value: +{ + "description": "Alias de `pattern`. Regex pattern (regex mode) or natural-language description (semantic mode).", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "pattern" -]
- Changed
set_project_root5 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "path" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "name" + ] + }, + { + "required": [ + "root" + ] + } +] - added
Input schema / properties / nameAdded value: +{ + "description": "Alias de `path`. Absolute path to the project root directory.", + "type": "string" +} - added
Input schema / properties / projectAdded value: +{ + "description": "Alias de `path`. Absolute path to the project root directory.", + "type": "string" +} - added
Input schema / properties / rootAdded value: +{ + "description": "Alias de `path`. Absolute path to the project root directory.", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "path" -]
- Changed
switch_project5 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "name" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "path" + ] + }, + { + "required": [ + "root" + ] + } +] - added
Input schema / properties / pathAdded value: +{ + "description": "Alias de `name`. Project name (basename of path) or full path.", + "type": "string" +} - added
Input schema / properties / projectAdded value: +{ + "description": "Alias de `name`. Project name (basename of path) or full path.", + "type": "string" +} - added
Input schema / properties / rootAdded value: +{ + "description": "Alias de `name`. Project name (basename of path) or full path.", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "name" -]
- Added
ts_discover - Changed
ts_search4 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "query" + ] + }, + { + "required": [ + "pattern" + ] + }, + { + "required": [ + "q" + ] + } +] - added
Input schema / properties / patternAdded value: +{ + "description": "Alias de `query`. Natural-language description of what you need (e.g. 'find dependents of update_user').", + "type": "string" +} - added
Input schema / properties / qAdded value: +{ + "description": "Alias de `query`. Natural-language description of what you need (e.g. 'find dependents of update_user').", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "query" -]
68 tool updates
v4.0.0- Added
add_field_to_model - Added
analyze_config - Added
analyze_docker - Added
build_commit_summary - Added
capture_aggregate - Added
capture_get - Added
capture_list - Added
capture_purge - Added
capture_put - Added
capture_search - Added
checkpoint - Added
corpus_build - Added
corpus_query - Added
detect_breaking_changes - Added
discover_project_actions - Added
edit_lines_in_symbol - Added
find_dead_code - Added
find_hotspots - Added
find_impacted_test_files - Added
find_import_cycles - Added
find_semantic_duplicates - Added
find_symbol - Added
get_call_chain - Added
get_change_impact - Added
get_changed_symbols - Added
get_class_source - Added
get_classes - Added
get_db_schema - Added
get_dependencies - Added
get_dependents - Added
get_edit_context - Added
get_entry_points - Added
get_env_usage - Added
get_feature_files - Added
get_file_dependencies - Added
get_file_dependents - Added
get_full_context - Added
get_function_source - Added
get_functions - Added
get_git_status - Added
get_imports - Added
get_project_summary - Added
get_routes - Added
get_stats - Added
get_structure_summary - Added
insert_near_symbol - Added
list_files - Added
list_projects - Added
memory_admin - Added
memory_delete - Added
memory_get - Added
memory_index - Added
memory_save - Added
memory_search - Added
move_symbol - Added
reasoning_list - Added
reasoning_save - Added
reasoning_search - Added
reindex - Added
replace_symbol_source - Added
run_impacted_tests - Added
run_project_action - Added
search_codebase - Added
search_in_symbols - Added
set_project_root - Added
switch_project - Added
ts_execute - Added
ts_search
8 tool updates
v1.0.5- Removed
build_commit_summary - Removed
create_checkpoint - Removed
get_changed_symbols - Removed
get_changed_symbols_since_ref - Removed
get_git_status - Removed
list_projects - Removed
summarize_patch_by_symbol - Removed
switch_project
8 tool updates
v1.0.4- Added
build_commit_summary - Added
create_checkpoint - Added
get_changed_symbols - Added
get_changed_symbols_since_ref - Added
get_git_status - Added
list_projects - Added
summarize_patch_by_symbol - Added
switch_project
17 tool updates
v1.0.2- Removed
build_commit_summary - Removed
compare_checkpoint_by_symbol - Removed
create_checkpoint - Removed
delete_checkpoint - Removed
find_impacted_test_files - Removed
get_changed_symbols - Removed
get_changed_symbols_since_ref - Removed
get_git_status - Removed
insert_near_symbol - Removed
list_checkpoints - Removed
list_projects - Removed
prune_checkpoints - Removed
replace_symbol_source - Removed
restore_checkpoint - Removed
run_impacted_tests - Removed
summarize_patch_by_symbol - Removed
switch_project
17 tool updates
v1.0.1- Added
build_commit_summary - Added
compare_checkpoint_by_symbol - Added
create_checkpoint - Added
delete_checkpoint - Added
find_impacted_test_files - Added
get_changed_symbols - Added
get_changed_symbols_since_ref - Added
get_git_status - Added
insert_near_symbol - Added
list_checkpoints - Added
list_projects - Added
prune_checkpoints - Added
replace_symbol_source - Added
restore_checkpoint - Added
run_impacted_tests - Added
summarize_patch_by_symbol - Added
switch_project
TDQS
Most tools have distinct purposes, but there are multiple search and symbol retrieval tools (e.g., search_codebase, search_in_symbols, ts_search, memory_search, reasoning_search, capture_search) that could cause confusion. Each has a specific modality, but the overlap is manageable with careful descriptions.
The naming follows a consistent verb_noun pattern for the majority of tools (e.g., add_field_to_model, analyze_config). Some prefixes like 'capture_', 'memory_', and 'ts_' create minor deviations, but overall the convention is predictable and clear.
68 tools is excessive for most use cases, risking information overload and tool selection errors. While the server aims to be comprehensive, many tools are niche (e.g., capture_*, reasoning_*), and the count could be reduced by merging or pruning without losing core functionality.
The tool set covers the full lifecycle of code analysis, editing, project management, memory, search, and reasoning. Operations like create, read, update, delete, search, and analysis are present for all key areas, with no obvious missing functionality for an AI coding assistant.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
An MCP server that gives your AI access to the source code and docs of all public github repos
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables Large Language Models to interact with Git repositories through a robust API, supporting operations like repository initialization, cloning, file staging, committing, and branch management.287,389239Apache 2.0
- FlicenseNot gradedqualityCmaintenanceAn MCP server for efficient code indexing and symbol retrieval using tree-sitter AST parsing to fetch specific functions or classes without loading entire files. It significantly reduces AI token costs by providing O(1) byte-offset access to code components across multiple programming languages.-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides structure-aware code analysis (symbol trees, dependencies, docs) to reduce AI agent token consumption by up to 99%, along with Git commit intelligence.MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides ultra-efficient code exploration through AST analysis, reducing LLM token usage by up to 95% while enabling instant call graph generation and dependency analysis for massive codebases.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mibayy/token-savior'
If you have feedback or need assistance with the MCP directory API, please join our Discord server