Model Context Protocol server exposing ZeroFuse abliteration capabilities to agent harnesses (Claude Desktop, OpenAI Codex, etc.) as a single abliterate tool for removing refusal behavior from open-weight language models.
Single tool 'abliterate' has a well-structured schema with 8 parameters, all typed and described. Description is comprehensive (280+ chars) and explains the action, prerequisites, and output. However, the tool performs an irreversible, high-risk operation (model modification) with no confirmation step, dry-run option, or explicit error recovery guidance. Output schema is not formally documented in the code. Parameter descriptions are good but lack explicit constraint details (e.g., what constitutes a valid HF model ID, what happens if optimization fails). No per-parameter validation rules stated.
Abliterate (decensor) a model. Point ZeroFuse at a Hugging Face model id or local path. It identifies the refusal architecture, conducts a two-objective optimization (minimizing refusals and KL divergence from the original), and writes a standard, decensored Hugging Face model with zero inference overhead.
Irreversible operation (model modification) lacks confirmation or dry-run pattern. No explicit guidance on recovery if optimization fails or produces unexpected results.
Output schema not formally documented in code. Return type is 'dict' with no structured schema definition visible. LLM cannot predict response fields (e.g., 'baseline', 'remaining_refusals', 'kl_divergence', 'output_path').
Parameter 'model' accepts free-form string with no validation rules stated. Description should specify: valid HF model ID format, whether local paths must exist, what happens if model is not found.
Error handling not documented. No guidance on what errors are retryable (e.g., OOM, timeout) vs fatal (e.g., invalid model). LLM cannot determine recovery strategy.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | <=2025-11-25 | v2 |
Parameter 'n_trials' unbounded (default 100). No stated maximum. LLM could pass 10000, causing runaway compute. Should specify range (e.g., 1 - 1000) and expected runtime per trial.