Native low-level code graph engine providing structural code analysis, symbol search, call graph traversal, impact analysis, and test discovery across multiple programming languages
Graphia demonstrates solid tool design with 12 well-named, action-oriented tools (all start with verbs: search_, get_, find_, analyze_). All tools have descriptions (avg ~100 chars, within baseline 34-392 range) and complete JSON Schema input definitions with typed parameters. However, output schemas are entirely undocumented, LLMs cannot predict response structure for planning. Parameter descriptions are present but terse (avg ~50 chars vs baseline 72). No error handling guidance visible in tool definitions. Missing tool annotations (readOnlyHint, destructiveHint). All tools are READ_ONLY by design, which is appropriate but should be formally declared.
Get a high-level structural overview of the repository (totals, entrypoints, cycles, hotspots, language distribution).
Slice and extract relevant source code context for a symbol or set of symbols within a configurable token budget.
Find the shortest structural dependency path between two symbols.
Explore a symbol with full neighborhood, impact, and test coverage in a single call.
Find all outbound function and method calls made by a symbol.
Find all inbound callers of a function or method.
Find all references to a symbol categorized by calls, types, and imports.
Output schemas completely undocumented. LLMs cannot predict response structure, field names, or types for any tool. This breaks downstream tool chaining and forces agents to guess at response format.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 12 tools are read-only, but this is not formally declared in the schema. Agents cannot distinguish safe-to-retry tools from potentially destructive ones.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Discover tests covering a symbol or file using deterministic heuristic mapping.
Get detailed definition, source location, container, and relationships of a symbol.
Analyze change surface and blast radius when modifying a symbol.
Get the structural neighborhood around a symbol (container, children, callers, callees, imports, implementations, tests).
Search symbols across the code graph using structural scoring and filters.
Parameter descriptions are terse (avg ~50 chars vs baseline 72). E.g., 'Symbol name to analyze impact for' lacks context on what 'impact' means (callers? transitive dependencies?). Descriptions should explain WHAT, WHEN, and WHY.
No error handling guidance in tool definitions. If a symbol is not found, or a query times out, LLMs have no recovery path. Error responses should guide next steps (e.g., 'Try search_symbol() first').
graphia_architecture has empty input schema (no properties). This is valid but underdocumented, LLMs may not realize it takes no parameters. Add a note: 'This tool requires no parameters.'