Connect Whereby to ChatGPT: Control Meetings, Analytics & Transcripts
Learn how to connect Whereby to ChatGPT using Truto's managed MCP server. Execute meeting generation, async media pipelines, and insight aggregation directly from your AI agent.
If you are trying to give an AI agent control over your video conferencing infrastructure, you need a Model Context Protocol (MCP) server. If your team uses Claude, check out our guide on connecting Whereby to Claude, or explore our broader architectural overview on connecting Whereby to AI Agents. Here, we will break down exactly how to connect Whereby to ChatGPT.
Providing a Large Language Model (LLM) with read and write access to Whereby requires more than just mapping standard CRUD operations. Video infrastructure APIs are highly stateful, rely heavily on asynchronous background jobs, and expose complex, nested network diagnostics. You can either spend engineering cycles building, hosting, and maintaining a custom MCP server to handle this, or use a managed infrastructure layer to dynamically generate a secure, authenticated MCP server URL.
This guide outlines the engineering reality of the Whereby API and provides a step-by-step tutorial for using Truto to generate a secure, managed MCP server for Whereby, connect it natively to ChatGPT, and execute complex video workflows using natural language.
The Engineering Reality of the Whereby API
A custom MCP server is a self-hosted integration layer that translates an LLM's tool calls into REST API requests. While the open MCP standard provides a predictable way for models to discover tools, the reality of implementing it against Whereby is complex. If you build a custom MCP server for Whereby, your engineering team assumes ownership of the entire API lifecycle.
Here are the specific integration challenges you must solve when orchestrating Whereby from an AI agent:
Transient Rooms and Endpoint Lifecycles
Unlike traditional entities in a CRM or ATS, video rooms in Whereby are predominantly transient. When you instruct an LLM to "create a meeting", the API requires an endDate. If your MCP tool schema does not strictly enforce this requirement, the LLM will hallucinate arguments and the API will reject the request. Furthermore, host and viewer URLs (hostRoomUrl and viewerRoomUrl) are not returned by default - your tool logic must explicitly request them via the fields parameter during room creation.
Asynchronous Media Pipelines
Extracting insights from a meeting is not a simple synchronous GET request. The processes to generate recordings, transcriptions, and summaries are computationally heavy and execute asynchronously. When an agent calls the transcription endpoint, Whereby schedules a background job and returns a 201 Created response. Your agent cannot immediately download the transcript. The LLM must be instructed to poll or subsequently call a list endpoint to verify the job status before calling a secondary endpoint to fetch a temporary access link.
Deeply Nested Network Diagnostics
Whereby provides highly granular room insights, but the data model is hierarchical: Rooms -> Sessions -> Participants. If an AI agent needs to diagnose why a user had a poor meeting experience, it cannot just query the user. It must list the sessions for a room, extract the session ID, query the participants for that session to find the specific user, and finally query the individual participant endpoint to extract packet loss and bandwidth metrics.
Strict Rate Limits and Pass-Through Errors
Whereby enforces strict rate limits on API consumption. If your agent enters an aggressive polling loop waiting for a transcription to finish, it will hit an HTTP 429 Too Many Requests error.
It is critical to understand how Truto handles this: Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream Whereby API returns a 429, Truto passes that error directly to the caller. Truto normalizes the upstream rate limit information into standard headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) according to the IETF specification. Your LLM orchestration framework is entirely responsible for reading these headers and executing a backoff strategy.
How to Create the Whereby MCP Server
Truto dynamically generates MCP tools based on the integration's documented resources and methods. Tools are never cached or pre-built. During tool execution, query and body parameters share a flat input namespace, and the MCP router automatically maps the LLM's arguments to the correct API payload based on the internal JSON schema.
You can generate an MCP server for Whereby using either the Truto UI or the API.
Method 1: Via the Truto UI
For teams who want a visual configuration process:
- Navigate to the integrated account page for your Whereby connection in the Truto dashboard.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration (name, method filters, tag filters, and expiration).
- Copy the generated MCP server URL (e.g.,
https://api.truto.one/mcp/a1b2c3d4e5f6...).
Method 2: Via the API
For automated deployments and programmatic agent orchestration, you can create the server via a POST request. The API validates the configuration, generates a secure token hashed via HMAC, stores it in Cloudflare KV, and returns the endpoint URL.
curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Whereby Audio Analytics Agent",
"config": {
"methods": ["read", "write"],
"tags": ["recordings", "transcriptions", "insights"]
},
"expires_at": "2026-12-31T23:59:59Z"
}'The response contains the secure URL the LLM client needs to connect:
{
"id": "mcp_8a9b0c1d",
"name": "Whereby Audio Analytics Agent",
"config": { "methods": ["read", "write"], "tags": ["recordings", "transcriptions", "insights"] },
"expires_at": "2026-12-31T23:59:59.000Z",
"url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}Connecting the MCP Server to ChatGPT
Once you have the Truto MCP URL, you must register it with your ChatGPT environment. The MCP server is fully self-contained - the cryptographic token in the URL encodes the integrated account and configuration, meaning no additional authentication setup is required in the client unless explicitly configured.
Method A: Via the ChatGPT UI
To connect the server directly to the ChatGPT desktop or web application:
- In ChatGPT, navigate to Settings -> Apps -> Advanced settings.
- Enable Developer mode (MCP support requires this flag to be active).
- Under MCP servers / Custom connectors, click to add a new server.
- Name: Enter a descriptive label (e.g., "Whereby Operations").
- Server URL: Paste the Truto MCP URL obtained in the previous step.
- Click Save.
ChatGPT will immediately ping the endpoint, execute the initialization handshake, and list the available Whereby tools.
Method B: Via Manual Config File (Local Agents)
If you are using a custom desktop client, Cursor, or a local agent framework that utilizes JSON configuration files for MCP, you can wrap the Truto URL in a Server-Sent Events (SSE) transport adapter.
Add the following configuration to your MCP settings file (e.g., mcp_config.json or claude_desktop_config.json):
{
"mcpServers": {
"whereby-production": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"https://api.truto.one/mcp/a1b2c3d4e5f6..."
]
}
}
}Hero Tools for Whereby
Truto maps Whereby's API endpoints to highly descriptive, snake_case tools. Below are the highest-leverage tools available for AI agents operating on Whereby video infrastructure.
1. create_a_whereby_meeting
Creates a new transient meeting room. This tool is essential for on-demand scheduling. The agent must provide an endDate. It is recommended to instruct the LLM to request host and viewer URLs if it needs to distribute access links.
"Schedule a new 45-minute Whereby meeting starting now. Make sure to generate and return both the host room URL and the viewer room URL so I can send them to the prospect."
2. list_all_whereby_insight_rooms
Retrieves high-level analytical summaries for Whereby rooms. This returns aggregated metrics including total participant minutes, total unique participants, and average room ratings. Useful for macro-level usage reporting.
"Pull the insight summaries for all Whereby rooms used this week and list the top three rooms ordered by total participant minutes."
3. get_single_whereby_insight_participant_by_id
Fetches highly detailed, low-level network diagnostics for a specific participant within a specific session. This tool exposes user agent strings, connection timestamps, and time-series arrays for packet loss and bandwidth metrics.
"Fetch the detailed network diagnostic data for participant ID 'pt-9012' in session 'sess-3456'. Analyze the samples array to see if they experienced packet loss greater than 5% during the call."
4. create_a_whereby_transcription
Initiates the asynchronous transcription pipeline for an existing recording. The operation is idempotent and returns a 201 status immediately while the background job executes.
"Trigger a transcription job for recording ID 'rec-7788'. Confirm when the job has been successfully scheduled."
5. list_all_whereby_transcription_access_links
Generates a temporary, secure download link for a completed transcription. The link typically expires after one hour (3600 seconds) by default, though it can be configured for up to 43,200 seconds.
"Get the secure access link for transcription ID 'tx-1122'. Return the raw URL so I can pass it to the document parser."
6. create_a_whereby_summary
Schedules a background job to generate an AI summary of a completed transcription. This relies on Whereby's internal models to process the text payload.
"Now that transcription 'tx-1122' is complete, schedule a summary generation job for it. Let me know when the request succeeds."
7. update_a_whereby_room_theme_token_by_id
Sets the primary, secondary, and focus room theme colors for a specific room. The agent maps custom hexadecimal color values into the tokens.colors payload.
"Update the room theme for 'sales-demo-alpha'. Set the primary brand color to '#FF5733' and the secondary color to '#1A1A1A'."
For the complete list of Whereby tools and comprehensive JSON schema definitions, visit the Whereby integration page.
Workflows in Action
An MCP server turns individual tool executions into orchestrated workflows. Here is how different personas leverage an AI agent connected to Whereby.
Sales Engineering: Automated Demo Provisioning
Sales engineers often need isolated, branded demo environments for high-value prospects. Instead of manually configuring rooms, they can ask the agent to provision everything.
"Spin up a new Whereby demo room for the Acme Corp presentation tomorrow at 2 PM EST. Set the room expiration for 4 PM EST. Once created, update the room theme tokens to use Acme's brand colors: primary #0052CC and secondary #172B4D. Return the host link for me and the viewer link to send to the client."
Execution flow:
create_a_whereby_meeting(Creates the transient room and extracts theroomName).update_a_whereby_room_theme_token_by_id(Injects the hex codes into the newly created room).- Agent returns the formatted host and viewer URLs to the user.
IT Operations: Network Diagnostic Triage
When executives complain about lag during an all-hands call, IT support needs to isolate the root cause immediately without logging into multiple dashboards.
"The CEO reported severe audio lag during the all-hands meeting in the 'leadership-sync' room this morning. Pull the session logs for that room, find the CEO's participant record, and check their detailed network diagnostics for high packet loss."
Execution flow:
list_all_whereby_insight_room_sessions(Finds the latest session ID for 'leadership-sync').list_all_whereby_insight_participants(Filters participants by the CEO's external ID or display name to extract theparticipantId).get_single_whereby_insight_participant_by_id(Retrieves the time-series samples and analyzes the packet loss percentage).- Agent generates a natural language summary of the network degradation timeline.
Revenue Operations: Post-Call Intelligence Extraction
To ensure CRM hygiene, RevOps relies on meeting transcriptions. Because processing is asynchronous, the agent must orchestrate a multi-step background process.
sequenceDiagram
participant Agent as ChatGPT Agent
participant Truto as Truto MCP Router
participant Whereby as Whereby API
Agent->>Truto: call create_a_whereby_transcription
Truto->>Whereby: POST /recordings/{id}/transcriptions
Whereby-->>Truto: 201 Created
Truto-->>Agent: Job scheduled successfully
Note over Agent, Whereby: Agent waits or polls status
Agent->>Truto: call list_all_whereby_transcriptions
Truto->>Whereby: GET /transcriptions
Whereby-->>Truto: List of transcript metadata
Truto-->>Agent: Status: "completed"
Agent->>Truto: call list_all_whereby_transcription_access_links
Truto->>Whereby: GET /transcriptions/{id}/access_link
Whereby-->>Truto: { "accessLink": "https://..." }
Truto-->>Agent: Returns temporary secure link"Start a transcription job for yesterday's recording 'rec-9944'. Wait for it to finish, then generate the access link so I can push the text to Salesforce."
Execution flow:
create_a_whereby_transcription(Schedules the job).list_all_whereby_transcriptions(Called iteratively to check if the job state has moved to completed).list_all_whereby_transcription_access_links(Fetches the secure URL for ingestion).
Security and Access Control
Exposing your communication infrastructure to an LLM requires strict boundary controls. Truto enforces security at the MCP token level:
- Method Filtering: You can restrict an MCP token to only allow read operations by passing
methods: ["read"]during creation. This prevents the LLM from accidentally deleting recordings or mutating room themes. - Tag Filtering: Isolate tools by domain. Pass
tags: ["insights"]to generate a server that can only access analytical metrics, completely blinding the LLM to meeting creation or recording management. - Expiration (
expires_at): Tokens can be issued with a strict time-to-live. This is ideal for short-lived agents running automated batch jobs. Once the timestamp passes, Cloudflare KV drops the token and the Durable Object alarm tears down the database record. - Extra Authentication (
require_api_token_auth): By default, possession of the tokenized URL grants access. By setting this flag to true, the client must also append a valid Truto API token in the Authorization header, preventing lateral movement if the URL leaks in client logs.
Orchestrating Video APIs Requires Precision
Whereby is an incredibly powerful platform for building custom video experiences, but its API expects stateful orchestration, precise network diagnostics extraction, and asynchronous pipeline management.
Building a custom MCP server to translate LLM intent into Whereby's specific schemas demands heavy engineering effort. You are forced to write backoff logic for rate limits, polling structures for transcripts, and pagination cursors for large participant lists. Using Truto's managed MCP server infrastructure allows you to bypass the boilerplate. The integration handles token lifecycle management, schema mapping, and secure tool generation dynamically, allowing your team to focus exclusively on designing complex agentic workflows.
FAQ
- How does Truto handle Whereby API rate limits during MCP tool execution?
- Truto does not absorb, retry, or apply exponential backoff to rate limit errors. When the Whereby API returns an HTTP 429 Too Many Requests error, Truto passes the error back to the caller while normalizing upstream rate limit details into standard headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The LLM framework must handle the backoff strategy.
- Can I prevent the ChatGPT agent from deleting Whereby meetings or recordings?
- Yes. When creating the MCP server via the Truto API or UI, you can supply a method filter (e.g., methods: ["read"]). This restricts the server to GET and LIST operations, preventing the LLM from executing destructive write or delete calls.
- How do AI agents access asynchronous Whereby transcripts via MCP?
- Because transcript generation is asynchronous, the LLM must first invoke `create_a_whereby_transcription` to schedule the job. It then polls `list_all_whereby_transcriptions` to check the status. Once complete, it calls `list_all_whereby_transcription_access_links` to retrieve a temporary download URL.
- Do I need to hardcode API tokens into my ChatGPT configuration to use Truto?
- No. The generated Truto MCP URL contains a secure, hashed cryptographic token that acts as self-contained authentication. Unless you explicitly enable `require_api_token_auth` for secondary validation, pasting the URL into ChatGPT is all that is required.