Reply in a chat
Answers a website visitor as the business, with product cards, images or buttons if you like.
Free
This tool costs nothing to call.
An example
The visitor asking about the Tabor wants to know if it ships to Seattle. Tell her yes, free, in 3 to 5 days, and show her the bike.
Your agent callschat_replyFree
The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.
{
"conversation_id": 3187,
"text": "Yes, the Tabor ships to Seattle for free. It arrives in 3 to 5 days, tuned and ready to ride.",
"blocks": [
{
"type": "cards",
"items": [
{
"title": "Tabor gravel bike, 54 cm",
"price": "$1,890",
"image": "https://halversoncycle.example/img/tabor-gravel.jpg",
"url": "https://halversoncycle.example/bikes/tabor"
}
]
}
]
}Use it when
A visitor wrote in the website chat and should get an answer, or a private note belongs on the conversation. Visitors see the reply labelled as an AI agent's; pass by_person when a person at the business wrote it.
- For a reply to a support ticket, use
ticket_reply. - For an email to someone outside a chat, use
email_send.
What it does
Answer the visitor as the business. A closed conversation reopens. A visitor who left gets the reply by email if they gave one. internal: true adds a private note instead of a reply. blocks adds rich content (cards with a picture, title, price and link; images; buttons). In Beside, point highlights things on the visitor's screen one after another (ids from page.elements in the chat.message_received event), and open_page takes them to another page of the site; one of the two per reply. The visitor sees the reply labelled as an AI agent's unless by_person says a person wrote it.
What comes back
sent: true, whether the reply was delivered (in the chat, or by email to a visitor who left), when it was sent, and the conversation. Every reply also carries cost_usd and balance_usd.
Inputs
| Name | Type | What it is |
|---|---|---|
conversation_idRequired | integer | At least 1. |
textRequired | string | 1 to 5,000 characters. |
internal | boolean | Default: false. |
by_person | boolean | true when a person at the business wrote this reply. Otherwise the visitor sees it labelled as an AI agent's (EU AI Act Art. 50). A person's reply also stops a webhook brain from answering this chat. Default: false. |
blocks | array of objects | Like [{"type": "cards", "items": [{"title": "Tabor gravel bike", "price": "$1,890", "image": "https://...", "url": "https://..."}]}]. Up to 10 items. |
point | array of objects | 1 to 5 items. |
point[].idRequired | string | 1 to 8 characters. |
point[].say | string | Up to 90 characters. |
open_page | object | |
open_page.urlRequired | string | Up to 600 characters. |
open_page.label | string | Up to 40 characters. |
The call
Over MCP, call chat_reply on https://api.conecto.chat/mcp/chat. Over REST:
curl -X POST https://api.conecto.chat/v1/tools/chat_reply \
-H "Authorization: Bearer $CONECTO_KEY" \
-H "Content-Type: application/json" \
-d '{"conversation_id":3187,"text":"Yes, the Tabor ships to Seattle for free. It arrives in 3 to 5 days, tuned and ready to ride.","blocks":[{"type":"cards","items":[{"title":"Tabor gravel bike, 54 cm","price":"$1,890","image":"https://halversoncycle.example/img/tabor-gravel.jpg","url":"https://halversoncycle.example/bikes/tabor"}]}]}'When it refuses
A refused call costs nothing and says what to do next.
| Code | When | What to do |
|---|---|---|
not_found404 | No chat conversation of the business has that conversation_id. | Find it with chat_list_conversations and use its conversation_id. |
invalid_input400 | A block is not valid, point and open_page came together, open_page leads off the site, or point names an element that is not on the visitor's page. | Fix what the message names. Use element ids from page.elements in the latest chat.message_received event, and one of point or open_page per reply. |
not_beside409 | point or open_page was sent, but this chat runs the classic widget. | Reply with text and blocks only, or switch the widget to Beside with chat_setup. |
conversation_closed409 | The visitor has a newer open conversation. | Reply in that conversation; the message gives its id. |
More Website chat tools
All 9 tools- Set up the website chat
chat_setupCreates or changes the business's website chat widget and who answers it, and returns the snippet for the website.$0.001 a call - Get the website chat setup
chat_get_setupThe website chat's settings, its embed snippet, how messages reach the agent and this month's cost.Free* - Wait for visitor messages
chat_waitWaits for the next visitor message, for an agent without a server to receive webhooks.Free* - List chat conversations
chat_list_conversationsThe website chat and email conversations, newest activity first, with who it is and the last message.Free* - Get a chat conversation
chat_get_conversationOne conversation with all its messages, from the visitor and from the business.Free* - Show that you are typing
chat_typingShows the visitor that the business is typing, for about 8 seconds.Free - Turn a chat into a ticket
chat_create_ticketOpens a help desk ticket from a chat that needs follow-up by email, with the chat so far as the request.$0.01 a call - Close or reopen a chat
chat_closeCloses a conversation once it is handled, or opens it again.$0.001 a call
Give this to your agent.
Set up Conecto from https://conecto.chat/SKILL.md