Meeting MCP
Endpoint: https://www.trysublime.io/api/mcp. A meetings:read key exposes eight read-only tools: meetings, notes, transcripts, action suggestions and the tasks that came out of them, each task in plain English (goal, outcome, who, next step). It cannot run flows, send messages or execute coding work.
Enable access and create a key
- A workspace admin opens desktop Settings → Meeting API & MCP, mobile account sheet → Meeting API & MCP, or the web meeting library’s Meeting API panel.
- Explicitly enable meeting API access and save the policy.
- Create read-only key (90 days). Copy the plaintext once into your secret manager or local environment; keep it out of committed configuration.
- Configure your external client and verify a meeting read. Revoke the key from the same setup when access is no longer needed.
Only admins can create, list or revoke these keys. Other members can inspect setup/status and placeholder examples; contact your workspace admin about access. Do not share an admin key to bypass this role requirement. A key reads its active creator’s accessible meetings: their own private meetings plus current workspace-shared meetings. Enabling policy does not expose every member’s private meetings. Revocation, expiry, disabled policy or loss of owner access removes access.
Tools and arguments
list_meetings
limit 1–100 (default 30), optional cursor
{
"limit": 10
}get_meeting
meetingId required; includeTranscript boolean; transcriptLimit 1–1000 (default 500); afterSequence ≥ -1
{
"meetingId": "MEETING_ID",
"includeTranscript": true,
"transcriptLimit": 100
}search_meetings
q required, 1–200 characters; limit 1–50 (default 20); optional cursor
{
"q": "launch",
"limit": 10
}get_meeting_transcript
meetingId required; limit 1–1000 (default 200); afterSequence ≥ -1 (default -1)
{
"meetingId": "MEETING_ID",
"limit": 100,
"afterSequence": -1
}get_meeting_actions
meetingId required; limit 1–100 (default 50); optional cursor
{
"meetingId": "MEETING_ID",
"limit": 10
}list_tasks
optional category team|agent|flow|code; status open|done|all (default open); optional meetingId; limit 1–100 (default 30)
{
"status": "open",
"limit": 20
}get_task
taskId required
{
"taskId": "TASK_ID"
}get_meeting_notes
meetingId required
{
"meetingId": "MEETING_ID"
}Meeting IDs are 1–80 characters; cursors are opaque and at most 512 characters. Search covers titles, notes and retained final transcript text. Transcript responses contain only retained final segments, with source sequence provenance. Speaker labels are not verified identities. Retention-pruned text remains unavailable. Actions are unconfirmed suggestions from the latest summary, with summary/version provenance; they do not prove assignment or completion.
HTTP protocol walkthrough
Stateless JSON POST. The server speaks protocol 2025-06-18 and also accepts 2025-03-26 and 2024-11-05; initialize answers with your revision when it is one of those. An authenticated GET returns 405. There is no SSE stream, session or resumption. Send Accept: application/json, text/event-stream and Content-Type: application/json. After initialization, include MCP-Protocol-Version with the negotiated revision; any other value is refused with 400. The initialize result carries instructions naming the workspace, the key owner and the key’s scopes.
curl https://www.trysublime.io/api/mcp -X POST \
-H "Authorization: Bearer $SUBLIME_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-06-18" \
--data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {
"name": "docs-example",
"version": "1.0.0"
}
}
}{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "list_meetings",
"arguments": {
"limit": 10
}
}
}Send each JSON message as a separate POST in order. The initialized notification has no id and returns HTTP 202 with no JSON body. Tool calls return JSON-RPC result.content text containing the tool’s JSON output; result.isError indicates a tool failure. Check discovery before calling tools.
HTTP 415 means Content-Type is wrong; 406 means Accept excludes JSON; 400 can indicate an unsupported protocol header. A browser Origin must match the configured Sublime site; foreign origins receive 403. CLI requests normally omit Origin. JSON-RPC errors remain in an HTTP 200 envelope after successful transport and authentication.
Other scoped tools
Keys created in workspace Settings → API keys can hold further scopes, and each scope adds its tools to the same endpoint. Published, explicitly exposed flows appear as tools with flows:execute and return either their output or a runId to poll. These can perform work and consume usage; keep a meeting key restricted to meetings:read.
| Tool | Scope | Arguments |
|---|---|---|
create_task | tasks:write | meetingId and text required; optional owner and due. Files a task for review; nothing runs without approval. Idempotent on text, owner and due. |
search_knowledge | knowledge:read | q required, 1–500 characters; limit 1–20 (default 8); optional sourceType |
list_knowledge_documents | knowledge:read | optional sourceType; limit 1–100 (default 50) |
list_teammates | team:read | no arguments; ids, display names and roles, never email addresses |
get_flow_run | runs:read | runId required; status, output and error of a run started by a flow tool |
list_agents | agents:read | no arguments |
ask_agent | agents:execute | agent (id or name) and text required; optional idempotencyKey; returns a requestId |
get_request | agents:read or agents:execute | requestId required |
list_requests | agents:read or agents:execute | optional status; limit 1–50 (default 20) |
Every tool call is recorded in the workspace audit log with its outcome and duration; arguments are hashed, not stored. A key can be rotated from Settings → API keys: the replacement keeps the name, scopes and lifetime, and the old key keeps working for a grace window (an hour by default).