Epistemic Partnership System for interpretive qualitative research. Human and AI learn together as apprentices to the craft tradition.
This server exhibits significant definition quality gaps across all dimensions. While tool descriptions are present and reasonably detailed (ranging 50-200 chars), the input parameter schemas are largely inferred rather than explicitly visible in the source code. The server implements 8 tools for a qualitative research workflow, but critical infrastructure is missing: no explicit JSON Schema input validation visible, no documented output schemas, no error handling guidance, and no tool composition chain support. The tools exist as standalone Node.js scripts rather than a formally registered MCP tool set with proper schema definitions. Tool naming follows verb-noun conventions (append-log, apply-preset, check-coherence) which is good, but parameter types and constraints are only partially documented in comments, not in machine-readable schema form. The security posture for file operations (append-log, apply-preset, generate-audit-trail, post-phase-transition) includes basic path traversal protection but lacks comprehensive input validation and error recovery guidance.
Writes entries to conversation-log.jsonl for AI-to-AI transparency
Applies a methodology preset to configure rules, prompts, and defaults. Presets configure isolation rule defaults, proactive prompts, philosophical defaults, and coding vocabulary.
EpistemicCoherence Hook: Philosophical Consistency Check. Validates that analytical moves align with declared philosophical stance. Checks language consistency (construct vs discover), ontological coherence, and methodological alignment.
PreStage2 Hook: Enforces Sandwich Methodology. Prevents using Stage 2 AI collaboration tools without completing Stage 1 human foundation. Ensures theoretical sensitivity is built through manual engagement.
PostSynthesis Hook: Audit Trail Generation. After synthesis work, automatically generates confirmability documentation. Creates transparent record of all analytical decisions with rationales.
PostFiveDocuments Hook: Interpretive Pause. Triggers after every 5 documents coded. Prevents mechanical coding without reflection. Prompts for structured interpretive pauses as per Gioia methodology.
No explicit JSON Schema input definitions visible for 6 of 8 tools (check-coherence, check-stage1-complete, generate-audit-trail, interpretive-pause, post-phase-transition, session-reflect). Only append-log and apply-preset show parameter definitions in source code. Tools are inferred from file paths and descriptions rather than explicitly registered with schemas.
No documented output schemas for any tool. Clients cannot infer what fields to expect (e.g., does check-coherence return a boolean pass/fail, a list of violations, or a structured coherence report?). This forces agents to guess downstream behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 35 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
PostPhaseTransition Hook: Updates Methodological Rules. Triggered after phase-changing commands to update rule statuses. Rules automatically relax when their relaxes_at phase is reached.
SessionEnd Hook: Reflexivity Prompt. Triggers at end of each Claude Code session to prompt reflexive thinking. Captures insights, assumptions examined, and learning.
Parameter descriptions in append-log and apply-preset are inline in comments, not in machine-readable schema. For example, 'metadata' in append-log is described as 'Additional metadata as JSON string (optional)' but there is no JSON Schema 'format': 'json' constraint or length limit documented. Violates pattern:constrained-input.
No error classification or recovery guidance. append-log returns {success: false, error: 'string'} but does not categorize errors as retryable vs. user-fixable. An agent receiving 'Failed to create log directory' has no guidance on whether to retry, fix the path, or abort.
Hooks (check-coherence, check-stage1-complete, generate-audit-trail, interpretive-pause, post-phase-transition, session-reflect) are lifecycle tools triggered by internal events, not explicit invocations. No input parameters visible, unclear how an agent would trigger them or what they expect. This violates the principle that tools should be explicitly callable with documented inputs.
No pagination or result limits documented. If generate-audit-trail or check-coherence return large audit logs or coherence reports, there is no mechanism to cap results, support paging, or return a total count. This risks context window exhaustion.
Path traversal protection in append-log checks `logTarget.startsWith(resolvedPath)` but does not account for symlinks or relative `..` segments that resolve outside the intended root. A malicious preset name in apply-preset could exploit path traversal if the preset path is not properly validated.
apply-preset loads external JSON files (methodology-presets.json, proactive-prompts.json) from the plugin directory. If these files are user-editable or untrusted, JSON parsing errors are not gracefully handled. The function does not validate preset structure before applying defaults.