Roomtone MCP
OfficialAllows adding YouTube videos as sources by URL. The videos are transcribed asynchronously and can be used within Roomtone meeting notes.
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., "@Roomtone MCPwhat did we decide about the launch date in the product sync?"
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.
Roomtone MCP
An MCP (Model Context Protocol) server that lets AI agents — Claude Code, Claude Desktop, and any other MCP client — work with your Roomtone meeting notes.
Agents can list your meetings, read a note's write-up, add a source you already have (a YouTube link or pasted text), chat with what was said, and pull the raw transcript. Recording a meeting itself always happens in the Roomtone app — this server only reads and adds to what already exists.
Getting an API key
Open the Roomtone web app and go to Settings → API keys.
Create a key — it starts with
ak_and is shown once, so copy it right away.
More details: https://roomtone.io/mcp
Related MCP server: LogicNotes MCP Server
Setup
Claude.ai (Connectors, no install)
Claude.ai connects directly to a remote MCP server over OAuth — this npm package (stdio) isn't involved. In Claude.ai: Settings → Connectors → Add custom connector, and enter:
https://mcp.roomtone.io/mcpClaude opens a sign-in prompt for your Roomtone account and asks you to approve access —
no API key needed. This remote server is implemented directly in the Roomtone backend
(backend/app/mcp_server.py + backend/app/oauth_provider.py), sharing the same 7 tools.
Claude Code
claude mcp add roomtone -e ROOMTONE_API_KEY=ak_... -- npx -y roomtone-mcpAny MCP client (generic mcpServers JSON)
{
"mcpServers": {
"roomtone": {
"command": "npx",
"args": ["-y", "roomtone-mcp"],
"env": {
"ROOMTONE_API_KEY": "ak_..."
}
}
}
}Environment variables
Variable | Required | Description |
| Yes | Your Roomtone API key ( |
| No | API base URL. Defaults to |
Tools
Tool | Description |
| List every meeting (id, title, emoji, sources_count, updated_at). |
| Get one meeting with its sources (id, type, url, status) and its generated note. |
| Start a meeting note with a title and optional emoji. Reports a friendly message if the free-plan limit is reached. |
| Add a source: |
| Generate or regenerate the write-up (only |
| Ask a question answered from the meeting's transcript. |
| Get the raw transcript text of a single source. |
Development
Requires Node.js 18+.
npm install
npm run build # tsc → dist/
ROOMTONE_API_KEY=ak_... node dist/index.jsThe server speaks MCP over stdio. On startup it prints a status line to stderr and then waits for JSON-RPC messages on stdin.
License
MIT
Available Tools
7 toolsadd_sourceAdd sourceAInspect
Add a source to a meeting note. Supported types: 'youtube' (requires url — the video is transcribed asynchronously; poll get_notebook until the source status is 'done') and 'text' (requires text — stored immediately as the source transcript). A recording itself always comes from the Roomtone app, not from this tool. Returns the created source with its id and status.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | YouTube video URL (required when type is 'youtube') | |
| lang | No | ISO language code for transcription/processing, e.g. 'en' (default) or 'ru' | |
| text | No | Raw text content (required when type is 'text') | |
| type | Yes | Source type: 'youtube' or 'text' | |
| notebook_id | Yes | The meeting id to add the source to |
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 so well: it discloses that YouTube transcription is asynchronous, that callers must poll get_notebook until status is 'done', that text is stored immediately, and that the call returns the created source with id and status. These are exactly the behavioral traits an agent needs before invoking it.
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?
Three sentences, front-loaded with the core action, then per-type requirements, then the exclusion and return value. Every clause carries information and there is no filler.
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?
No output schema exists, and the description compensates by describing the return value (created source with id and status) plus the async polling workflow and type-specific requirements. Nothing an agent needs in order to call this correctly appears to be missing.
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 schema already documents each parameter, including 'required when type is youtube/text'. The description restates those conditional requirements but adds no syntax or format detail beyond the schema (e.g. it never mentions the lang parameter). 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 states a specific verb and resource ('Add a source to a meeting note') and immediately enumerates the two supported source types with their required inputs. It also carves out a distinct boundary by clarifying that a recording comes from the Roomtone app rather than this tool, so an agent will not confuse it with capture tools.
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?
It gives explicit conditions for selecting each mode: 'youtube' requires url and is transcribed asynchronously, 'text' requires text and is stored immediately. It also states a when-not case ('A recording itself always comes from the Roomtone app, not from this tool') and points to get_notebook for polling the async result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_with_sourcesChat with a meetingAInspect
Ask a question about a meeting. The answer is grounded in the transcripts of the meeting's processed sources. Returns the assistant's reply as text. If the meeting has no processed sources yet, the reply will say so.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The question or message to ask about the meeting | |
| notebook_id | Yes | The meeting id to chat with |
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 reasonably well: it discloses that answers are grounded in processed-source transcripts, that the return is plain text, and that an empty-source meeting produces an explanatory reply rather than an error. It does not cover persistence of chat history, permissions, or rate limits.
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?
Three short sentences, front-loaded with the purpose and grounding guarantee, and the return format is stated only because no output schema exists. Nothing is redundant.
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, no-annotation, no-output-schema tool, the definition covers purpose, grounding behavior, return type, and the degenerate empty-source case. Only deeper operational details (history persistence, auth) are absent, which is acceptable at 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% for both parameters, so the schema already documents 'message' and 'notebook_id' fully. The description adds no syntax, length, or format constraints beyond what the schema provides, so the baseline of 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?
States a specific verb+resource ('ask a question about a meeting') and clarifies the grounding source (processed source transcripts), which distinguishes it from siblings like generate_note. It stops short of explicitly naming which sibling to use when, but the action is unambiguous.
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 by the phrasing — you use it when you have a question about a meeting — and the no-processed-sources case is called out. However, there is no explicit when-not guidance and no alternative sibling (e.g., get_transcript for raw reads, generate_note for summaries) is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_notebookCreate meeting noteAInspect
Start a new meeting note with a title and optional emoji, ready for a source to be added to it. Returns the created note including its id. Free-plan users have a quota on how many notes they can hold; if it is reached this tool reports a friendly upgrade message instead of creating one.
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | No | Emoji icon for the note (defaults to 📚) | |
| title | Yes | Title for the new meeting note |
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 fairly well: it discloses the return value ('including its id') and a concrete failure mode (free-plan quota exhaustion returning a friendly upgrade message instead of creating the note). It omits auth/permission requirements and other error behavior, so it is solid but not exhaustive.
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?
Three lean sentences, front-loaded with the core action and followed by return and quota behavior. Every sentence carries information, though the quota sentence is slightly more verbose than necessary.
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 2-parameter creation tool with no output schema and no annotations, the description covers the action, the return value, and a notable quota-based failure mode. Remaining gaps (auth requirements, other error cases) are minor given the tool's simplicity.
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%, so the schema already documents both title and emoji (including the default emoji). The description adds no format, constraint, or uniqueness detail beyond what the schema provides, so the baseline of 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?
States a specific verb and resource ('Start a new meeting note') and names the configurable fields (title, emoji). It is clearly distinguishable from read-oriented siblings like list_notebooks/get_notebook and from generate_note, though it does not name 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 via the workflow hint 'ready for a source to be added to it', which suggests calling this before add_source. There is no explicit when-to-use/when-not statement and no named alternative for different creation paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_noteGenerate write-upAInspect
Generate (or regenerate) the write-up for a meeting from its sources. Runs in the background: the tool returns {status: 'generating', type}; call get_notebook afterwards to read the write-up once it appears in the note's content list. Requires the meeting to have at least one processed source.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | ISO language code for the generated write-up, e.g. 'en' (default) | |
| type | No | Kind of write-up — only 'summary' is supported (also the default) | |
| notebook_id | Yes | The meeting id to generate a write-up for |
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 well: it discloses that the tool runs in the background, returns {status: 'generating', type} rather than the finished artifact, and that the write-up appears later in the note's content list. It doesn't cover cost, rate limits, or failure/error behavior, which keeps it below 5.
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?
Three sentences, zero filler, with the async contract front-loaded before the follow-up instruction. Every sentence contributes a distinct operational fact.
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?
No output schema exists, so the description must explain the return value — it does so precisely ({status: 'generating', type}) plus the retrieval path via get_notebook. Combined with the stated precondition, an agent has everything needed to invoke and follow up correctly.
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%, so notebook_id, lang, and type are already documented in the schema. The description adds no syntax or default detail beyond it; per the rules, a 100%-covered schema sets a baseline of 3.
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 ('Generate (or regenerate) the write-up for a meeting from its sources'), including the regeneration case. It also names the sibling to read the result with (get_notebook), so an agent can distinguish this from the read-side tools without opening a schema.
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 an explicit precondition ('Requires the meeting to have at least one processed source') and routes the agent to the follow-up tool after the async call. It does not state any when-not conditions or contrast with other generation options, so it falls short of full 5-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notebookGet meetingAInspect
Get one meeting by id, including its sources (each with id, type, url, filename, status, error) and its generated note. Source status is 'pending', 'processing', 'done' or 'failed' — a source's transcript is only available once it is 'done'.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | The meeting id, as returned by list_notebooks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full disclosure burden, and it does add real behavioral context: the shape of the returned payload and the meaning of the four source status values, including the gating rule that transcripts require 'done'. It omits error behavior for an unknown/invalid id and any permission requirements.
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 sentences, no filler. The retrieval scope is front-loaded and the status/transcript caveat follows as a tight second sentence.
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 tool with no output schema, the description compensates well by describing the return payload itself and the status enum. Only the failure mode for a nonexistent id is unaddressed.
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 there is a single parameter, so the schema already documents notebook_id and its provenance ('as returned by list_notebooks'). The description adds no format, validation, or id-sourcing detail beyond that, so the 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?
States a specific verb+resource ('Get one meeting by id') and enumerates the payload (sources with their fields, plus the generated note), which clearly separates it from the sibling list_notebooks. An agent knows exactly which tool retrieves a single meeting vs. enumerating them.
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: you fetch by id, and the note about transcripts only being available when a source is 'done' implies a polling/wait condition. It never names alternatives (get_transcript, chat_with_sources) or says when not to call it, so this is minimum-viable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptGet transcriptAInspect
Get the raw transcript text of a single source on a meeting note (source ids come from get_notebook). Returns the transcript as plain text; it is empty/null until the source finishes processing.
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | The source id, as returned by get_notebook or add_source | |
| notebook_id | Yes | The meeting id the source belongs to |
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 disclose the return format (plain text) and the important readiness caveat (empty/null until the source finishes processing). It does not cover permissions, behavior for non-transcript sources, or size/pagination limits.
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 tight sentences with no filler; the primary purpose leads and the readiness caveat follows as a useful caveat.
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?
Since there is no output schema, the description helpfully explains the return value and its null-until-processed state. For a simple two-parameter read tool this is nearly complete, though a note on failure modes or empty transcript sources would round it out.
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%, so both parameters are already documented, and the description only restates that source ids come from get_notebook. Baseline 3 is appropriate since the schema does the heavy lifting.
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 ('Get the raw transcript text of a single source on a meeting note') and scopes it to one source, distinguishing it from sibling tools like get_notebook and chat_with_sources.
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?
Implies when the tool is useful by pointing to get_notebook as the source of ids and warning the transcript is empty until processing finishes, but never states when to prefer this over chat_with_sources or get_notebook itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notebooksList meetingsAInspect
List every meeting in the user's Roomtone account. Returns an array with id, title, emoji, sources_count and updated_at (unix seconds), newest first. Use the returned id with the other tools.
| 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 carries the full burden and does disclose ordering ('newest first') and timestamp units ('unix seconds'), which is real behavioral value. It omits pagination/result-limit behavior and any auth or permission context, so it is not fully self-sufficient.
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?
Three short sentences, front-loaded with the scope, then the return contract, then the follow-up action. Nothing is padded or repeated.
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?
There is no output schema, so the description correctly compensates by enumerating returned fields, their units, and sort order. Only pagination/result-size behavior is left unstated, which is a minor gap for a zero-param read tool.
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 schema has zero parameters, so the baseline is 4. The description usefully documents the returned field set (id, title, emoji, sources_count, updated_at), which is beyond anything the empty input schema conveys.
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 ('List every meeting in the user's Roomtone account') and reconciles the name/title mismatch between 'notebooks' and 'meetings'. It distinguishes itself from get_notebook by being the bulk enumerator, but never names the sibling tools it feeds.
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?
'Use the returned id with the other tools' gives a clear downstream entry-point role, but there is no explicit when-to-use vs when-not guidance and no alternative named (e.g. get_notebook for a single item). Usage is only implied.
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
v0.2.0- First observed
add_source - First observed
chat_with_sources - First observed
create_notebook - First observed
generate_note - First observed
get_notebook - First observed
get_transcript - First observed
list_notebooks
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: listing, getting, creating notebooks, generating notes, adding sources, chat, and transcript retrieval. There is no overlap in functionality or resource action.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., list_notebooks, get_notebook, create_notebook). The pattern is predictable and uniform across all seven tools.
Seven tools are well-suited for the server's scope of managing meeting notebooks, sources, and notes. Each tool serves a distinct purpose without redundancy.
The tool set covers the core lifecycle: create, list, get, add sources, generate notes, chat, and retrieve transcripts. However, there is no update or delete operation for notebooks or sources, which are common CRUD gaps that could limit full management.
Maintenance
Related MCP Connectors
Meeting transcripts for AI agents: search calls, read who said what, transcribe files and links.
Search meetings, export summaries and transcripts, and manage recordings from any AI tool.
Search and read your recorded meetings: notes, action items, participants, transcripts.
- PithflowOAuthcom.pithflow
Read-only access to your own Pithflow meeting notes, transcripts, dictionary and usage.
Related MCP Servers
- AlicenseAqualityDmaintenanceRead-only access to your Gilbert meetings, transcripts and summaries over MCP — list, search, and fetch transcripts and summaries.523 npm1MIT
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server for searching and retrieving LogicNotes meeting notes, including summaries, transcripts, and action items.MIT
- FlicenseNot gradedqualityFmaintenanceMCP server for Granola that exposes meeting notes, AI summaries, and transcripts to Claude.-
- AlicenseAqualityBmaintenanceProvides read-only access to finished meeting transcripts for AI assistants like Claude Code or Codex, enabling them to answer questions or draft summaries based on the transcriptions.43Apache 2.0