Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Changed the definition of "browse_catalog", "create_deck", "create_slide" and 6 more
{"cost":{"note":"free","usd":0},"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
⟨56 unchanged words⟩ (hero_statement variant=contact_closing via blocks-free slots). BLOCKED ($0not billed)? If an error has `can_autofix:true`, ⟨58 unchanged words⟩
Changed the definition of "create_deck"
⟨439 unchanged words⟩ field-binding warning (field_ignored, input_shape_hint, normalized, variant_fallback, form_rerouted).","type":"boolean"},"reject_ignored_fields" ⟨74 unchanged words⟩
Authorization not required, issuer https://api.slideforge.dev
Added "edit_deck" and "edit_slide" (7 tools before, 9 now)
Edit slides of a rendered deck — Change one or more slides of a deck you already rendered, in place and free: only the patched slides re-render, the deck is re-merged and keeps its id and links. Never runs a model: a brief or a picture request is refused. Each edited slide's entry carries its full current spec as `intent`. Up to 20 edits per deck.
Edit a rendered slide — Change a slide you already rendered, in place and free: the job keeps its id and links. Send the job_id and a patch of the fields to change. Never runs a model: a brief or a picture request is refused (make a new slide for those). The response carries the slide's full current spec as `intent`. Up to 20 edits per slide.
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Changed the definition of "create_slide"
⟨145 unchanged words⟩ ) case_story: one named story told as evidence: challenge,action,proven by measuredresultresults (data.results = figures) comparison_matrix: options x criteria grid: data.columns x ⟨469 unchanged words⟩
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Changed the definition of "plan_slide"
⟨67 unchanged words⟩ be negative when families contest); source = jev (calibrated router, took the route at >=0.9) | classifier | structural_router (LLM-rescued). candidate_margin on the ⟨10 unchanged words⟩
Changed the definition of "upload_asset"
⟨30 unchanged words⟩ type detection)","type":"string"},"job_id":{"description":"For purpose=brand: keep the look a recreate rendered in — pass that recreate's job_id and its exact kit is saved as yours (no upload, no charge).","type":"string"},"model":{"description":"Explicit gateway model ID. ⟨150 unchanged words⟩ "el","zh","ja","ko"],"type":"string"},"theme_id":{"description":"For purpose=recreate: the brand kit or built-in theme to render the recreated slide in — your kit slug, `slug@version`, or a built-in id. Omit to keep the look of the source image.","type":"string"},"theme_name":{" ⟨12 unchanged words⟩
Changed the definition of "create_deck" and "create_slide"
⟨235 unchanged words⟩ :"array"},"language":{"description":"TargetISOlanguage639-1 (default en) for every slide: furniture labels and authored fills follow it.","enum":["enbg","ca","cs","da","de","frel","en","es","et","fi","fr","gl","hr","hu","id","is","it","ptja","ko","lt","lv","nl","no","pl","pt","ro","ru","sk","sl","sr","sv","tr","
Authorization not required, issuer https://api.slideforge.dev
Changed the definition of "create_slide"
⟨518 unchanged words⟩ ,"imagery_tag":{"description":"Subject/industry: steerscover/sectionlibrary photos (covers, sections, picture slides) AND the topical palette. Omit = general; `education` ⟨527 unchanged words⟩
Authorization not required, issuer https://api.slideforge.dev
Changed the definition of "create_slide"
⟨728 unchanged words⟩ ,"name":{"type":"string"},"notes":{"description":"Speaker notes for the presenter; never drawn on the slide.","type":"string"},"quality_profile":{"description":"Thresholds layout.presentation_ready is judged ⟨308 unchanged words⟩
Changed the definition of "translate_deck" and "upload_asset"
Translate a PowerPoint (.pptx) deck preserving all formatting. $0.02/slide. Supports3235 languages (Latin, Cyrillic, Greek,scriptsChinese, Japanese, Korean). Provide job_id (from a previous create_slide/create_deck), pptx_url, or pptx_base64.
⟨125 unchanged words⟩ ,"gl","id","vi","el","zh","ja","ko"],"type":"string"}},"required": ⟨3 unchanged words⟩
Authorization not required, issuer https://api.slideforge.dev
Authorization not required, issuer https://api.slideforge.dev
Changed the definition of "upload_asset"
⟨106 unchanged words⟩ draft = Flux Schnell. balanced (default) =FLUX.2GeminiFlash.Flash Image. premium = GPT Image 2. Overridden by `model`. ⟨82 unchanged words⟩
Certificate recorded, valid to 2027-01-17
Authorization not required, issuer https://api.slideforge.dev
First tool surface recorded: 7 tools (server version 5.0.0)
Showing the latest 33 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨58 unchanged words⟩ see each form's `binds` in browse_catalog. BLOCKED ($0not billed)? If an error has `can_autofix:true`, ⟨524 unchanged words⟩ Escape modes: mode=code (caller-supplied python-pptx in sandbox,$0.05— use for forms the menu cannot express: ⟨12 unchanged words⟩ photo covers, full-bleed visuals): hero_statement + image_prompt(+$0.05)or image_src.
⟨9 unchanged words⟩ on a DATA form (kpi/funnel/comparison/…) returns would_fabricate,atnot$0billed, rather than INVENT numbers. Send typed fields for ⟨434 unchanged words⟩ "description":"generate an image when no image_src(+$0.05)","type":"string"},"image_src":{ ⟨224 unchanged words⟩ to meet it; content that can't fit isaan$0unbilled min_font_not_met naming the size needed. Typical: 12." ⟨19 unchanged words⟩ (renders + bills only if faithful; else$0an unbilled invalid report with the fix — recommended, no ⟨222 unchanged words⟩ via browse_catalog). Unknown variant -> rejected ($0not billed) with the valid list; set allow_variant_fallback to ⟨60 unchanged words⟩ (~+3s); a blank render is thenaan$0unbilled error, not a billed warning. `off` skips ⟨32 unchanged words⟩
{"cost":{"note":"structured intent / brief / code: $0.05 per slide. AI image via image_prompt: +$0.05. status: free.","unit":"per slide","usd":"0.00-0.10"},"destructiveHint":false,"idempotentHint":false,"openWorldHint":falsetrue,"readOnlyHint":false}
{"cost":{"note":"free","usd":0},"destructiveHint":falsetrue,"idempotentHint":true,"openWorldHint":falsetrue,"readOnlyHint":false}
{"cost":{"note":"free","usd":0},"destructiveHint":falsetrue,"idempotentHint":true,"openWorldHint":falsetrue,"readOnlyHint":false}
SlideForge account for PowerPoint generation: balance,billing,job history, feedback, data controls. All free. ⟨30 unchanged words⟩ : status + resolution), onboarding (capabilities overview), topup (Stripe checkout link; wallet credits automatically), webhooks/webhook_add/webhook_remove/webhook_test (push endpoint instead of polling to terminal), download_url (fresh short-TTL PPTX link for ⟨34 unchanged words⟩
⟨71 unchanged words⟩ of your brand kits (pass theme_id).topup → mints a Stripe checkout link the user pays at directly (wallet credits automatically) — use when a render is refused for balance.reports → list reporttypes; webhook_add registers a push endpoint instead of polling — see the url/events props.types. delete_job is irreversible. delete_asset is irreversible for user-owned ⟨7 unchanged words⟩ download_url","feedback","feedback_list","onboarding","topup","brand_report","reports","webhooks","webhook_add","webhook_remove","webhook_test","security_status","delete_job","delete_asset"],"type":"string"},"amount":{"description":"USD top-up amount (for action=topup, default 10, min 10, max 1000). Volume bonus: $50→+10%, $100→+15%, $200→+20%.","type":"number"},"asset_id":{"description":"Image asset ID ( ⟨85 unchanged words⟩ authenticated user.","type":"boolean"},"events":{"description":"Event types to subscribe to (for action=webhook_add; default all): job.completed, job.failed, deck.completed, deck.partial, deck.failed.","items":{"type":"string"},"type":"array"},"include_children":{"description":"For action=jobs: include ⟨147 unchanged words⟩ ":"Filter — action=jobs: queued/generating/complete/failed; action=feedback_list: open/resolved","type":"string"},"url":{"description":"HTTPS endpoint to receive events (for action=webhook_add). Must be public HTTPS (private/loopback rejected).","type":"string"},"webhook_id":{"description":"Webhook subscription id (for action=webhook_remove / webhook_test).","type":"string"}},"required": ⟨3 unchanged words⟩
{"cost":{"note":"free","usd":0},"destructiveHint":true,"idempotentHint":false,"openWorldHint":falsetrue,"readOnlyHint":false}
{"cost":{"note":"free","usd":0},"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
Translate a PowerPoint (.pptx) deck preserving all formatting.$0.02/slide.Supports 35 languages (Latin, Cyrillic, Greek, ⟨13 unchanged words⟩
{"cost":{"unit":"per slide","usd":0.02},"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}
⟨59 unchanged words⟩ • generate_image — AI-generate via `prompt` → asset_id($0.05)• translate — PPTX to translate → deck job_id ($0.02/slide;requires `target_language`) • pdf — PDF → editable ⟨10 unchanged words⟩ OF a slide → editable PPTX slide ($0.10;honest annotate/preserve fallback, refusals free). Use `image` to just place a picture ⟨25 unchanged words⟩
{"cost":{"note":"free for logo/theme/image upload; $0.05 for generate_image; $0.10 for recreate (refusals free); +$0.02/slide when translating","usd":"0-0.10"},"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}
⟨605 unchanged words⟩ :"string"},"language":{"description":"TargetISOlanguage639-1 (default:en): furniture labels and authored fills follow it.","enum":["enbg","ca","cs","da","de","frel","en","es","et","fi","fr","gl","hr","hu","id","is","it","ptja","ko","lt","lv","nl","no","pl","pt","ro","ru","sk","sl","sr","sv","tr","uk","vi","zh"],"type":"string"},"logo_id":{ ⟨367 unchanged words⟩ :"string"},"verify":{"description":"mode=code tier.mode=code. Default `lint`: static geometrylinter (overlap/off-canvas/zero-size)+composercontentvalidators —checks, no LLM. `lint+vlm` adds a VLMsecond-looksecond look (~+3s)and makes; ablank/contentlessblank render is then a $0 error, not a billed warning. ⟨34 unchanged words⟩
⟨187 unchanged words⟩ ,"gl","id","vi","el","zh","ja","ko"],"type":"string"},"theme_name":{ ⟨12 unchanged words⟩