slideforge-mcp 5.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. slideforge_mcp-5.5.1/.claude-plugin/marketplace.json +22 -0
  2. slideforge_mcp-5.5.1/.claude-plugin/plugin.json +11 -0
  3. slideforge_mcp-5.5.1/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  4. slideforge_mcp-5.5.1/.github/ISSUE_TEMPLATE/feature_request.md +18 -0
  5. slideforge_mcp-5.5.1/.gitignore +19 -0
  6. slideforge_mcp-5.5.1/.mcp.json +8 -0
  7. slideforge_mcp-5.5.1/AGENTS.md +77 -0
  8. slideforge_mcp-5.5.1/CHANGELOG.md +216 -0
  9. slideforge_mcp-5.5.1/CLAUDE.md +12 -0
  10. slideforge_mcp-5.5.1/Dockerfile +31 -0
  11. slideforge_mcp-5.5.1/LICENSE +21 -0
  12. slideforge_mcp-5.5.1/PKG-INFO +244 -0
  13. slideforge_mcp-5.5.1/PUBLISHING.md +57 -0
  14. slideforge_mcp-5.5.1/README.md +223 -0
  15. slideforge_mcp-5.5.1/examples/claude-code.md +51 -0
  16. slideforge_mcp-5.5.1/examples/claude-desktop.json +7 -0
  17. slideforge_mcp-5.5.1/examples/cursor.json +13 -0
  18. slideforge_mcp-5.5.1/examples/workflows.md +74 -0
  19. slideforge_mcp-5.5.1/glama.json +7 -0
  20. slideforge_mcp-5.5.1/llms-install.md +55 -0
  21. slideforge_mcp-5.5.1/logo.png +0 -0
  22. slideforge_mcp-5.5.1/pyproject.toml +39 -0
  23. slideforge_mcp-5.5.1/server.json +33 -0
  24. slideforge_mcp-5.5.1/skills/README.md +32 -0
  25. slideforge_mcp-5.5.1/skills/create-slide/SKILL.md +97 -0
  26. slideforge_mcp-5.5.1/skills/inspect-repair/SKILL.md +66 -0
  27. slideforge_mcp-5.5.1/skills/pdf-to-pptx/SKILL.md +88 -0
  28. slideforge_mcp-5.5.1/skills/translate-pptx/SKILL.md +102 -0
  29. slideforge_mcp-5.5.1/src/slideforge_mcp/__init__.py +5 -0
  30. slideforge_mcp-5.5.1/src/slideforge_mcp/__main__.py +6 -0
  31. slideforge_mcp-5.5.1/src/slideforge_mcp/contract/tools_list.prod.json +888 -0
  32. slideforge_mcp-5.5.1/src/slideforge_mcp/server.py +156 -0
  33. slideforge_mcp-5.5.1/tests/test_contract_parity.py +73 -0
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "slideforge-mcp",
3
+ "owner": {
4
+ "name": "Smart Data Brokers GmbH",
5
+ "email": "hello@slideforge.dev"
6
+ },
7
+ "metadata": {
8
+ "description": "Official SlideForge plugins — deterministic PowerPoint generation for AI agents (slideforge.dev)",
9
+ "version": "5.1.0"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "slideforge",
14
+ "description": "SlideForge remote MCP server config + skills: create editable .pptx from typed intents (fidelity manifest, usable-or-free), inspect/repair any deck, translate, PDF extract.",
15
+ "version": "5.1.0",
16
+ "source": {
17
+ "source": "github",
18
+ "repo": "smartdatabrokers/slideforge-mcp"
19
+ }
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "slideforge",
3
+ "version": "5.1.0",
4
+ "description": "Official SlideForge integration: remote MCP server (streamable-http, OAuth or API key) + agent skills for slide/deck creation, deck inspect & repair, translation, and PDF extraction.",
5
+ "author": {
6
+ "name": "Smart Data Brokers GmbH",
7
+ "url": "https://slideforge.dev"
8
+ },
9
+ "keywords": ["powerpoint", "pptx", "slides", "presentations", "mcp", "deck", "reporting"],
10
+ "license": "MIT"
11
+ }
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Report a problem with SlideForge MCP server setup or usage
4
+ title: "[Bug] "
5
+ labels: bug
6
+ ---
7
+
8
+ **MCP Client**
9
+ Which client are you using? (Claude Desktop, Claude Code, Cursor, Windsurf, other)
10
+
11
+ **Auth Method**
12
+ OAuth or API Key?
13
+
14
+ **What happened?**
15
+ A clear description of the bug.
16
+
17
+ **Steps to reproduce**
18
+ 1. ...
19
+ 2. ...
20
+ 3. ...
21
+
22
+ **Expected behavior**
23
+ What should have happened.
24
+
25
+ **Error messages**
26
+ Paste any error messages or logs.
27
+
28
+ **Additional context**
29
+ - OS:
30
+ - Client version:
31
+ - Job ID (if applicable):
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest a new feature or improvement
4
+ title: "[Feature] "
5
+ labels: enhancement
6
+ ---
7
+
8
+ **What would you like?**
9
+ A clear description of the feature.
10
+
11
+ **Why is this useful?**
12
+ How would this help your workflow?
13
+
14
+ **Alternatives considered**
15
+ Any workarounds you've tried.
16
+
17
+ **Additional context**
18
+ Screenshots, examples, or references.
@@ -0,0 +1,19 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ build/
7
+ dist/
8
+ .venv/
9
+ venv/
10
+ *.venv/
11
+
12
+ # Test / tooling
13
+ .pytest_cache/
14
+ .ruff_cache/
15
+ .mypy_cache/
16
+
17
+ # OS
18
+ .DS_Store
19
+ Thumbs.db
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "slideforge": {
4
+ "type": "http",
5
+ "url": "https://api.slideforge.dev/mcp/"
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,77 @@
1
+ # SlideForge — agent instructions
2
+
3
+ SlideForge (slideforge.dev, by Smart Data Brokers GmbH) turns typed slide intents into native,
4
+ fully editable PowerPoint files. It is a **compiler, not a generator**: a deterministic engine
5
+ renders 150+ catalog patterns from structured content — no LLM in the render path — and every
6
+ response carries a **fidelity manifest** stating what was bound verbatim vs. model-completed.
7
+ Copy this file (or its rules) into a project where an agent produces .pptx deliverables.
8
+
9
+ ## Connect
10
+
11
+ MCP (preferred — tools + schemas are self-describing):
12
+
13
+ ```bash
14
+ # Claude Code
15
+ claude mcp add --transport http slideforge https://api.slideforge.dev/mcp/
16
+ # Codex CLI / Cursor / Windsurf: streamable-http MCP server at the same URL,
17
+ # header "Authorization: Bearer sf_live_YOUR_KEY"
18
+ ```
19
+
20
+ REST (everything also works without MCP): `https://api.slideforge.dev/v1/…` with the same
21
+ Bearer key. Reference: https://slideforge.dev/docs/api — machine-readable rate card at
22
+ `GET /v1/pricing`.
23
+
24
+ ## The workflow that works
25
+
26
+ 1. **Discover the form.** `browse_catalog` (or `GET /v1/catalog`) → pick a `form`
27
+ (kpi_metrics, waterfall_bridge, gantt_plan, org_structure, funnel, data_table, …).
28
+ `browse_catalog type=schema form=<form>` returns the JSON Schema **and a copy-pasteable
29
+ example intent** — start from the example, swap in real content, keep the field names.
30
+ Unsure which form? `plan_slide` with the brief is free.
31
+ 2. **Dry-run first.** Send the intent with `dry_run: true` → validation + a fidelity forecast
32
+ at $0. Fix `errors[]` (each has a machine code + remedy), then resend without `dry_run`.
33
+ 3. **Render.** `create_slide` (one) or `create_deck` (`slides[]`, parallel, failed slides are
34
+ isolated and free). $0.05/slide, usable-or-free: a render with blocking errors never bills.
35
+ 4. **Verify like an agent.** The preview PNG is embedded inline in the tool result — *look at
36
+ it* before declaring done, no fetch needed. Download the deliverable via header-auth:
37
+ `GET /v1/jobs/<job_id>/pptx` with `Authorization: Bearer sf_live_YOUR_KEY`. To hand off a
38
+ shareable link, `POST /v1/jobs/<job_id>/download-url` mints a short-TTL single-use one.
39
+ 5. **Trust the manifest, not vibes.** `fidelity: verbatim` = every number/word came from your
40
+ input. `ai_completed`/`mixed` = the response names which fields a model filled. `partial` =
41
+ some supplied content didn't make it onto the slide — the manifest names what was dropped;
42
+ never deliver a `partial` render without telling the user what's missing. Surface fidelity
43
+ to the user when the content is business data.
44
+
45
+ ## Rules
46
+
47
+ - **Put real content in typed fields** (`data.*` per the form schema), not prose into a brief,
48
+ whenever the content matters — typed input binds verbatim and forecasts `fidelity: verbatim`.
49
+ Numbers render verbatim; the deterministic path makes zero external model calls.
50
+ - **Never retry an identical failed payload** — fix what the error's `remedy` says. Identical
51
+ *successful* input re-renders free (`repeat_of`), so idempotent retries are safe on success.
52
+ - **Decks:** one `create_deck` call, not N `create_slide` calls — parallel render, one merged
53
+ pptx, per-slide manifest rollup.
54
+ - **Branding: upload the user's own template.** `upload_asset(purpose="theme", data=<base64
55
+ .pptx>)` renders NATIVE by default — the deck is built ON their template file (master,
56
+ layouts, fonts), not a color-matched imitation. `create_slide(form="template_layout", ...)`
57
+ fills the template's own designed cover/agenda/divider slides verbatim.
58
+ - **Client demands a minimum font size?** Pass `min_font_pt` (typical ask: 12). It is BINDING:
59
+ type grows to meet the floor where the box allows; content that cannot fit returns a $0
60
+ `min_font_not_met` error naming the size it actually needs — set `allow_truncation: true`
61
+ to render the subset that fits (`fidelity: verbatim_truncated`) instead.
62
+ - **Layouts the catalog can't express:** `mode=code` (sandboxed python-pptx + a widget/chart
63
+ helper toolkit — list it via `browse_catalog type=widgets`). Still $0.05, still deterministic.
64
+ - **Check any existing deck for free:** `POST /v1/inspect` (REST) returns a Deck Quality Report
65
+ for any pptx — overflow (real font metrics), content hidden behind shapes, off-canvas
66
+ leftovers, WCAG contrast, hidden slides. `POST /v1/repair` applies deterministic fixes
67
+ (never alters words; $0.02 per repaired slide; `dry_run` = free exact quote).
68
+ - **Transform:** `translate_deck` ($0.02/slide, 32 languages, formatting preserved);
69
+ `upload_asset purpose=pdf` extracts a PDF into editable intents ($0.01/page).
70
+ - Costs are bounded and machine-readable (`GET /v1/pricing`); trial accounts start with
71
+ 60 free slides. Never invent prices in user-facing summaries — read the rate card.
72
+
73
+ ## Files in this repo you can reuse
74
+
75
+ - `skills/` — agent skills (SKILL.md standard) for Claude Code, Copilot, Cursor & friends:
76
+ `create-slide`, `inspect-repair`, `translate-pptx`, `pdf-to-pptx`.
77
+ - `examples/` — client configs (Claude Desktop, Cursor) and the headless self-review loop.
@@ -0,0 +1,216 @@
1
+ # Changelog
2
+
3
+ All notable changes to the SlideForge MCP server.
4
+
5
+ ## 5.5.1 — 2026-07-23
6
+
7
+ - Dockerfile `CMD` is now `["python", "-m", "slideforge_mcp"]` (command + args) instead of the
8
+ bare console script, so container launchers that require a non-empty argument list — e.g.
9
+ Glama's deploy config ("At least one command argument is required") — accept it. Adds
10
+ `slideforge_mcp/__main__.py` so `python -m slideforge_mcp` runs the stdio server. Behaviour
11
+ is identical to `slideforge-mcp`.
12
+
13
+ ## 5.5.0 — 2026-07-23
14
+
15
+ Adds a **local stdio MCP server** alongside the hosted remote endpoint. It's a thin REST
16
+ client over `api.slideforge.dev` (holds no engine logic): the 7 tool schemas are baked in
17
+ locally — so `tools/list` works with no network and no key — and each call forwards to the
18
+ REST tool-dispatch endpoint (`POST /v1/tools/{name}`) authenticated with `SLIDEFORGE_API_KEY`.
19
+
20
+ - For clients that boot MCP servers from a container/stdio, and for offline schema discovery.
21
+ - Most agents should keep using the hosted remote server (`https://api.slideforge.dev/mcp/`,
22
+ OAuth 2.1 or API key) — no install. See the README "Run it locally" section.
23
+ - Ships `pyproject.toml` (console entry `slideforge-mcp`), a Python package under
24
+ `src/slideforge_mcp/`, a contract snapshot (`contract/tools_list.prod.json`) captured
25
+ verbatim from prod, and a contract-parity test that fails if the wrapper drifts from the
26
+ served surface.
27
+ - Replaces the previous `mcp-remote`-based Dockerfile (which registries reject as a proxy)
28
+ with one that builds and runs the local server.
29
+
30
+ ## 5.4.0 — 2026-07-21
31
+
32
+ Syncs the repo to the served surface (service v5.104.0).
33
+
34
+ ### Payload grammar
35
+ - Stat prominence: list/workflow block items accept `metric: {value, label}` — renders as a
36
+ stat column. Numeric fields want finite bare numbers (no % signs, units, currency symbols).
37
+ - Layer stacks: `orientation: "horizontal"` (left-to-right pipeline, crossing control rails)
38
+ and per-component `state: current|target|gap` capability-heat tinting.
39
+ - `quality_profile` (executive/technical/appendix) answers on any form; measurement only.
40
+
41
+ ### Contract honesty
42
+ - `dry_run` validated responses carry explicit next-step text; unknown intent fields warn
43
+ (`field_ignored`) instead of vanishing; Gantt validates period + dependency references;
44
+ matrix rows validate cell cardinality; a `display_shrink` warning fires when a
45
+ display-scale design renders far below its intended size.
46
+ - Brief-routed fills may switch to a sibling variant when the fill's structure check
47
+ disagrees with retrieval (`ai_completed` provenance, disclosed in the response meta).
48
+
49
+ ### Rendering
50
+ - Consultant-grade structural upgrades across architecture diagrams: contained numbered
51
+ layer stacks with solid control rails, continuous funnels, true staircase climbs with
52
+ tinted maturity bands, nested-ring qualifiers, typed flow-node icons.
53
+ - Uploaded brand templates: native emit now clears the template's own footer chrome and
54
+ header zones (per-template regression harness behind it).
55
+
56
+ ## 5.3.0 — 2026-07-18
57
+
58
+ Syncs the repo to the served surface (service v5.90.1).
59
+
60
+ - **`min_font_pt`** on `create_slide` (and per-slide in `create_deck`): a BINDING minimum type
61
+ size, 6–40pt. Text is never shrunk below the floor — it GROWS to meet it where the box allows;
62
+ most catalog forms adapt to a 12pt ask dynamically. Content that cannot fit at the floor is a
63
+ $0 `min_font_not_met` error naming the size it actually needs; `allow_truncation: true`
64
+ renders the fitting subset (`fidelity: verbatim_truncated`, item-granular — never chopped
65
+ words). Chart/axis furniture is judged on its own floor, so dense exhibits stay expressible.
66
+ - **Per-variant payload contracts**: `browse_catalog type=schema` + `variant=` returns that
67
+ variant's exact machine-readable contract (JSON Schema, capacity, field mapping, worked
68
+ example) — and every advertised example is now guaranteed to bind with nothing silently
69
+ dropped (contract tests anchor examples against the render, not against themselves).
70
+ - **Fidelity forecast honesty**: `dry_run` no longer labels a `blocks` payload ignored when the
71
+ binder's compatibility fallback binds it; `input_shape_hint` warnings steer toward each
72
+ form's canonical `data.*` shape.
73
+
74
+ ## 5.2.0 — 2026-07-15
75
+
76
+ Syncs the repo to the served surface (service v5.81.0). Three engineering arcs landed since 5.1.0,
77
+ each validated by an external retest (5.5 → 8.2/10):
78
+
79
+ - **`mode=safe`**: validate-then-render in ONE call — renders and bills only if faithful, otherwise
80
+ a $0 invalid report with the fix. The recommended default over the dry_run round-trip.
81
+ - **Code-mode trust contract**: intent fields (`headline`/`context`/`takeaway`/`source_note`) render
82
+ as deterministic chrome around your `build(prs, slide)`; `verify` tiers (`lint` default,
83
+ `lint+vlm` visual second-look); helper geometry contracts reject impossible dimensions with exact
84
+ numbers; code renders carry the same `status`/`warnings[]`/`errors[]` vocabulary and a measured
85
+ `layout` readiness block. Code-mode slides are first-class deck children.
86
+ - **Quality profiles**: `quality_profile` (executive | technical | appendix) sets the readiness bar
87
+ `layout.presentation_ready` is judged against — measurement only, never blocks or re-prices.
88
+ - **Complex-diagram robustness**: connector-routing/label solver kernel for flows, org charts,
89
+ swimlanes; capacity contracts on relationship-heavy forms (over-dense content is refused honestly
90
+ with a decomposition plan rather than rendered unreadable); six decomposition strategies.
91
+ - **Routing controls**: `variant_policy` (production_safe), literal `candidate_margin`, calibrated
92
+ `route.confidence` with honest labels; decisive routes never read as ambiguity.
93
+ - **Honest-by-default flags**: `allow_fabrication` / `allow_truncation` / `allow_low_confidence` —
94
+ the server rejects at $0 rather than guessing, unless you opt in.
95
+
96
+ ## 5.1.0 — 2026-07-08
97
+
98
+ - **Native brand-template rendering**: `upload_asset(purpose="theme", data=<base64 .pptx>)`
99
+ renders NATIVE by default — the output deck is built ON the client's own template file
100
+ (master, layouts, fonts intact), not a color-matched imitation. Responses carry
101
+ `brand_fidelity_level: "native"`.
102
+ - **Drag/drop theme upload**: omit `data` on a large theme file and the result card shows a
103
+ drop zone — bytes never pass through the agent.
104
+ - **Branded furniture layouts**: `create_slide(form="template_layout", theme_id=..., data=...)`
105
+ fills the template's own designed cover/agenda/section-divider/closing slides verbatim,
106
+ deterministic and LLM-free. Discoverable via `browse_catalog(type="themes", theme_id=...)`.
107
+ - **Translation: 8 → 32 languages** (Latin, Cyrillic, and Greek scripts; no CJK/RTL yet), both
108
+ REST and MCP.
109
+ - **Security hardening**: tool result bodies are now credential-free (no signed URLs); the
110
+ .pptx downloads via header-auth (`Authorization: Bearer` + ownership check);
111
+ `POST /v1/jobs/<job_id>/download-url` mints a short-TTL single-use handoff link; artifacts
112
+ auto-delete after 30 days; every download is audit-logged;
113
+ `manage_account(action=security_status)` discloses the full posture in-band.
114
+ - **New fidelity grade `partial`**: some supplied content did not make it onto the slide; the
115
+ manifest names what was dropped.
116
+
117
+ ## 5.0.0 — 2026-07-03
118
+
119
+ The v5 surface (the engine consolidation shipped on the service earlier this year, now
120
+ reflected here):
121
+
122
+ - **7 served tools** (+2 enterprise-gated) — `browse_catalog` replaces `search_catalog`; `create_slide` is intent-first
123
+ (form + typed fields bind verbatim; `mode=code` remains); the creative/iterate/template
124
+ modes and per-mode pricing are gone. One price: $0.05/slide, usable-or-free.
125
+ - **Fidelity manifest** on every response (verbatim | mixed | ai_completed) — the honesty layer.
126
+ - **Deck Doctor**: free `POST /v1/inspect` (Deck Quality Report for any pptx) +
127
+ `POST /v1/repair` ($0.02/repaired slide, never alters words). New `inspect-repair` skill.
128
+ - **Plugin marketplace**: `/plugin marketplace add smartdatabrokers/slideforge-mcp` installs
129
+ skills + the MCP server config (`.claude-plugin/`, `.mcp.json`).
130
+ - **AGENTS.md** (portable, agents.md standard) + **CLAUDE.md** for agent-native onboarding.
131
+ - Skills rewritten for the current surface; README/llms-install/examples refreshed.
132
+
133
+ ## [4.0.1] — 2026-04-22
134
+
135
+ ### Fixed
136
+ - Tool annotation semantics corrected for Claude Connectors Directory
137
+ compliance: `destructiveHint=false` on create/translate/generate tools
138
+ (they create content, they don't destroy), `readOnlyHint=false` on
139
+ `manage_account` (feedback submission writes), `idempotentHint=true`
140
+ on `upload_asset` (safe to retry).
141
+ - Response size cap added to every inline preview embed (2 MB raw bytes
142
+ / 1920px longest dim in "full" mode) so tool results stay under
143
+ Anthropic's 25K-token MCP limit.
144
+
145
+ ### Added
146
+ - Three Claude Agent Skills in `skills/` — create-slide, translate-pptx,
147
+ pdf-to-pptx — mirroring the core MCP tools.
148
+
149
+ ## [4.0.0] — 2026-04-22
150
+
151
+ ### Added
152
+ - Component Library v4: flagship primitives (CapabilityMap, ScatterBubble,
153
+ DecisionLog), composition as first-class path (Strategy on a Page,
154
+ Portfolio steering), chart semantics overhaul.
155
+
156
+ ### Changed
157
+ - Component catalog rationalized: Tracker.scorecard removed (dup with
158
+ RAGScorecard), StakeholderMap alias removed (now aliased to OrgTree),
159
+ fabricated `quality_score` / `usage_count` stripped from catalog API.
160
+ - Feature Grid template merged into Icon Grid (**breaking**: callers
161
+ using `feature_grid` should migrate to `icon_grid`).
162
+
163
+ ## [3.3.0] — 2026-04-21
164
+
165
+ ### Added
166
+ - `ArchitectureStack` flagship primitive for enterprise architecture
167
+ decks — semantic zones (layers, externals, cross-cutting), three
168
+ opinionated styles (enterprise/data_ai/application), 10-code soft
169
+ validation via `architecture_warnings` envelope.
170
+ - Three flagship templates (Architecture Overview, Data & AI Platform,
171
+ Application Integration Architecture).
172
+
173
+ ## [3.2.0] — 2026-04-20
174
+
175
+ ### Added
176
+ - Public unauthenticated free-tier endpoint `POST /v1/tools/pdf-to-pptx`
177
+ — 25 MB / 15-page caps, 5 req/hour/IP rate limit, Tier-1 abuse
178
+ defense. Web UI at `/tools/pdf-to-pptx` with measured benchmark
179
+ (112-page deck → 18 s).
180
+
181
+ ## [2.0.0] — 2026-04-19
182
+
183
+ ### Changed
184
+
185
+ - **Tool consolidation: 28 → 8 tools.** Fewer tools = faster agent discovery, less context overhead.
186
+ - `create_slide` replaces render_slide, generate_slide, iterate_slide, render_spec, render_code, get_slide_status, suggest_layout, render_preflight. Uses `mode` param (auto/creative/spec/code/iterate/status).
187
+ - `create_deck` replaces generate_deck, assemble_deck, fork_deck. Uses `mode` param (generate/assemble/fork).
188
+ - `search_catalog` replaces list_templates, search_templates, suggest_template, list_components, search_components, list_themes. Uses `type` param (templates/components/themes).
189
+ - `manage_account` replaces get_me, get_usage, list_jobs, submit_feedback, get_agent_onboarding, get_capabilities. Uses `action` param.
190
+ - `upload_asset` replaces upload_file. Cleaner schema with `purpose` param (logo/theme/image).
191
+ - `generate_report` now supports discovery mode (omit slug to list available report types).
192
+ - Default `include_preview` changed from "none" to "default" — agents get inline previews automatically.
193
+
194
+ ### Added
195
+
196
+ - Spec iteration: `create_slide(mode=iterate)` now works on spec-rendered slides (was broken pre-v2.6.3).
197
+ - `_to_emu()` helper: shape helpers accept both `Inches()` and float values — no more double-wrapping bugs.
198
+ - `_segment_color()`: chart segments (stacked bars, donuts) use distinct primary/accent colors.
199
+ - Template enrichment: auto-routed templates enrich sparse briefs before param extraction.
200
+
201
+ ### Fixed
202
+
203
+ - 12 quality bugs from v2.6.3-v2.6.5 test report (metric delta, tracker value, donut labels, etc.)
204
+
205
+ ## [1.0.0] — 2026-03-31
206
+
207
+ ### Available
208
+
209
+ - 13 MCP tools (later expanded to 28 before consolidation)
210
+ - 2 MCP prompts: `create_presentation`, `quick_slide`
211
+ - OAuth 2.1 authentication (Claude Desktop native)
212
+ - API key authentication (all MCP clients)
213
+ - 39 built-in consulting templates
214
+ - Custom brand themes
215
+ - Inline PNG preview
216
+ - Free trial on signup (today: 60 free slides)
@@ -0,0 +1,12 @@
1
+ @AGENTS.md
2
+
3
+ # Claude Code specifics
4
+
5
+ - Install the server: `claude mcp add --transport http slideforge https://api.slideforge.dev/mcp/`
6
+ - Install the skills as a plugin: `/plugin marketplace add smartdatabrokers/slideforge-mcp`
7
+ then `/plugin install slideforge@slideforge-mcp` — or copy folders from `skills/` into
8
+ `~/.claude/skills/`.
9
+ - Responses have no inline widgets here, but the tool result embeds the preview PNG inline —
10
+ read it straight out of the response to check a render before declaring it done. Download
11
+ the .pptx via header-auth: `GET /v1/jobs/<job_id>/pptx` with
12
+ `Authorization: Bearer sf_live_YOUR_KEY`.
@@ -0,0 +1,31 @@
1
+ # SlideForge local stdio MCP server — a real MCP server that runs locally over stdio.
2
+ # It bakes the tool schemas in (so `tools/list` works with no network and no key) and
3
+ # forwards tool calls to the SlideForge REST API (https://api.slideforge.dev) using an
4
+ # API key. NOT an mcp-remote proxy: the MCP protocol is served locally.
5
+ #
6
+ # Provide SLIDEFORGE_API_KEY (an sf_live_... key from https://slideforge.dev) at run time
7
+ # to make tool calls. Schema discovery needs neither a key nor network.
8
+ FROM python:3.12-slim
9
+
10
+ RUN pip install --no-cache-dir uv
11
+
12
+ WORKDIR /app
13
+
14
+ # Install deps first for layer caching, then the package.
15
+ COPY pyproject.toml README.md ./
16
+ COPY src ./src
17
+ RUN uv pip install --system --no-cache .
18
+
19
+ # Non-root.
20
+ RUN useradd -m appuser
21
+ USER appuser
22
+
23
+ ENV PYTHONUNBUFFERED=1 \
24
+ SLIDEFORGE_API_BASE="https://api.slideforge.dev" \
25
+ SLIDEFORGE_API_KEY=""
26
+
27
+ # Launch the stdio MCP server (single process, JSON-RPC over stdin/stdout).
28
+ # Use `python -m` (command + args) so launchers that require a non-empty argument
29
+ # list — e.g. Glama's deploy config — accept it. `slideforge-mcp` (the console script)
30
+ # is equivalent.
31
+ CMD ["python", "-m", "slideforge_mcp"]
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Smart Data Brokers GmbH
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.