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
Riverside Endpoints
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.

MCP 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
}

MCP 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

Parameters: list_sessions
NameTypeDescription
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
}

MCP 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

Parameters: list_recordings
NameTypeDescription
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
}

MCP 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

Parameters: get_recording
NameTypeDescription
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
}

MCP 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

Parameters: get_transcript
NameTypeDescription
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
}

MCP 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

Parameters: download_tracks
NameTypeDescription
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
}

Create studio

write Confirm

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

Parameters: create_studio
NameTypeDescription
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
}

Schedule session

write Confirm

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

Parameters: schedule_session
NameTypeDescription
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
}

Update session

write Confirm

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

Parameters: update_session
NameTypeDescription
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
}

Invite guest

write Confirm

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

Parameters: invite_guest
NameTypeDescription
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
}

Cancel session

write Confirm

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

Parameters: cancel_session
NameTypeDescription
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
}