Skip to main content
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.
The tools are the API’s verbs under the same names. A tool needs the scope its verb needs; a tool that cannot do what was asked answers with a result marked isError and a sentence saying what to fix.

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_screenshot

A PNG of one step as the editor shows it: the slide’s page with its cards, text, shapes and images on it, or the full-screen poll. Look before you hand a deck over, the way a person glances at the editor: is the card over the picture and not the text, is it big enough to read. Rendered on the server in a real browser, so it takes a second or two; 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.

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.

list_rooms

The team’s rooms, newest first, fifty at most. Needs the “rooms:read” scope. Takes no arguments.

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. Decks with uploaded slide pages start from the editor for now, because pages are rendered in the browser; decks of blank slides and polls start here. Needs the “rooms:start” scope.

room_action

What the presenter’s buttons do: start the session, walk to the next or previous step, close the live poll and reveal, or stop the session. Needs the “rooms:start” scope.

room_results

Every poll’s results so far, as JSON and as a markdown summary. Works while the room is live and after it ended, for as long as the room is held in memory. Needs the “results:read” scope.