MCP server
Rindee runs a Model Context Protocol server, so an AI assistant can read your calls, contacts and appointments, and manage contacts and appointments, on your behalf.
https://api.rindee.ai/mcpIt uses the Streamable HTTP transport and accepts two kinds of credential: a user signing in with their Rindee account (OAuth), or a regular API key. Either way it is available on the plans that include API access (Business and above).
Sign in with a Rindee account (OAuth)
Section titled “Sign in with a Rindee account (OAuth)”ChatGPT and Claude connect this way: add https://api.rindee.ai/mcp as a custom
connector, and the client discovers everything else. The user signs in, picks the
organization, decides whether the assistant may make changes, and is returned to the
client. Connections are listed, and can be disconnected, under Integrations →
Connected apps in the app.
Claude — Settings → Connectors → Add custom connector: enter a name and
https://api.rindee.ai/mcp, then Continue. Claude detects the right options, so keep
them: Sign in now, Use Claude’s published identity, and (under Advanced)
Streamable HTTP. Select Add, then Connect to sign in to Rindee.
For client developers, Rindee follows the MCP authorization spec:
- A
401from/mcpcarriesWWW-Authenticate: Bearer resource_metadata="https://api.rindee.ai/.well-known/oauth-protected-resource/mcp". - Authorization server metadata is at
https://api.rindee.ai/.well-known/oauth-authorization-server(issuerhttps://api.rindee.ai). - Authorization code with PKCE (
S256only). The authorization response includesiss. - Clients identify themselves with a Client ID Metadata Document (an HTTPS URL as
client_id), or register through Dynamic Client Registration at/register. Public clients usetoken_endpoint_auth_methodnonewith PKCE. A client whose metadata document asks forprivate_key_jwtand publishes an HTTPSjwks_urimay sign its/tokenand/revokerequests (RFC 7523). A signed request is verified strictly: RS256,issandsubequal to theclient_id,audthe issuer or the endpoint,expat most an hour ahead, and ajtiused once — any failure isinvalid_client. An unsigned request is handled as a public client. - Send
resource=https://api.rindee.ai/mcp. Tokens are issued for that resource only, and any other value is refused withinvalid_target. - Scopes:
read, andoperatefor the tools that change data.operateis granted only when the user allows changes and their own role can make changes. - Access tokens last one hour. Refresh tokens rotate on every use, and reusing an old one disconnects the client. A connection needs a new sign-in after 30 days without use, or 90 days after it was made.
/revokedisconnects the client.
What a signed-in assistant can do is always capped by the user who connected it: if their role changes or they leave the organization, the assistant’s access follows.
Connect with an API key
Section titled “Connect with an API key”Any MCP client that can send an Authorization header works.
Claude Code
claude mcp add --transport http rindee https://api.rindee.ai/mcp \ --header "Authorization: Bearer rk_live_your_key_here"JSON configuration (.mcp.json and clients that use the same format)
{ "mcpServers": { "rindee": { "type": "http", "url": "https://api.rindee.ai/mcp", "headers": { "Authorization": "Bearer rk_live_your_key_here" } } }}Create a dedicated key for each assistant you connect, so you can revoke one without affecting your other integrations.
What the assistant can do
Section titled “What the assistant can do”Every tool performs one API request as the caller, so it can do exactly what that key or signed-in connection can do over the REST API: the same capabilities, plan limits and rate limits apply, and it only ever sees your organization’s data.
| Area | Read | Change |
|---|---|---|
| Agents | list_agents, get_agent, list_agent_flows |
create_agent, update_agent |
| Agent tools | list_agent_tools, list_agent_tool_kinds |
create_agent_tool, update_agent_tool, delete_agent_tool |
| Calls | list_calls, get_call (with transcript) |
— |
| Contacts | list_contacts, get_contact, list_contact_tags |
create_contact, update_contact, delete_contact |
| Segments | list_segments, list_segment_fields, preview_segment |
create_segment, update_segment, delete_segment, count_segment_contacts |
| Appointments | list_appointments, get_appointment |
create_appointment, update_appointment, delete_appointment |
| Branches, services, staff | list_branches, list_services, list_staff_members |
create_/update_/delete_branch, _service, _staff_member |
| Time off | list_time_off |
create_time_off, update_time_off, delete_time_off |
| Campaigns | list_campaigns, get_campaign, get_campaign_metrics, list_campaign_batches |
pause_campaign, resume_campaign (drip); pause_campaign_batch, resume_campaign_batch (bulk) |
| Numbers and providers | list_phone_numbers, list_ai_providers |
— |
| Reporting | get_analytics, list_activity |
— |
| Account | get_balance, get_plan_status |
— |
Each tool is generated from the REST route it calls: its arguments are that route’s
parameters and body, and its description is the route’s description in the
API reference. The tools that change data need the operate capability:
a key with it, or a signed-in connection granted the operate scope. Without it the
assistant sees only the read tools, so it can answer questions about your account but
change nothing over MCP. Tools that overwrite, delete or start calls carry
destructiveHint; resuming a campaign or batch starts calling again.
Nothing over MCP places calls, starts campaigns or batches, deletes agents, sets an
agent’s voice or speech settings (studio, s2s — the agent tools leave them out),
requests phone numbers, spends balance, connects AI-provider keys, or changes billing, API keys,
webhooks, members or settings. Use the API reference or the app for those.
Errors
Section titled “Errors”| Response | Meaning |
|---|---|
401 |
The Authorization header is missing, or the key or access token is invalid, expired or revoked. |
402 |
The organization’s plan does not include API access. |
429 |
More than 240 MCP requests in a minute for your organization. Retry after the Retry-After header. |
A tool that fails (for example, an appointment time that is not available, or a contact that does not exist) returns a tool error carrying the API’s HTTP status and message, which the assistant can read and act on.