MCP Conversation Analysis — current payload, usage and account requirements.
wati_analyze_conversations runs asynchronous, read-only analysis over conversations visible to the caller. It can produce summaries, conversation IDs, evidence and optional draft replies. Drafts are not sent.
Start a task
Pass an object with action: "start" (the default), query, scope, analysis and output. Put the time range inside query.time_range and the analysis prompt inside analysis.prompt. In summary mode, also supply the top-level summary.prompt.
{
"action": "start",
"query": {
"time_range": {
"from": "2026-10-30T00:00:00Z",
"to": "2026-11-01T00:00:00Z"
}
},
"scope": {
"mode": "sample",
"max_conversations": 10
},
"analysis": {
"prompt": "Identify unanswered customer requests. Return a short finding per conversation and explain insufficient evidence."
},
"output": {
"mode": "summary"
},
"summary": {
"prompt": "Summarize findings and disclose coverage, missing evidence and uncertainty."
}
}Use scope.mode="sample" with positive max_conversations, or all_matches without max_conversations. All-matches selects enumeration scope; it does not prove that every eligible record was successfully read or analyzed. Use a fresh request_id for a new task if you provide one; reuse it only for the identical task retry. Changing arguments for the same ID can conflict.
Poll, read and cancel
Retain the returned result_ref. Follow retry_after_seconds, call with action="status" and that reference, then action="result" when ready. Generic third-party clients must do this polling themselves. Do not assume the hosting application's automatic polling exists in every MCP client.
Results support view="summary", conversation_ids or details. ID mode omits summary from the start request. Paginate result reads with page_size 1–50 (default 20), offset and returned next_offset/has_more. include_evidence is for details. During authorizing result reads, keep all read options identical and pass the returned read_cursor; do not substitute an ordinary result offset for that authorization continuation.
Cancel with action="cancel" and either result_ref or the original request_id, not both. Result access is bound to the originating requester/workspace and expires at expires_at.
Evidence and coverage limits
Each conversation uses a fixed window of the latest 30 API-visible business messages. This is not a complete-history export, and increasing a legacy messages-per-conversation input does not expand that window. The query time range is based on the current conversation's last incoming message, not every message's timestamp. Do not set query.page; enumeration is managed by the task.
Inspect coverage.complete, enumeration_complete, failures/unknowns, and returned coverage/truncation fields before making all-customer claims. A successful task or an all-matches request does not turn missing evidence into a negative finding. Preserve drafts_truncated and summary_coverage when present. This tool does not authorize a reply or send generated drafts.

