Search or filter the layout catalog to find a specific layout. Returns metadata only, no HTML. Each entry has position (opener/middle/closer: its role in a deck), when_to_use and when_not_to_use: read them to check the layout fits the content before choosing it. Filter by position to fill a slot of the story, e.g. position "closer" for the last slide. Also the tool for "what is new", "any new layouts?", "what got added since last month" - pass `since` and it returns only what landed after that date. If the user asked for a whole deck rather than one slide, call suggest_deck first instead of this.
輸入參數langlimitquerysincecategoryposition
Search or filter the theme catalog. Returns metadata and key colors only, not the full CSS. With an API key, the user's own saved themes (My Themes, id "custom:...") come last with custom: true; their ids work anywhere a theme id does.
輸入參數moodscheme
Return one layout as a ready-to-use, self-contained document: HTML, theme CSS, and its slot definitions. Call this once the user knows which layout they want, or with ids returned by suggest_deck.
輸入參數id必填langtheme_id
Return one theme in full: its complete CSS and design tokens.
輸入參數id必填
get_starter_kit
Get starter kit
Call this when joining several fetched layouts into one deck file. Requests like "merge these into one file", "bundle it as a deck", or "make it one HTML" mean this tool. Returns the base CSS, assembly rules, spacing tokens, and a viewport snippet for standalone viewing.
無需輸入參數。
Compose a deck and return a preview link the user can open in the browser right away. The user sees what the finished deck looks like without a single file being generated. Use this for requests like "make me a pitch deck", "I need a sales deck", "10 slides for an investor update", "put together a product overview", or "show me a deck outline" - anything where the user has a topic but has not picked layouts yet. ALSO use it when the user already has layouts in hand - "이 레이아웃들 모아서 프리뷰 만들어줘", "combine these layouts into a preview", "추천 프리뷰 만들어줘", "show these together as a deck" - pass them as layout_ids and it returns ONE deck preview link for the whole set. Never answer that kind of request with a list of individual layout links: one deck preview is the deliverable. Returns one theme + a slide order + the preview link, plus a `clarify` question to put to the user so the composition and theme are their call, not a guess. Always pass the preview link through to the user verbatim, ask clarify.question with its options, and wait for the answer - then call this tool again with deck_id / theme_id as clarify.answer_with says. Do not start generating files while a clarify question is unanswered. Once it is settled, fetch each layout id with get_layout, then call get_starter_kit to join them into one deck.
輸入參數tonedeck_idpurpose必填theme_idlayout_idsslide_count
Fill one layout with your text and get back a finished, self-contained HTML document (theme, base and contract CSS inlined) that renders correctly when opened. Use it instead of get_layout when you already know the text: you do not assemble CSS or edit the markup yourself. Input: layout_id, optional theme_id (use the same one for every slide of a deck), slots, lang. Returns { layout_id, theme_id, html, warnings[], ok }. warnings[] lists missing required slots, text over max_chars, unknown slot ids and sample copy left behind, each with a fix; read them and call again after correcting, do not hand the user a slide that has errors. To validate without rendering use check_slots.
輸入參數langslots必填theme_idlayout_id必填
Validate slot text against a layout before rendering. Nothing is rendered and no CSS is returned, so it is cheap: run it on every slide you wrote, fix what it reports, then call render_slide. Input: layout_id and slots (slot id to text), the same as render_slide. Returns { layout_id, ok, error_count, warning_count, issues[] }. Each issue has slot, code (unknown_slot, missing_required, empty_required, too_long, not_filled, blanked), severity ("error" must be fixed, "warning" is a quality note) and a one-line fix. ok is true when there are no errors.
輸入參數slots必填layout_id必填
Turn a deck into a downloadable .pptx file. Requests like "make it a PowerPoint", "PPT로 뽑아줘", or "export this deck" mean this tool. Takes the layout ids and the text for each slot, and returns a signed download link. Coordinates come from our measurements, so the file matches what the gallery shows, but the boxes are fixed, so text longer than slots[].max_chars will be clipped.
輸入參數themeslidesembed_fontstemplate_id
save_template
Save template
Save a deck as a named template in the user's My Templates so it can be reused later. Requires a Pro account; without one the call fails and nothing is saved. Use it after you have built a deck the user wants to keep, for example from suggest_deck. Input: name, optional theme_id (a catalog theme id or custom:<uuid>), and slides as [{layout, slots}], the same shape export_pptx takes. A template holds 1 to 25 slides. Returns template_id, url (the template's page), slide_count, version (use it as expected_version in update_template), overflow[] (slots whose text is longer than max_chars) and unknown_layouts[]. Pass owner "team" to save it to the user's team instead of their own templates. Deleting is not available here, only on the web. Errors: pro_required, slide_limit, template_limit (the account already has the most templates it can hold), unknown_theme, invalid_input.
輸入參數name必填ownerslides必填theme_id
list_templates
List templates
List the templates the user saved in My Templates, and those of the team they belong to: id, name, owner ("personal" or "team"), slide_count, theme_id, source, updated_at and version. Team templates also have created_by, review_state and unresolved_feedback (pin comments waiting). Use it to find a template the user refers to, and to read slide_count before appending with update_template. Needs an API key; works on any plan.
無需輸入參數。
Return one saved template: name, theme_id and slides as [{id, layout, slots, objects, overrides?}], plus each slide's slot definitions with max_chars. Use it to fill the same structure with new text, then save with update_template or export with export_pptx(template_id), both of which need Pro. To place or change only the objects of one slide, use add_objects, update_objects and remove_objects. Teammates' team templates open here too; those also return new_feedback (open pin comments). Needs an API key; reading works on any plan.
輸入參數id必填
update_template
Update template
Change a template the user already saved. Requires a Pro account; without one the call fails and nothing is changed. Pass the template id and any of: name, theme_id, slides (replaces all slides), or append_slides (adds slides to the end). A template holds at most 25 slides. If the result would be more than 25, nothing is changed and the response is a slide_limit error that includes how many slides still fit. Call list_templates first to read slide_count when you plan to append. The response has the same fields as save_template. Deleting is not available here, only on the web. Errors: pro_required, not_found, slide_limit, conflict (the template changed since expected_version, or kept changing during an append; nothing was saved), unknown_theme, invalid_input.
輸入參數id必填nameslidestheme_idappend_slidesexpected_version
List the images the user uploaded to their media library on the web: id, name, width, height, aspect_ratio (width/height), bytes, mime and created_at, newest first, plus used_bytes. Pass an id to add_objects to place the picture on a slide. You cannot upload an image or fetch one from a web address; if the picture you need is missing, ask the user to upload it to their media library on the web. Pass scope "team" to list the team library instead (images every team member can use in team templates). Needs an API key; works on any plan.
輸入參數scope
Add text boxes and images on top of one slide of a saved template, up to 50 per call and 50 per slide. Requires a Pro account. Use this instead of update_template to place objects: it never touches slots, other slides or other objects. Each item is {type:"text", text, ...} or {type:"image", asset, ...}; position and size are optional (a text box lands near the middle, an image is centered and fitted). Coordinates are pixels on a 1920x1080 slide and are kept inside it. Colors are theme tokens, not hex. Images come only from list_media ids. Set behind:true to put an object under the layout's own title and text (a background picture behind the default title); it is hidden wherever a layout card or panel has a solid fill. All items are added or none. Returns the slide's objects with their ids and the new version. Errors: pro_required, not_found, conflict (read again with get_template and retry), invalid_input.
輸入參數objects必填slide_id必填template_id必填expected_version
update_objects
Update objects
Change objects already on a slide, by id: position, size, rotation, text, text style, the image's alt text or picture, stacking order, and behind (true sends it behind the layout's own elements, false brings it back in front). Requires a Pro account. Send only the fields to change; the style is merged. An image keeps its proportions (send w alone). Up to 50 changes per call, all applied or none. Read ids and the current version with get_template. Returns the slide's objects and the new version. Errors: pro_required, not_found, conflict (read again with get_template and retry), invalid_input.
輸入參數changes必填slide_id必填template_id必填expected_version
remove_objects
Remove objects
Remove objects from a slide by id. Requires a Pro account. The slide, its slots and the other objects stay. Only objects can be removed here; slides and templates are deleted on the web. If any id is not on the slide, nothing is removed. Returns the objects that remain and the new version. Errors: pro_required, not_found, conflict (read again with get_template and retry), invalid_input.
輸入參數ids必填slide_id必填template_id必填expected_version
list_pending_reviews
List pending reviews
List the review requests ("confirm" requests) in the user's team that are waiting on them: templates whose review is requested or needs a new look because the slides changed after an approval, where the user was picked as a reviewer or has not decided yet. Their own requests are left out. Each item has template_id, name, url, state, version, message, requested_by, requested_at, assigned_to_me and unresolved_feedback. Read the notes on a template with get_template_feedback. Deciding a review (approve or send back) is only possible on the web, so ask the user to do it there. Needs an API key; works on any plan. An account without a team gets an empty list.
無需輸入參數。
get_template_feedback
Get template feedback
Read the pin comments teammates left on a team template. By default only unresolved ones on slides the template still has; pass include_resolved to get every thread. Each thread has the comment id, slide_id and slide_number (null if the slide was deleted), slot (the text slot under the pin, if any), body, author, resolved and replies[]. Use slide_id to match a thread to the slide in get_template, then fix the slide with update_template (keep the slide ids). Resolving a thread is done on the web. Only for templates that belong to the user's team: a personal template answers not_team_template, a template they cannot use not_found. Needs an API key; works on any plan.
輸入參數id必填include_resolved