Skip to main content
Glama

Server Details

Deterministic, fully editable PowerPoint from typed slide intents. 200+ layouts, brand templates.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
smartdatabrokers/slideforge-mcp
GitHub Stars
4
Server Listing
Slideforge

Available Tools

7 tools
browse_catalogBrowse SlideForge's Catalog (Unified Discovery)A
Read-onlyIdempotent
Inspect

Browse the PowerPoint slide catalog progressively. No args -> form overview (when-to-use, bound fields, variant counts). family= -> variant one-liners. q= -> ranked search. variant=/prior_id= -> example payload. type=schema + family -> a compact family-level variant chooser (not a sendable contract); type=schema + family + variant -> that variant's exact payload contract (JSON Schema, capacity, field mapping, examples). Free. Code path: type=widgets = the add_widget() catalog (name= for its contract + thumbnail); type=helpers = python-pptx helper signatures. type=themes + an uploaded theme_id -> that template's branded FURNITURE layouts (its own cover/agenda/divider/closing slides + fill schemas + previews) — render via create_slide(form=template_layout, theme_id, data={layout, fills}).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSemantic search across all variants; returns ranked form/variant matches with scores.
topNoMax results (with type=themes).
nameNoWidget name (with type=widgets): returns the full contract + worked example + a rendered thumbnail.
typeNoOmit for the form overview (or family=/q= to drill in). schema (+family, optionally +variant=) = schema-first discovery: family only returns a compact variant chooser; family+variant returns that variant's exact machine-readable payload contract (JSON Schema for data, capacity limits, intent-field mapping, examples). widgets = the add_widget() catalog for mode=code (name=<widget> for its contract). helpers = python-pptx helper signatures. themes = list themes (built-in + your saved); Default appears first and can be omitted, or use any returned id as theme_id. brands = your brand kits with versions (theme_id=<slug> renders the default version, <slug>@<n> pins n).
limitNoMax results (with q= or family=).
familyNo
offsetNoPagination offset (with q= or family=).
sourceNoTheme source filter (with type=themes). Default all (built-in + your saved).
variantNo
prior_idNo
theme_idNoWith type=themes: an uploaded theme's id -> its branded furniture layouts + fill schemas (render via create_slide(form=template_layout)).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish a read-only, idempotent, non-destructive profile, lowering the burden. The description adds useful behavioral texture: ranked search, variant one-liners, example payloads, non-sendable choosers, and the fact that theme results are furniture layouts meant to be rendered via create_slide. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense and front-loaded with the core browsing behavior, then organizes the many modes with delimiters and arrow syntax. The 'Free.' fragment is slightly ambiguous and the code-path section is packed, but every element mostly earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex browse tool with no output schema, the description is remarkably complete: it enumerates every major entry path, describes the shape of results for each mode, warns about the non-sendable contract case, and connects theme results to create_slide. An agent has enough to invoke the right mode and interpret what comes back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage ist 73%, so description must contribute for family, variant, and prior_id. It does partly: it explains family selects a form, variant/prior_id yield example payloads, and type=schema combinations produce chooser/contract outputs. However, family/variant/prior_id are still only implicitly defined, and some param combinations are left for the agent to infer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Browse the PowerPoint slide catalog') and sets it apart from sibling creation/management tools. The description immediately signals this is the discovery/exploration entry point, and the mode list clarifies what 'browse' means in practice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit mode-by-mode usage guidance ('No args -> ...', 'family=<form> -> ...', 'q=<text> -> ...') and calls out when a result is not a sendable contract. It also names the relevant sibling (create_slide) for rendering returned theme layouts, so the agent knows the boundary between exploration and execution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_deckCreate Multi-Slide DeckAInspect

Create a complete PowerPoint presentation (.pptx): a whole multi-slide deck, native and editable, in one call. slides is a list of create_slide intents (same form menu + data shapes — see create_slide). Slides fill in parallel and merge into one themed PPTX with page numbers. Include furniture: a hero_statement cover, section_divider breaks, and a closing (hero_statement variant=contact_closing via blocks-free slots).

