Skip to main content
Glama

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
smartdatabrokers/slideforge-mcp
GitHub Stars
4
Server Listing
Slideforge

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 7 of 7 tools scored.

Server CoherenceA
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.

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.
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)).
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive, so the bar is lower. The description adds valuable context: it's free, progressive, and the type=schema+family response is explicitly 'not a sendable contract'. It also discloses that theme layouts must be rendered via create_slide. This goes beyond the annotation basics without contradicting them.

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 every sentence/semicolon-separated clause carries meaning. It is front-loaded with the core purpose ('Browse progressively') and then enumerates modes. It's longer than typical descriptions, but the tool has 11 parameters and multiple distinct modes, so the length is justified. A bulleted structure would improve scannability, but there is no fluff.

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 the tool's complexity, no output schema, and 11 parameters, the description covers almost all modes and integration notes (e.g., render via create_slide). It does not explicitly mention source/top/limit/offset pagination controls, but these are documented in the schema. The description sufficiently orients the agent for most discovery flows.

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 richly explains parameters that the schema leaves unexplained (e.g., family, variant, prior_id) and clarifies the meaning of type values beyond the schema's enum. It maps q to ranked search, name to widget contracts, and theme_id to branded furniture layouts. Schema coverage is 73%, and the description compensates for the gap, especially for family/variant.

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 tool browses the PowerPoint slide catalog and explains a progressive discovery workflow. It enumerates distinct modes (form overview, family variants, search, schema contracts, widgets, helpers, themes) and distinguishes it from creation/management siblings by focusing on discovery rather than mutation.

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 context for when to use each mode (e.g., no args for overview, family= for variants, q= for search, type=schema for contracts, type=themes for branded layouts). It also points to create_slide as the rendering path for themes. It does not explicitly say 'use this instead of X', but the sibling tools are clearly different in purpose.

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.
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 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) 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 in contrast (before/after, problem/solution) 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-led/exec), from->to / thesis-quote transitions, contact or next-steps closings hub_spoke: one central element with several elements connected around it image_story: a picture shown WHOLE (uncropped) beside/above narrative text - photo story, narrative kpi_metrics: a board of 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: nodes connected by directed arrows that carry the message (data/requests move) takeaway_stack: a few bold conclusions, each with one line of support; 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 the slide right-to-left (Arabic/Hebrew). Layout is not mirrored. 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.
Behavior5/5

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

Annotations are all false, but the description goes beyond them by disclosing billing behavior ('$0.05', 'renders + bills only if faithful; else $0 invalid report'), blocking with can_autofix patches, and the binding rule that unused fields are ignored-with-warning. It also explains dry_run costs and no-PPTX behavior. No contradiction with annotations.

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

Conciseness2/5

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

The description is a multi-paragraph wall topped by a 40-line form menu that largely duplicates what browse_catalog provides. It repeats the blocks format that's already in the schema, and the opening includes a block/autofix note before the form menu, burying the routing guidance. While detailed, it is far from 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?

