AI-powered code intelligence with semantic search, knowledge graphs, and built-in MCP server. Transform your codebase into a queryable knowledge graph for AI assistants.
octocode presents 10 well-designed tools with clear, actionable descriptions and comprehensive input schemas. Most tools follow strong naming conventions (verb-first, specific actions) and include detailed parameter documentation. Output schemas are not explicitly documented in the provided source, which is a notable gap. Error handling guidance is present in descriptions but not formalized as structured error types. Tool composition is strong, tools chain well together (e.g., semantic_search feeds into structural_search, LSP tools complement AST-based tools). Security is well-handled for a code-intelligence server (read-only operations, no credential parameters). The main weaknesses are: (1) missing output schema documentation, (2) no tool annotations (readOnlyHint, destructiveHint, idempotentHint), and (3) generic or absent error recovery guidance in some descriptions.
Query code knowledge graph with operations for symbol/file lookup, node details, relationships, path finding, and graph statistics
Get code completion suggestions at position using LSP
Get all symbols (functions, classes, types) in a document using LSP
Find all references to symbol at position using LSP
Go to definition of symbol at position using LSP
Get hover information (type signature, documentation) for symbol at position using LSP
Search for symbols across entire workspace using LSP
Output schemas not documented for any tool. LLMs cannot reliably plan downstream calls or extract required fields (e.g., after semantic_search, what fields are returned? Do results include line numbers, file paths, confidence scores?). Documentation must specify return type, all fields, and their types.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All 10 tools are read-only operations, which should be explicitly marked with readOnlyHint=true to signal to agents that retries are always safe and ordering doesn't matter. This helps agents optimize planning.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 79 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 29 | 2024-11-05+ | v1 |
Semantic search across codebase with customizable detail levels, language filtering, and content type filtering
Search code by AST pattern, kind name, symbol definition, or symbol references with optional context lines
View function and class signatures for specified files or glob patterns
LSP tool descriptions are generic and lack discovery context. lsp_hover, lsp_goto_definition, lsp_completion, etc. do not explain WHEN to call them vs structural_search or semantic_search. Agents lack guidance on tool selection. Add: 'Use this when you need precise LSP-based type information / definition locations (requires LSP server running). For broader code search, use semantic_search or structural_search.'
graphrag operation parameter uses freeform enum but lacks clear documentation of operation semantics and expected node_id formats. Node ID format varies by operation ('path/to/file', 'path/to/file::symbol', 'path/to/file::Owner::method') but is only mentioned in the node_id parameter description, not the operation enum. This invites confusion about which operation requires which format.
structural_search parameter documentation is dense and may overwhelm LLMs. The pattern parameter example strings ('$X.unwrap()', 'if err != nil { $$$ }', 'function_item') are domain-specific and require the LLM to understand AST concepts. Consider splitting into a 'simple' mode (pattern: string) vs 'advanced' mode (all constraints), or provide clearer guidance on when each pattern style applies per language.
No error recovery guidance in descriptions. Descriptions state WHAT tools return but not what to do if a query fails, a file is not found, or the LSP server is unavailable. Add guidance like: 'If semantic_search returns no results, try broadening the query or using a lower threshold. If LSP tools fail, ensure an LSP server is running and the file is indexed.'