Chat MCP Server
Updated 2026-07-08
Usable Chat MCP server
Endpoint: https://YOUR_USABLE_HOST/api/mcp
Transport: MCP streamable HTTP
Release: v1.173.0
Usable Chat exposes a streamable HTTP MCP server for build-plane operations around custom experts and embed configurations.
Endpoint and protocol
- Transport: MCP streamable HTTP (GET, POST, OPTIONS)
- Runtime behavior: stateless per request; authenticate every request
- Server identity: name
Usable Chat, version1.0.0
Unauthorized requests return a JSON-RPC error and a WWW-Authenticate challenge.
Client configuration
{
"mcpServers": {
"usable-chat": {
"type": "streamable-http",
"url": "https://YOUR_USABLE_HOST/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}If your client supports OAuth discovery, use its normal OAuth flow. If it requires static headers, provide a valid bearer token.
Permission model
- Read tools return only resources visible to the authenticated user.
- Some permission misses are returned as “not found”.
- Owner-only tools include destructive/archive/revoke actions.
create_embed_keyreturns the token once; store it carefully.
Expert tools
list_experts
{
"workspaceId": "optional-workspace-uuid",
"status": "active",
"limit": 20,
"offset": 0
}status can be active, archived, draft, or all.
get_expert
{ "idOrKey": "expert-uuid-or-key" }create_expert
{
"name": "Support Expert",
"description": "Answers order and return questions.",
"workspaceId": "workspace-uuid",
"expertConfig": {
"systemPrompt": "You are a support expert.",
"enabledTools": ["agentic-search-fragments"],
"parentTools": ["lookup_order"],
"routing": { "keywords": ["order", "return", "refund"] },
"modelPreference": "quick-thinking"
}
}update_expert
Provide expertId and only the fields to change.
archive_expert
{ "expertId": "expert-uuid" }list_expert_tools
Discover tool names assignable to experts. Returns the available built-in tool categories for the current user, including memory/workspace tools, web-search tools, image tools, and documentation tools.
Embed/config tools
list_embed_configs / get_embed_config
{ "configId": "config-uuid" }create_embed_config
{
"name": "Docs assistant",
"workspaceId": "workspace-uuid",
"configData": {
"ui": {
"inputMode": "contained",
"embedded": true,
"theme": { "mode": "auto", "primaryColor": "#1f7a5b" },
"ui": {
"placeholder": "Ask the docs…",
"welcomeMessageEnabled": true,
"welcomeMessage": "Ask me about this documentation."
}
},
"models": { "locked": true, "default": "anthropic/claude-haiku-4.5" },
"features": {
"webSearch": { "enabled": false },
"fileUploads": { "enabled": true }
},
"defaultContext": { "workspaces": ["workspace-uuid"] },
"feedback": { "mode": "host-event" }
}
}update_embed_config
Accepts deep-partial configData patches — only the provided fields are changed:
{
"configId": "config-uuid",
"configData": {
"features": {
"dataStaging": {
"acceptExtensions": [".gpx", ".kml"]
}
}
}
}archive_embed_config
{ "configId": "config-uuid" }create_embed_key
{
"configId": "config-uuid",
"label": "Production site",
"allowedDomains": ["https://www.example.com"],
"public": false
}Non-public keys must have at least one allowed domain. Returns the token once.
revoke_embed_key
{ "configId": "config-uuid", "keyId": "key-uuid" }get_embed_snippet
{ "token": "uc_REDACTED" }Returns a paste-ready snippet and iframe URL.
End-to-end workflows
Create and publish a website widget
create_embed_configwith UI/model/features/experts/feedback/defaultContext.create_embed_keywith production origin inallowedDomains.- Store the token securely.
get_embed_snippetand paste the snippet into the host page.- Test from the exact allowed origin.
Build a custom expert and attach it to an embed
list_expert_toolsto discover available tool names.create_expertwith a narrow prompt and minimal enabled tools.update_embed_configto add the expert ID underexperts.custom.enabled.
Rotate an embed key
create_embed_keywith the new allowed domains.- Deploy the new token/snippet to the host page.
- Confirm the new iframe works.
revoke_embed_keyfor the old key.
Troubleshooting
| Issue | Solution |
|---|---|
| 401 Unauthorized | Token is missing, expired, or not accepted. Ensure Authorization header is attached to every request. |
| Tool says not found | Use list tools first to confirm visibility. For owner-only actions, ensure the authenticated user owns the resource. |
| Create appears successful but list doesn’t show it | Some writes are event-driven. Wait briefly and read back by ID. |
| Embed key works locally but not on production | Use exact hostnames like www.example.com or wildcards like *.example.com. |
| Parent tools do not run | MCP only writes the expert/config. The browser host must register tools after READY and implement onToolCall. |