Connect AI apps (MCP)
The Model Context Protocol (MCP) lets AI apps such as Claude Code, Cursor and VS Code read your conversations and, if you allow it, reply to them.
What it is
ZebChat runs an MCP server. Once an AI app is connected, you can ask it things like “who is waiting longest?” and it works through the same permissions as your account. Any MCP client that supports HTTP servers with a header works.
Create an MCP key
- Open Settings → API keys → Use with AI apps.
- Choose Create MCP key, name it after the app, and pick the scopes you want to allow.
- Copy the key (
zck_…). It is shown once.
The server URL is https://api.zebchat.com/api/v1/mcp.
Connect your app
Claude Code
Shell
claude mcp add --transport http zebchat https://api.zebchat.com/api/v1/mcp \
--header "Authorization: Bearer zck_…"Cursor
JSON
// ~/.cursor/mcp.json
{
"mcpServers": {
"zebchat": {
"url": "https://api.zebchat.com/api/v1/mcp",
"headers": { "Authorization": "Bearer zck_…" }
}
}
}VS Code
VS Code asks for the key when the server starts, so it never sits in the file.
JSON
// .vscode/mcp.json
{
"inputs": [
{
"type": "promptString",
"id": "zebchat-api-key",
"description": "ZebChat MCP key",
"password": true
}
],
"servers": {
"zebchat": {
"type": "http",
"url": "https://api.zebchat.com/api/v1/mcp",
"headers": { "Authorization": "Bearer ${input:zebchat-api-key}" }
}
}
}Claude Desktop
Claude Desktop connects through mcp-remote. Add this to its configuration:
JSON
{
"mcpServers": {
"zebchat": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.zebchat.com/api/v1/mcp", "--header", "Authorization:${ZEBCHAT_AUTH}"],
"env": { "ZEBCHAT_AUTH": "Bearer zck_…" }
}
}
}Tools
The app only sees the tools allowed by the key’s scopes and your role. Results are compact and paged, and never include signed file links or secrets.
| Scope | Tool | What it does |
|---|---|---|
conversations:read | list_conversations | List conversations, filtered by status, assignee, team, tag, visitor or date |
get_conversation | A conversation’s details and its latest messages | |
search_messages | Full-text search across messages, internal notes included | |
list_agents | Members who answer chats, with status and open chats | |
list_tags | Your tags | |
conversations:reply | send_reply | Reply to a visitor, or add an internal note |
set_status | Open, resolve or close a conversation, or set its priority | |
assign_conversation | Assign a conversation to yourself, someone else, or nobody | |
tag_conversation | Add or remove existing tags | |
list_saved_replies | Your saved replies | |
visitors:read | list_visitors_online | Visitors online now and the busiest pages |
get_visitor | A visitor’s profile, latest visit, stats and recent conversations | |
contacts:read | search_contacts | Find contacts by name, email, phone or company |
get_contact | A contact’s details, notes, tags, lists and conversations | |
knowledge:read | search_knowledge | Search your knowledge base for passages that answer a question |
reports:read | get_report_summary | Totals for a period, optionally day by day, and live counts |
Example prompts
- “Summarize my open chats and tell me which to answer first.”
- “Search our knowledge base and draft a reply to the refund question in conv_…”
- “Which pages are visitors on right now?”
- “How many chats did we resolve each day this week?”
Safety
- A key acts as the member who created it, with your role and the key’s scopes: the smaller of the two applies. Give read-only keys to apps that only need to look.
- Revoke a key in Settings → API keys at any time. It stops working at once.
- Actions are labelled “via MCP · key name” in the audit log and next to sent messages, so your team can see what the AI did.
- Text written by visitors is passed to the AI app as untrusted data, and the server asks the app to confirm before replying, closing or reassigning.