Team MCP for the AI agent
Standard remote MCP contract Ticketping expects from your server — transport, auth, read-only tools, and how to connect.
Ticketping’s support AI can call your tools over the Model Context Protocol. We act as an MCP client. You host a normal remote MCP server; there is no Ticketping-specific RPC, SDK, or required tool names.
Teams that skip MCP can still use the agent with static knowledge in Settings → AI agent.
What to expose
| Piece | Expectation |
|---|---|
| Transport | Streamable HTTP (preferred) or SSE-compatible responses on one HTTPS endpoint |
| Protocol | JSON-RPC 2.0: initialize, notifications/initialized, tools/list, tools/call |
| Auth | Authorization: Bearer <token> (optional custom headers also supported) |
| Customer-facing tools | Read-only lookups only (docs search, account status, order status, …) |
| Response shape | Prefer JSON with title + url (and a short snippet) so we can show citations |
Writable actions (refunds, cancels, deletes) are blocked for the customer-facing agent today, even if the tool appears in tools/list.
Recommended tools (conventions)
Names are yours to choose. These shapes work well:
Docs search
{
"name": "search_docs",
"description": "Search the public help center and product docs",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string" }
},
"required": ["query"]
}
}Return something like:
{
"results": [
{
"title": "How refunds work",
"url": "https://docs.example.com/refunds",
"snippet": "Refunds are available within 14 days…"
}
]
}Account / order lookup (read-only)
{
"name": "get_account_status",
"description": "Look up subscription status for a customer id or email",
"inputSchema": {
"type": "object",
"properties": {
"customer_id": { "type": "string" },
"email": { "type": "string" }
}
},
"annotations": { "readOnlyHint": true }
}Mark read-only tools with annotations.readOnlyHint: true when you can. Tools whose names look mutating (refund, delete, cancel, …) are treated as writable and stay off the allowlist.
Connect in Ticketping
- Open Settings → AI agent → MCP.
- Paste your MCP URL and optional bearer token.
- Turn Enabled on and click Test & sync tools.
- Allowlist only the tools the customer-facing agent may call.
- Optionally add Guidance (tone, when to escalate, which tool for which intent).
- Use Preview to try the same runtime as the widget.
Limits we enforce: about 15s per tool call, a small number of tool rounds per turn, and truncated tool results so chats stay responsive.
Without MCP
If you do not run an MCP server yet:
- Add articles under Settings → AI agent → Knowledge.
- Turn on AI answers for your widget.
- The agent answers only from that knowledge (or hands off to a human).
You can keep knowledge articles after you connect MCP — they act as short policy / tone context alongside live tools.
Migration and reuse
- The same MCP server works with other MCP clients (Cursor, Claude, custom agents).
- Later, Ticketping may offer first-party tools (help center search, public URL fetch). You can shrink or remove your server then; only the connection and allowlist change — not a new protocol.
- No Ticketping SDK is required. A minimal Streamable HTTP MCP server in Node or Python is enough.
Minimal curl check
After initialize (and reading Mcp-Session-Id if the server returns one):
curl -s -X POST 'https://mcp.example.com/mcp' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-03-26' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'You should get a JSON-RPC result with a tools array. If that works, Test & sync in the dashboard should too.