codelattice
Allows connecting to a local Ollama instance to run model explanations for the workbench, keeping project evidence on the local machine.
CodeLattice
面向开发者与 AI 编程助手的本地代码图谱引擎。
理解项目结构,追踪调用与依赖,评估改动影响,让每一步代码审查都有可追溯的依据。
快速开始 · 接入 AI 助手 · 可视化工作台 · 支持语言 · 文档 · English
CodeLattice 用 Rust 编写,通过静态分析将代码库整理成可查询的工程图谱。它适合接手陌生项目、维护大型遗留代码、规划重构和做提交前审查,既可以通过 CLI 独立使用,也可以通过 MCP 为 AI 助手提供结构化上下文。
当前版本:v0.17.0-beta.2 · 外部 Beta。 各语言与入口的成熟度不同;桌面 Workbench 为 P0 开发构建。版本详情见 发行说明,实际下载以 GitCode Releases 的附件为准。
能帮你做什么
场景 | 你可以问的问题 | CodeLattice 提供的依据 |
接手项目 | “入口在哪里?哪些模块相互依赖?” | 项目与包结构、符号位置、调用链、工作区关系 |
修改前评估 | “改这个函数,哪些调用方可能受影响?” | 上下游关系、影响范围、风险理由与置信度 |
提交前审查 | “这次改动是否遗漏了 API、文档或测试的同步?” | 变更符号、兼容风险候选、相关文件与验证建议 |
flowchart LR
A[本地代码库] --> B[静态分析]
B --> C[符号、调用与依赖图谱]
C --> D[CLI 查询与变更审查]
C --> E[MCP:AI 助手上下文]
C --> F[工作台:图谱与证据导航]关系结果保留源码位置、置信度与解析理由;图谱质量检查覆盖悬空边、重复节点等问题。你可以沿着证据回到源码复核,而不是只得到一段无法追溯的结论。静态图谱不等同于运行时证明,清理候选也不能直接作为删代码的依据。
Related MCP server: Gortex
快速开始
从源码体验一次分析
需要 Git、Rust/Cargo、Bash;自检脚本还需要 Python 3。macOS / Linux 的环境准备见 入门指南 和 Linux / openEuler 构建指南。
git clone https://gitcode.com/aiulms/codelattice.git
cd codelattice
bash scripts/install-mcp.sh --build
target/release/codelattice analyze \
--root fixtures/rust/portable-smoke \
--language rust \
--format json默认构建启用当前全部语言适配器。成功后会输出项目摘要、图谱、诊断和质量检查结果。把 --root 换成你的项目目录即可继续;不确定语言时可用 --language auto,多项目根目录会返回工作区入口信息。
使用已发布的二进制
macOS Apple Silicon 用户可在 Releases 选择带 darwin-arm64 附件的版本。克隆仓库后,在仓库根目录运行:
export CODELATTICE_TOOL_DIR="$HOME/.local/share/codelattice-tool"
bash scripts/install-release.sh \
--version v0.17.0-beta.2 \
--install-dir "$CODELATTICE_TOOL_DIR"
"$CODELATTICE_TOOL_DIR/codelattice-mcp.sh" --self-test安装器校验下载文件的 SHA-256,并安装稳定的 MCP 启动脚本。其他平台优先使用源码构建;完整安装、升级与回滚方法见 安装指南 和 升级指南。
接入 AI 助手
通过 MCP 为 Codex、Claude Desktop、OpenCode 等客户端提供项目理解与变更审查上下文。
如果使用上面的源码构建路径,先将工具复制到稳定目录:
export CODELATTICE_TOOL_DIR="$HOME/.local/share/codelattice-tool"
bash scripts/promote-to-local-tool.sh --install-dir "$CODELATTICE_TOOL_DIR"
"$CODELATTICE_TOOL_DIR/codelattice-mcp.sh" --self-test如果已用 release 安装器安装,可跳过这一步。随后打印客户端配置片段:
bash scripts/install-mcp.sh --print-config --install-dir "$CODELATTICE_TOOL_DIR"脚本只打印配置,不自动修改客户端设置。按对应客户端格式填入稳定目录中的 codelattice-mcp.sh 绝对路径。
默认 MCP 模式提供 6 个按任务组织的入口:工作流、项目、符号、变更审查、工作区和缓存。接入后可以尝试:
“用 CodeLattice 概览这个项目,列出入口、核心模块和分析限制。”
“修改这个函数之前,检查它的调用方和潜在影响。”
“审查当前改动,列出需要同步检查的文档、测试和公开 API。”
配置示例、工具选择和大项目异步查询见 MCP 使用指南;更多提问方式见 提示词示例。
可视化工作台
入口 | 适合的用法 | 当前范围 |
WebUI / Snapshot Viewer | 在浏览器中查看快照、搜索符号、浏览图谱与审查摘要 | 本地 Web 入口,支持 Runner 分析与工作区选择 |
Desktop Workbench | 联动结构树、图谱、上下游证据和项目对话 | Tauri 桌面 P0 开发构建;签名安装器与自动更新需独立发布验证 |
在仓库根目录启动 WebUI:
bash scripts/webui-runner.sh --open桌面工作台将静态分析结果与模型解释分开展示:选择节点或关系可以查看证据,模型解释需要显式触发,模型输出不会写回事实图谱。
WebUI 使用指南 · 桌面 Workbench 使用指南 · 桌面构建说明
支持语言
以下状态是各语言分析路径的成熟度,不代表整个产品已达到 GA。Fixture smoke 是静态契约验证,不代表完整语言语义或目标项目运行验证。
语言 | Beta 状态 | Fixture smoke | 主要支持 | 已知限制 |
Rust | Stable | ✅ | Cargo 项目模型、符号、imports、CALLS、quality gates | 不做完整类型推断 / trait solving / macro expansion |
Cangjie / 仓颉 | Stable | ✅ | cjpm 项目模型、符号、跨文件引用、调用、diagnostics | 不替代 cjc / cjlint |
ArkTS / HarmonyOS | Production Trial | ✅ | HarmonyOS 项目识别、component/buildMethod、UI call extraction | 不完整解析 ArkUI DSL,不支持所有装饰器语义 |
TypeScript | Beta hardened | ✅ | 符号、imports、calls、tsconfig paths、workspace package import | 不等同 tsc,不做类型系统求值 |
C | Phase A hardened | ✅ | 符号、includes、compile_commands include path、qualityMetrics | 不做完整预处理器、宏展开或函数指针解析 |
C++ | Phase A hardened | ✅ | 符号、includes、calls、compile_commands include path | 不做模板实例化、重载解析、虚调用解析 |
Python | Phase A hardened | ✅ | 符号、calls、package import、relative import、re-export | 不执行代码,不解析动态 import / monkey patch |
JavaScript | Phase A hardened | ✅ | JS/JSX/MJS/CJS 符号、ESM import/export、CommonJS require/module.exports、package.json 入口 | 静态分析,不执行代码;dynamic import/require 为 diagnostic;不索引 node_modules |
Shell | Phase A hardened | ✅ | 脚本文件、函数、source 关系、命令调用、环境变量、风险诊断 | 不执行脚本,不替代 shellcheck,不展开复杂参数/条件 |
更细的语言策略和示例见 CLI 与工程参考。
本地运行与能力边界
分析引擎在本地运行:不依赖云端索引,不上传源码,不执行目标项目代码、构建脚本或测试脚本。
模型解释是独立可选能力:工作台连接远程模型时会发送结构化图证据;默认不发送源码正文。使用本地 Ollama 可让项目证据留在本机。通过外部 MCP 客户端使用时,数据处理还取决于该客户端和模型配置,详见 工作台隐私边界。
结果有明确限制:不做完整类型推断、Rust trait solving、宏展开或完整 C/C++ 预处理;动态行为可能无法解析,关系结果需结合置信度与诊断复核。
审查辅助不能替代验证:影响范围、死代码候选和根因假设都需要结合源码、编译、测试与运行证据判断。
文档
想了解什么 | 入口 |
安装、首次分析与平台准备 | 入门 · 安装 · Linux / openEuler |
仓颉项目使用 | |
AI 工具接入与场景示例 | |
完整命令、语言细节和开发验证 | |
图谱与接口契约 | |
版本变化与验证范围 | |
构建发行包与贡献代码 | |
使用问题与改进建议 |
中文 README 为维护基准,英文说明 为参考入口。历史 Cargo package / 兼容二进制名 gitnexus-rust-core-cli 仅用于迁移,外部命令推荐使用 codelattice。
License
Available Tools
6 toolscodelattice_cacheA
Cache management (optional performance layer, NOT availability gate): status, clear, explain, prewarm. Disabled persistent cache does NOT prevent fresh static analysis — CodeLattice works fine without it. Use mode=status to check memory and persistent cache state.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Cache operation | status |
| compact | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful context beyond the annotations: it discloses that the cache is optional and that its absence does not affect correctness. However, it does not explain side effects or consequences of the clear or prewarm operations. The annotations already signal this is not a read-only tool, and the description does not directly contradict them.
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 filler. It front-loads the critical caveat ('optional performance layer, NOT availability gate') and then gives a concrete usage directive. Every clause 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?
There is no output schema, so the description should clarify what each mode returns or changes, but it only explains the status mode. The behavior of clear, explain, and prewarm is left to inference, and the compact parameter is entirely unexplained. For a tool with four modes and no output schema, this is not complete enough.
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 documents mode with an enum and the minimal phrase 'Cache operation', while compact has no schema description at all. The description adds semantic value for mode=status but says nothing about the compact parameter or the meaning of clear/explain/prewarm. With schema coverage at 50%, this is only a partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as cache management and enumerates the exact operations (status, clear, explain, prewarm). The phrase 'optional performance layer, NOT availability gate' sharply distinguishes it from the analysis-oriented sibling tools. An agent can immediately understand the resource and scope.
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 frames the cache as optional and explains that a disabled persistent cache does not block fresh static analysis, so an agent knows not to treat it as an availability dependency. It also gives a concrete directive: use mode=status to check memory and persistent cache state. It does not detail when to use clear/explain/prewarm, but the main context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codelattice_change_reviewARead-onlyIdempotent
Concrete pre/post edit review for a SINGLE project root when the target is known. Use impact before editing a symbol/path, native_review after local diffs, breaking_change for public API concerns, and job modes for large repos. If the target is unclear, use codelattice_workflow first.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Review mode. job_status/job_detail use jobId and do not need root. | impact |
| page | No | job_detail page index | |
| root | No | Absolute path to project root — must be a single project directory, not a workspace root. Required except for job_status/job_detail. | |
| jobId | No | Required for job_status and job_detail; root is not required for these modes | |
| symbol | No | Target symbol (for impact mode) | |
| compact | No | ||
| language | No | auto | |
| pageSize | No | job_detail page size | |
| direction | No | both | |
| changedSymbols | No | Changed symbol names |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only, idempotent, non-destructive, and not open-world. The description adds useful scoping context ('pre/post edit review', 'single project root') but does not disclose behavior such as job lifecycle, pagination/output format, or what happens with mode-specific edge cases. This is adequate given the annotations, 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 two tight sentences with no filler. The front-loaded first sentence establishes core purpose and scope, and the second sentence delivers actionable routing guidance. Every clause 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 is complex: 10 parameters, 20 modes, and no output schema. The description covers workflow and mode selection well, but it does not explain return values or the behavior of job modes, leaving the agent to rely on schema descriptions alone. For a tool this flexible, a bit more guidance on outputs and job-mode expectations would be needed for full 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 70%, and the description meaningfully enriches several parameters: it explains which mode to prefer for different scenarios and reinforces that the tool operates on a single root, not a workspace. It does not add detail for compact, direction, or language, but those are either defaulted or enum-covered, so the added guidance is net-positive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb and resource: 'Concrete pre/post edit review for a SINGLE project root when the target is known.' It also distinguishes itself from a sibling by stating that if the target is unclear, codelattice_workflow should be used first, so the agent understands this tool's niche without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit mode-selection guidance: use impact before editing, native_review after local diffs, breaking_change for public API concerns, and job modes for large repos. It also names the alternative tool and the condition that triggers it, making when-to-use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codelattice_projectARead-onlyIdempotent
Project-level analysis for a SINGLE project root. Use this for structure, entry points, components, and static risk orientation after root selection. Prefer quick first, standard for module/risk review, deep for detailed static evidence, diagnose for issue localization, and job modes for large repos. For monorepo/workspace roots, use codelattice_workspace or workflow explore first, then switch to a manifest-backed sub-project root.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Analysis mode. quick = orientation/read-first/top risks; standard = component and review-first map; deep = full static detail; diagnose = issue localization from symptom/error/query; job = non-blocking large project analysis. | overview |
| page | No | job_detail page index | |
| root | No | Absolute path to project root. Required for overview/quick/standard/deep/quality/insights/diagnose/ai_context/full/job; not needed for job_status/job_detail. | |
| jobId | No | Required for job_status and job_detail; root is not required for these modes | |
| query | No | Keyword query for diagnose mode | |
| detail | No | Output detail tier for compact project responses. medium adds bounded dependency/framework digest and top navigation hints without returning the full graph. | compact |
| compact | No | ||
| symptom | No | Bug symptom or user report for diagnose mode | |
| language | No | auto | |
| pageSize | No | job_detail page size | |
| parallel | No | Use parallel engine execution for job mode when available | |
| errorText | No | Observed error text/log excerpt for diagnose mode | |
| changedPath | No | Known changed or suspicious file path for diagnose mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose read-only and idempotent behavior, so the description need not repeat that. It adds mode-specific behavioral context — e.g., 'job modes for large repos' implies non-blocking behavior, and 'static risk orientation' clarifies the tool does not execute code. Minor gap: no mention of output shape or pagination, but that is partially covered by the detail parameter in 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?
Four sentences that front-load the core purpose and scope, then pack mode selection and sibling routing into two short follow-ups. No filler or repetition of schema contents. 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 13-parameter tool with no output schema, the description provides essential orientation: it explains the central mode parameter, gives a decision tree for repo types, and points to sibling tools for the wrong context. Parameter-specific details (page, jobId, symptom, errorText) are left to the schema, which covers them adequately. It's complete enough for an agent to pick the right mode and root, though it doesn't describe response formats.
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 (85%), so the baseline is 3. The description adds real meaning to the mode parameter by mapping each enum value to its intended use ('quick first, standard for module/risk review, deep for detailed static evidence, diagnose for issue localization, job modes for large repos'). This goes beyond the schema's terse enum names and compensates for the few uncovered 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?
Opening phrase 'Project-level analysis for a SINGLE project root' immediately names the resource and scope. It lists concrete outputs (structure, entry points, components, static risk orientation) and explicitly differentiates from codelattice_workspace for monorepo roots. This lets an agent distinguish it from siblings without opening schemas.
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 mode-to-use-case mapping: quick first, standard for module/risk review, deep for static evidence, diagnose for issue localization, job for large repos. It also states when NOT to use this tool ('For monorepo/workspace roots, use codelattice_workspace or workflow explore first') and how to proceed after. This is exactly the when/when-not guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codelattice_symbolARead-onlyIdempotent
Symbol-level queries for a SINGLE project root after root selection. Use search/context when you know a symbol or name; use callers/callees/call_chains for relationships and flow. For large projects, use mode=job to submit an engine-backed analysis job with progress tracking, then mode=job_status and mode=job_detail.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by symbol kind | |
| mode | No | Query mode. call_chains returns readable static paths; job_status/job_detail use jobId only after a job response. | search |
| name | No | Symbol name (required for context, callers, callees modes) | |
| page | No | job_detail page index | |
| root | No | Absolute path to project root. Required for search/context/callers/callees/graph/job; not needed for job_status/job_detail. | |
| depth | No | Call depth for callers/callees | |
| jobId | No | Required for job_status and job_detail; root is not required for these modes | |
| limit | No | Max results | |
| query | No | Search query (for search mode) | |
| compact | No | ||
| language | No | auto | |
| pageSize | No | job_detail page size | |
| includeSnippet | No | For context/call modes: include source snippets. Defaults to false in compact mode and true in full mode. | |
| snippetContext | No | Lines of context around source snippets; compact mode caps this to 3. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by stating the single-project-root prerequisite and describing the job lifecycle with progress tracking. It does not go into deeper edge cases, but the annotation coverage lowers 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 two focused, front-loaded sentences. The first sentence states the scope and resource, and the second gives actionable mode-selection guidance with no filler or repetition of schema details.
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 complex 14-parameter, multi-mode tool, the description covers the main decision paths and the job workflow while the schema covers the remaining parameter details. It does not explicitly mention graph mode or output shape, but the annotated read-only safety profile and rich schema make the definition 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 description coverage is 86%, so the individual parameter descriptions already carry most of the meaning. The tool description adds only modest value by clarifying the root scoping and the job-mode sequencing, so the 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 identifies the tool as performing 'symbol-level queries' scoped to 'a SINGLE project root,' and it differentiates internal query modes (search/context vs. callers/callees/call_chains). This distinguishes it from siblings like codelattice_workflow or codelattice_cache, which are not symbol-query 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 gives explicit mode-selection guidance: use search/context when a symbol or name is known, use callers/callees/call_chains for relationships and flow, and use mode=job followed by job_status/job_detail for large projects. This directly tells an agent when to choose which behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codelattice_workflowARead-onlyIdempotent
AI intent router and orchestration layer. Use this FIRST when unsure which CodeLattice tool or root to call. Use ask for natural-language routing, explore for progressive project/workspace orientation, diagnose_issue for symptoms, and before_edit only once you have a concrete target.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Workflow scenario / intent. ask routes a natural-language question; explore classifies root and recommends depth; before_edit routes to concrete review guidance. | onboarding |
| name | No | Alias for symbol in explain_symbol flows | |
| root | No | Project or workspace root when a next action needs analysis | |
| depth | No | Progressive exploration depth for explore mode | |
| focus | No | Optional component/file/symbol focus for explore mode | |
| query | No | Keyword query for diagnose_issue | |
| intent | No | Optional natural intent alias; when present it is treated like mode | |
| symbol | No | Target symbol for before_edit, delete_code, explain_symbol, or impact flows | |
| target | No | Workspace impact target for cross_project_impact | |
| compact | No | ||
| execute | No | When true, execute non-recursive nextActions and return completedActions, failedActions, evidence, and answerSummary | |
| symptom | No | Bug symptom or user report for diagnose_issue | |
| language | No | auto | |
| question | No | Natural-language question for ask mode | |
| errorText | No | Observed error text/log excerpt for diagnose_issue | |
| changedPath | No | Known changed or suspicious file path for diagnose_issue | |
| changedSymbols | No | Changed symbol names for after_edit flows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety burden is low. The description adds the routing/orchestration role and first-use behavior beyond the annotations, but it does not disclose what the tool returns, how execution via the execute parameter behaves, or how modes resolve. There is no contradiction with 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?
The description is three short sentences with no filler. It front-loads the tool's identity and purpose, then gives actionable routing guidance. 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 17-mode router with no output schema, the description covers only a subset of modes and says nothing about execution behavior or response shape. The rich schema and annotations compensate significantly, so it is not inadequate, but there are clear gaps for the remaining workflow modes.
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 about 88%, and the mode parameter already explains several workflow scenarios. The description itself adds no parameter-level detail, so it earns the baseline 3 for relying on a well-covered schema rather than compensating with additional semantics.
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 identifies a specific role and resource: 'AI intent router and orchestration layer.' It also distinguishes itself from other CodeLattice tools by positioning itself as the first-stop entry point when the agent is unsure which tool to call, so there is no ambiguity about what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage context: 'Use this FIRST when unsure which CodeLattice tool or root to call' and routes specific intents to ask, explore, diagnose_issue, and before_edit. It even gives a when-not condition for before_edit, though it does not name sibling tools as explicit alternatives or cover all 17 modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codelattice_workspaceARead-onlyIdempotent
Workspace/monorepo analysis for project boundaries, dependency graph, cross-project impact, overview, or engine-backed job mode. Use this on workspace roots; use codelattice_project only after selecting a manifest-backed project root.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Analysis mode. inspect = workspace inventory (codelattice.workspaceInspection.v1, same envelope as CLI inspect, milliseconds). Use job for large workspaces, then job_status/job_detail with jobId. | graph |
| page | No | job_detail page index | |
| root | No | Absolute path to workspace root. Required except for job_status/job_detail. | |
| jobId | No | Required for job_status and job_detail; root is not required for these modes | |
| target | No | Target for impact mode | |
| compact | No | ||
| maxDepth | No | ||
| pageSize | No | job_detail page size | |
| direction | No | both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only the notion of engine-backed job mode and does not disclose behavior such as job lifecycle, response shape, or how modes like job_cancel relate to the read-only annotation.
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 the tool's purpose and followed by the single most important usage caveat. No filler or repetition of schema details.
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 plus schema cover the main modes, but there is no output schema and no explanation of what the 'full' mode returns or how target/impact mode works. For a 9-parameter multi-mode tool, the description is useful 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 67% and the description adds high-level mode guidance, but it does not explain parameters like root, target, compact, maxDepth, or direction beyond what the schema already says. It is adequate but does not compensate for the remaining undocumented 33% of 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 identifies a specific resource (workspace/monorepo roots) and a concrete task (analysis for boundaries, dependency graph, cross-project impact, overview, or engine-backed job mode). It distinguishes itself from codelattice_project by instructing to use that tool only after selecting a manifest-backed project root.
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?
'Use this on workspace roots; use codelattice_project only after selecting a manifest-backed project root' is an explicit routing rule with a condition and an alternative. It also signals large-workspace handling through the engine-backed job mode.
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.
6 tool updates
- First observed
codelattice_cache - First observed
codelattice_change_review - First observed
codelattice_project - First observed
codelattice_symbol - First observed
codelattice_workflow - First observed
codelattice_workspace
This server cannot be deployed
TDQS
Scored across 6 tools
Each tool targets a distinct layer: workflow routing, project analysis, symbol-level queries, change review, workspace analysis, and cache management. The boundaries are mostly clear from the descriptions, with only mild overlap between project/workspace/change-review for monorepo roots and some project-level diagnosis modes.
All tool names follow the consistent codelattice_ + domain noun snake_case pattern, and there are no mixed conventions or style breaks. The names are highly predictable across the set, making the tool surface easy to scan and predict.
Six tools is an appropriate size for this server; the surface is neither bloated nor too sparse. Each tool earns its place and internally organizes multiple modes, avoiding fragmentation into dozens of smaller endpoints, and each tool covers a meaningful domain.
The surface covers the main analysis workflow: orienting via workflow, analyzing projects, querying symbols, reviewing changes, handling workspaces, and cache management. Minor gaps exist around explicit cross-project free-text search or direct root enumeration outside the workflow router, but agents can still complete realistic workflows without dead ends.
Maintenance
Related MCP Connectors
AI-powered codebase analysis — call graphs, security, dead code, complexity. 150+ tools.
Codebase graphs, caller impact analysis, and recorded project context for AI coding agents.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA graph-powered code intelligence engine that indexes codebases into a structural knowledge graph to provide AI agents with deep context on function calls, types, and execution flows. It offers local, zero-dependency tools for hybrid search, impact analysis, and dead code detection across Python, JavaScript, and TypeScript projects.956 PyPI814MIT
- AlicenseNot gradedqualityAmaintenanceHigh-performance code graph and code intelligence engine. Index code base into knowledge graph, supports 257 languages and native multi repositories environment1,762Apache 2.0
- AlicenseNot gradedqualityCmaintenanceProvides a semantic understanding of your codebase by parsing with tree-sitter and building a graph of symbols and dependencies. Enables AI assistants to navigate code, analyze changes, and discover architecture using 18 tools with minimal context overhead.18 npm1MIT
- FlicenseAqualityAmaintenanceDeterministic code intelligence engine — indexes 27 languages into a queryable symbol graph for real-time blast-radius analysis, no embeddings or LLM calls.526-