abort_chat
ChatGPTStops the Slidely operation currently running on a chat, like the stop button in Slidely. Use it when the user asks to cancel, stop, or abandon a build in progress. Finished work is not undone; only the running operation ends.
create_chat
ChatGPTCreates a Slidely chat attached to a presentation. Talking to Slidely and setting the design both work against a chatId — this one, or the one initialize_working_presentation already returned. That first chat is connected for you, so use this only to open an ADDITIONAL chat on a deck, which starts with none of the first one's context.
decide_slide_delete_or_reorder
ChatGPTApplies or cancels the slide deletion or reorder shown on a pending confirmation card. Use it only when the user has explicitly asked you, in this conversation, to answer the card for them; otherwise the user answers it with the card's buttons. A user's request to delete or reorder produces the card; it is not a request for you to answer it. A confirmed deletion removes the slides from the presentation. The call is refused if the card was already answered or a newer message replaced it.
get_presentation
ChatGPTGets a Slidely presentation: its slides in order, recent chats, and a card showing the deck with thumbnails, download, and per-slide actions. When the user reports removing slides, call this again before using slide ids — theirs is the current deck. Set isPptxRequired only when the user explicitly wants the whole deck as a downloadable .pptx you can fetch — it triggers a slow full-deck build, so leave it off otherwise.
get_slide_details
ChatGPTGets the slides a working presentation currently holds — their ids, their positions in the deck, and their image and pptx urls — as plain data with no card. Use it to check the deck's real state, such as confirming which proposed slides were actually added. Pass slideIndexes as deck positions, singly or as ranges, like [1, "3-5", 9]; omitting it returns the whole deck. Fetch the positions you need rather than everything: urls are long and expire. The urls are for giving to the user, not for you — you cannot view them. To inspect or review how slides look, ask through message_slidely instead: the agent examines the renders.
get_turn_result
ChatGPTGets the exact persisted AI result for a Slidely chat turn without starting a new chat turn. While an operation runs, this is how you wait for it: check occasionally, spaced well apart — the result does not arrive faster for more checking.
initialize_working_presentation
ChatGPTCreates a Slidely presentation and returns it with its first chat already connected — use the returned chatId directly; create_chat is only for additional chats. Empty by default. When the user's uploaded .pptx is itself the thing to work on — iterate on this, edit its slides, improve or polish this deck, fix slide 3 — attach it in files: the upload becomes the presentation, with its slides, title, and design. When the deck is only an input — get me the data from this, source material for a different deck, or the look to build in — do not attach it here; it travels on message_slidely or set_design_system instead.
list_design_systems
ChatGPTShows the user the design systems they can build this deck with and opens the picker. Pass the chatId; without it the pick has no chat to attach to. This tool only lists and shows — the picker saves the chosen design itself through set_design_system. The user's pick then arrives as their own message naming the design they chose, so wait for that rather than sending Slidely anything straight after this. Once it arrives the design is already set — do not call this again to confirm it: every call opens another card.
list_presentations
ChatGPTShows the user their Slidely presentations as a library card — the decks they own, those with slides separated from the empty ones, newest first. Use it when the user wants to carry on with something they made earlier rather than start fresh. They pick from the card, and their pick arrives as their own message naming the deck; match that name to its presentationId here and call set_presentation_as_working_presentation with it.
list_skills
ChatGPTLists the Slidely skills available to you, each with the description that says when it applies and the files it contains.
message_slidely
ChatGPTSends a message to the Slidely agent in this chat and returns what came back. Slidely is a stateful collaborator, not a command: a message may return questions, a plan, design previews, slide candidates, or finished slides, so read the reply rather than assuming the work happened. Say what you actually want in the message — the agent reads the message, never a tool name. The first message carries the context Slidely cannot see; later ones carry only what is new, since it remembers the chat. Files the user attaches travel in files and become the chat's uploads; say what they are for. Renders take minutes, so this usually comes back still processing, with a turnId: that is not the answer, poll get_turn_result until the turn finishes.
read_skill
ChatGPTReads a Slidely skill and returns the whole thing — its instructions and every reference that goes with them. Pass the name from list_skills; pass a path from that skill's files only when you want one file on its own.
review_slides_batch
ChatGPTAccepts or rejects the proposed slides on a slides card, adding the accepted ones to the working presentation and sending the rejections to Slidely as revision notes. This is what puts slides in the deck — describing the decision in a message does not. Review every slide the card offered in one call; the card takes a single answer. If the user's own message says they already reviewed or added the slides, the card is settled — do NOT call this; a refusal is final, do not retry it. Reviewing belongs to the user by default: use this only when the user has explicitly handed the decision to you in this conversation, and look at the slide images before deciding rather than accepting unseen.
select_layouts
ChatGPTChooses the preferred layouts on a layouts card, using the ids that card offered, and saves the choice to the design system. Omit layoutIds to let Slidely pick. This does not tell Slidely: relay the returned message verbatim via message_slidely. Answer the card BEFORE sending Slidely anything else — a newer message supersedes the card and this call is then refused; a refusal is final, do not retry it. If the user's own message says they already picked layouts, the card is settled and saved — do NOT call this, relay their message via message_slidely instead. The layouts card belongs to the user by default: use this only when they delegated the choice or already named the layouts they want.
set_design_system
ChatGPTAttaches a design system to a Slidely chat, by designSystemId or by the designSystemName list_design_systems reported. Prefer list_design_systems, which shows the user the designs and saves their pick; use this only when the user has already named the one they want. When they instead want a deck of their own to be the design — use this template, match these slides, build it in our brand deck — attach that .pptx in files and pass no name or id: a new design system is built from its layouts and attached. Note the difference from initialize_working_presentation, which also takes a .pptx: there the deck becomes the presentation being edited, here it only supplies the design for slides built fresh. Building the design takes a while, so this call is slow. A chat's design locks once set.
set_presentation_as_working_presentation
ChatGPTSelects a presentation as the working presentation for the current conversation. The presentation library card posts the user's pick as their own message — 'Use "<name>" as the working presentation for this chat.' When that arrives, match the name to its presentationId in the library listing and call this tool with it before other work.
show_turn_result_artifact
ChatGPTShows the result artifact of a finished Slidely turn again in the current message: the same card with its proposed slides, redesign options, questions or confirmation and their buttons. Use it only when the user asks to see a card or its slides again; a finished turn's card is already showing in the conversation. A card the user already answered is shown as answered, and one replaced by a newer message can no longer be answered. The call is refused while the turn is still running.