XRefKit MCP provides 18 read-only tools with consistent naming (verb_noun pattern: get_, list_, search_, expand_, build_, rank_, check_). All tools have descriptions (avg ~120 chars, within 10-1024 range). However, input schemas are present but minimal: most parameters lack detailed type constraints, enums, or format specifications. Output schemas are not documented in the source. Error handling is present (startup/skill-selection gating via RuntimeError) but lacks recovery guidance. No tool annotations (readOnlyHint, etc.). Descriptions are functional but generic, they state WHAT without sufficient WHEN/WHY context for LLM selection. Parameter descriptions are sparse (e.g., 'XID identifier' without format/length guidance). No pagination documented despite list_* tools. Composition is sound (single responsibility per tool), but chaining IDs are not consistently returned.
Builds bounded knowledge context by searching and expanding related entries. Requires startup context to be loaded first.
Checks installed client tool versions against available versions. Requires Skill selection to unlock client tools distribution.
Expands full knowledge entry by XID including content. Requires startup context to be loaded first.
Retrieves all distributable client-side tool files as a bundle. Requires Skill selection to unlock client tools distribution.
Retrieves one distributable client-side tool file by path. Requires Skill selection to unlock client tools distribution.
Lists distributable client-side tool files. Requires Skill selection to unlock client tools distribution.
Input schemas lack type constraints and enums. Parameters like 'query' (search_knowledge_catalog) and 'purpose' (rank_skills_for_purpose) are free-form strings with no format, length, or pattern guidance. LLMs cannot validate inputs or self-correct.
Output schemas are not documented. Tool descriptions state what is returned (e.g., 'Returns summary of knowledge entry') but do not specify field names, types, or structure. LLMs cannot plan downstream calls or extract data reliably.
Pagination not documented for list_* tools. list_knowledge_catalog and list_skills accept 'limit' but no offset/cursor or total_count return. Large result sets risk context window exhaustion.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Retrieves a pip-installable client tool package. Requires Skill selection to unlock client tools distribution.
Retrieves any managed Markdown document by XID with optional version checking. Requires startup context to be loaded first.
Returns summary of knowledge entry by XID. Requires startup context to be loaded first.
Returns repository identity including fingerprint, algorithm, basis, scope, and cache namespace
Retrieves one Skill catalog entry with transferred content and required documents. Requires startup context and unlocks client tools distribution.
Returns required documents and tools for a Skill without full procedure body. Requires startup context and unlocks client tools distribution.
Returns startup context with load order, references, and startup contract pack. Marks session as startup-loaded and unlocks client tools distribution.
Lists knowledge catalog entries with optional limit
Lists Skill catalog entries with optional content inclusion. Metadata-only listing is ungated; full procedure bodies require startup context.
Lists read-only tool contracts available in the repository
Ranks Skill candidates for a given purpose with optional limit
Searches knowledge catalog by query string with optional limit
Error handling lacks recovery guidance. RuntimeError messages ('XREFKIT_STARTUP_REQUIRED', 'XREFKIT_SKILL_SELECTION_REQUIRED') are clear but do not suggest next steps. LLMs need actionable error responses.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 18 tools are read-only but this is not declared in schema. Clients cannot optimize caching or retry logic without explicit hints.