Code-graph tools over the Model Context Protocol: semantic and historical graph analysis for codebases
Glyphtrail MCP exposes 15 well-named, read-only code-graph tools with clear verb-noun naming (search, definition, callers, impact, etc.). All tools have descriptions (avg ~150 chars, within baseline 34 - 392). Input schemas are present and typed for all tools. However, parameter descriptions are sparse or missing for several tools (e.g., 'search' lacks description for 'limit'; 'impact' has 8 params but only 4 - 5 have substantive descriptions). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance or actionable error messages visible. Tool composition is strong (each does one thing; names are unambiguous), but lack of output documentation and incomplete parameter descriptions prevent a higher score.
Cross-boundary view of an endpoint: invoking clients, handler(s), schema op(s).
Symbols the named symbol calls.
Symbols that call the named symbol.
List client-side API call sites. With `unmatched: true`, list only the REST calls that link to no endpoint, with the reason (dynamic path, or no endpoint with that signature in scope) — each a candidate for a precise [[links]] endpoint hint.
Locate definition(s) matching a name.
List server-side API endpoints (routes) with their handlers.
Git history of a symbol: commits that touched its definition across all branches, each flagged `in_head` (already on the current branch) with the branches containing it — answers 'I fixed this, where did the fix go?' by surfacing commits parked on unmerged branches. With `prs: true`, off-HEAD commits are matched to an open PR via `gh`.
Output schemas not documented. LLMs cannot predict response structure, field names, or types. Agents cannot plan downstream tool calls or extract required data reliably.
Parameter descriptions incomplete or missing. 'search' lacks description for 'limit'; 'impact' has 8 parameters but only ~4 have substantive descriptions. LLMs cannot infer parameter meaning from names alone.
No error handling guidance visible. Tools return errors but do not tell LLMs what to do next (retry, ask user, or fail). No recovery paths or actionable error messages.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Blast radius of a change: seed from a symbol, a file, or a git change set, and report classified, confidence-aware impacted nodes (tests, API surface, cross-boundary consumers, internal). The summary carries a risk level (none/low/medium/high/critical).
List OTHER repositories in the global registry (on-disk health, groups, stable forge ids) for cross-repo work. You do NOT need this for the repo you are already in — target that directly by its path. The registry may be large, so narrow the result: `summary` for counts, `path_hint` for the repo(s) at a path, or `detail`/`limit`/filters — no shell required.
Direct graph neighbours of the named symbol, any direction.
Symbol outline of a file or directory: each definition (functions, types, etc.) with its signature, at adjustable detail. The compact 'shape of the code' for getting oriented before deeper queries.
Substring search over symbol names, qualified names, and doc comments. Case-insensitive by default.
Endpoint(s) serving a path (template- and value-aware).
Index statistics for the repository, plus a `freshness` field (fresh/stale/unknown) and `stale`/`stale_reason`: whether the index still reflects the working tree. If stale, call `analyze` before trusting query/impact results. `links` lists OTHER repos this one declares cross-repo links to (e.g. a vendored/submodule repo) — pass one as the `repo` argument to search it.
Client call sites that invoke an endpoint (cross-boundary INVOKES).
Pagination not visible for list-returning tools (search, endpoints, clients, list_repos). Large result sets risk context window exhaustion. No limit enforcement or next_cursor documented.
Tool composition: 'impact' is a complex multi-parameter tool (name, file, files, since, staged, diff, edges, depth, min_confidence, cross_boundary, downstream, group, deep). Consider splitting into simpler, single-purpose variants (impact_from_symbol, impact_from_file, impact_from_git_range) to reduce cognitive load on LLM planning.