Riverside MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Riverside MCPCreate a studio called Founders Talk and schedule Maria Lopez for Thursday at 10 am."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
How to connect Riverside to Claude Code, ChatGPT and any AI agent
Yes, Claude, ChatGPT and other AI agents can work in your Riverside account. Riverside has official apps in ChatGPT and Claude for searching, editing, clipping and publishing videos. Cotlet.dev connects your own signed-in Riverside account to any AI agent, so you can ask in plain words and the AI creates studios and schedules recording sessions for you.
What you can ask
Create a studio called "Founders Talk" and schedule a recording with Maria Lopez on Thursday at 10 am.
Schedule next week's episode for Tuesday at 3 pm and send the guest invite to james@brightlane.co.
Set up a new studio for our team podcast and book a session every Monday at 9 am for the next 4 weeks.
Move Friday's 2 pm session with Dr. Patel to Monday at 11 am and let her know.
List all sessions scheduled this month across my studios, with guest names and times.
Related MCP server: OutcomeCI MCP Server
Connect in 2 minutes
Get your API key at https://cotlet.dev/app and export it as COTLET_API_KEY.
Claude Code
claude mcp add --transport http cotlet https://cotlet.dev/mcp/v1 --header "Authorization: Bearer $COTLET_API_KEY"ChatGPT
Settings → Apps → add connector URL https://cotlet.dev/mcp/v1, then sign in with Cotlet.dev. No API key needed.
Cursor
Copy .cursor/mcp.json from this repo into your project:
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": {
"Authorization": "Bearer ${COTLET_API_KEY}"
}
}
}
}Run it locally (stdio)
This repo is a real MCP server. It speaks MCP over stdio, lists its Riverside tools without any key, and forwards every tool call to the hosted Cotlet.dev server. The hosted URL above stays the recommended way. Use this when your client only starts local servers.
{"mcpServers":{"riverside":{"command":"uvx","args":["riverside-mcp"],"env":{"COTLET_API_KEY":"your-key"}}}}Or with Docker:
docker build -t riverside-mcp .
docker run -i --rm -e COTLET_API_KEY riverside-mcpTools: riverside_guide, riverside_status, riverside_open, riverside_read, riverside_click, riverside_type, riverside_close. Without COTLET_API_KEY a tool call answers: "Set COTLET_API_KEY. Get a key at https://cotlet.dev/app".
Command line
Python 3.10+, nothing else to install. From PyPI:
pip install riverside-mcp # or run it once: uvx riverside-mcp connect
riverside-mcp connectOr straight from this repo:
export COTLET_API_KEY="your-key"
python3 riverside_agent.py connect # ready config for Claude Code, Cursor, ChatGPT
python3 riverside_agent.py status # is Riverside ready in your Cotlet.dev account
python3 riverside_agent.py guide # Riverside screens and sign-in link
python3 riverside_agent.py read # open Riverside, read the page, close the browser
python3 riverside_agent.py tools # list Cotlet.dev tools
python3 riverside_agent.py serve # start the stdio MCP server (same as no argument)Questions from Riverside users
Does Riverside have an API?
Riverside has a Business API for select Business accounts only, with a key from your customer success manager, and it mostly gets or deletes recordings and lists scheduled events (checked 11 Oct 2026). Its official MCP server (beta, Grow, Webinar and Business plans) searches, edits and posts clips, but cannot schedule sessions or invite guests. Cotlet.dev works in your own signed-in Riverside account, so your AI agent can create studios and schedule recordings with no API key and no code.
How do I connect Riverside to ChatGPT?
Riverside has an official app in the ChatGPT directory for editing and publishing. To also create studios and schedule sessions, add Cotlet.dev as an app in ChatGPT (Settings → Apps, connector URL https://cotlet.dev/mcp/v1), sign in to Riverside once in your Cotlet.dev Cloud Browser, and ask ChatGPT in plain words. No code and no Riverside API key.
Is there a way to use Claude with Riverside?
Yes. Claude lists an Anthropic verified Riverside connector for editing, clipping and publishing. With Cotlet.dev, run the one-line claude mcp add command above in Claude Code, or add https://cotlet.dev/mcp/v1 as a custom connector in the Claude app. Claude then works in your own Riverside account.
Is there a Riverside MCP server?
Riverside has official integrations listed in ChatGPT and Claude. Cotlet.dev is a hosted MCP server that works in your Riverside account for you, 24/7, with Claude, ChatGPT, Cursor, Codex, n8n, Make and Zapier.
Find it on
Also works with
Start free: https://cotlet.dev/signup?app=riverside&utm_source=github&utm_medium=readme&utm_campaign=riverside
Available Tools
7 toolsriverside_clickB
Click a numbered element on the current Riverside page.
| Name | Required | Description | Default |
|---|---|---|---|
| element | Yes | Element number from the last read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does not state that this is a mutating/interacting operation, whether the click navigates or changes page state, whether element numbers become invalid afterwards, or how failures surface. Only the notion of 'current page' hints at state scoping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the action and target are stated before any qualifier. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter interaction tool with no annotations and no output schema, the definition is minimally viable: the action and argument are clear, but the agent gets no information about what the click produces or invalidates. Given the simplicity, this is adequate rather than deficient, but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the sole parameter including the 'from the last read' semantics and minimum of 1. The description adds only the 'current Riverside page' qualifier, which marginally reinforces that the numbering is page-scoped but no more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Click') and resource ('numbered element on the current Riverside page'), which cleanly separates it from riverside_type and riverside_read by action. It stops short of explicitly contrasting with the closest sibling (riverside_type), so the differentiation comes from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'numbered element' plus the schema note 'Element number from the last read' hints that riverside_read must run first, but the description never says so or names the alternative action for non-element interaction. No when-not guidance or preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
riverside_closeA
Close the Riverside browser session when the work is done, so credits stop running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. It usefully reveals the billing consequence of leaving the session open, but says nothing about idempotency (what happens if no session is open), whether unsaved page state is discarded, or whether closing is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and appends the reason, with no redundant or filler wording. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter lifecycle tool with no output schema and no annotations, purpose, timing, and rationale are all covered. The only meaningful gap is edge-case behavior, such as calling it with no active session or whether in-progress page state is lost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The empty schema with additionalProperties: false leaves no ambiguity about invocation shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Close the Riverside browser session.' The verb 'close' cleanly separates it from siblings such as riverside_open, riverside_read, and riverside_type without needing to name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition ('when the work is done') plus a motivation (stop credits running), which is enough for an agent to know when to call it. It stops short of explicit exclusions or naming riverside_status as a way to verify a session exists before closing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
riverside_guideA
How to work in Riverside (create studios and schedule recordings): its screens and the sign-in link. Call this first.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | What you want done in Riverside, in your words. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description indicates the guide exposes Riverside screens and a sign-in link, which hints at its output content. However, it does not explicitly say whether the tool is read-only, whether it performs any actions, or how the returned guidance is structured, leaving meaningful behavioral details unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences carry the key purpose and first-use instruction without waste. The phrasing is slightly cryptic around 'its screens,' but the structure is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter guide tool with no output schema, the description covers what the guide contains and when to call it. It could add how the `task` input shapes the guidance or confirm that the tool is non-mutating, but it is largely complete for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single `task` parameter is already documented as the user's desired Riverside task. The description adds no additional meaning about how `task` affects the guide, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a guide to working in Riverside, covering screens and the sign-in link. It is specific enough to distinguish this orientation tool from the operational sibling tools, reinforced by 'Call this first,' though it could state more directly that it returns instructions rather than performing actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first' gives explicit ordering guidance for first use, which is valuable against siblings like riverside_open and riverside_click. It does not name alternatives or state when not to use it, but the first-call instruction provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
riverside_openA
Open a Riverside page in your signed-in Cloud Browser (default https://riverside.com) to work with create studios and schedule recordings.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Page to open. Default: https://riverside.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does contribute real context by stating the browser is 'signed-in', signalling an authenticated session and that credentials are pre-supplied. It omits what happens on navigation failure, whether it reuses or resets the existing page, and whether it blocks until load, which matters for a session-mutating navigation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the action front-loaded and the default supplied in a parenthetical, so the key facts land first. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter navigation tool with no output schema and no annotations, the definition covers purpose, the signed-in context, and the default target. Only the post-open behavior and expected return are unstated, a minor gap at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 'Page to open. Default: https://riverside.com'. The description repeats the default URL but adds no format or constraint detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb ('Open') and resource ('a Riverside page in your signed-in Cloud Browser'), which is enough to distinguish it from siblings like riverside_read or riverside_click. It falls short of 5 because it doesn't explicitly frame itself as the entry/navigation step relative to those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trailing clause 'to work with create studios and schedule recordings' implies the context in which to call it, so usage is inferable. However, there is no explicit guidance on when to prefer it over siblings (e.g. riverside_status or riverside_guide) or any stated preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
riverside_readA
Read the current Riverside page: its text and numbered buttons, links and fields.
| Name | Required | Description | Default |
|---|---|---|---|
| element | No | Read only inside this element. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the return payload shape (text plus numbered interactive elements), which is useful, but it says nothing about output size limits, whether reading has any side effects, or what happens if no page is open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Slightly dense at the end, but every clause names a distinct part of the return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only observation tool with no output schema and no annotations, the description covers purpose and return content adequately. The remaining gap is coordination context: which sibling consumes these numbered elements and the requirement that a page be open first.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional "element" parameter is documented in the schema as scoping the read to an element. The description adds nothing about the element parameter (e.g. whether it accepts the same numbered index reported for buttons/fields), so it does not exceed the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ("Read") and resource ("the current Riverside page") and enumerates what is captured: text, numbered buttons, links and fields. The mention of "numbered" elements hints at how the indices consumed by riverside_click/riverside_type are produced, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: reading the current page is naturally the observation step before acting. There is no explicit statement of when to call this versus riverside_status or riverside_guide, and no note that this only applies to an already-open page (riverside_open).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
riverside_statusA
Check that your Cotlet.dev account and Riverside are ready: account, credits and Riverside connection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load. "Check" implies a non-mutating probe and it discloses what is inspected (account, credits, connection), but it does not say whether it requires authentication, how long it takes, or what a failure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and scoped by the three things checked. No filler, no repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no params, no nested objects), but with no output schema and no annotations the description should say what the status result looks like or how to interpret a failed check. It identifies what is verified without describing the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify beyond the schema; baseline 4 applies. The description correctly implies the call is unconditional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ("Check") plus a concrete set of resources it verifies: account state, credits, and Riverside connection. This contrasts implicitly with siblings like riverside_open or riverside_click, which perform actions, though it never names them directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: a readiness check is naturally run before other Riverside operations, and the mention of credits hints at diagnosing failures. There is no explicit 'call this before X' or 'do not use this to Y' guidance, and no sibling is referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
riverside_typeB
Type text into a numbered field on the current Riverside page.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type. | |
| element | Yes | Field number from the last read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden and it does not say whether typing replaces existing field content or appends to it, whether it can submit a form, how focus is handled, or what happens when the element number is out of range. The only behavioral claim is that it targets the 'current' page, which at least signals state dependence, but the mutation semantics are undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first and the scoping qualifier ('numbered field on the current Riverside page') immediately after; no filler or redundant restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with full schema coverage and no output schema, the description is minimally adequate: the agent knows what it does and roughly where. It is missing the sequencing contract (read before type) and any note on how existing field content is affected, both of which matter for a state-mutating UI tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'text' and 'element' documented, so the baseline is 3. The description reinforces the meaning of 'element' as a numbered field on the live page but adds no format, range, or ordering detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (type) plus a specific target (a numbered field on the current Riverside page), which is enough to distinguish it from sibling riverside_click (which activates something) and riverside_read (which retrieves). It stops short of naming those siblings explicitly, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'numbered field' plus 'current Riverside page' hints that a prior riverside_read is needed to obtain the field number, but the description never states that precondition or when to prefer typing over riverside_click. The prerequisite is only recoverable from the schema's 'Field number from the last read' note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.1.0- First observed
riverside_click - First observed
riverside_close - First observed
riverside_guide - First observed
riverside_open - First observed
riverside_read - First observed
riverside_status - First observed
riverside_type
TDQS
Scored across 7 tools
Each tool has a clearly distinct role: open/close manage the browser session, read/click/type operate on the current page, and guide/status cover onboarding versus readiness checks. There is no meaningful overlap between page interaction, session lifecycle, and account checks.
All tools use a consistent riverside_ snake_case prefix, making them easy to group and recognize. The only minor deviation is that guide and status are noun-like names while the other tools use verbs, but the pattern remains predictable.
Seven tools is well-scoped for a browser-automation server: five core browser primitives plus two setup/guidance tools. No tool feels redundant or conspicuously missing from the set.
The surface covers the essential lifecycle: check readiness, open the browser, read the page, click and type, then close the session. It may lack explicit wait/navigation/keyboard primitives, but these are minor gaps for the stated Riverside studio and scheduling workflows.
Maintenance
Related MCP Connectors
Let AI agents use your real, signed-in Chrome: tabs, clicks, forms, screenshots and video.
Let your AI agent operate any website through a real, logged-in browser session.
Give AI agents secure access to RevDesk calling, SMS, phone numbers, caller IDs, and usage.
Build and run agents and automations across hundreds of apps using natural language.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI agents to drive your real, logged-in Chrome browser with existing sessions and cookies, bypassing CAPTCHA and anti-bot measures, with support for multi-session and human-in-the-loop workflows.4061MIT

OutcomeCI MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI assistants to create, validate, and manage agent-powered workflows across team tools, with tools for inspecting schemas, configuring triggers, and reviewing runs and logs. It provides authorized remote access through OAuth without local installation or shared API keys.1MIT- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control Google AI Studio through a signed-in Chrome or Edge browser, including inspecting pages, entering prompts, operating visible controls, selecting models and settings, uploading context files, reading responses, and downloading media.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to drive your own signed-in ChatGPT web account — asking questions, continuing chats, attaching files, toggling thinking or web search, creating images, transcribing recordings of any length, reading replies aloud, and managing conversations, memories and projects. It runs against a local Chrome tab on chatgpt.com and reports live progress and step-named errors back to the client.2MIT