Given the tool has 42 parameters and no output schema, the description covers the essential operational context: form selection, data shapes, modes (safe/brief/code/status), blocked-render recovery, image handling, and cost/fidelity expectations. It directs to browse_catalog for exact schemas and examples, so an agent can operate correctly without external docs.

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 93%, so baseline is 3. The description adds a cross-cutting rule: 'Fields tagged (per-form) bind only where the form has that slot — ignored-with-warning elsewhere' and clarifies blocks vs data shapes, which enriches parameter understanding. However, much of the param detail repeats schema descriptions, so it doesn't exceed a 4.

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 one PowerPoint slide (.pptx, native, editable) from a structured intent in ONE call', which clearly states the verb, resource, and scope. It distinguishes from siblings by emphasizing single-slide creation and routing through forms, and refers to browse_catalog only as a reference, not as the primary action.

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 explicit when-to-use and alternatives: 'mode=code ... use for forms the menu cannot express: calendars, custom diagrams' and 'New form: browse_catalog(type=schema) first.' It also explains the brief-routing fallback and how to handle blocked renders via can_autofix. This gives clear usage guidance and exclusions.

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), onboarding (capabilities overview), topup (Stripe checkout link; wallet credits automatically), webhooks/webhook_add/webhook_remove/webhook_test (register a push endpoint so you don't poll async jobs to terminal), download_url (mint a fresh short-TTL single-use PPTX download link for an owned job — use when a result carries no inline URL), security_status (retention + access-model + deletion posture), delete_job (irreversibly delete a job + all versions + their 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 jobs (for action=jobs, default 10)
actionYesOperation (required). feedback → report a defect or request against a render; pass job_id so it is actionable, and ask the user before filing. 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 (for action=jobs): queued/generating/complete/failed
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 (for action=feedback). 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.
Behavior4/5

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

Annotations already indicate destructive potential (destructiveHint=true). The description adds crucial specifics: delete_job and delete_asset are 'irreversible', webhook registrations are push endpoints, and download_url mints 'short-TTL single-use' links. It also notes feedback requires asking the user. No contradiction with 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 a single dense paragraph but front-loaded with purpose. Every action has a terse parenthetical explanation. It could be better structured with bullets or separation of destructive actions, but it remains reasonably concise given the breadth of operations.

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 17 parameters and 16 actions, the description covers all actions and hints at output details for some (status returns balance+plan, job includes quality_warnings). The schema covers parameter specifics. No output schema exists, so description partially compensates by mentioning return fields. Missing error/edge-case context, but acceptable for the complexity.

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 baseline is 3. The description adds high-level action context (e.g., 'slide jobs include quality_warnings[]') but does not systematically explain each parameter beyond the schema. It neither compensates nor repeats; it offers marginal extra semantic value.

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 tool's scope: 'SlideForge account for PowerPoint generation: balance, billing, job history, feedback, data controls.' It enumerates specific actions (status, usage, jobs, etc.) and distinguishes itself from sibling tools focused on content creation (create_deck, create_slide). The verb+resource structure is specific and unambiguous.

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 contextual guidance for several actions: webhooks are recommended 'so you don't poll async jobs to terminal', download_url should be used 'when a result carries no inline URL', and topup is implied for balance issues. It does not explicitly state when to avoid this tool in favor of siblings, but the account-management scope is self-evident.

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.
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)
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)
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.
Behavior5/5

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

With annotations all false, the description fully carries behavioral disclosure. It reveals costs ($0.05, $0.02/slide, $0.10), file size limits (5MB for logo, 10MB for image), the drop-zone fallback for large files ('bytes never pass through the agent'), and the recreate fallback ('honest annotate/preserve fallback, refusals free'). These are beyond what the schema or annotations state.

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 front-loaded with a summary sentence, then uses a concise bulleted list for each purpose. Each bullet is information-dense but easily scannable, using bold labels and arrows for outputs. Despite covering seven purposes and multiple edge cases, it remains readable and every sentence contributes value.

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, 7-purpose tool with no output schema, the description covers all major behaviors, special cases, pricing, and parameter interactions. It also supplements the 100% schema coverage with critical operational details (drop-zone for large files, native rendering on templates, fallback behavior for recreate). An agent has enough information to select the correct purpose and invoke the tool.

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?

Although schema coverage is 100%, the description adds high-level purpose-to-parameter mappings that the schema lacks. For example, it specifies that `prompt` is required for generate_image, `target_language` is required for translate, and `data` can be omitted for large pdfs. It also clarifies output IDs (logo_id, asset_id, theme_id, job_id) and acceptable file types (PNG/JPG/SVG) that are not 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 opens with a clear statement: 'Upload assets for PowerPoint (.pptx) generation: company template, logo, image, or document — or AI-generate an image.' It then enumerates seven specific purposes, each with a distinct verb and expected output (e.g., 'logo → logo_id', 'theme → theme_id', 'recreate → editable PPTX slide'). This differentiates it convincingly from sibling tools like create_deck and translate_deck.

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 strong contextual guidance per purpose: translate requires `target_language`, pdf can chain to translation, and recreate explicitly says 'Use `image` to just place a picture' to avoid mis-selection. It also advises omitting `data` for files >3MB and for recreate on chat hosts. However, it does not explicitly compare to sibling tools (e.g., when to use translate_deck instead of the translate purpose), so no explicit exclusions are given.

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

Discussions

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

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.