BLOCKED ($0)? If an error has can_autofix:true, merge its patch into the args at patch_target. Unchanged retries repeat the block. New form: browse_catalog(type=schema) first.

Also: mode=assemble merges existing slide job_ids as-rendered (free; theme_id does NOT re-theme them — render with create_deck(slides=[…], theme_id=…) for a unified theme); mode=fork clones a deck (free). Polling: deck_id == job_id — manage_account(action=job, job_id=).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault render. assemble/fork are free deck plumbing.
nameNo
titleNoDeck title (PowerPoint metadata)
slidesNoeach item is a create_slide intent (same form menu, typed fields, and data shapes as create_slide).
deck_idNoExisting deck ID (for mode=fork, or mode=render to update)
dry_runNoDeck-level free pre-flight (cost:0, NO render/PPTX): returns a per-slide validation manifest [{i, form, fidelity_forecast, status, errors}] so you can fix bad slides before spending. A deck is one artifact, so validation is all-or-nothing — put dry_run here, not on individual slides. Resend without dry_run to render.
imageryNoDeck-level imagery mode, inherited by every slide (a slide-level imagery wins). See create_slide.imagery.
job_idsNoSlide job IDs to merge (for mode=assemble)
logo_idNoOptional brand logo (from upload_asset purpose=logo) applied as chrome to every content slide in the deck.
stylingNoDeck-level topical-design switch, inherited by every slide (a slide-level styling wins). See create_slide.styling.
languageNoTarget language
theme_idNo
directionNoDeck-level writing direction, inherited by every slide (a slide-level direction wins) — set it once for an Arabic/Hebrew deck. Covers/dividers rendered on an UPLOADED brand template keep that template's own layout direction. See create_slide.direction.
imagery_tagNoDeck-level subject declaration, inherited by every slide (a slide-level imagery_tag wins). Declare it once for a whole deck. See create_slide.imagery_tag.
force_renderNoIGNORED (deck-level). pptx_url is always returned when at least one slide rendered, so there is nothing to force. Still meaningful on create_slide.
allow_partialNoIGNORED. A deck bills per rendered slide and always returns its pptx; slides that failed or rendered badly are free and named in repair_actions.
strict_policyNoOptional CI-style gate for automated report pipelines. dry_run returns policy_result; render returns rejected/cost:0 if the policy fails.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotation hints, the description carries the full transparency burden and delivers extensively. It discloses parallel rendering and merging, billing concepts ($0 blocks, free modes), retry behavior with can_autofix patches, and polling mechanics (deck_id == job_id). It also flags ignored parameters like force_render and allow_partial, and explains dry_run's all-or-nothing validation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but it packs substantial necessary information for a 17-param, multi-mode tool. The content is organized into logical segments: core purpose, blocking/retry, alternate modes, and polling. While dense and not perfectly structured, every sentence earns its place and there is no redundant re-listing of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is remarkably complete for a tool with no output schema and 17 parameters. It covers return values (pptx_url, repair_actions, dry_run manifest), job polling, billing, mode-specific behavior, and inheritance rules. It even explains how to handle blocked retries and points to browse_catalog for schema exploration, giving an agent everything needed to invoke the tool correctly in varied scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (88%), so the baseline is 3, but the description adds extra context beyond the schema. It explains that slides are create_slide intents with the same data shapes, that deck-level settings are inherited unless slide-level overrides exist, and that dry_run should be placed at deck level rather than on individual slides. These clarifications help avoid misuse despite the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Create a complete PowerPoint presentation (.pptx): a whole multi-slide deck, native and editable, in one call,' which clearly states the core function with a specific verb and resource. It distinguishes create_deck from its sibling create_slide by emphasizing the multi-slide, whole-deck scope, and further clarifies alternate modes (assemble, fork) that repurpose the tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says slides are a list of create_slide intents and points to create_slide for the form, establishing expected usage. It gives clear when-to-use guidance for mode=assemble and mode=fork, and advises returning to browse_catalog for schema discovery when blocked. This provides both alternatives and exclusions (e.g., theme_id does NOT re-theme assembled decks).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_slideCreate or Inspect a SlideAInspect

