Skip to navigation

Dory tools

Dory’s MCP server, https://www.taktoria.com/mcp/<workspace>/dory (each workspace has its own), lets an assistant run live Q&A and polls as the person who connected it. It reaches only the events that person may run: every event with no host list, the ones whose list names them or a team they are on (or a team inside one), the ones they created, and every event for an app admin of Dory. Another event is “not found”, exactly as one in another workspace would be. Everything it changes is recorded in the workspace’s audit log under the person’s name, with the assistant beside it, and in Dory’s activity as if they had done it in the app.

Roles

What a connection may do follows the person’s role in Dory:

  • An app admin of Dory (every workspace owner and admin is one) may run any event, whoever its host lists name, and is never locked out of one.
  • A member creates events and runs the ones open to them: those with no host list, those whose list names them or a team they are on, and those they created.
  • A viewer reads the events a member would run. Their connection lists and accepts only the read tools, whatever it was granted: a write tool called anyway is refused (viewer_only), and the consent page offers them only Read only. See MCP servers.

A connection granted dory:read sees the read tools; dory:write adds the write tools, except for a Viewer of Dory. Attendees’ side (joining with a code, asking, upvoting and answering polls) is not here: attendees hold a code, not a seat.

Events and phases

An event’s times open and close it by themselves: it opens at the earlier of its start and its questions opening, and ends at the later of its end and its questions closing. Its phase is where it stands: draft (Not started: no time to open at, and its code does not work until a host starts it), scheduled, live or ended; its status says the same as DRAFT, LIVE or ENDED. Every event a tool returns carries its join code and joinUrl for attendees, and url, settingsUrl, analyticsUrl and presentUrl into the app, all on the workspace’s Dory hostname where it has one.

Tools

ToolAccessWhat it does
whoamireadThe person, the workspace, and this connection’s access
find_peoplereadMembers by name or email, with user ids and their Dory seat
find_teamsreadThe workspace’s teams by name, with ids and who is on them
searchreadEvents and questions matching some words
list_eventsreadEvents the person may run, or theirs (mine): search, phase, paged
get_eventreadOne event, with its links and meeting link (meetingUrl)
get_join_qr_codereadThe join link as a QR code (PNG image), with the code and link
get_calendar_invitereadInvite text, Google and Outlook links and an .ics file for an event
get_event_hostsreadThe people and teams who may run an event
list_questionsreadAn event’s questions by status, most upvoted or newest first, paged
get_questionreadOne question
list_pollsreadAn event’s polls
get_pollreadOne poll
get_poll_resultsreadWhat the room answered, counted, shaped by the poll’s type
list_participantsreadWho took part, and what each did, paged
get_leaderboardreadQuiz standings
get_event_statsreadHeadline numbers
get_event_analyticsreadThe numbers page: attendance, capacity, charts, top questions
get_events_overviewreadDory’s Analytics page: the last days across events, busiest first
get_presenter_queuereadThe question on the big screen and the ones up next
export_questionsreadEvery question as CSV text, cut at 100,000 characters with a note
create_eventwriteA new event, owned by the person
update_eventwriteChange an event’s settings
set_event_statuswriteStart, end or reopen
start_event_nowwriteOpen a scheduled event now
extend_eventwriteFifteen more minutes before it closes
set_event_archivedwriteArchive or restore
duplicate_eventwriteA copy with the same setup, meeting link, time zone, hosts and polls
delete_eventwriteDelete an event and everything in it (destructive)
add_event_hostwriteLet a person run an event
add_event_host_teamwriteLet a team run an event
remove_event_hostwriteTake a person off the host list
remove_event_host_teamwriteTake a team off the host list
set_event_hostswriteReplace both host lists
moderate_questionwriteMove a question between pending, approved, answered and dismissed
answer_questionwriteWrite an answer and mark it answered
spotlight_questionwritePut a question on the big screen
toggle_question_highlightwriteThe console’s highlight button: on, or off again
advance_question_queuewriteThe presenter’s Next
create_questionwritePost a question to an event on the hosts’ side
update_questionwriteReword a question, or set its fields directly
dismiss_questionwriteDismiss a question, keeping it and its votes
create_pollwriteAdd a poll
set_poll_statuswriteOpen a poll (closing the open one), close it, or back to draft
update_pollwriteChange a poll’s question or settings
delete_pollwriteDelete a poll and its answers (destructive)

The rules are the app’s own, and the REST API’s too:

  • One poll is live at a time: opening one closes the poll that was open, whether set_poll_status, update_poll or create_poll opens it.
  • One question is on the big screen at a time: spotlight_question, toggle_question_highlight, advance_question_queue and update_question with highlighted take the last one off. A dismissed question is never on it: dismiss_question, or DISMISSED through moderate_question or update_question, takes it off and leaves the screen empty.
  • A question keeps the time it was first answered while it stays answered; moving it out of ANSWERED clears it.
  • A poll’s limits are the app’s: a question of up to 500 characters, at least two options (at most 20, each up to 200 characters) for a multiple choice, ranking or quiz, and a rating scale of 2 to 10. Anything outside them is refused, not adjusted.
  • No change to an event’s host lists may leave the person making it unable to run the event, unless they are an app admin of Dory or its creator: the tool refuses, and says to add them, or a team they are on, first.
  • Hosts are named by id: find_people and find_teams find them by name. Only somebody with a Dory seat can run an event, which find_people’s hasSeat says.

Skills

The server also offers ready-made workflows as skills, which an assistant follows step by step with the tools above. Each is a SKILL.md at skill://dory/<name>/SKILL.md, with any files it refers to beside it, and reaches a client through the Skills extension, as a resource, as a prompt of the same name, and in the server’s instructions (see Skills). A write skill is offered only to a connection granted dory:write.

SkillAccessFor
find-anythingreadSearching Dory well: events and questions from a few words
prepare-an-eventwriteSetting up an event: dates, audience, hosts and polls in advance
moderate-live-qawriteWorking the question queue during a live event, with a moderation guide (references/moderation-guide.md)
brief-the-speakerreadA brief for the speaker: the room’s questions grouped into themes, the top ones quoted exactly, with a format guide (references/brief-format.md)
run-a-pollwriteCreating a poll, opening it to the room and reading its results
event-recapreadSummarising an event afterwards: questions, themes, polls and numbers