Code intelligence for AI assistants (MCP), CLI, and HTTP API - symbol navigation, impact analysis, architecture
CKB provides 6 tools with mixed quality. Strengths: all tools have descriptions (10-200 chars) and input schemas with parameter types. Weaknesses: parameter descriptions are sparse or missing context; no output schemas documented; error handling guidance absent; tool composition unclear (annotation tools lack URI format guidance). Naming is verb-first and clear (annotationSet, annotationGet, getStatus, doctor, getAffectedTests), but parameter names lack consistency (symbol_uri vs baseBranch). No evidence of pagination on list tools, no response field documentation. The getAffectedTests tool has a poorly specified 'depth' parameter (numeric but no range guidance). Overall, definitions meet minimum viability but fall short of production-grade LLM-friendliness.
Retrieve an annotation by symbol URI and key
List all annotations for a symbol
Set an annotation (key-value metadata) on a symbol
Run diagnostics on the CKB server and suggest fixes for any issues
Find tests affected by current code changes
Get the status of the CKB server, including health of backends, cache metrics, preset information, and actionable suggestions
No output schemas documented for any tool. LLMs cannot infer what fields to expect or plan downstream tool calls. getAffectedTests likely returns test names/IDs, but the response structure is unstated.
annotationList tool has no pagination parameters (limit, offset, cursor) and no statement about result limits. If symbols have many annotations, the tool could return thousands of items, bloating context.
Parameter descriptions are minimal or absent for critical inputs. Example: 'depth' in getAffectedTests is described only as 'Transitive dependency depth (defaults to 1)' with no range, minimum, or maximum. What if an LLM passes depth=1000?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
symbol_uri parameter across annotation tools lacks format guidance. Is it 'symbol://namespace/name'? A URI pattern or example would prevent LLM errors.
No error handling guidance. If annotationSet fails (e.g., symbol not found, invalid confidence score), the tool provides no recovery hint. LLMs cannot self-correct.
Mutually exclusive or conditional parameters not documented. getAffectedTests accepts both 'staged' and 'baseBranch', are they independent? If staged=true, is baseBranch ignored?
confidence parameter defaults to 80 without validation range stated. Can it be negative? Above 100? Unbounded numeric parameters invite LLM mistakes.