Create one PowerPoint slide (.pptx, native, editable) from a structured intent in ONE call: pick a form from the menu and put your content in the typed fields (placed on the slide as given), or pass a brief and let the server route it. Fields tagged (per-form) bind only where the form has that slot — ignored-with-warning elsewhere; see each form's binds in browse_catalog.

BLOCKED ($0)? If an error has can_autofix:true, merge its patch into the args at patch_target. Unchanged retries repeat the block. New form: browse_catalog(type=schema) first.

FORM MENU: agenda_list: an ordered list of sections/topics or learning objectives to walk through bar_rank_chart: bars comparing magnitudes across categories calendar_grid: events on a real calendar - week planner (day x hour) or month grid with event chips (data.events) card_grid: several equal, unordered peer blocks (features, options, pillars, a concept's defined parts, rules/guidelines/common mistakes) case_story: one named story told as evidence: challenge, action, measured result comparison_matrix: options x criteria grid: data.columns x data.rows cycle_flow: a closed loop of ordered stages where the last feeds the first (recurring process) data_table: a plain factual table of records by fields editorial_split: two side-by-side halves: contrast (before/after, problem/solution) or copy/numbered steps beside a picture (image_src) exercise_prompt: an exercise/practice/discussion prompt: instruction + hints; optional problem items with blank answer boxes funnel: a quantity narrowing through ordered stages gantt_plan: tasks as bars across named periods on a schedule grid gauge_score: one score on a dial against a scale hero_statement: a statement slide: covers (typographic/image/exec), from->to/thesis-quote transitions, statement/contact/next-steps closings; supporting points -> takeaway_stack, contacts -> data.contacts, next steps -> data.next_steps hub_spoke: one central element with several elements connected around it image_story: a picture shown WHOLE (uncropped) + prose, or a 1-6 picture/placeholder gallery (data.images); points beside a picture -> editorial_split kpi_metrics: a metrics dashboard: headline metric cards; data.sections (Highlights/Risks/Asks) makes it an exec summary / QBR snapshot layer_stack: stacked layers where higher sits on, and depends on, lower linear_flow: ordered process stages read left to right (or inputs to process to outputs) maturity_staircase: ascending levels climbing to a higher state nested_magnitude: nested containment - each level contains the next org_structure: a reporting hierarchy / org tree position_map: items placed by two axes - named 2x2 cells or scatter positions pyramid_hierarchy: a triangle of stacked tiers, foundation to apex ramp_curve: a continuous rising wedge split into phases - effort or value accumulating over time section_divider: a section-break: big section number + title; blocks = agenda progress chips (emphasis=primary = current) segment_wheel: a wheel of equal segments around a center - peer categories in the round (composition, not flow) status_dashboard: initiatives/workstreams tracked by status, owner, progress strategic_fork: one origin splitting into two mutually exclusive paths, one recommended swimlane_flow: actor/function lanes by phases, task cells, handoffs across lanes swot: the four-quadrant strengths / weaknesses / opportunities / threats grid system_flow_map: architecture/system components: panels with internals (edges optional) or nodes wired by directed arrows takeaway_stack: a title plus a few supporting points, each with one line of detail (executive summary, key findings); optional closing ask timeline_roadmap: milestones/phases laid out along a time axis trend_chart: one or more series plotted over time value_chain: support bands over primary activity columns flowing into a goal arrowhead (data.support = the bands) visual_showcase: one dominant screenshot/image with numbered callouts pointing into it waterfall_bridge: a start value bridged to an end value by plus/minus contributions

Exact per-form data shapes: browse_catalog(type=schema, family=) — the generated,always-current JSON Schema + a worked example. (List-shaped forms take blocks: [{"label","sub","detail":[str],"emphasis"}]; structured forms take typed data.)

Escape modes: mode=code (caller-supplied python-pptx in sandbox, $0.05 — use for forms the menu cannot express: calendars, custom diagrams); mode=status (poll a job, free). Image-led asks (photo covers, full-bleed visuals): hero_statement + image_prompt (+$0.05) or image_src.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoPython code defining build(prs). Canvas 13.33×7.5", coords in inches. Pre-imported: Presentation, Inches, Pt, Emu, RGBColor, MSO_ANCHOR, PP_ALIGN. Helpers: add_text_box(slide, left, top, w, h, text, font_size=12, bold=False, color=None), add_box(slide, left, top, w, h, fill_color=None, line_color=None, corner_radius=0.05), add_icon, add_image (src = path or https://); theme_color(name) → RGBColor. add_widget(slide, name, x, y, w, h, params=|content=, theme=THEME) draws board-grade SSG widgets/charts (cards, waterfall, gantt, funnel…) — names via `browse_catalog(type=widgets)`. Use font_size=, not size=; use fill_color=, not fill=. When chrome is supplied, use `build(prs, slide)` — chrome is pre-rendered. Helper signatures: `browse_catalog(type=helpers)`.
dataNofamily-specific payload — see the documented shapes
dateNodate callout (per-form).
formNothe form menu pick (see description) — the routing field
modeNoDefault: structured intent / brief. safe = validate-then-render in ONE call (renders + bills only if faithful; else $0 invalid report with the fix — recommended, no dry_run round-trip). code = python-pptx escape. status = poll.
nameNo
waitNoAI-image slides block ~10-15s; `false` returns a job_id to poll, not block (mode=brief).
briefNoprose fallback / extra context for fills
blocksNolist: [{"label","sub","detail":[str],"emphasis","icon":lucide-name,"metric":{value,label}}]
detailNoResponse verbosity. Default `compact`: status, form/variant, fidelity (verbatim|mixed|ai_completed), warnings[]/errors[] (only when present), urls, cost. `full` adds a debug object (engine internals, verify events, latency buckets).
job_idNoPrevious job ID (for mode=status, or mode=code patching)
metricNo
verifyNomode=code tier. Default `lint`: static geometry linter (overlap/off-canvas/zero-size) + composer content validators — no LLM. `lint+vlm` adds a VLM second-look (~+3s) and makes a blank/contentless render a $0 error, not a billed warning. `off` skips checks.
cautionNoone-line risk / caveat callout (per-form).
contextNoone-line subtitle/standfirst
dry_runNoFree pre-commit check (intent or mode=code), cost:0, no PPTX: status + warnings/errors, plus fidelity_forecast (verbatim|mixed|ai_completed|would_reject) and which fields bind vs get authored. Fix errors, re-call with dry_run=false to render.
imageryNoCover/section-divider imagery: photo (default — curated stock photo, half-bleed), wash (abstract color wash), off (typographic only). Content slides are never photo-decorated.
logo_idNoOptional brand logo (from upload_asset purpose=logo) drawn as chrome on content slides; covers/section breaks stay clean.
stylingNoTopical design on default themes (default on; the note names it): designed cover + a subject palette (from imagery_tag, or the brief). clean = neutral. Pins never take it.
subjectNocentral entity for forms that have one — hub label, org root, section #, fork origin, media label (per-form).
variantNopin a specific variant within the form (list them via browse_catalog). Unknown variant -> rejected ($0) with the valid list; set allow_variant_fallback to render the family default instead.
headlineNothe assertion-style slide title
languageNoTarget language (default: en)
takeawayNooptional verdict band (per-form). Put the so-what in the headline; add only for a verdict the title can't carry — not every slide.
theme_idNoOptional theme id from browse_catalog(type=themes). Omit for Default (slideforge_standard).
directionNortl typesets AND mirrors the slide right-to-left (Arabic/Hebrew). Never inferred — pass it.
highlightNoone-line emphasis callout (per-form).
image_srcNohttps URL | asset:<id> for image-bearing forms
imagery_tagNoSubject/industry: steers cover/section photos AND the topical palette. Omit = general; `education` = teaching.
min_font_ptNoBinding type floor for prose (exhibit furniture has its own). Type grows to meet it; content that can't fit is a $0 min_font_not_met naming the size needed. Typical: 12.
source_noteNosource / footnote line (per-form).
force_renderNoOn completed_with_errors, pptx_url is null (broken slide). Set true to get it anyway. No cost/status effect.
image_promptNogenerate an image when no image_src (+$0.05)
replacementsNoString replacements on loaded code [{old, new}] (for mode=code with job_id)
variant_policyNoRouted-variant maturity policy: production_safe = if the ROUTED variant is draft/beta, render the family's demo-safe sibling instead (warning names both). Never overrides an explicit variant=. Default best_semantic_match.
include_previewNoInline-preview PAYLOAD only (not execution). Default: default (768px). none omits the inline image and returns just the URLs — it does NOT change sync/async. Use `wait` to control execution.
quality_profileNoThresholds layout.presentation_ready is judged against (executive strictest). Measurement only — never blocks a render or changes cost.
allow_truncationNoMore items than the form holds blocks (it would drop your data); the response names the dropped count + a suggested_split. true renders the capacity subset (fidelity=verbatim_truncated). Default false.
form_descriptionNo
allow_fabricationNoBrief mode only: a bare brief on a DATA form (kpi/funnel/comparison/…) returns would_fabricate at $0 rather than INVENT numbers. Send typed fields for verbatim, or true to let the brief author them (fidelity=ai_completed). Default false.
allow_low_confidenceNoBrief routing only: by default a brief that doesn't match a form clearly returns status=needs_confirmation + candidates at cost:0 (no guessed render). Set true to render the top guess and bill it. Default false.
allow_variant_fallbackNoIf the pinned variant is unknown, render the form's default variant (with a warning) instead of rejecting. Default false.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses blocking/autofix behavior, cost thresholds ($0 invalid, $0.05 code, +$0.05 image), dry-run and polling behavior, and conditionality such as 'renders + bills only if faithful'. It goes well beyond the sparse annotations and matches them (no contradiction).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is heavily front-loaded with a dense first paragraph, and the menu/escape-mode sections are clearly organized. It is long by necessity given 37 forms, but a few interstitial notes (e.g., 'the generated,always-current JSON Schema') add verbiage without much semantic weight, so it is not maximally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 42-parameter tool with no output schema, it covers the essential invocation workflow: forms, data shapes, per-form catalog lookup, modes, error recovery, costs, and image handling. Any return-value details are already captured by the detail/verify parameter descriptions in the schema, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description supplies the entire form menu semantics that the schema's form parameter only points to, plus the blocks-vs-data split and the meaning of mode=code/status. With 93% schema coverage the baseline is 3, but this adds genuinely necessary routing semantics well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states the exact operation: 'Create one PowerPoint slide (.pptx, native, editable) from a structured intent in ONE call', with explicit form/brief paths and modes. 'One ... slide' and 'inspect' via mode=status distinguish it from sibling tools like create_deck and plan_slide without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing rules: choose a form or pass a brief, consult browse_catalog for new forms and exact data shapes, use mode=code when the menu cannot express the request, and use mode=status to poll. It does not explicitly contrast sibling tools such as create_deck or plan_slide, so it misses the full cross-tool when-to-use comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_accountAccount & HistoryA
Destructive
Inspect

SlideForge account for PowerPoint generation: balance, billing, job history, feedback, data controls. All free. Actions: status (balance+plan), usage (spend breakdown), jobs (history), job (single job detail — slide jobs include quality_warnings[]; deck jobs add slides_completed/slides_failed/failed_slides[]), feedback (submit), feedback_list (read your reports back: 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 an owned job — when a result carries no inline URL), security_status (retention + access-model + deletion posture), delete_job (irreversible: job + versions + files) Action delete_asset irreversibly deletes a user-owned uploaded/generated image asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoHTTPS endpoint to receive events (for action=webhook_add). Must be public HTTPS (private/loopback rejected).
daysNoLookback period (for action=usage, default 30)
slugNoReport slug (for action=reports — returns one report's full metadata; omit to list all).
limitNoMax rows (action=jobs default 10; action=feedback_list default 50, max 100)
actionYesOperation (required). feedback → report a defect or request against a render; pass job_id so it is actionable, and ask the user before filing. feedback_list → read YOUR OWN filed reports back, with `status` and the `resolution` written when one was acted on: check it before working around a defect you reported earlier, because it may already be fixed. brand_report → the per-token fidelity report for one 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 report types; webhook_add registers a push endpoint instead of polling — see the url/events props. delete_job is irreversible. delete_asset is irreversible for user-owned image assets.
amountNoUSD top-up amount (for action=topup, default 10, min 10, max 1000). Volume bonus: $50→+10%, $100→+15%, $200→+20%.
detailNoFor action=status only: default false masks identity fields; true returns full email/user_id diagnostics for the authenticated user.
eventsNoEvent types to subscribe to (for action=webhook_add; default all): job.completed, job.failed, deck.completed, deck.partial, deck.failed.
job_idNoJob ID (for action=job, action=download_url and action=delete_job)
statusNoFilter — action=jobs: queued/generating/complete/failed; action=feedback_list: open/resolved
messageNoWhat went wrong or what you want, in the user's own words (for action=feedback).
asset_idNoImage asset ID (for action=delete_asset). Logos are content-addressed/shared and are not deleted by this action.
categoryNoFeedback category (action=feedback to file under it, action=feedback_list to filter by it). The first nine are slide-quality categories — pair them with job_id.
severityNoFor action=feedback: `bug` = it is broken, `quality` = it rendered but reads poorly, `suggestion` = a request. Defaults to suggestion, so file real defects explicitly or they are triaged as wishes.
webhook_idNoWebhook subscription id (for action=webhook_remove / webhook_test).
include_previewNoPreview (for action=job)
include_childrenNoFor action=jobs: include deck child slides (each carries parent_deck_id) so a deck's slides are discoverable by listing. Default false (parents only). Deck rows roll child cost up to the deck.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only mark destructiveHint=true, so the description carries the transparency burden and handles it well. It discloses irreversibility of delete_job and delete_asset, Stripe checkout/wallet credit behavior, webhook push semantics, short-TTL download URLs, feedback resolution status, shared logo assets not being deleted, and deck child-slide rollup behavior. This is substantial behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description has no fluff and is front-loaded with the tool's purpose. However, it is a long run-on paragraph of semicolon-separated action summaries, and the final delete_asset sentence is detached awkwardly. A bulleted structure would be easier for an agent to scan without losing density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 18 actions, 17 parameters, no output schema, and sparse annotations, the description is quite complete. It names key output differences, safety caveats, and action-specific conditions. It does not fully detail every action response shape, but combined with the rich input schema, an agent has enough to invoke the correct action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful action-level semantics not fully present in the schema, such as job detail differences for slide vs deck jobs, download_url's purpose, status meaning, and delete_asset's ownership constraint. That raises it to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource scope: 'SlideForge account for PowerPoint generation: balance, billing, job history, feedback, data controls.' It enumerates the actions, which distinguishes it from the sibling creation/catalog tools. It loses a point because it is a broad polymorphic tool rather than a single-verb action, so the purpose is clear but not maximally crisp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage triggers for several actions: use topup 'when a render is refused for balance', download_url 'when a result carries no inline URL', webhooks 'instead of polling to terminal', and feedback_list to check whether an earlier report was already resolved. It does not give an overall when-to-prefer-this-tool statement, but the account-management scope is distinct from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_slidePlan a Slide - Form + Variant CandidatesA
Read-onlyIdempotent
Inspect

Plan a PowerPoint slide before rendering (free): send a short brief, get ranked candidates + a separated verdict — route (which slide: selected|needs_confirmation|ambiguous), input (can it render: ready|extractable_from_brief|needs_structured_data) and next_action. Free (one embedding). Then call create_slide with the chosen form(+variant). route.confidence: calibrated = measured P(route correct) with label high/medium/low cut on it; retrieval_score/retrieval_margin = the raw family-aggregated classifier values (not probabilities; margin can be negative when families contest); source = classifier | structural_router (LLM-rescued). candidate_margin on the top candidate = literal gap between the two shown scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
briefYes
escalateNoDefault true: on a low-confidence route the plan runs the SAME LLM rescue create_slide would (small COGS on that tail only), so plan and create always agree. Set false for a classifier-only, fully free plan (response then flags will_escalate + create_slide_behavior).
variant_policyNoproduction_safe: if the top routed variant is draft/beta, the family's demo-safe sibling leads and route reports both best_semantic and best_production_safe.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly/idempotent, and the description adds significant behavioral context: route.confidence is a calibrated probability, retrieval scores are raw classifier values, and escalate ensures plan/create agreement. This goes far beyond the annotation hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured: it front-loads the purpose, then explains response fields and the relationship to create_slide. No wasted sentences, though the level of detail is high.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description thoroughly documents the response format (route, input, next_action, confidence, scores, source) and the escalate behavior. It also connects to the larger workflow, making the tool's usage complete despite the missing output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers escalate and variant_policy but omits descriptions for brief and top. The description partially compensates by calling the brief 'short' and implying it is a slide brief, but it never explains what 'top' controls (likely number of candidates). At 50% coverage, the gap is not fully bridged.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: 'Plan a PowerPoint slide before rendering' and details the output (ranked candidates, route/input/next_action). It distinguishes itself from the sibling create_slide by explicitly instructing to call create_slide afterwards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear when-to-use guidance ('before rendering'), an explicit next step ('Then call create_slide'), and explains the free tier ('Free (one embedding)') and escalate behavior. This effectively tells the agent when to invoke plan_slide versus the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

translate_deckTranslate PPTXAInspect

Translate a PowerPoint (.pptx) deck preserving all formatting. $0.02/slide. Supports 32 languages (Latin, Cyrillic, Greek scripts). Provide job_id (from a previous create_slide/create_deck), pptx_url, or pptx_base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoJob name
job_idNoSource: previous slide/deck job ID (preferred — no file transfer needed)
pptx_urlNoSource: HTTPS URL to .pptx
pptx_base64NoSource: Base64-encoded .pptx (max ~10 MB)
concise_modeNoPrefer shorter translations for tight text boxes
include_notesNoTranslate speaker notes (default false)
include_tablesNoTranslate table cells (default true)
include_previewNoWait+embed preview (default=wait)
source_languageNoSource language or 'auto' (default auto)
target_languageYesTarget language (required)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful context beyond annotations: cost ('$0.02/slide'), language scope ('32 languages (Latin, Cyrillic, Greek scripts)'), and formatting preservation. The annotations are all false, so this extra context is valuable for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences, front-loaded with the core purpose, followed by cost, language support, and input sources. Every sentence contributes unique information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with no output schema, the description covers the essential invocation context: purpose, cost, supported languages, and source alternatives. It doesn't describe return values, but the rich schema descriptions and cost details make it reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's mention of source options mirrors schema descriptions rather than adding new semantic meaning; it doesn't elaborate on parameters like concise_mode or include_notes beyond what's already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Translate a PowerPoint (.pptx) deck') and a key differentiator ('preserving all formatting'). This distinguishes it from siblings like create_deck and create_slide, which focus on creation rather than translation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit input options ('Provide job_id (from a previous create_slide/create_deck), pptx_url, or pptx_base64') and references prior tools, implying a workflow. It doesn't explicitly state when not to use, but no competing translation sibling exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_assetUpload or Generate AssetAInspect

Upload assets for PowerPoint (.pptx) generation: company template, logo, image, or document — or AI-generate an image.

Purposes: • logo — company logo for chrome (PNG/JPG/SVG, max 5MB) → logo_id • image — image for the Image component (max 10MB) → asset_id • theme — company template PPTX → theme_id; slides with it render NATIVELY on the template (masters/layouts/chrome) • 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 slides; pass target_language to also translate • recreate — image OF a slide → editable PPTX slide ($0.10; honest annotate/preserve fallback, refusals free). Use image to just place a picture

Files >3MB (pdf/translate/theme) — and recreate on chat hosts — omit data: a drop-zone appears in the result card; bytes never pass through the agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoBase64-encoded file content. Required for logo/image/theme/translate. Optional for pdf — omit to get a drop-zone (recommended for files >3MB).
sizeNoImage dimensions for generate_image (default 1024×1024)
modelNoExplicit gateway model ID. Overrides `quality`.
promptNoImage description (required when purpose=generate_image)
purposeYesAsset type (required). brand = a .pptx/.potx corporate template imported as your brand kit (theme is the same thing under its old name).
qualityNodraft = Flux Schnell. balanced (default) = Gemini Flash Image. premium = Imagen 4 Fast. Overridden by `model`.
filenameNoOriginal filename (for type detection)
positionNoLogo position: top-left / top-right / bottom-left / bottom-right
theme_nameNoName for extracted theme (purpose=theme)
target_languageNoRequired for purpose=translate. Optional for purpose=pdf — chains pdf→pptx→translate in one call.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are uninformative (all false), so the description carries the full burden and delivers richly: per-purpose pricing ($0.05, $0.02/slide, $0.10), 'render NATIVELY on the template (masters/layouts/chrome)', the drop-zone behavior where 'bytes never pass through the agent', and the recreate fallback ('annotate/preserve fallback, refusals free'). This goes far beyond what the schema or annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded intro sentence, one bullet per purpose, and a single closing paragraph for size and byte-handling notes; every sentence carries distinct information. The minor typos in the recreate bullet ('annotate/preserve fallback, refusals free') are the only blemish on an otherwise tight structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, 8-enum-value tool with no output schema and no informative annotations, the description covers outputs (IDs), costs, constraints, and special behaviors (native template rendering, chained pdf→translate, drop-zone security). The only omission, the 'brand' enum synonym, is already handled in the schema, so nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already explains purpose-conditioned parameters (target_language for translate, model overriding quality). The description adds what the schema lacks: max sizes (logo 5MB, image 10MB), costs per purpose, and the omit-data drop-zone behavior. Strong supplement, though the schema still carries substantial per-parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource — 'Upload assets for PowerPoint (.pptx) generation' — and then enumerates each purpose with its returned ID and cost (logo→logo_id, theme→theme_id, translate→deck job_id). The detailed purpose list makes the tool's boundary unambiguous against siblings like create_deck, translate_deck, and browse_catalog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose bullets function as a routing table — 'Use `image` to just place a picture' explicitly steers away from recreate, and the '>3MB' note gives a concrete condition for omitting `data`. However, it never names the translate_deck sibling or states when to prefer upload_asset(translate) over it, leaving one ambiguous branch.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.6/5.0
Disambiguation5/5

Each tool maps to a distinct phase or responsibility: browse_catalog for exploration, plan_slide for pre-render planning, create_slide/create_deck for single vs multi-slide generation, upload_asset for asset intake, translate_deck for translation, and manage_account for account/job operations. No two tools appear to do the same thing.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores (browse_catalog, create_deck, create_slide, manage_account, plan_slide, translate_deck, upload_asset). This uniform convention makes the set predictable and easy to navigate.

Tool Count5/5

Seven tools provide a well-scoped coverage of the PowerPoint generation workflow—from browsing and planning to creating, asset management, translation, and account control—without unnecessary duplication or bloat.

Completeness5/5

The tool surface covers the full lifecycle: exploration (browse_catalog), planning (plan_slide), single/multi-slide creation (create_slide/create_deck), asset upload/generation (upload_asset), translation (translate_deck), and account/job management including deletion and webhooks (manage_account). No obvious dead ends or missing operations.