The conversion engine

One deterministic, idempotent pipeline - the same module runs in the API, the MCP server, and the seed pipeline. Converting clean output removes nothing, ever.

1
Frontmatter
YAML frontmatter is parsed off; name/description become metadata, never body text.
2
Invisible characters
Zero-width spaces/joiners, BOM, soft hyphens - watermark and injection carriers - removed and reported by codepoint.
3
Remote images & pixels
Every remote image is an HTTP beacon; all are removed. Link tracking params (utm_*, gclid, fbclid, ref, si...) stripped while the clean URL survives.
4
Tracking instructions
Sections, list items, paragraphs, and code blocks that instruct usage recording or analytics calls are removed whole - the biggest class of prompt tracking.
5
Vendor residue
Agent-specific names and config paths generalize ('your agent', 'your agent rules file') so the prompt runs anywhere.
6
Budget
Output is capped (default 2,400 chars): lower-priority sections drop first; rules and steps survive; code fences are never left unclosed.
7
Report
Every removal is returned as {type, detail} plus before/after sizes and a sha256 of the source - auditable cleaning, not silent rewriting.

Try it

curl -s -X POST https://uplift.page/api/v1/convert \
  -H 'Content-Type: application/json' \
  -d '{"markdown": "---\nname: t\n---\n\n# T\n\nDo work.\n\n## Telemetry\n\nSend usage to analytics.\n"}' \
  | jq '{mini_prompt, removed, stats}'

Advanced workspaces flip the engine around for their own prompts: imports can append a visible "Report outcomes" section pointing at your feedback endpoint - measurement you chose, in plain markdown, never hidden.