# Conversations

> How a conversation with Kinro works: conversation IDs, statuses, messages, timing and relaying the user faithfully.

A conversation with Kinro is one insurance request for one business. Your agent talks to Kinro through one tool, `ask_kinro`: with a message, it sends the user's words; without one, it checks for anything new. Kinro's messages come from Leo, Kinro's AI advisor, who says openly that it is an AI.

## The loop

1. Call `ask_kinro` with the user's message. Omit `conversation_id` on the first message.
2. Show the user every message in the result, in order.
3. Read what Kinro says will happen next. When Kinro asks the user something, ask the user and send their answer with `ask_kinro`.
4. When Kinro says it is still working, for example pricing a quote, call `ask_kinro` without a message to check for its next messages. Check back when Kinro says to expect news.

Kinro does not report its progress in separate fields. Its messages say what it is doing and when to expect the next step, in words written for the user and the agent alike.

## Checking for new messages

Call `ask_kinro` with no `message` (or an empty one) to check for news:

- It sends nothing to Kinro and starts no reply.
- It returns Kinro's new messages as soon as one arrives. Otherwise it waits briefly, about 25 seconds (60 in Codex), then returns the note `No new messages from Kinro yet.`
- Call it again when Kinro has said more is coming, or when the user asks for an update. When Kinro is waiting for the user, ask the user instead of checking again.

## Conversation IDs

The first `ask_kinro` call with a message opens a conversation and returns a `conversation_id`, both in `structuredContent` and as a final text line (`conversation_id: …`), for clients that drop structured results.

- Pass the same `conversation_id` on every later `ask_kinro` call in that conversation, including checks without a message.
- Keep it with the conversation, including after your client reconnects or restarts.
- Omitting it on a call with a message starts a **new** insurance request. Start a new one only when the user is asking about a different business.
- Never invent an ID or reuse another user's. An unknown ID never opens a conversation; the call answers that there is no conversation.

The ID is a handle, not a password or an identity check. Treat it as private to the user.

ChatGPT and Codex keep their conversations together through their own conversation metadata, so in those clients the result does not include a `conversation_id`.

## Messages

Each result's `messages` lists Kinro's messages as text, oldest first. Show each one to the user as written; messages can contain links the user needs, such as the link to a quote. A message Kinro also sent by email or text appears here too. When there is nothing new, `messages` holds a single note that says so.

Messages are delivered once: a later call does not repeat them. Keep calls sequential and save each result before making another call. If the connection drops after Kinro delivered messages, calling again may not recover them.

## Updating an existing connection

Refresh your client's tool list and schemas, or reconnect the Kinro app, before using an existing connection:

- Use `ask_kinro` without a message wherever your integration called `check_kinro_updates`. That tool is no longer available.
- Read `messages` as an array of strings. Results no longer include `status`, `lastMessage`, or `quotePending`; messages no longer have `kind` or `channel` fields.
- Show quote links from the messages. `show_kinro_quote` and its quote card are no longer available.

A client with a cached output schema can reject a valid result after Kinro has already received your message. Do not resend it because of a schema error. Refresh the schemas, then use `ask_kinro` without a message to check for new replies. As with a dropped connection, previously delivered messages may not be returned again.

## Timing

- `ask_kinro` with a message returns within about 30 seconds. If Leo needs longer, the result says Kinro is still working on the message. The message has been received; do not send it again. Call `ask_kinro` without a message to get the reply.
- Quotes usually arrive within a few minutes of Kinro saying it is pricing one.
- Set your client's tool timeout to at least 60 seconds, or 320 seconds in Codex to allow its longer checks.

## One message at a time

Each `ask_kinro` call with a message sends a new message. Kinro answers the messages in a conversation one at a time:

- **Do not retry** a call to resend a message. If a call fails or times out, call `ask_kinro` without a message to see whether Kinro received it, before you ask the user whether to send it again.
- **Wait for the reply** before sending the next message. A message sent while Kinro is still answering is refused with a note to wait.

## Relaying the user faithfully

Kinro gives advice as a licensed broker, so it needs the user's own account of their business:

- Send the user's words, quoted, in `message`. Add only facts the user already gave in this chat that Kinro has not seen.
- Do not add your own assumptions, interpretations or instructions to Kinro. Kinro asks its own clarifying questions.
- Show Kinro's questions to the user rather than answering them yourself.
- Never send a Social Security number, driver's license number, payment card number or password, even if the user offers one. Kinro collects anything sensitive it needs outside the chat.

## Contact outside the chat

Kinro may email or text the user, for example to send a quote or follow up, but only at contact details the user shares in the conversation and agrees to be contacted at. Kinro asks for that agreement in the conversation before it first emails or texts. Messages Kinro sends that way also reach your agent through `ask_kinro`.

A licensed Kinro team member may also follow up with the user when a request needs one.

---

Source: https://kinro.com/docs/conversations. All Kinro docs: https://kinro.com/docs/llms.txt
