{"name":"ai.unpaper/cli","slug":"unpaper-cli","title":null,"description":"Slide decks locally: templates, checks, HTML to editable PowerPoint, .pptx rescue. No AI inside.","url":"https://mcp.market/server/unpaper-cli","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":11,"stars":null,"forks":null,"downloads_week":34,"last_push_at":null,"license":"SEE LICENSE IN LICENSE"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":null,"website":"https://www.unpaper.ai/agents","version":"0.3.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@unpaper/cli","version":"0.3.0","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"description":"Start the stdio MCP server","value":"mcp","type":"positional"}]}],"tools":[{"name":"check","description":"Validate unPaper HTML (or any HTML deck) BEFORE converting. Returns the conformance level (L0–L3), per-slide issues, and a ready fix-request text. Call after writing or editing a deck; if level < L1 or errors exist, apply the fixes and call again. A clean check makes `convert` output fully editable. Set template: true (with optional family) to validate a COMPANY TEMPLATE from `templatize` against ","write_action":false,"price_micros":0,"input_schema":null},{"name":"convert","description":"Convert an unPaper/self-contained HTML deck to a REAL, editable PowerPoint (.pptx): native text boxes, tables, data-editable charts, movable shapes, speaker notes. Runs fully locally — no network, no upload. Prefer running `check` first; conversion succeeds on most HTML but editability follows conformance. Returns the output file path and a per-slide report.","write_action":false,"price_micros":0,"input_schema":null},{"name":"import","description":"Rescue an existing .pptx (or legacy .ppt with LibreOffice installed) into AI-readable unPaper HTML: content, tables, notes, chart DATA, image placeholders + a facts file. Use when asked to redesign, update, or 'un-paper' an existing PowerPoint. Then rewrite the returned deck.ai.html into a proper deck (keep every <figure data-unpaper-image> placeholder), call `rehydrate`, then `check` + `convert`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"patterns","description":"Browse the unPaper pattern library (consulting slide layouts: exec summary, comparison, waterfall, 2×2, roadmap…). Use when deciding HOW to lay out content before writing the deck. Returns compact pattern descriptions with structure hints; write the deck yourself using them — there is no generation here.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rehydrate","description":"Merge real images back into a redesigned deck. Call after rewriting an imported deck.ai.html: replaces every <figure data-unpaper-image> placeholder with the stored image from deck.images.json. Fails loudly if placeholders were lost — restore them and retry.","write_action":false,"price_micros":0,"input_schema":null},{"name":"starter","description":"Get a ready-to-fill unPaper HTML slide template. Use this FIRST when asked to create a presentation/deck/slides as .pptx or print-ready HTML: write your content INTO the returned file's structure (keep its <style>, @page and <script> blocks verbatim; one <section class=\"slide\"> per slide; add data-unpaper-chart JSON to every chart; put speaker notes in <aside class=\"notes\">). Then validate with `c","write_action":false,"price_micros":0,"input_schema":null},{"name":"templatize","description":"Turn a company's slide format into a reusable unPaper TEMPLATE. Returns a payload for YOU to execute — there is no generation inside unPaper. With no brief: the template-maker prompt + the base skeleton (study the company's real slides in your context and produce the re-skin yourself). With a brief (name, colours, personality, logo…): the designer prompt + a pre-founded base for a company with NO ","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-24T05:04:49.845Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:04:49.858Z","components":{"code":{"score":20,"max":25,"notes":["27 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/importer/import.mjs: …aches these calls. const nodeFs = () => new Function('m', 'return import(m)')('node:fs/promis…"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@unpaper/cli","version":"0.3.0","found":true,"license":"SEE LICENSE IN LICENSE","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-08-06T10:12:58.491Z","weeklyDownloads":34}],"repo":{"found":false},"icon":{"url":"https://www.unpaper.ai/icon.svg?icon.2ey637doimvqa.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":34,"license":"SEE LICENSE IN LICENSE","lastPushAt":null,"score":11}}}},"grade_history":[],"reviews":[]}