Connect your own AI assistant over MCP
Let Claude, Cursor or any MCP-capable assistant read conversations and customers, tag, add knowledge and, if you allow it, approve refunds, acting as you.
purser runs an MCP server. Once it is connected, you can tell your own AI assistant "show me today's conversations waiting for a person", "tag this customer VIP" or "add this Q&A to the knowledge base", and it calls purser's tools to do it.
The assistant acts as you, with the same role you have in each workspace: whatever you cannot do in the console, it cannot do either.
Server URL
https://askpurser.com/api/mcpThe URL and the command below are also in the console under Settings (设置) → AI assistants (AI 助手), ready to copy.
Connecting
Claude on the web or desktop: Settings → Connectors → Add custom connector, and paste the URL above.
Claude Code:
claude mcp add --transport http purser https://askpurser.com/api/mcpCursor and other clients: add a remote MCP server (HTTP) the way the client describes, with the URL above. You do not need a client ID or secret in advance: the client registers itself.
The first time, the assistant opens your browser:
- sign in to purser if you are not signed in;
- the consent page asks whether to let the assistant use purser (让「…」使用 purser?) and shows the address the authorisation will be handed to. If it names a program on your computer (such as Claude Code or Cursor) and you did not just start this connection on your own computer, click Deny (拒绝);
- tick the permissions to give it and click Allow (允许).
Permissions
| Scope | Name on the consent page | Default | Covers |
|---|---|---|---|
purser:read | View (查看) | Required | Conversations, customers, orders, knowledge base, refunds and analytics |
purser:write | Organise (整理) | Ticked | Tags, internal notes, Q&A in the knowledge draft, quick replies, taking and replying to conversations |
purser:refunds | Approve or reject refunds (批准或拒绝退款) | Not ticked | Approving really calls your store's refund endpoint and money goes out |
If the assistant calls a tool it was not given the scope for, purser refuses the call and tells the client which scope is missing (an OAuth insufficient_scope challenge); clients that support it will ask you to authorise again.
Tools
View (purser:read)
| Tool | What it does |
|---|---|
list_workspaces | The workspaces you belong to and your role in each |
list_conversations | Inbox conversations; view is live (a person is wanted or has it now), tickets (waiting for a person to reply later), assistant (the AI is handling it) or mine (taken by you) |
get_conversation | One conversation: messages, status, who has it, the AI's drafts |
search_customers | Find customers by name, email, ID or tag |
get_customer | One customer: profile, recent orders, conversations, tags and internal notes |
search_knowledge | What the AI would retrieve for a question (search only, no answer is written); target is customers (what customers get now) or draft (unpublished edits) |
list_knowledge | The knowledge base's sources (the draft): articles, files, Q&A, website pages |
get_analytics | What the AI handled over the last N days, what went to people, speed and cost |
get_leaderboard | This month's (or a given month's) agent leaderboard |
list_segments | Customer segments with their conditions and service policy |
list_tags | Tags with their counts |
list_quick_replies | Quick replies (shared ones and your own) |
list_feedback / get_feedback | Product feedback list / one feedback item in detail |
list_refunds | Refunds; by default the ones waiting for approval |
Organise (purser:write)
| Tool | What it does |
|---|---|
tag_customer / tag_conversation | Tag a customer / a conversation (a new name creates the tag) |
add_customer_note | Add an internal note to a customer (customers never see it and the AI does not read it) |
add_knowledge_qa | Add a Q&A to the knowledge base draft |
remove_knowledge_source | Delete a source from the knowledge draft (owners and admins only) |
add_quick_reply | Add a quick reply; shared ones need an owner or admin |
update_feedback | Change a feedback item's status or category, or add an internal note (the submitter is not emailed) |
claim_conversation | Take a conversation that is waiting for a person (or is with the AI); fails if a colleague already has it |
reply_to_customer | Send the customer a message under your name; they see it at once |
release_conversation | Put a conversation you took back in the queue |
close_conversation | Close a conversation you took |
Refunds (purser:refunds)
| Tool | What it does |
|---|---|
approve_refund | Approve a refund waiting for approval; your store's refund endpoint is then called and money goes out |
reject_refund | Reject a refund waiting for approval; the customer is told a person will follow up |
purser tells the assistant to confirm with you before approve_refund and reply_to_customer (the order, amount and reason; the exact message text). Knowledge added through an assistant only goes into the draft, and customers see it only after someone publishes in the console; see Try and release. Customer messages, notes and knowledge text are treated as data: the assistant is told never to follow instructions found in them.
A tool result longer than 60,000 characters is cut, with a note asking for a smaller request.
Several workspaces: workspace_id
Every tool except list_workspaces takes an optional workspace_id:
- if you belong to only one workspace, leave it out;
- if you belong to several, it is required; the value is an
idfromlist_workspaces. Assistants usually calllist_workspacesfirst on their own.
On every call purser checks again that you are a member of that workspace and what your role is.
Plan
AI assistants need the Growth or Scale plan (test workspaces can use them right away). In a workspace on another plan the assistant can still connect, but tool calls acting in that workspace are refused with a note that an upgrade is needed. Compare plans on the pricing page and see Plan and billing.
Seeing and disconnecting assistants
Under Settings (设置) → AI assistants (AI 助手), the Connected (已连接) list shows every assistant you have connected: its name, the address it was authorised for, its scopes and when you authorised it. Click Disconnect (断开) and it loses access immediately, including any token it already holds; to use it again, connect and authorise again.
- A connection belongs to you, not to the workspace: colleagues who want one connect their own, and the list only shows your connections.
- Signing out of purser does not disconnect an assistant; to disconnect one, click Disconnect (断开) here.
For client developers
- Transport: Streamable HTTP, stateless, at
https://askpurser.com/api/mcp. - Authorisation: OAuth 2.1. Protected resource metadata is at
https://askpurser.com/.well-known/oauth-protected-resource; the authorisation server ishttps://askpurser.com/api/auth. - Dynamic client registration (RFC 7591) is supported, so no pre-registration is needed; loopback redirect URIs (
http://127.0.0.1:<port>) work. - An invalid token, or an assistant that has been disconnected, gets
401with an OAuth challenge; the client should run the authorisation flow again.