Skip to content

compare_calls

Compare two calls side-by-side. Returns each call's headline metrics (Compass Score, predicted CSAT, agent lift) plus structured deltas: signals present in one but not the other, guidance present in one but not the other, dimension value differences, and score deltas. Both calls must belong to the caller's project.

Parameters

Parameter Type Required Default Description
session_id_a string yes First call's session_id.
session_id_b string yes Second call's session_id.
include_transcript boolean no False Include transcripts in the per-call payload. Default: false.

Example call

from fastmcp import Client
from fastmcp.client.auth import BearerAuth

async with Client(
    "https://mcp.chordia.ai/mcp",
    auth=BearerAuth("YOUR_APPLICATION_KEY"),
) as client:
    result = await client.call_tool(
        "compare_calls",
        {
            "session_id_a": "...",
            "session_id_b": "..."
        },
    )
    print(result.content[0].text)
# Plus any of the 1 optional params from the table above.

In Claude Desktop, Cursor, or any MCP-aware client the same call is issued by the LLM automatically once the server is configured — see integrations.

Result

Success responses are JSON of the shape below. Optional fields are omitted when the underlying data isn't present.

{
  "call_a": { "...same shape as get_call_detail..." : "..." },
  "call_b": { "...same shape as get_call_detail..." : "..." },
  "differences": {
    "signals_only_in_a": ["empathy_acknowledged"],
    "signals_only_in_b": ["objection_handled"],
    "signals_in_both": ["next_steps_clear"],
    "guidance_only_in_a": [],
    "guidance_only_in_b": ["offer_followup"],
    "guidance_in_both": ["confirm_next_steps"],
    "dimensions_diff": [
      {"key": "intent_clarity", "value_a": "high", "value_b": "medium"}
    ],
    "score_delta": {"compass_score": 0.4, "predicted_csat": 0.2, "agent_lift": 0.12}
  }
}

Auth context

Every call receives the connection's project_id and access_scope automatically — the caller never passes them. See Authentication & RBAC for how scope narrows results.

Errors

All tools return JSON. Errors are wrapped in { "error": "..." }. The most common shapes are documented in Python integration → Error shape.