Deterministic code-graph context engine for AI coding agents - PostgreSQL, Apache AGE and pgvector, over MCP and REST
BGTS Context Engine presents a well-structured code-graph retrieval toolkit with 10 tools covering search, symbol resolution, call graphs, and indexing. All tools have descriptions and documented input schemas with type information. However, parameter descriptions are sparse or missing for many parameters, and output schemas are not explicitly documented in the visible code. The tool names follow verb_noun convention effectively (get_*, resolve_*, find_*, search_*), but several parameters lack actionable descriptions that guide LLM usage. No error handling patterns or recovery guidance are visible. The server's narrow, purposeful tool set avoids redundancy (good composition), but lacks the human-friendliness patterns that production agents need (e.g., accepting names alongside IDs, natural language guidance in descriptions).
Impacted files, repos and symbols if the given target symbols change.
Find references (callsites) to a symbol_id, with file, line and provenance.
Callers/callees subgraph around a symbol_id.
Primary tool: assemble the code context for a task description, with anchors and a coverage/confidence report. Start here for any 'where do I change X' question.
Status and result of one indexing job by job_id.
Search indexed code by natural-language query, blending keyword, vector and structural signals. Use when you need candidate symbols rather than a full context package.
Queue a full index of a local repository. Returns a job immediately; poll it with get_index_job.
Parameter descriptions are minimal or absent. Many parameters (e.g., 'hops', 'direction', 'since_commit', 'to_commit', 'commit') have no descriptions in the schema, forcing LLMs to infer intent.
Output schemas are not documented in the visible tool definitions. LLMs cannot plan multi-step operations or extract follow-up data without knowing response structure.
No error handling or recovery guidance. Tools lack descriptions of failure modes (e.g., 'symbol not found', 'repo not indexed', 'invalid query').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Indexing jobs, newest first, optionally filtered by status or repository name.
Queue an incremental re-index of a local repository, covering only files changed since the last indexed commit (git diff). Returns a job.
Resolve a symbol name to its definition and symbol_id (input to the graph tools).
Ambiguous parameter names and missing constraints. 'limit' (in hybrid_search, list_index_jobs) and 'hops' (in get_call_graph) have no documented bounds (min/max).
No pagination guidance in list_index_jobs. Tool accepts 'limit' but no 'offset', 'page', or 'next_cursor'.
Parameter 'direction' in get_call_graph is documented as a string type but has no enum values or description of valid options (presumably 'in', 'out', 'both', or similar).
Destructive write operations (index_repo, reindex_repo) lack confirmation or dry-run pattern.
Tool descriptions use domain jargon ('anchors', 'symbol_id', 'blast radius', 'provenance') without explaining what they mean to a non-expert LLM.