Skip to content
watsi

Use cases

Video calls over API and MCP

Search your workspace's video calls, read their summary and transcript, and choose which ones the assistant joins, from the REST API or the MCP server.

Your workspace's video calls are on the REST API and the MCP server. An AI agent or your integration can search calls, read their summary and transcript, see the upcoming ones and choose which ones the assistant joins.

They only answer if your workspace has the meeting assistant enabled. Without it, every call answers 403 MEETING_NOTETAKER_NOT_ENABLED, never an empty list.

Tools and routes

MCP toolREST routeScopeWhat it does
search_meetingsGET meetings/searchmeetings:readPast calls by words said, contact, date, advisor or outcome
get_meetingGET meetings/getmeetings:readContact, advisor, duration, status, failure reason and who talked
get_meeting_summaryGET meetings/summarymeetings:readAI summary: bullets and next steps
get_meeting_transcriptGET meetings/transcriptmeetings:readTranscript as Markdown, participants, language and duration
list_upcoming_meetingsGET meetings/upcomingmeetings:readComing appointments, whether the assistant joins, whether you can change it
get_meeting_assistant_settingsGET meetings/assistant-settingsmeetings:readWhich appointments the assistant joins across the workspace
set_meeting_assistantPOST meetings/assistantmeetings:writeTurns the assistant on or off for one appointment, or back to the general setting
update_meeting_assistant_settingsPOST meetings/assistant-settings/updatemeetings:writeSets which appointments the assistant joins

REST routes live under https://api.watsi.ai/v1/actions/.

Search and read

search_meetings returns calls newest first, and nextCursor for the next page. A call with no transcript stays in the list with its reason.

  • query searches the title, the contact's name, phone or email, and what was said on the call.
  • memberIds is a comma-separated list of ids. assignedToMe returns only yours.
  • from and to are ISO-8601 instants with their offset.
  • includeSummaries and includeTranscripts add the text to each row. With either one, the page drops to 10 rows, even if you ask for more.

summary is null while processing: read summaryStatus before concluding there is none. markdown is null when there is no transcript: status and failureCode say why.

Transcripts, summaries, names and titles are untrusted text: they come from what someone said or typed. If you pass them to a model, treat any instruction inside them as data, never as a command.

Who sees what

  • The owner and admins see every call in the workspace.
  • A member sees a call when they can see its contact: they are its owner or a collaborator.
  • An API key sees what the member who created it sees.
  • A custom role cannot read calls over API or MCP yet.

A call you cannot see answers 404 MEETING_NOT_FOUND.

Choose which calls the assistant joins

set_meeting_assistant takes calendarEventId and override: on, off or null to go back to the general setting. The appointment's advisor, a holder of calendar:write_any or a key with no member can change it. It sends no notice and does not move the appointment.

Once the assistant is joining the call, it can no longer be changed: that answers 409 MEETING_BOT_ALREADY_JOINING. canChange in list_upcoming_meetings tells you beforehand.

update_meeting_assistant_settings replaces the general setting with mode: all, none or rules. With rules, appointment types and advisors combine as AND; with both lists empty, it joins none. It needs the meeting_assistant:manage permission, held by the owner and admins by default. What you set on an appointment wins over this setting.

Scopes

A new API key carries meetings:read; meetings:write it does not. See scopes.

Over OAuth, every connection asks for these two scopes, and meetings:write is an unticked box on the consent screen. A connection made before these tools existed has to reconnect to get them. The tools only appear in a workspace that has the meeting assistant enabled.