> ## Documentation Index
> Fetch the complete documentation index at: https://docs.concord.ad/llms.txt
> Use this file to discover all available pages before exploring further.

# Ask Concord

> The askConcord tool: hold a conversation with the Concord agent from your client.

`askConcord` sends a message to the Concord agent and returns its answer. It is the tool your client will use for almost everything: questions about delivery and performance, campaign changes, reports, media plans.

## Arguments

| Argument  | Type   | Description                                                                              |
| --------- | ------ | ---------------------------------------------------------------------------------------- |
| `message` | string | The question or instruction. Optional only when collecting a pending answer (see below). |
| `chatId`  | UUID   | Conversation to continue, from an earlier result. Omit to start a new one.               |

## Result

The answer comes back as text, with the same fields in `structuredContent` for clients that read it:

```json theme={null}
{
  "chatId": "4f2c1a9e-…",
  "answer": "The Q3 Retail campaign is pacing at 92% …",
  "status": "answered"
}
```

## Conversations

MCP has no session, so continuity is an explicit handle. The first call returns a `chatId`; passing it back continues that conversation with its full context, which is the only way to give Concord follow-up context. A call without `chatId` always starts a fresh conversation.

```
askConcord({ message: "How is the Q3 Retail campaign pacing on DV360?" })
  → { chatId: "4f2c…", status: "answered", answer: "…" }

askConcord({ chatId: "4f2c…", message: "Shift 20% of its budget to the video line item." })
  → { chatId: "4f2c…", status: "answered", answer: "…" }
```

Conversations started over MCP do not appear in the chat list of the web app. They run the same agent, with the same Skills, brands, and memory as a web conversation.

## Statuses

| Status              | Meaning                                                                                                             | What to do                                 |
| ------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| `answered`          | The message was delivered and this is its answer.                                                                   | Nothing.                                   |
| `timeout`           | Concord is still working after about four minutes.                                                                  | Collect: call again with `chatId` alone.   |
| `answered_previous` | A turn was already running on this conversation, so your message was **not** delivered. This is that turn's answer. | Send your message again now.               |
| `busy`              | Another request was starting a turn on this conversation and your message was not delivered.                        | Retry with the same `chatId`.              |
| `no_answer`         | The turn ended without a reply.                                                                                     | Send the message again.                    |
| `unknown_chat`      | The `chatId` is not an MCP conversation you take part in.                                                           | Check the id, or start a new conversation. |

## Recovering a slow answer

An agent turn can take minutes. When a call returns `timeout`, the turn is still running. To get its answer, call `askConcord` with the `chatId` and **no message**:

```
askConcord({ chatId: "4f2c…" })
  → waits for the running turn, then returns its answer
```

This is called collecting. It sends nothing, so it is safe to repeat as often as needed.

<Warning>
  Do not re-send the message to recover a slow answer. As soon as the first turn finishes, the re-sent message runs the instruction a second time. For an instruction that prepares platform actions, that means preparing them twice.
</Warning>

## When Concord needs you

If a request needs your approval, or Concord has a question before it can proceed, the turn waits for you in Concord rather than answering through MCP. The call returns `timeout`.

Open the conversation at `https://app.concord.ad/chats/<chatId>` to approve the action or answer the question, then collect the answer from your client.

Concord asks fewer questions when a request is complete: name the platform, the campaign, the budget, and the dates.

## Related

[Upload files](/developers/mcp/uploading-files) · [Platform actions](/features/platform-actions/platform-actions-overview) · [Working in conversations](/features/chat/working-in-conversations)
