Knowledge-as-Code MCP server for Pyrite knowledge bases. Provides three-tier access (read, write, admin) to knowledge bases with full-text search, semantic search, entry management, and administrative capabilities.
Pyrite MCP Server provides 5 well-structured read-only tools with comprehensive input schemas and detailed descriptions. All tools have proper JSON Schema definitions with typed parameters and non-empty descriptions. The kb_search tool is exceptionally detailed with extensive filtering options and explicit contract documentation. However, there are gaps in error handling guidance, no tool annotations (readOnlyHint), and output schemas are not explicitly documented. The server follows good naming conventions (verb_noun pattern) and parameter design, but lacks recovery guidance for failure cases. Schema quality is high (all parameters typed), descriptions are thorough and LLM-optimized (ranging 100-1500+ chars, exceeding typical 200-char guideline but detailed and structured), and composition is clean with single responsibilities per tool.
Get all entries that link TO a given entry (reverse link lookup).
Get a specific entry by its ID. Returns full content including body, metadata, sources, and links. Bodies over {body_chunk_default} chars are auto-truncated; use body_offset/body_limit to paginate, or kb_read_body for continuation. A truncated body always carries body_truncated, body_length, body_offset and body_chunk_size.
List all mounted knowledge bases with their types and entry counts
Full-text search across knowledge bases. Supports FTS5 query syntax (AND, OR, NOT, phrases in quotes). Returns entries with snippets ranked by relevance. Filters (entry_type, tags, date_from/date_to, fips, state, status) apply in every mode, on every search leg -- keyword, semantic and hybrid alike -- so a filtered result never contains an entry the filter excluded. When a leg cannot honour a filter it is dropped rather than returning unfiltered rows, and the response carries a "warnings" array naming it; no "warnings" key means every filter was applied on every leg (the key is absent, never null -- test for its presence). The full contract is stated once, in the docstring of SearchService.search: "what a search response owes its caller". Auto-quote rule: special-char tokens (hyphens, dots, colons) are auto-quoted ONLY when the query has no AND/OR/NOT operator and no existing quote. Once you use an operator or a phrase quote, quote special-char tokens yourself (e.g. '"family separation" "cross-link"') or the query can fail with error_code QUERY_SYNTAX (deterministic, not retryable).
Get timeline events within a date range, optionally filtered by importance.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only operations. The MCP spec (2026-07-28) encourages tool annotations to help clients understand tool safety profiles.
No documented output schema or return type structure. While input schemas are comprehensive, output shapes (fields, types, pagination format) are not formally specified. LLMs cannot plan downstream operations or extract fields reliably.
Error handling lacks recovery guidance. Descriptions mention validation rules (e.g., kb_search's 'error_code QUERY_SYNTAX', 'deterministic, not retryable') but the tool definition does not document error codes, error conditions, or what the agent should do when failures occur.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
kb_search description mentions template variables like {body_chunk_default}, {body_response_budget}, {body_chunk_max} that are not expanded or defined in the source. These appear to be placeholders that should resolve to concrete numbers for LLM clarity.
kb_search's auto-quote behavior is documented in description but is a silent contract detail. If an LLM constructs a query that violates the rule (special-char tokens without quotes when operators are present), it will silently fail or produce wrong results. The error should be actionable: 'Query syntax error: hyphens, dots, colons must be quoted when using AND/OR/NOT operators.'