purserDOCS

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/mcp

The 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/mcp

Cursor 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:

  1. sign in to purser if you are not signed in;
  2. 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 (拒绝);
  3. tick the permissions to give it and click Allow (允许).

Permissions

ScopeName on the consent pageDefaultCovers
purser:readView (查看)RequiredConversations, customers, orders, knowledge base, refunds and analytics
purser:writeOrganise (整理)TickedTags, internal notes, Q&A in the knowledge draft, quick replies, taking and replying to conversations
purser:refundsApprove or reject refunds (批准或拒绝退款)Not tickedApproving 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)

ToolWhat it does
list_workspacesThe workspaces you belong to and your role in each
list_conversationsInbox 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_conversationOne conversation: messages, status, who has it, the AI's drafts
search_customersFind customers by name, email, ID or tag
get_customerOne customer: profile, recent orders, conversations, tags and internal notes
search_knowledgeWhat 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_knowledgeThe knowledge base's sources (the draft): articles, files, Q&A, website pages
get_analyticsWhat the AI handled over the last N days, what went to people, speed and cost
get_leaderboardThis month's (or a given month's) agent leaderboard
list_segmentsCustomer segments with their conditions and service policy
list_tagsTags with their counts
list_quick_repliesQuick replies (shared ones and your own)
list_feedback / get_feedbackProduct feedback list / one feedback item in detail
list_refundsRefunds; by default the ones waiting for approval

Organise (purser:write)

ToolWhat it does
tag_customer / tag_conversationTag a customer / a conversation (a new name creates the tag)
add_customer_noteAdd an internal note to a customer (customers never see it and the AI does not read it)
add_knowledge_qaAdd a Q&A to the knowledge base draft
remove_knowledge_sourceDelete a source from the knowledge draft (owners and admins only)
add_quick_replyAdd a quick reply; shared ones need an owner or admin
update_feedbackChange a feedback item's status or category, or add an internal note (the submitter is not emailed)
claim_conversationTake a conversation that is waiting for a person (or is with the AI); fails if a colleague already has it
reply_to_customerSend the customer a message under your name; they see it at once
release_conversationPut a conversation you took back in the queue
close_conversationClose a conversation you took

Refunds (purser:refunds)

ToolWhat it does
approve_refundApprove a refund waiting for approval; your store's refund endpoint is then called and money goes out
reject_refundReject 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 id from list_workspaces. Assistants usually call list_workspaces first 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 is https://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 401 with an OAuth challenge; the client should run the authorisation flow again.

On this page