MCP tools reference
Riverside MCP tools
12 tools for Riverside on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Riverside account (host, account owner, admin, director or editor, depending on the call)
- Integration page
- Riverside
| Endpoint | Access | Description |
|---|---|---|
| riverside_list_studios | read | Your studios with name, recording type and the studio link. |
| riverside_list_sessions | read | Sessions from the studio Planner, with time, time zone and invited people. |
| riverside_get_invite_links | read | The studio links to share with a guest, a producer or an audience. |
| riverside_list_recordings | read | Recordings in your projects, newest first, with duration, participants and upload status. |
| riverside_get_recording | read | One recording with its date, duration and each participant's tracks, with type and upload status. |
| riverside_get_transcript | read | The transcript of a recording with speaker names and timestamps. |
| riverside_download_tracks | read | Download links for the separate track of each participant in a recording. |
| riverside_create_studio | write | Create a new studio for a show. |
| riverside_schedule_session | write | Add a session to the studio Planner and email the people you invite. |
| riverside_update_session | write | Rename or reschedule a session, or change who is invited. |
| riverside_invite_guest | write | Email a studio invite for a scheduled session to a guest, producer or audience member. |
| riverside_cancel_session | write | Remove a scheduled session from the Planner. Recordings already made are kept. |
List studios
readMCP tool riverside_list_studios
Returns every studio in your account, the ones you own and the ones you were added to. Use studio_id from each item in the other calls. Recording type is audio and video or audio only, as set in the studio.
Parameters
No parameters.
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_list_studios",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"studios": [
{
"studio_id": "std_8f2k41",
"name": "The Product Hour",
"recording_type": "audio_video",
"studio_url": "https://riverside.com/studio/the-product-hour"
},
{
"studio_id": "std_2m9c07",
"name": "Founders Q&A",
"recording_type": "audio_only",
"studio_url": "https://riverside.com/studio/founders-qa"
}
]
},
"isError": false
} List sessions
readMCP tool riverside_list_sessions
Lists scheduled sessions in start order, soonest first. Each item has the invited guests, producers and audience members with their roles. Pass session_id to update_session, invite_guest or cancel_session.
Parameters
| Name | Type | Description |
|---|---|---|
| studio_id | string | Only this studio. Default: all studios. |
| from | date | Sessions on or after this date. Default: today. |
| to | date | Sessions on or before this date. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_list_sessions",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"sessions": [
{
"session_id": "ses_3vq9x7",
"studio_id": "std_8f2k41",
"name": "Episode 42: Pricing your first product",
"start": "2026-10-15T15:00:00+01:00",
"end": "2026-10-15T16:00:00+01:00",
"invited": [
{
"email": "guest@example.com",
"role": "guest"
}
]
}
],
"next_cursor": null
},
"isError": false
} Get invite links
readMCP tool riverside_get_invite_links
Returns the studio link for each role. Guest and producer links let people join the studio; the audience link works only while audience public access is turned on in the studio. A link you share yourself does not expire, unlike the link in an invite email.
Parameters
| Name | Type | Description |
|---|---|---|
| studio_id required | string | Studio ID from list_studios. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_get_invite_links",
"arguments": {
"studio_id": "studio_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"studio_id": "std_8f2k41",
"links": {
"guest": "https://riverside.com/studio/the-product-hour?t=guest-token",
"producer": "https://riverside.com/studio/the-product-hour?t=producer-token",
"audience": null
}
},
"isError": false
} List recordings
readMCP tool riverside_list_recordings
Lists recordings across your studios, newest first. Filter by studio or by date to find the latest episode. Upload status shows whether each participant's files are fully uploaded. Pass recording_id to get_recording, get_transcript and download_tracks.
Parameters
| Name | Type | Description |
|---|---|---|
| studio_id | string | Only this studio. Default: all studios. |
| since | date | Only recordings made on or after this date. |
| limit | integer | 1 to 50. Default: 20. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_list_recordings",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"recordings": [
{
"recording_id": "rec_71d3ab",
"studio_id": "std_8f2k41",
"title": "Episode 41: Launch week",
"recorded_at": "2026-10-08T15:02:00+01:00",
"duration_seconds": 3412,
"participants": [
"Host",
"Guest"
],
"upload_status": "complete"
}
],
"next_cursor": "eyJvZmZzZXQiOjIwfQ"
},
"isError": false
} Get recording
readMCP tool riverside_get_recording
Returns one recording and the tracks of each participant. Each track has a type (audio or video, and screen share when one was recorded) and an upload status. Read it before download_tracks to see whether every track has finished uploading.
Parameters
| Name | Type | Description |
|---|---|---|
| recording_id required | string | Recording ID from list_recordings. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_get_recording",
"arguments": {
"recording_id": "recording_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"recording_id": "rec_71d3ab",
"title": "Episode 41: Launch week",
"duration_seconds": 3412,
"participants": [
{
"name": "Host",
"tracks": [
{
"type": "audio",
"upload_status": "complete"
},
{
"type": "video",
"upload_status": "complete"
}
]
},
{
"name": "Guest",
"tracks": [
{
"type": "audio",
"upload_status": "complete"
},
{
"type": "video",
"upload_status": "uploading"
}
]
}
]
},
"isError": false
} Get transcript
readMCP tool riverside_get_transcript
Returns the transcript Riverside made for one recording, in speaker order with timestamps. Use format srt for subtitle files and txt for plain reading. The call fails if the recording has no transcript yet.
Parameters
| Name | Type | Description |
|---|---|---|
| recording_id required | string | Recording ID from list_recordings. |
| format | enum | txt or srt. Default: txt. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_get_transcript",
"arguments": {
"recording_id": "recording_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"recording_id": "rec_71d3ab",
"format": "txt",
"text": "[00:00:04] Host: Welcome back to The Product Hour.\n[00:00:09] Guest: Thanks for having me."
},
"isError": false
} Download tracks
readMCP tool riverside_download_tracks
Returns one download link per participant for the file type you choose: raw video, aligned video, raw audio or compressed audio, the options in the Riverside Download menu. Tracks that are still uploading are listed without a link. Screen share tracks in high quality exist only when the screen share was recorded with the Mac app. Edited tracks are not included; they come from an edit export.
Parameters
| Name | Type | Description |
|---|---|---|
| recording_id required | string | Recording ID from list_recordings. |
| file_type | enum | raw_video, aligned_video, raw_audio or compressed_audio, as named in the Riverside Download menu. Default: raw_audio. |
| participants | string[] | Only these participant names. Default: everyone. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_download_tracks",
"arguments": {
"recording_id": "rec_71d3ab",
"file_type": "raw_audio"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"recording_id": "rec_71d3ab",
"file_type": "raw_audio",
"files": [
{
"participant": "Host",
"url": "https://downloads.example.com/rec_71d3ab/host.wav",
"status": "ready"
},
{
"participant": "Guest",
"url": "https://downloads.example.com/rec_71d3ab/guest.wav",
"status": "ready"
}
]
},
"isError": false
} MCP tool riverside_create_studio
Creates a studio with the name and recording type you give. Studios count against the limit of your Riverside plan, so a new one can use up a slot. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| name required | string | Studio name, for example the show title. |
| recording_type | enum | audio_video or audio_only. Default: audio_video. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_create_studio",
"arguments": {
"name": "Jane Doe"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"studio_id": "std_5t8n22",
"name": "Interview Series",
"recording_type": "audio_video",
"studio_url": "https://riverside.com/studio/interview-series"
},
"isError": false
} MCP tool riverside_schedule_session
Adds a session at the start and end time you give, in the time zone you set. Each guest in guest_emails gets an invite email with the session details and the studio link; the emailed link works until 24 hours after the start. Only the host, account owner, admins, directors and editors can schedule. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| studio_id required | string | Studio ID from list_studios. |
| name required | string | Session name, for example the episode title. |
| start required | datetime | ISO 8601 with time zone. |
| end required | datetime | ISO 8601 with time zone. |
| guest_emails | string[] | Guests to invite now. Default: none. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_schedule_session",
"arguments": {
"studio_id": "std_8f2k41",
"name": "Episode 42: Pricing your first product",
"start": "2026-10-15T15:00:00+01:00",
"end": "2026-10-15T16:00:00+01:00",
"guest_emails": [
"guest@example.com"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"session_id": "ses_3vq9x7",
"studio_id": "std_8f2k41",
"status": "scheduled",
"start": "2026-10-15T15:00:00+01:00",
"invited": [
{
"email": "guest@example.com",
"role": "guest",
"email_sent": true
}
]
},
"isError": false
} MCP tool riverside_update_session
Changes the fields you pass and leaves the rest. When the date or time changes, Riverside emails the guests, producer and audience members that the session was updated, and the Google Calendar invite updates automatically. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| session_id required | string | Session ID from list_sessions. |
| name | string | New session name. |
| start | datetime | New start, ISO 8601 with time zone. |
| end | datetime | New end, ISO 8601 with time zone. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_update_session",
"arguments": {
"session_id": "ses_3vq9x7",
"start": "2026-10-16T11:00:00+01:00",
"end": "2026-10-16T12:00:00+01:00"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"session_id": "ses_3vq9x7",
"status": "updated",
"start": "2026-10-16T11:00:00+01:00",
"end": "2026-10-16T12:00:00+01:00",
"notified": [
"guest@example.com"
]
},
"isError": false
} MCP tool riverside_invite_guest
Adds one person to a scheduled session and sends them an invite email with the session details and the studio link. Role is guest by default. Inviting the same email again resends the invite. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| session_id required | string | Session ID from list_sessions. |
| email required | string | Who to invite. |
| role | enum | guest, producer or audience. Default: guest. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_invite_guest",
"arguments": {
"session_id": "session_8c41d2",
"email": "jane@example.com"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"session_id": "ses_3vq9x7",
"email": "producer@example.com",
"role": "producer",
"email_sent": true
},
"isError": false
} MCP tool riverside_cancel_session
Cancels the session and removes it from the Planner and the project folder. Recordings that were already made stay in your account. Cancelling cannot be undone with one call; schedule the session again to restore it. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| session_id required | string | Session ID from list_sessions. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "riverside_cancel_session",
"arguments": {
"session_id": "session_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"session_id": "ses_3vq9x7",
"status": "cancelled"
},
"isError": false
}