calls_list_history
Search historical voice calls in this workspace by participant name, contact_id, thread, channel, source, and/or date range. Returns one row per call (NOT per turn) with call_id, duration_seconds, outcome, direction, started_at, source, channel_label, and parent_thread_id (the originating chat thread for Telegram-group / Twilio-outbound / Meet calls). Pair with calls.get_transcript(call_id) for the full per-turn transcript. Use this instead of messages.read_history for cross-thread call queries — group calls and Meet sessions live on per-call sub-threads, not on the parent chat thread.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum calls to return (default 20, max 100). | |
| since | No | ISO date or datetime lower bound (inclusive). Default: 90 days ago. Naive timestamps are interpreted as UTC. | |
| until | No | ISO date or datetime upper bound (inclusive). Default: now. | |
| source | No | Filter by voice_sessions.source: 'telegram' (1:1 + group), 'whatsapp' (native WhatsApp voice), 'twilio' (PSTN), 'meet' (Google Meet bot), 'livechat' (in-app voice), 'android' (Android device). OMIT to include all sources. | |
| channel | No | Filter by message-level channel of the call thread: 'telegram' (1:1 voice or group call sub-thread), 'twilio_voice', 'meet_voice', 'livechat_voice', 'whatsapp' (native WhatsApp calls — these coalesce into the contact's messaging thread). OMIT to include all voice channels. | |
| thread_id | No | Restrict to calls on this thread OR with this thread as their originating parent (Telegram group → call sub-thread back-link, Twilio outbound source_thread_id back-link). | |
| contact_id | No | Filter by exact entity_id (from contacts.find). Mutually exclusive with participant_name when both target the same person. | |
| in_workspace | No | Run this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected. | |
| participant_name | No | Filter to calls whose parent thread has a participant matching this name (substring match against entity.title). Resolves group calls via the parent group's roster, not the per-call thread's speaker list. |