Overview
The Model Context Protocol is an open standard that lets AI assistants connect to external systems. Conduit’s MCP server exposes your contacts, conversations, tickets, calls, knowledge base, and agents as tools any MCP-compatible client can call. Once connected, your AI client can:- Look up contacts, conversations, tickets, calls, reservations, and appointments
- Search the knowledge base and read knowledge nodes
- Send messages on a conversation or ticket, or to a contact on a specific channel
- Create and manage agents, skills, and contact custom attributes
- List workspaces your token has access to
2025-06-18 over streamable HTTP.
Endpoint
Authorization: Bearer <token> header. Workspace-scoped tools (most of them) also require a workspace_id argument.
Authentication
Two token types are accepted. Pick the one that matches the client.OAuth 2.1
Interactive clients that want a user-consent flow, for example Claude Desktop, Cursor, VS Code, Claude Code, or Codex. Supports Dynamic Client Registration, so no pre-provisioning is needed.
API token
Server-to-server, CI, or CLI use. Generate a
capi_... token under Settings > API Tokens and paste it into the client’s bearer-token field.OAuth 2.1
Conduit’s MCP server advertises itself as an OAuth 2.1 protected resource per RFC 9728. When a client first POSTs to the MCP endpoint without a token, the server responds with401 and a WWW-Authenticate header pointing at the resource metadata document. Any spec-compliant client will discover the rest automatically.
| Metadata | URL |
|---|---|
| Protected resource metadata | https://api.conduit.ai/.well-known/oauth-protected-resource/v1/mcp |
| Authorization server | https://base.conduit.ai/oauth/mcp |
| Authorization server metadata | https://base.conduit.ai/.well-known/oauth-authorization-server/oauth/mcp |
| Scopes | mcp:read, mcp:write, offline_access |
API tokens
API tokens start with thecapi_ prefix and carry either read-only or read/write access. Write tools (send_conversation_message, patch_contact, create_agent, etc.) require a read/write token. Rotate or revoke tokens under Settings > API Tokens at any time.
Connect a Client
- Claude Desktop
- Claude Code
- Cursor
- VS Code
- Codex
- Other clients
Add Conduit as a Custom Connector.
- Open Settings > Connectors in Claude Desktop
- Click Add custom connector
- Name:
Conduit, URL:https://api.conduit.ai/v1/mcp - Click Connect and complete the OAuth flow in your browser
Production Setup
Four practices that keep MCP usage safe and predictable in real workflows.Pin a workspace at the start of each session
Almost every tool requires aworkspace_id. Open each session by anchoring the model to one workspace:
list_workspaces repeatedly.
Keep approvals on for write tools
Read tools are safe to pre-approve in clients that support it. Write tools — anything starting withsend_, patch_, create_, update_, or delete_ — should always prompt. Each Conduit tool advertises a destructiveHint annotation; well-behaved clients surface it on the approval dialog.
A misfired model decision against an allow-listed send_conversation_message ships a real message to a real customer. Don’t allow-list it.
Pass an idempotency key on every send
Every write tool accepts anidempotency_key input (or Idempotency-Key HTTP header). Pass a stable UUID per logical send. Clients retry on transient failures, and without a key a retry double-sends.
Use least-privilege API tokens
For non-interactive use cases (CI, server-to-server, scripts), generate a read-onlycapi_ token and use it everywhere reads are sufficient. Only generate a read_write token for the specific session that needs writes, and rotate it after. Tokens are revoked under Settings > API Tokens and take effect immediately.
Example Prompts
Generic starting points that work in any MCP-enabled client. Swap names and IDs for your own.Triage open tickets
Triage open tickets
list_helpdesk_tickets, get_helpdesk_ticket, list_ticket_messages. All read-only — no approval prompts if those tools are pre-approved.Reproduce a customer report
Reproduce a customer report
Draft a reply with full context
Draft a reply with full context
send_conversation_message, which prompts for approval before anything ships.Audit a knowledge base section
Audit a knowledge base section
update_knowledge_node (write tool, prompts for approval) once you’ve reviewed the list.Rate Limits and Errors
Requests are rate-limited per workspace. A429 response includes a Retry-After header. Error responses follow the MCP spec: content[0].text holds the error message and isError: true is set on tool results.
| Status | Meaning |
|---|---|
| 401 | Missing, expired, or revoked token |
| 403 | Token does not have access to the requested workspace, or lacks read_write for a write tool |
| 404 | Resource not found in the given workspace |
| 429 | Rate limit exceeded |
Tool Reference
The tool list is authoritative inside the server itself. A client that has completedinitialize and tools/list will receive every tool, its input schema, and its annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint).
Common tools, grouped by surface:
| Surface | Examples |
|---|---|
| Workspaces | list_workspaces, list_workspace_senders |
| Contacts | list_contacts, get_contact, search_contacts, patch_contact, create_contact, send_contact_message |
| Custom attributes | list_custom_attributes, get_contact_custom_attributes, patch_contact_custom_attributes |
| Conversations | list_conversations, get_conversation, search_conversations, list_conversation_messages, send_conversation_message |
| Tickets | list_tickets, get_ticket, search_tickets, list_ticket_messages, send_ticket_message |
| Calls & appointments | list_calls, get_call, list_appointments, get_appointment |
| Knowledge | search_knowledge, search_knowledge_nodes, list_knowledge_nodes, get_knowledge_node, create_knowledge_node, update_knowledge_node, delete_knowledge_node |
| Agents & skills | list_agents, get_agent, create_agent, patch_agent, delete_agent, list_skills, create_skill, patch_skill, delete_skill |
Troubleshooting
Client says Unauthorized after working for a while
Client says Unauthorized after working for a while
list_workspaces returns an empty array
list_workspaces returns an empty array
The token is valid but not scoped to any workspace. For OAuth, remove the Conduit connector in your client and reconnect, making sure to grant at least one workspace during consent. For API tokens, confirm the token is attached to the right workspace.
Write tool returns 403
Write tool returns 403
API tokens default to read-only. Create a new token with read/write access, or use an OAuth client where you consented to the
mcp:write scope.Client cannot discover the OAuth server
Client cannot discover the OAuth server
Some clients do not support Dynamic Client Registration or do not follow the
WWW-Authenticate resource metadata pointer. In that case, use an API token instead, or point the client directly at the authorization server URLs in the Authentication section.No tools showing up after connecting
No tools showing up after connecting
The connection succeeded but the client hasn’t refreshed its tool list. Disconnect and reconnect, or restart the client. In Claude Code, run
/mcp to force a reconnect.