MCP
💬Get free consultation

MCP

Who can use this feature?

  • You need the Pro or Plus plan to create and manage API keys.
  • For developers building an external bot or agent that answers on your behalf.

Overview

Chatty exposes your store's chat capabilities as an MCP (opens in a new tab) server. An external bot connects once, discovers the tools your store has enabled, calls them to gather what it needs, and posts its answer back into the conversation.

A typical loop:

  1. A customer sends a message.
  2. Chatty fires a message.created webhook to your bot. Read senderType and act on customer only.
  3. Your bot calls Chatty's MCP tools — look up a product, search FAQs, check an order.
  4. Your bot calls send_message to reply. The answer appears in the conversation.

Use it to run your own model, apply your own logic before answering, or plug Chatty into an agent framework you already have.


Connect

EndpointPOST https://app.chatty.net/mcp
ProtocolJSON-RPC 2.0 over Streamable HTTP
ModeStateless — every request is self-contained. Only POST is accepted.

Headers

HeaderValue
X-App-IdYour App ID — the field at the top of Settings > General > Manage keys. Some tools call it a Client ID.
AuthorizationBearer sk_... — an API key from the same panel
X-Chatty-Convo-IdOptional. The conversation the bot is acting in. Tools that read or write a conversation need it.

Both credentials sit in the same place, and the key is the same one the Chat Conversations API uses. See the API reference for how to create one.

!

A missing or malformed header returns 401 with Missing required headers: X-App-Id and Authorization (Bearer sk_...). An unknown or revoked key returns 401 Invalid or revoked API key.

Any MCP client can connect. Point it at the endpoint above and pass the two headers.


Tools

Your bot should call tools/list after connecting rather than hard-coding this table — the tool set is built per request from your store's AI agent settings, so it changes when you toggle a feature.

Always available

ToolWhat it does
send_messageSend a bot message to a conversation. Call it after composing your answer.
faq_retrievalSearch your store's FAQ knowledge base.
add_noteAdd an internal note to a conversation. Visible to your team only.
update_tagsSet tags on a conversation. Replaces the existing tags with the list you pass.
assign_memberAssign a team member to a conversation, or unassign.
list_membersList team members. Use it to find member ids before assigning.
list_conversationsList your store's test AI conversations, with cursor pagination.
register_webhookRegister a webhook to receive real-time events. The result returns your signing secret.

list_conversations returns test conversations only — the ones from the AI agent playground, not your live customer inbox. To read live conversations, use GET /chat/conversations on the Chat Conversations API.

Available when the matching feature is on

ToolTurned on by
product_lookupAI agent > Training data > Products
product_faq_lookupAI agent > Training data > Products
manage_cartAI agent > Training data > Products
collection_lookupAI agent > Training data > Collections
discount_lookupAI agent > Training data > Discounts
size_guide_lookupAI agent > Instructions > Assistant skills > Size guide
check_order_statusAI agent > Instructions > Assistant skills > Order tracking
customer_supportAI agent > Instructions > Assistant skills > After-sale support
human_agent_transferAI agent > Instructions > Assistant skills > Human handover
joy_loyalty_lookupThe Joy loyalty integration

manage_cart reads and edits the Shopify cart: get reads it, add puts items in and creates a cart when you omit cartId, update changes quantity, remove takes items out.


Receive customer messages

Your bot needs to know when to act. Register a webhook — either with the register_webhook tool, or with POST /chat/webhooks on the Chat Conversations API:

curl -s -X POST "https://app.chatty.net/chat/webhooks" \
  -H "X-Api-Key: $CHATTY_KEY" -H "Content-Type: application/json" \
  -d '{
        "url": "https://your-bot.example.com/hooks/chatty",
        "events": ["message.created"]
      }'

Events you can subscribe to

EventFires when
message.createdA message is added to a conversation.
message.updatedA message is edited.
message.removedA message is deleted.
conversation.createdA conversation starts.
conversation.state_changedThe conversation status changes.
conversation.assignedThe conversation is assigned to a member.
conversation.tags_updatedThe tags on a conversation change.
conversation.removedA conversation is deleted.
customer.createdA customer record is created.

message.created fires for every message added to a conversation, whichever side added it. The payload carries senderType. Act only when it is customer, so your bot never answers itself.

!

Do not set your own signing secret. Chatty generates it and ignores any secret you send. The generated value comes back in the register_webhook result, and in the response body of POST /chat/webhooks. It looks like whsec_ plus 48 hex characters. Store it when you register, and verify every payload with it.

Verify every delivery before acting on it. See Webhooks for the payload shape and signature check.


Errors

Errors come back in JSON-RPC form:

{ "jsonrpc": "2.0", "error": { "code": -32000, "message": "Shop not found." }, "id": null }
SituationResponse
Any method other than POST405, Method not allowed. Only POST is supported in stateless mode.
Missing or malformed headers401
Unknown or revoked key401
Store not found404, Shop not found.

Need help?

Contact the Chatty support team from your dashboard. Include the tool name, the timestamp of a failing call, and the returned error message.