The same request compiles differently for an image model and for a coding agent, and the platform list is editable — register your own, or override what a built-in one is told. Two parts stand out past the rewriting itself: it will stop and ask one to three clarifying questions rather than guess at an ambiguous draft, and inspect_context shows exactly what would be fed in before a call is spent. Because it points at your own model endpoint, both the cost and the privacy boundary stay ones you already control.
A prompt compiler. Send a raw prompt and a target platform and it returns a version in that platform's syntax and structure, grounded in workspace signals it gathers itself — CLAUDE.md, AGENTS.md, .cursorrules, package.json — plus a resolved intent, remembered facts and the target model's capabilities.
- optimize_prompt rewrites a prompt for a named platform and category, picking up workspace signals without being told where they are; list_categories, list_platforms and list_modes show what is on offer
- clarify_with_user returns one to three targeted questions when a draft is ambiguous, each carrying a suggested answer you can simply accept, instead of the engine guessing
- ground_prompt optimises against explicit sources you hand it — a spec, a transcript excerpt, an RFC, an internal document — rather than against inferred context
- critique_prompt scores a prompt from 0 to 10 across six dimensions including clarity, specificity, intent alignment and plain language, and can rewrite it from the critique
- compose_prompt runs the whole pipeline in one call: clarify, then ground or optimise, then critique, with an automatic revision loop
- register_platform, update_platform and unregister_platform add a platform of your own or override the built-in instructions for an existing one
- A persistent memory store — memory_remember adds a fact, memory_search runs semantic search across facts, past optimisations and knowledge-pack chunks, memory_list_facts shows what is live, and memory_forget soft-deletes while keeping the history
- load_knowledge_pack ingests a Markdown document, chunked by heading, into that store, with list_packs and unload_pack managing what is loaded
- inspect_context previews exactly what would be fed in — workspace rules, frameworks, model capabilities, resolved intent, session history — before an optimisation runs, and explain_last_curation shows what the curator kept and what it dropped
- save_outcome records whether an output was accepted, edited or rejected, feeding both the session buffer and the memory loop, while list_traces and get_trace return the full record of a past optimisation including its system prompt
Published as clarifyprompt-mcp and launched over stdio by default; CLARIFYPROMPT_TRANSPORT switches it to Streamable HTTP or to an agent-to-agent peer, on port 3000 bound to 127.0.0.1 unless you change it. It calls a model of your choosing rather than shipping one: LLM_API_URL and LLM_MODEL are required and accept any OpenAI-compatible or Anthropic endpoint, with LLM_API_KEY needed for everything except a local Ollama. LLM_REASONING_EFFORT tunes thinking-channel models. Traces, memory and knowledge packs live under CLARIFYPROMPT_HOME, defaulting to ~/.clarifyprompt.
One command — npx -y clarifyprompt-mcp
