This page is generated from the server’s
tools/list at https://test.polltheroom.com/api/mcp by scripts/developers-sync.mjs. The full input schema of every tool, including every widget, travels with the tool itself.isError and a sentence saying what to fix.
Decks
A deck is a document the editor and the API both read and write.list_decks
The decks this key may see: its maker’s own plus the team’s shared ones. The bin is left out. Needs the “decks:read” scope.
Takes no arguments.
create_deck
This is the verb an agent starts from. Send a whole document, or nothing for a blank deck that opens with the join screen and one empty slide. A deck can be saved half-finished; presenting needs every poll to pass the readiness check. Needs the “decks:write” scope.
get_deck
The whole document, the same shape the editor holds. Needs the “decks:read” scope.
update_deck
Rename, star, or replace the whole document. A replace, never a merge: send the document as you want it to be. To change one step, use the step verbs instead. Needs the “decks:write” scope.
delete_deck
Into the bin, the same as the app. Thirty days later it is gone for good. Needs the “decks:write” scope.
add_step
Append a slide or a poll step, or insert it before a given index, without resending the document. The join screen is step 0 and there is only one. Needs the “decks:write” scope.
replace_step
Put a new slide or poll step where one is now. Needs the “decks:write” scope.
remove_step
Take a slide or poll step out. The join screen stays. Needs the “decks:write” scope.
add_overlay
Drop a poll onto a slide as a floating card, the way the editor does: send the poll, and optionally where (rect) and how it is drawn (style); what you leave out gets the house default. The slide’s other content is untouched. For a poll that fills the screen, use add_step instead. Needs the “decks:write” scope.
get_outline
Every step in a line: kind, page, notes, and for a slide every element’s rect and label, which elements cover each other, and its warnings, without the pictures’ bytes. Read this first to find your way around a deck, the way Paper’s get_tree_summary reads a file; get_deck returns the whole document, images included. Needs the “decks:read” scope.
get_step
One step exactly as it is in the document, with its layout: every element’s rect and which elements cover each other. Cheaper than get_deck when you work on one slide, and where you read a card’s index before update_overlay or remove_overlay. Needs the “decks:read” scope.
update_overlay
Change one card on a slide without resending the slide: the poll, where it sits (rect) or how it is drawn (style), each merged over what is there; what you leave out stays. Read the card’s index with get_step. The way Paper’s update_styles and move_nodes act on one node. Needs the “decks:write” scope.
remove_overlay
Remove one card from a slide; everything else on the slide stays. Read the card’s index with get_step. Needs the “decks:write” scope.
add_element
Add one text box, shape or image to a slide without resending it: send exactly one of text, shape or image, as in the document. A card is added with add_overlay. Like a text box, a picture is placed by its rect; the slide clips what runs past it. Needs the “decks:write” scope.
update_element
Change one text box, shape or image on a slide: send the properties to change under text, shape or image (matching the kind in the path); they are merged over what is there, style included, and what you leave out stays. Read the element’s index with get_step. Needs the “decks:write” scope.
remove_element
Remove one text box, shape or image from a slide; everything else stays. Read the element’s index with get_step. Needs the “decks:write” scope.
duplicate_step
Insert a copy of a step right after it, with fresh ids for the step and everything on it, the way Paper’s duplicate_nodes clones a node. The join screen cannot be copied. Needs the “decks:write” scope.
move_step
Move a step to another position; the steps in between shift by one. The join screen stays at 0 and nothing lands before it. Ids do not change. Needs the “decks:write” scope.
get_screenshot
A PNG of one step as the room will see it: the slide’s page with its cards, text, shapes and images on it, or the full-screen poll the way the audience screen draws it. Beside the picture come the numbers: every element’s rect, the pairs that overlap, warnings for a card too small to read or over another card or text box, coversPageText, the PDF page’s own words a card or text box hides, and measured, each card and text box as the drawing measured it: cut off by its box, and how high its biggest answer text is drawn. Send annotate to have every element’s box and name drawn on the picture, the clashing ones in red and the hidden words tinted; element to crop to one element, the way Paper screenshots one node; scale 2 for twice the pixels. Rendered on the server in a real browser, so the first look takes a few seconds; the same step at the same revision comes straight back. Through MCP the image arrives as an image; over HTTP, read png as a data URL or send Accept: image/png for the bytes. Needs the “decks:read” scope.
list_fonts
The font keys a text box’s font and a card’s textFont take, with the family each one draws. Send deck to add the fonts that deck uploaded, which are named by their family. What Paper’s get_font_family_info answers for a design file. Needs the “decks:read” scope.
attach_pdf
Put the presenter’s own slides behind the deck. The editor renders the pages when the deck is opened, so polls can float on the real slides. With pages, and while no slide has a page yet, the blank slides are replaced by one slide per page, in order, after the join screen; polls and paged slides already there are kept. PDF only for now. Needs the “decks:write” scope.
Rooms
A room is one live session of a deck.list_rooms
The team’s rooms, newest first, fifty at most. Send deckId for the sessions one deck has run, each with the name it was started under, so the same deck used for five classes lists five sessions. Needs the “rooms:read” scope.
start_room
Open a room for a deck: a six-digit code the audience joins with, and a presenter link that carries the host’s key. The room waits in the lobby until the presenter (or room_action with start) begins. A deck with slide pages starts here too: the server draws every page of its PDF first, the way the editor does, which adds a few seconds. Needs the “rooms:start” scope.