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.
- slideforge_mcp-5.5.1/.claude-plugin/marketplace.json +22 -0
- slideforge_mcp-5.5.1/.claude-plugin/plugin.json +11 -0
- slideforge_mcp-5.5.1/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
- slideforge_mcp-5.5.1/.github/ISSUE_TEMPLATE/feature_request.md +18 -0
- slideforge_mcp-5.5.1/.gitignore +19 -0
- slideforge_mcp-5.5.1/.mcp.json +8 -0
- slideforge_mcp-5.5.1/AGENTS.md +77 -0
- slideforge_mcp-5.5.1/CHANGELOG.md +216 -0
- slideforge_mcp-5.5.1/CLAUDE.md +12 -0
- slideforge_mcp-5.5.1/Dockerfile +31 -0
- slideforge_mcp-5.5.1/LICENSE +21 -0
- slideforge_mcp-5.5.1/PKG-INFO +244 -0
- slideforge_mcp-5.5.1/PUBLISHING.md +57 -0
- slideforge_mcp-5.5.1/README.md +223 -0
- slideforge_mcp-5.5.1/examples/claude-code.md +51 -0
- slideforge_mcp-5.5.1/examples/claude-desktop.json +7 -0
- slideforge_mcp-5.5.1/examples/cursor.json +13 -0
- slideforge_mcp-5.5.1/examples/workflows.md +74 -0
- slideforge_mcp-5.5.1/glama.json +7 -0
- slideforge_mcp-5.5.1/llms-install.md +55 -0
- slideforge_mcp-5.5.1/logo.png +0 -0
- slideforge_mcp-5.5.1/pyproject.toml +39 -0
- slideforge_mcp-5.5.1/server.json +33 -0
- slideforge_mcp-5.5.1/skills/README.md +32 -0
- slideforge_mcp-5.5.1/skills/create-slide/SKILL.md +97 -0
- slideforge_mcp-5.5.1/skills/inspect-repair/SKILL.md +66 -0
- slideforge_mcp-5.5.1/skills/pdf-to-pptx/SKILL.md +88 -0
- slideforge_mcp-5.5.1/skills/translate-pptx/SKILL.md +102 -0
- slideforge_mcp-5.5.1/src/slideforge_mcp/__init__.py +5 -0
- slideforge_mcp-5.5.1/src/slideforge_mcp/__main__.py +6 -0
- slideforge_mcp-5.5.1/src/slideforge_mcp/contract/tools_list.prod.json +888 -0
- slideforge_mcp-5.5.1/src/slideforge_mcp/server.py +156 -0
- 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,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.
|