Your codebase, held. GraphRAG-powered codebase intelligence for git repositories.
Hald demonstrates solid tool design with clear naming conventions (verb_noun pattern), comprehensive descriptions (avg 180+ chars), and explicit input schemas using Zod. All 12 tools are properly registered with descriptions and typed parameters. However, output schemas are not documented in the visible code, responses are formatted via separate formatters.ts but the LLM cannot see the structure. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present on hald_query but inconsistently applied across other tools. Error handling provides context ('The index may not exist yet. Run hald_index first') but is limited to hald_query. Session-based tools (hald_start_session, hald_get_chunk, hald_submit_extraction) introduce statefulness that complicates composition and retry semantics.
Abandon an extraction session without committing changes.
Complete an extraction session and commit all refined entities and relationships to the knowledge graph.
Find the top contributors for a module, file path, or area of the codebase. Returns people ranked by authorship weight × recency decay. Use when asked: 'who knows about X?', 'who should review changes to X?', 'who maintains X?'.
Identify knowledge silos: areas of the codebase with high bus factor (few experts, concentrated knowledge). Returns modules ranked by risk.
Retrieve the next chunk of commits/text units in an active extraction session for review and refinement.
Retrieve detailed information about a specific entity (module, decision, person, etc.) from the knowledge graph, including its description, type, related entities, and supporting evidence.
Output schemas not documented. Responses are formatted via formatters.ts but LLMs cannot see the structure of returned entities, relationships, or text units. This forces agents to parse unstructured text and risks hallucination.
Session-based tools (hald_start_session, hald_get_chunk, hald_submit_extraction, hald_finalize_session, hald_clear_session) introduce statefulness and session IDs. This violates the stateless request model of current MCP spec and complicates retry semantics, agents cannot safely retry if session state is lost.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) present only on hald_query. All other tools lack annotations, preventing clients from understanding safety properties and optimizing execution.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
Scan the repository's git history and build/update the knowledge graph. Extracts entities (modules, decisions, people), relationships, and communities. Requires an LLM API key (Anthropic, OpenAI, Google, or Zhipu).
Search the Hald knowledge graph to answer questions about the repository's history, architecture, team, and codebase. Returns entities, relationships, and evidence for you to synthesize. For specific lookups, prefer: hald_find_expert (who knows X?), hald_trace_decision (why/when was X decided?), hald_show_coupling (what co-changes with X?), hald_find_silos (bus factor risks). Use this tool for general, thematic, or cross-cutting questions.
Identify co-change patterns: which files/modules change together, and how often. Useful for understanding architectural coupling and planning refactors.
Start an interactive extraction session for refining and validating entities and relationships. Returns a session ID for use with hald_get_chunk, hald_submit_extraction, and hald_finalize_session.
Submit refined entities and relationships for the current chunk in an extraction session. The LLM validates and merges them into the knowledge graph.
Trace the history of a technical or architectural decision through the knowledge graph. Returns DECISION entities, the people who made them, related modules, and supporting commit evidence. Use when asked: 'why did we switch to X?', 'when was Y adopted?', 'what motivated the migration to Z?'. For general history questions, use hald_query instead.
Error handling is minimal. Only hald_query provides recovery guidance ('Run hald_index first'). Other tools lack actionable error messages, making it difficult for agents to self-correct or understand what went wrong.
Session tools lack clear composition guidance. hald_get_chunk returns 'next chunk' but the structure is not documented. hald_submit_extraction accepts 'entities' and 'relations' arrays but their schema is not visible in the tool definition.