MCP Conversation Analysis

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.