ontomics
ontomics
ontomics 为任何编码智能体提供代码库的即时知识。只需一次工具调用,而非 19 次。token 消耗减少约 20 倍。
https://github.com/user-attachments/assets/01afa8a0-1bc2-4686-94d7-965fef7610c3
voxelmorph 项目的可视化 —— 一个用于图像配准中无监督学习的库
基准测试
使用 Claude Sonnet 进行测试 —— 相同的问题,分别在有和没有 ontomics 的情况下。
在 voxelmorph 上询问“此代码库中的 'transform' 是什么意思?”(完整记录):
使用 ontomics | 不使用 | |
工具调用 | 1 | 19 |
Tokens | ~3.7k | ~76k |
时间 | 5s | 1m 15s |
回答质量 | 完整 | 完整 |
在 ScribblePrompt 上询问“此代码库中的主要领域概念是什么?”(完整记录):
使用 ontomics | 不使用 | |
工具调用 | 1 | 26 |
Tokens | ~3.7k | ~61.6k |
时间 | ~5s | 56s |
回答质量 | 完整 | 完整 |
两种情况下都产生了完整、正确的答案。ontomics 只需一次调用即可完成。
Related MCP server: Code-Index-MCP
它能做而搜索做不到的事
搜索只能告诉你字符串出现在哪里。LSP 可以告诉你符号在哪里定义和引用。但两者都无法回答:此代码库中的领域概念是什么?它们之间有什么联系?出现了哪些命名规范?自上次发布以来领域词汇发生了什么变化?哪些函数行为相似,无论它们叫什么名字?
ontomics 构建了项目领域的语义索引 —— 将相关符号聚类为概念,从使用频率中检测命名规范,解析缩写,按行为相似性对函数进行分组,并跟踪词汇随时间的演变。该索引可以导出为便携式工件,以在其他仓库中引导规范。
行为相似性
除了命名和概念之外,ontomics 还使用 CodeRankEmbed(768 维,对比代码检索)嵌入原始函数体,并按行为相似性对它们进行聚类。这揭示了命名和调用图都无法暴露的关系:
❯ What functions behave like spatial_transform()?
random_transform() nn/functional.py:352 0.80
spatial_transform() functional.py:596 0.69
random_transform() functional.py:1399 0.67
random_disp() nn/functional.py:275 0.65
integrate_disp() functional.py:764 0.65
compose() nn/functional.py:216 0.63
disp_to_trf() functional.py:343 0.62结果还显示 random_transform 出现在两个位置,且具有不同的相似度分数 —— 这是概念级搜索完全无法发现的实现重复的迹象。
安装
安装一次,即可在每个项目中使用。无需配置 —— ontomics 会自动检测仓库并在首次运行时进行索引。
ontomics 需要一个 git 仓库(.git/ 目录)。它将拒绝索引主目录、根目录或临时目录。要索引非 git 目录,请使用 --force。
1. 安装二进制文件
npm (macOS/Linux):
npm install -g @ontomics/ontomicsmacOS (Homebrew):
brew install EtienneChollet/tap/ontomicsShell 安装程序 (macOS/Linux):
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/EtienneChollet/ontomics/releases/latest/download/ontomics-installer.sh | sh从源码安装:
git clone https://github.com/EtienneChollet/ontomics.git
cd ontomics
cargo build --release2. 在你的工具中注册
Claude Code:
claude mcp add -s user ontomics -- ontomicsCodex:
codex mcp add ontomics -- ontomicsOpenClaw:
openclaw mcp set ontomics '{"command":"ontomics"}'pi-coding-agent:
pi install npm:@ontomics/ontomics与团队共享 —— 在你的仓库根目录放入一个 .mcp.json:
{
"mcpServers": {
"ontomics": {
"command": "npx",
"args": ["-y", "@ontomics/ontomics", "--repo", "."]
}
}
}支持的语言
Python, TypeScript, JavaScript, Rust。根据文件扩展名自动检测。
工具
概念和词汇
工具 | 功能 |
| 查找术语的所有变体、相关概念和出现位置 |
| 查找概念的关键签名、类和文件 |
| 获取函数或类的签名、文档字符串和关系 |
| 通过调用链追踪概念如何在代码库中流动 |
| 按频率列出顶级领域概念 |
| 列出所有检测到的命名模式(前缀、后缀、转换) |
| 按概念、角色或类型过滤列出代码实体(类、函数) |
| 根据项目规范检查标识符;建议规范形式 |
| 生成符合项目词汇表的标识符名称 |
| 衡量规范覆盖率、命名一致性和聚类内聚性 |
| 显示自 git ref 以来新增、更改或删除的领域概念 |
| 将领域知识导出为便携式 YAML,以便在其他仓库中使用 |
行为相似性
工具 | 功能 |
| 查找行为实现相似的函数,按嵌入相似度排序 |
| 获取函数的行为描述、主体文本和逻辑聚类成员资格 |
| 为符号组装分层上下文(概念 + 逻辑),针对 LLM 消耗进行优化 |
代码库结构
工具 | 功能 |
| 文件实体、概念和关系的概览 |
| 显示哪些模块包含哪些领域概念 |
| 显示主导类型以及数据如何在代码库中流动 |
| 追踪特定类型如何在文件和调用点之间传播 |
资源
资源 | 功能 |
| 会话简报:顶级规范、缩写、关键概念、对比对和词汇警告。也可通过 |
工作原理
ontomics 完全在你的机器上运行多阶段流水线 —— 无需 API 密钥:
解析 — tree-sitter 从你的源文件中提取每个标识符、签名和调用点
分析 — TF-IDF 评分识别领域特定概念并检测命名规范
嵌入(概念) — BGE-small (384 维) 按语义相似度对相关概念进行聚类
嵌入(逻辑) — CodeRankEmbed (768 维) 嵌入原始函数体并按行为相似度对它们进行聚类
中心度 — PageRank 按结构重要性对实体进行评分
两种嵌入模型均在首次运行时下载并缓存在本地。索引位于 <repo>/.ontomics/index.db —— 后续启动将从缓存加载并监视文件更改。
通过仓库根目录下的 .ontomics/config.toml 进行配置。所有字段都有合理的默认值。请参阅 SPEC.md 获取完整的设计契约。
Available Tools
19 toolscheck_namingA
Check if an identifier follows project naming conventions — detects inconsistencies like 'n_dims' vs the project's 'ndim' convention, or 'numFeatures' vs 'nb_features'. Returns a consistent/inconsistent verdict with the canonical form and suggestions. Use before committing new code or when reviewing identifier names.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | The identifier to check (e.g. 'n_dims') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Clearly describes it returns a verdict, canonical form, and suggestions. With no annotations, the description carries full burden and does so adequately, though it could explicitly state no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with examples and usage context—no wasted words. Front-loaded with 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?
Covers purpose, examples, usage guidance, and return type. Without output schema, the description of the verdict is slightly vague but 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?
Schema coverage is 100%, and the description adds an example but no additional semantics beyond the schema's description of 'identifier'. 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 checks identifier naming conventions with specific examples ('n_dims' vs 'ndim'), distinguishing it from siblings like 'suggest_name' or 'list_conventions'.
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?
Explicitly says 'Use before committing new code or when reviewing identifier names', providing good context. However, it does not mention when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compact_contextA
Assemble minimal, token-efficient context for a concept, entity, or file — combines function body + structural summary + domain concepts + logic cluster into a compact text block suitable for LLM prompt injection. Much smaller than full source while preserving behavioral and structural information. Use when assembling context for another LLM, when asked to 'summarize X compactly', or when building prompts about codebase entities.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | Concept name, entity name, or file path | |
| max_tokens | No | Token budget (default: 500) |
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 explains that the tool combines function body, structural summary, domain concepts, and logic cluster, but does not detail how it handles large scopes, truncation, or errors. The description is adequate but lacks edge-case 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 a concise two sentences: first sentence defines the purpose and output, second gives usage contexts. Every phrase earns its place, and the action verb 'Assemble' is 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 two parameters with full schema coverage and no output schema, the description explains the tool's purpose, components, and usage. It does not mention output format or limitations, but for a text assembly tool, it is sufficiently 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%, and the description merely restates the parameter descriptions from the schema (scope as concept/entity/file path, max_tokens as token budget with default). It adds no new meaning 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 that the tool assembles a token-efficient context for a concept, entity, or file, combining multiple aspects. It is clear what it does, but it does not explicitly differentiate from siblings like describe_file or concept_map, which also provide summaries.
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 explicit use cases: assembling context for another LLM, when asked to summarize compactly, or building prompts. However, it does not mention when not to use this tool or suggest alternative tools among the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
concept_mapA
Semantic topology of the codebase — shows which directories concentrate which domain concepts, with entity counts and concept density. Use as a first call to understand codebase layout before drilling into specific concepts or symbols.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses behavioral traits effectively: it provides a layout overview with counts and density, implying a read-only operation. It lacks explicit safety or performance details but adds value beyond the empty 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?
Two sentences with no wasted words. The first sentence front-loads the core purpose and outputs, and the second provides usage context. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is fairly complete: it explains what it does and when to use it. It could add detail about the output format, but it's adequate for an agent to select and 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?
The input schema has zero parameters, so schema_description_coverage is 100%. The description does not need to add parameter info, and it doesn't. 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 shows 'semantic topology of the codebase' with specific outputs like directories, entity counts, and concept density. It uses a specific verb 'shows' and resource, distinguishing it from sibling tools like list_concepts or query_concept by positioning it as an initial overview tool.
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 'Use as a first call to understand codebase layout before drilling into specific concepts or symbols.' This provides clear when-to-use guidance and implies alternatives (drilling tools) without naming them explicitly, which is sufficient for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_fileA
Describe a file's structure WITHOUT reading it — returns classes, functions, and methods annotated with domain concepts and semantic roles. Use when you need to understand a file's shape, what symbols it contains, or what concepts it implements. Accepts partial paths (e.g. 'networks.py' matches 'src/networks.py'). Use describe_symbol to drill into any symbol shown.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path or partial path to describe (e.g. 'networks.py') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It correctly discloses that the tool does not read file content, accepts partial paths, and returns annotated symbols. It could mention that it is read-only and safe, but the description is clear enough.
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, front-loaded with the core purpose, no redundancy. Every sentence serves a clear function: purpose, usage guidance, and parameter 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 a single parameter, no output schema, and no annotations, the description covers all necessary information: what the tool does, when to use it, how parameters work, and what the return structure looks like. It is complete for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that partial paths are accepted and giving an example ('networks.py' matches 'src/networks.py'), which is not in the schema 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 specifies the verb 'Describe', the resource 'file's structure', and distinguishes it from siblings like 'describe_symbol' by emphasizing it does not read the file. It clearly states what it returns: classes, functions, methods annotated with domain concepts.
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 states when to use it ('when you need to understand a file's shape'), and provides an alternative tool ('Use describe_symbol to drill into any symbol shown'). This directly helps the agent decide between sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_logicA
Describe the behavioral logic of a function or class — returns the raw function body, logic cluster membership (which other entities behave similarly), and structural centrality (PageRank importance in the dependency graph). Use when asked 'what does this function do internally', 'how does X work at a high level', or 'what is the logic of X'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Function or class name |
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 discloses the returned data (raw function body, cluster membership, centrality). It lacks details on side effects, permissions, error handling, or size limits. Overall adequate but not exhaustive.
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 with no redundant information. The first sentence states the core purpose and outputs, the second provides usage examples. Extremely 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?
For a simple tool with one parameter and no output schema, the description fully explains what the tool returns and gives sample queries. No further clarification is needed for correct 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?
Schema description coverage is 100% for the single parameter 'name', which has a clear description. The tool description does not add additional semantics 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 explicitly states the tool 'Describe the behavioral logic of a function or class' and lists the specific returns (raw function body, logic cluster membership, structural centrality). It distinguishes from siblings like describe_symbol or describe_file by focusing on internal logic and 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 provides explicit usage cues: 'Use when asked "what does this function do internally"...' This clearly indicates when to invoke. However, it does not mention when not to use or alternative tools for similar queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_symbolA
Describe a function or class WITHOUT reading its source file — returns signature, parameters, callers, callees, and related domain concepts. Faster and more informative than Read for understanding what a symbol does and how it fits into the codebase. Use when asked 'what does function X do' or 'what is class X'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Function or class name (e.g. 'spatial_transform') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that it returns signature, parameters, callers, callees, and domain concepts without reading source. No destructive hints, but could mention if it has any side effects or requires 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?
Two sentences, each adding value: first defines action and output, second gives usage pattern and comparison. No redundant 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 single-parameter tool with no output schema, the description thoroughly covers what it does, when to use it, and what it returns. Sibling tools are distinct.
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 extra parameter info beyond the schema's 'Function or class name' 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's purpose: 'Describe a function or class WITHOUT reading its source file' and lists return values. It distinguishes from siblings like 'Read' by emphasizing it is faster and more informative.
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?
Explicit usage guidance: 'Use when asked what does function X do or what is class X.' Also contrasts with alternative (Read) to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_domain_packA
Export the project's full domain knowledge as a portable YAML pack — abbreviations, conventions, domain terms, and concept associations. Use when asked to 'export conventions', 'create a domain pack', or 'share naming rules'. The output can be reviewed, curated, and saved for use in other projects or tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description effectively explains non-destructive export behavior and output nature. Does not mention potential size or scope limitations, but overall transparent given zero parameters.
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 concise sentences: first defines action/content, second provides usage guidance, third describes output utility. No redundant or missing 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?
No output schema, but description sufficiently explains the YAML pack output and its contents. With zero parameters, the description covers all necessary context for an agent 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?
Tool has no parameters, and schema coverage is 100% (empty). Description adds no further parameter info, which is acceptable as baseline for zero-parameter tools.
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 it exports full domain knowledge as a portable YAML pack, listing specific contents (abbreviations, conventions, terms, associations) and use cases. Distinguishes from sibling tools like list_concepts or list_conventions by being a comprehensive export.
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?
Explicitly defines when to use with phrases like 'export conventions', 'create a domain pack', 'share naming rules'. Lacks direct comparison to alternative tools or when not to use, but trigger phrases are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similar_logicA
Find entities with similar behavioral patterns — uses logic embeddings to find functions/classes that do similar things regardless of naming. Returns similarity scores. Use when asked 'what other functions do the same thing', 'find similar implementations', or 'what behaves like X'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity name to compare against | |
| top_k | No | Max similar entities to return (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover Behavioral traits. It explains the method (logic embeddings) and what is returned (similarity scores), but doesn't explicitly state it's read-only or mention any side effects or 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?
Two sentences plus a list of example queries. No unnecessary words, front-loaded purpose, very 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?
Given no output schema, the description briefly mentions returns similarity scores but does not describe the result structure, leaving some ambiguity 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?
Schema coverage is 100%, so the schema already describes both parameters. The description does not add additional parameter-level details beyond what the schema provides, meeting the 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 finds entities with similar behavioral patterns using logic embeddings, and explicitly distinguishes from naming-based similarity. It gives concrete query examples.
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 natural language triggers like 'what other functions do the same thing' and clarifies it ignores naming, which effectively guides an agent on when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conceptsA
List the project's domain vocabulary ranked by importance — a semantic overview of what this codebase is about that reading individual files cannot provide. Returns concept names as a ranked list. Use query_concept or locate_concept to drill into any result. Use when asked 'what is this project about', 'what are the main concepts', or when orienting in an unfamiliar codebase.
| Name | Required | Description | Default |
|---|---|---|---|
| top_k | No | Maximum number of concepts to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses it returns a ranked list of concept names, implying a read operation. No annotations provided, but description adequately conveys its non-destructive nature and 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?
Two sentences, front-loaded with purpose, no redundancy, efficiently conveys all necessary 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?
Covers output (ranked list of concept names), usage context, and relationship to siblings. Given no output schema, it explains return values adequately. Could mention default behavior for top_k, but overall 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 describes the one optional parameter (top_k) as maximum number of concepts to return. Tool description does not add extra context beyond schema, but schema coverage is 100% 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 the tool lists the project's domain vocabulary ranked by importance, providing a semantic overview. It distinguishes from sibling tools like query_concept and locate_concept for drilling down.
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?
Explicitly tells when to use the tool: when asked about project's main concepts or orienting in an unfamiliar codebase. Also guides to use query_concept or locate_concept for further exploration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conventionsA
List the project's actual naming conventions detected from code — prefix patterns (nb_, is_, has_), suffix patterns, conversion patterns (x_to_y), and casing rules, each with real examples from the codebase. More accurate than guessing from a few files. Use when asked about coding style, before writing new code, or when onboarding to a project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry burden. It discloses that conventions are detected from code and provides real examples, but does not state read-only nature or side effects. Adequate but not explicit.
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: first describes outputs, second provides usage guidance. No filler, front-loaded with key 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?
Given no parameters or output schema, description covers what is returned (patterns and examples) and when to use. Could benefit from mentioning return structure, but adequate for the tool's simplicity.
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?
No parameters; schema coverage is trivially 100%. Baseline for 0 params is 4. Description adds value by explaining the tool's return content, so score holds at 4.
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 specifies the verb 'list' and resource 'naming conventions', detailing prefix, suffix, conversion, and casing patterns with examples. It clearly distinguishes from sibling check_naming by focusing on an overview.
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?
Explicitly states when to use: when asked about coding style, before writing new code, or when onboarding. Does not mention alternatives or when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_entitiesA
Find all classes and functions matching a concept — e.g. all loss functions, all network architectures, all transform utilities. Returns entity names with their domain concept tags. Use describe_symbol to drill into any result. Impossible with grep alone because it understands which functions implement a concept, not just mention it. Use when asked 'what loss functions exist', 'show me the network classes', 'what uses concept X', or 'list all X'.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | No | Filter by concept (e.g. 'loss') | |
| role | No | Filter by semantic role substring (e.g. 'module') | |
| kind | No | Filter by entity kind | |
| top_k | No | Max entities to return (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It implies a read-only query operation through examples and purpose, but does not explicitly state non-destructiveness or other behavioral traits. Still, the intent is clear and no contradictions exist.
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 with two main sentences plus usage examples. It is front-loaded with the core purpose, and every sentence contributes value. 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?
Given no output schema, the description mentions return of 'entity names with their domain concept tags', which is adequate but could specify format or pagination. It is fairly complete for a list tool, with enough context to guide 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 description coverage is 100%, so baseline is 3. The description adds example values for 'concept' but does not elaborate on 'role' or 'top_k' beyond what the schema already provides. It adds mild context but no substantial new meaning.
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 classes and functions matching a concept, with examples like 'loss functions' and 'network architectures'. It directly addresses the intent of listing entities by concept and distinguishes from the sibling 'describe_symbol' by mentioning drilling down.
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 explicit usage scenarios with example queries ('what loss functions exist', 'list all X') and contrasts with grep, explaining when this tool is superior. It also directs users to 'describe_symbol' for further details, setting clear boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
locate_conceptA
Find the best entry points for understanding a concept — returns a ranked shortlist of key functions, classes, and files to read, plus contrastive concepts that clarify boundaries. Saves reading dozens of grep matches by surfacing the most important locations first. Use when asked 'how does X work', 'where should I look for X', or 'where are X defined'.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Concept to locate (e.g. 'transform') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description implies a read-only operation that ranks results. It does not disclose potential side effects, rate limits, or response structure beyond the shortlist. Adequate but could explicitly state it's non-destructive.
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, no redundant information. First sentence defines function and output, second gives use cases. Efficient 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?
For a simple tool with one parameter and no output schema, the description is complete: it explains purpose, typical use cases, and the nature of the result (ranked shortlist). No 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 single parameter 'term' is fully described in the schema, and the description adds context (e.g., 'e.g. 'transform''). The description explains how the parameter is used to find entry points, adding meaning 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?
The description clearly states the tool finds best entry points for understanding a concept, returning a ranked shortlist of key functions, classes, and files, plus contrastive concepts. It distinguishes from sibling tools like 'trace_concept' by focusing on initial exploration.
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 use cases ('how does X work', 'where should I look for X'), giving clear context for when to invoke. Lacks explicit guidance on when not to use or direct alternatives, but the specificity is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontology_diffA
Compare the domain ontology between two git revisions — shows concepts that were added, removed, or changed. Useful for understanding how the project's vocabulary evolved across commits or for reviewing whether a PR introduced naming inconsistencies.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Git ref to diff from (default: HEAD~5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full transparency responsibility. It only mentions comparing revisions and showing changes, but does not disclose prerequisites (e.g., git availability), performance, or output format. Minimal behavioral insight.
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 consists of two sentences, with the primary action front-loaded. No redundant or extra information, 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 no output schema and moderate complexity, the description lacks details on the output format (list vs diff). It mentions 'shows concepts' but not how they are presented. Siblings imply more context might be needed, but description is adequate for basic use.
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% for the single parameter 'since', which has a clear description in the schema. The tool description does not add extra 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 the tool compares domain ontology between two git revisions, showing added, removed, or changed concepts. This is a specific verb and resource, and distinguishes from sibling tools like list_concepts or concept_map.
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 states it is useful for understanding vocabulary evolution and PR review, providing clear usage context. It does not mention when not to use or alternative tools, but the context is strong enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_conceptA
Semantic concept lookup — returns all variants (including abbreviations like trf for transform), related concepts, naming conventions, function signatures, and file locations in one call. Richer than grep: querying 'transform' also finds 'trf', 'spatial_transform', 'apply_transform', and related concepts like 'displacement'. Use when asked 'what is X', 'what does X mean', or 'where is X used'.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | The concept term to look up (e.g. 'transform') | |
| max_related | No | Max related concepts to return (default: 10) | |
| max_occurrences | No | Max occurrence locations to return (default: 5) | |
| max_variants | No | Max variant identifiers to return (default: 20) | |
| max_signatures | No | Max function signatures to return (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While no annotations are provided, the description discloses that the tool returns multiple types of information in one call and gives a detailed example of query expansion. It does not explicitly state read-only or side-effect-free, but the name and context imply a query operation. Lacks some nuance like whether results are cached or ordered, but sufficient for most use cases.
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 plus a usage tip, all front-loaded with the core purpose. No filler, 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?
Given the tool has 5 optional parameters and no output schema, the description covers the return types (variants, related concepts, etc.) reasonably well. It differentiates from grep but not from sibling tools like concept_map or locate_concept, which may overlap. Still, it's sufficiently complete for a query 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%, so the schema already documents all parameters. The description adds no additional parameter-level meaning beyond the schema, e.g., no format constraints or examples. 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 does a 'semantic concept lookup' returning variants, related concepts, naming conventions, function signatures, and file locations. It distinguishes from grep with a concrete example (querying 'transform' finds 'trf', etc.), making the purpose specific and actionable.
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?
Explicitly says when to use: 'when asked what is X, what does X mean, or where is X used'. Also contrasts with grep as an alternative, providing clear usage context without needing negative examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_nameA
Generate project-consistent identifier names from a natural language description. Uses the project's actual conventions (prefixes like nb_, patterns like is_/has_, conversion patterns like x_to_y) to suggest names that fit the existing codebase style. Use when naming new functions, variables, or parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Natural language description (e.g. 'count of features') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes that it uses project conventions and suggests names fitting existing style. No annotations provided, so description carries full burden; it adequately conveys the tool's behavior without contradictions, but could mention that it does not modify anything.
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 succinct sentences that are front-loaded with the core 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?
For a single-parameter tool with no output schema, the description is mostly complete. It could clarify the return format (e.g., list of suggested names), but the essential purpose and usage are clear.
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 a description for the 'description' parameter. The tool's description adds an example ('count of features'), enhancing understanding beyond the schema 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?
Clearly states it generates identifier names from natural language using project conventions, with specific examples of patterns. Distinguishes from siblings (e.g., check_naming) by focusing on generation rather than validation.
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?
Explicitly specifies 'Use when naming new functions, variables, or parameters.' Provides clear context for when to use, though does not mention when not to use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trace_conceptA
Trace how a domain concept flows through the codebase via function call chains — shows which functions produce the concept, which consume it, and the call path between them including bridge functions on the path. Returns an ordered call chain with file locations and producer/ consumer roles. Use when asked 'how does concept X propagate', 'what calls what for X', or 'trace X through the code'.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | The concept to trace (e.g. 'transform') | |
| max_depth | No | Maximum call chain depth (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description provides substantial behavioral detail: it returns an ordered call chain with file locations and producer/consumer roles, and includes bridge functions on the path. It does not mention side effects or safety, but the read-only nature is implied. The description goes a long way in disclosing behavior beyond the basic 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 only three sentences, each serving a clear purpose: first sentence states the main purpose and what it shows, second describes the return value, third provides example queries. No wasted words, front-loaded with the core 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 tool has no output schema, the description adequately explains the return value (ordered call chain with locations and roles). It covers the key inputs (concept, depth) and what they affect. The description is complete enough for an agent to understand what the tool does and what it returns, even in the context of 18 sibling tools.
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; the schema itself describes 'concept' as 'The concept to trace (e.g. "transform")' and 'max_depth' as 'Maximum call chain depth (default: 5)'. The description does not add significant meaning beyond what the schema provides, only mentioning 'maximum call chain depth' implicitly. Thus, it meets the baseline but does not exceed it.
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: to trace how a domain concept flows through code via function call chains. It specifies what it shows (producers, consumers, call paths, file locations, roles) and uses specific verb phrases like 'trace', 'shows', 'returns'. The name 'trace_concept' is accurately described, distinguishing it from siblings like 'trace_type' or 'type_flows'.
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 states when to use the tool: when asked about concept propagation, 'what calls what for X', or 'trace X through the code'. It implies exclusion of other sibling tools (e.g., trace_type for types) but does not explicitly mention when not to use it. Overall, clear context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trace_typeA
Find all data-flow edges involving a specific type. Shows which functions pass and receive this type through call edges. Use when asked 'where does Tensor flow', 'how is type X passed around', or 'which functions use type X'.
| Name | Required | Description | Default |
|---|---|---|---|
| type_name | Yes | The type to trace (e.g. 'Tensor', 'np.ndarray') |
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 tool outputs edges and functions passing/receiving the type, but lacks details on potential constraints (e.g., only call edges) or side effects. 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?
The description is extremely concise: two sentences that front-load the purpose and immediately provide usage examples. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is complete. It explains what the tool does, how to use it with examples, and the kind of output (edges, functions). No gaps 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?
Schema coverage is 100% for the single parameter. The description adds context by explaining how the type_name parameter is used to find edges, going beyond the schema's description. The baseline is 3 but the additional explanation justifies a 4.
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 all data-flow edges involving a specific type and shows which functions pass/receive it. It provides concrete example queries ('where does Tensor flow') that distinguish it from sibling tools like trace_concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage scenarios with example queries, telling the agent when to use this tool. However, it does not mention when not to use it or provide alternatives, missing some guidance for exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
type_flowsA
Trace how types flow through the codebase along call edges. Shows which types dominate the data pipeline and how they propagate between functions. Returns all typed data-flow edges, dominant types ranked by frequency, and counts of typed vs untyped call edges.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool returns three types of data: edges, dominant types, and counts. This gives insight into the tool's behavior without stating side effects, but is sufficient for a read-only 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?
Three sentences, each adding distinct information. Front-loaded with the main action. No redundancy or 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?
No output schema exists, so description must explain return values. It covers edges, dominant types, and counts, but lacks detail on format or structure. Acceptable for a zero-parameter 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?
Input schema has zero parameters, so description cannot add param info. Baseline 4 applies. The description adds value by explaining output, which is relevant when no params are expected.
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 specifies a clear verb ('trace') and resource ('types flowing through codebase along call edges'). It distinguishes from siblings like 'trace_type' by focusing on global dominance analysis rather than tracing a single type's path.
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., trace_type for specific type tracing). The description only states what it does, not context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vocabulary_healthA
Measure the vocabulary health of this codebase — returns convention coverage (how many identifiers follow conventions), consistency ratio (how uniformly concepts are spelled), and cluster cohesion (how well semantic clusters hold together). Use when asked about code quality, naming consistency, or vocabulary health. Returns an overall score plus top inconsistencies and uncovered identifiers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 discloses that the tool returns an overall score plus top inconsistencies and uncovered identifiers. It does not mention side effects (likely none). Could benefit from stating that it is a read-only 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?
Three sentences, each adding value: purpose, usage guidance, and output description. 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?
Despite having no output schema, the description clearly explains the return value (overall score plus top inconsistencies and uncovered identifiers). This is sufficient for an agent to understand the tool's output.
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 no parameters, so schema description coverage is effectively 100%. The description adds value by explaining the metrics returned, which compensates for the lack of parameter documentation.
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 measures vocabulary health with three specific metrics (convention coverage, consistency ratio, cluster cohesion). It uses a specific verb+resource and distinguishes from sibling tools like check_naming and suggest_name.
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 usage context: 'Use when asked about code quality, naming consistency, or vocabulary health.' No exclusions or alternatives are mentioned, but given the tool's specificity, it is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.2.8- Added
query_concept
1 tool update
v0.2.5- Removed
query_concept
TDQS
Scored across 19 tools
The tools are mostly distinct in intent, but several clusters are easy to confuse: describe_file vs describe_symbol vs describe_logic, query_concept vs locate_concept vs list_concepts vs concept_map, and type_flows vs trace_type. An agent would need to read descriptions carefully to pick the right one.
Most tools follow a verb_noun pattern (query_concept, describe_file, trace_concept), but several use noun-ish names like type_flows, ontology_diff, concept_map, and vocabulary_health. The naming is descriptive and snake_case throughout, but the verb placement is inconsistent.
19 tools is on the heavy side and there is functional overlap in the concept/type/naming clusters. However, the domain is broad enough that most tools have a distinct purpose, so the count is defensible but borderline.
The toolset covers file/symbol/logic description, concept queries, type flow tracing, naming-convention analysis, ontology diffing, and context generation. It's read-only and lacks direct code editing or ontology update tools, but for analysis-oriented ontology tasks it is quite complete.
Maintenance
Related MCP Connectors
Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents.
- WauldoOAuthcom.wauldo
Stateless agentic tools over MCP: concept extraction, long-context, knowledge graph, planning.
- WitWikiOAuthapp.witwiki
A shared team wiki your coding agents read and write — across every repo and every MCP client.
Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.
Related MCP Servers
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server that helps large language models index, search, and analyze code repositories with minimal setup141,272 PyPI1,002MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first code indexer that provides deep code understanding for Claude and other LLMs with symbol/text search across 48+ languages, semantic search capabilities, and real-time index updates through the Model Context Protocol.58MIT
- AlicenseAqualityAmaintenanceA local-first codebase intelligence tool that enables AI assistants to research codebases using semantic search, multi-hop relationship discovery, and structural parsing. It allows users to extract architectural patterns and institutional knowledge across 30+ programming languages through an MCP-compatible interface.21,022 PyPI1,447MIT
- AlicenseNot gradedqualityDmaintenancePersistent codebase knowledge layer for AI agents. Pre-digests codebases into structured knowledge (symbols, dependency graphs, co-change patterns, architectural decisions) and serves via MCP. 28 languages, 14 tools, ~85% token reduction.11 npm8MIT