Connect Liqaa to your AI assistant
A Model Context Protocol (MCP) server for Liqaa. Give Claude (including Cowork), ChatGPT, Gemini, or your IDE direct access to customer conversations, tickets, knowledge base, domains, and billing status — read and manage. Connect in one click over OAuth, or use an API key for CLI clients.
What is Liqaa MCP?
MCP is an open standard that lets AI models call "tools" on external services. Liqaa MCP exposes your customer-service data as tools, so an AI assistant can answer questions like "how many open high-priority tickets are there?" or take actions like "reply to this conversation" — scoped to your tenant and account.
Endpoint: POST https://api.liqaa.id/mcp — JSON-RPC 2.0 (Streamable HTTP, stateless). Auth: OAuth 2.1 (PKCE) or the header Authorization: Bearer lqa_live_….
What you can do
- Read & reply to customer conversations, claim/release, mark resolved/reopen
- Manage helpdesk tickets — create, update status, add comments
- Read & add knowledge-base documents, search their content
- View & add widget domains, view widget analytics
- View billing status, usage vs plan limits, dashboard overview
Every call acts as the staff member who owns the API key — you need to be a member of a conversation (claim it first) before you can reply.
Use cases
1. Closing knowledge-base gaps on a schedule
Your AI records the questions it couldn't answer — every time a conversation is handed to a human, the system stores a short briefing of what was asked and what was already tried. Ask your assistant: "review the last 7 days of KB gaps, group the recurring ones, and draft articles for the top three." Today's AI failure becomes the article that prevents tomorrow's.
Tools: liqaa_kb_gaps → liqaa_kb_search → liqaa_create_kb_document
2. Working across systems in one session
This is the part no dashboard can do. In a single session your assistant can hold Liqaa alongside your code repository, issue tracker, or spreadsheets: read a bug report out of a customer conversation, open an issue complete with its context, then reply to the customer with the ticket number — no copy-pasting between tabs.
3. Asking your data, not hunting for it
"How many conversations are unhandled right now?" · "What complaint came up most this week?" · "Will this month's usage exceed my plan limit?" — answered from live data, without opening a dashboard or building a report.
4. Triage and drafted replies
The assistant reads the unhandled queue, summarizes each conversation, and drafts replies in your tone. You decide which go out — claiming and sending still require your approval.
5. Setting up a new account
Filling the knowledge base from an existing site and documents, registering domains, checking verification status — setup work that is normally hours of clicking becomes one instruction.
6. Service-quality audits
Have the assistant read through resolved conversations and flag the ones with wrong answers, off tone, or slow responses — the review nobody ever finds time for.
Fastest: one-click connect
For Claude (including Cowork), Claude Desktop, and other clients with a connector UI: you don't need an API key at all.
- Open Settings → Connectors → Add custom connector.
- Enter the URL:
https://api.liqaa.id/mcp - Leave the OAuth Client ID & Secret fields empty. The server registers your client automatically.
- Click Connect → you land on the Liqaa consent screen → approve → done.
You need to be signed in at member.liqaa.id in the same browser. If you aren't, the page will ask you to sign in and then return on its own. Access can be revoked anytime via "Disconnect" in the client.
Alternative: API key (for CLI clients)
Config-file clients (Claude Code, Cursor, VS Code, Gemini CLI) use an API-key header. Open member.liqaa.id/panel/settings/api-keys → create a new key. Copy the key lqa_live_… — shown only once.
Claude Code (CLI)
Run this in your terminal:
claude mcp add --transport http liqaa https://api.liqaa.id/mcp \
--header "Authorization: Bearer lqa_live_XXXXXXXX"Claude Desktop
Settings → Developer → Edit Config, then add (using the mcp-remote bridge for the remote server):
{
"mcpServers": {
"liqaa": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.liqaa.id/mcp",
"--header", "Authorization: Bearer lqa_live_XXXXXXXX"]
}
}
}Cursor
Create ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):
{
"mcpServers": {
"liqaa": {
"url": "https://api.liqaa.id/mcp",
"headers": { "Authorization": "Bearer lqa_live_XXXXXXXX" }
}
}
}VS Code (GitHub Copilot)
Create .vscode/mcp.json in your workspace:
{
"servers": {
"liqaa": {
"type": "http",
"url": "https://api.liqaa.id/mcp",
"headers": { "Authorization": "Bearer lqa_live_XXXXXXXX" }
}
}
}
The Cline / Continue extensions also support MCP — add the same URL & header in their MCP settings.
Google Gemini CLI
Edit ~/.gemini/settings.json:
{
"mcpServers": {
"liqaa": {
"httpUrl": "https://api.liqaa.id/mcp",
"headers": { "Authorization": "Bearer lqa_live_XXXXXXXX" }
}
}
}ChatGPT
ChatGPT supports MCP via Developer Mode / Custom Connectors (Plus/Pro/Enterprise). Enter the URL https://api.liqaa.id/mcp.
ChatGPT's connector UI favours OAuth and doesn't expose a static API-key header field. Since Liqaa MCP now supports OAuth this path should work — but we have only verified it end-to-end on Claude/Cowork, not on ChatGPT. Let us know if you hit a snag.
Any MCP client / universal bridge
Any MCP client supporting Streamable HTTP: use the URL + header above. For stdio-only clients, bridge with mcp-remote:
npx -y mcp-remote https://api.liqaa.id/mcp \
--header "Authorization: Bearer lqa_live_XXXXXXXX"Tools reference
| Tool | Type | Description |
|---|---|---|
liqaa_list_conversations | read | List customer support conversations for your Liqaa tenant (open, assigned, resolved — all statuses). |
liqaa_get_conversation | read | Get a single conversation by id, with full detail (status, assignee, AI-enabled flag). |
liqaa_kb_gaps | read | Self-diagnosed knowledge-base gaps: conversations the AI could not resolve and handed to a human, each with an AI-written briefing of what the customer asked and what the AI already tried. Returns `data` (raw gaps), `themes` (exact-match tally of the AI-generated topic phrase, most frequent first) and `summary`. A single gap is noise; the same question recurring is the signal. `themes` groups by exact phrase only, so cluster the raw list yourself for near-duplicates — and note `summary.withoutTopic`, gaps still open have no topic yet. Two follow-ups: a recurring question with a known answer is a KB article (liqaa_create_kb_document); a recurring question that reveals something missing or confusing in the product is a requirement for the engineering backlog. Before creating either, search for what already exists so the same gap is not filed twice a week, and confirm the real answer with a human — these briefings record what the AI attempted, not a verified answer. |
liqaa_list_messages | read | List messages in a conversation, most recent first (paginated via cursor). |
liqaa_reply_conversation | write | Send a message in a conversation as yourself (the API key owner). You must already be a member of the conversation — use liqaa_assign_conversation first to claim an unclaimed conversation. |
liqaa_assign_conversation | write | Claim/assign a conversation to yourself (the API key owner) and disable AI auto-response for it. |
liqaa_unassign_conversation | write | Release a conversation you've claimed and re-enable AI auto-response for it. |
liqaa_resolve_conversation | write | Mark a conversation as resolved. |
liqaa_reopen_conversation | write | Reopen a previously resolved conversation. |
liqaa_list_tickets | read | List support tickets — optionally filtered by status or priority. |
liqaa_get_ticket | read | Get a single ticket by id, with full detail. |
liqaa_create_ticket | write | Create a new support ticket. |
liqaa_update_ticket | write | Update a ticket's status, priority, category, title, or description. |
liqaa_add_ticket_comment | write | Add a comment to a ticket (customer-visible by default, or internal-only). |
liqaa_list_kb_documents | read | List knowledge-base documents (crawled pages, uploaded files, manual entries) for your tenant. |
liqaa_kb_search | read | Semantic search over your knowledge base — returns the most relevant content chunks for a query. |
liqaa_create_kb_document | write | Add a knowledge-base document — either a webpage to crawl (sourceUrl) or manual text content. |
liqaa_update_kb_document | write | Update a knowledge-base document's title, content, or crawl frequency. |
liqaa_list_domains | read | List domains verified for widget installation, plus your plan's website limit and current usage. |
liqaa_add_domain | write | Register a new domain for widget installation (still needs DNS verification afterwards, done from the dashboard). |
liqaa_widget_analytics | read | Get widget usage analytics for your tenant (sessions, messages, conversion trends). |
liqaa_billing_status | read | Get full billing status: current plan, usage vs limits, and account state. |
liqaa_billing_usage | read | Get this month's usage stats (conversations, AI messages, agents) vs your plan's limits. |
liqaa_dashboard_overview | read | Get the dashboard overview: conversation/ticket counts, billable usage vs limits, quota reset date. |
Security
- Every call is scoped to the connection owner's tenant — no cross-tenant access.
- Actions run as the staff account that owns the connection (not a separate account), so they follow that account's existing permissions.
- OAuth uses PKCE; access tokens are short-lived and revocable via "Disconnect" in the client. API keys are revocable in the panel.
Two limits worth knowing. First, there is no server-side read/write scope split yet — any connection can both read and manage. Clients like Claude/Cowork offer per-tool permissions instead (allow / ask / block); we recommend setting the write tools to "ask". Second, because actions run as your account, the audit log cannot distinguish an AI action from one you took yourself.
FAQ
Is it free? Yes, included with your Liqaa subscription.
Can multiple AIs use it at once? Yes — the same endpoint & key work across all MCP clients.
What about OAuth for Claude / Cowork? Available — and it's the path we recommend. Just enter the URL and leave the OAuth fields empty; see the section above.
Can the AI reply to customers without my knowledge? Write tools (reply, claim, update tickets) are available if the connection is allowed to use them. In Claude/Cowork you can set per-tool permissions — set the write tools to "ask" so every send needs your approval.