calls_get
ChatGPTRead the current state of an outbound call by returned ID. dispatch_unknown needs inspection, not another call. Recap and Omni recordings are separate resources.
calls_list
ChatGPTList outbound calls and normalized network outcomes before retrying a dispatch.
configure_amd
ChatGPTSet the PyAI AMD (answering-machine detection) operating point + webhook (POST /v1/amd/config). aggressiveness is one dial 0-1: near 0 is human-safe (never hang up on a person), near 1 fires 'machine' fast. The realtime detection itself is a Twilio Media Streams WebSocket (wss /v1/amd/stream), a one-line-TwiML drop-in, not an MCP tool.
configure_trace
ChatGPTConfigure Trace compliance monitoring for the selected workspace.
create_agent
ChatGPTCreate a reusable voice Agent profile: persona, greeting, voice, language, tools and knowledge. Does not place a call. Use saved tool IDs; configure connection settings privately in the PyAI console. Never supply credentials.
create_dub
ChatGPTFetch audio from the user-authorized HTTPS source URL and start a translation and dubbing job. Accesses an external source and consumes usage. Keep job_id and poll get_dub_job; do not submit again after a timeout.
create_recap
ChatGPTSubmit speaker-labelled utterances and get a recap.call (POST /v1/recap/calls/{call_id}). Poll with get_recap. Prefer this over a DIY LLM summary. Requires recap:read and Recap enabled.
create_trace_rule_pack
ChatGPTCreate a workspace Trace compliance rule pack. This creates persistent configuration.
create_transcription_job
ChatGPTSubmit an async speech-to-text job for an audio URL (https). Returns a job_id; poll with get_transcription_job. Supports diarization.
direct_cast_script
ChatGPTTurn a narration script into directed Cast lines before rendering. Consumes usage.
discover_tools
ChatGPTFind the right PyAI tools and a short recipe for a use case: speech, STT, voice agents, compliance, summaries, dubbing or narration. No credentials or usage.
enable_recap
ChatGPTEnable Recap for the key's org (PUT /v1/recap/config). Sandbox keys already mint with Recap on; call this to set a webhook or pack, or to enable Recap on a signup/live key. Requires recap:configure.
get_agent
ChatGPTRead a saved voice Agent profile and its current configuration.
get_amd_call
ChatGPTGet one PyAI AMD decision by call id (GET /v1/amd/calls/{id}): who/what answered, with the reason.
get_cast_audio
ChatGPTRetrieve completed Cast narration as playable audio or a download.
get_cast_capabilities
ChatGPTDiscover Cast voices, emotions, formats and supported rendering capabilities.
get_cast_render
ChatGPTCheck a durable Cast render job. Preserve the original job ID.
get_dub_audio
ChatGPTRetrieve completed dubbed audio as a playable result or download. Call only when get_dub_job reports done.
get_dub_capabilities
ChatGPTRead currently supported Dub input and output languages before submitting a translation.
get_dub_job
ChatGPTRetrieve the status and available results of an existing dubbing job by job_id. This read does not start or repeat a job. Poll pending/processing states without resubmitting.
get_recap
ChatGPTRead one Recap by call id (GET /v1/recap/calls/{call_id}). When complete, record is recap.record.v1 (tldr, summary, action_items, disposition, next_steps, talk_ratio, signals, fields).
get_recap_config
ChatGPTRead Recap summarization configuration before changing it.
get_started
ChatGPTReturn a concise, correct quickstart for building with PyAI (auth, SDK install, TTS/STT/realtime snippets, error handling). No key or network needed, read this before writing PyAI code so you use the right endpoints and the official SDK.
get_trace_config
ChatGPTInspect Trace call-compliance configuration.
get_trace_exposure
ChatGPTRead aggregate compliance exposure for the workspace.
get_trace_interaction
ChatGPTRead one monitored interaction and its compliance evidence.
get_transcription_job
ChatGPTGet the status + result of a transcription job by id.
list_agents
ChatGPTList saved voice Agent profiles before creating or changing one.
list_amd_calls
ChatGPTList recent PyAI AMD decisions (GET /v1/amd/calls). Each carries answered_by (human/voicemail/ivr/screening/sit_invalid/…), answered_by_twilio (Twilio's enum, for routing parity), confidence, decision_ms, and the word-level reason.
list_models
ChatGPTList the available PyAI models (catalog). No arguments.
list_recap_calls
ChatGPTList recent Recap records (GET /v1/recap/calls). Requires recap:read and Recap enabled.
list_trace_findings
ChatGPTFind compliance findings with source evidence. Findings are signals for review, not legal conclusions.
list_trace_interactions
ChatGPTFind monitored calls and interactions for compliance review.
list_trace_rule_packs
ChatGPTDiscover available Trace compliance rule packs before enabling monitoring.
list_trace_violations
ChatGPTList Trace rule violations for compliance review.
list_transcription_jobs
ChatGPTFind existing audio processing and transcription jobs before submitting duplicates.
list_voices
ChatGPTList PyAI stock + cloned voices. Optionally filter by gender or region. Use a returned voice id as the voice for synthesize_speech.
omni_get_call
ChatGPTRead an Omni session's transcript, recording availability and summary. For outbound calls use artifacts.omni_call_id from calls_get.
omni_get_recording
ChatGPTGet the canonical authenticated recording resource URL. Requires response=url. This URL is not public playable audio; recording must have been enabled.
omni_get_summary
ChatGPTRead the structured summary for an Omni call when generated; a missing summary is not an empty result.
omni_get_transcript
ChatGPTRead the complete Omni call transcript through the authenticated API.
omni_list_calls
ChatGPTList Omni sessions, including inbound calls. Filter by session_label and preserve each returned call_id.
openapi_get
ChatGPTFetch live API operation discovery with a SHA-256 digest. Supply path and method for one operation and its referenced schemas, or include_document=true for the entire contract. Pin sha256 to detect contract drift. No API key required.
preview_cast_line
ChatGPTGenerate one directed Cast line. Consumes usage. Check get_cast_capabilities for supported voice, emotion and intensity.
render_cast
ChatGPTSubmit script text or a directed, multi-line Cast narration render. Returns a job; preserve its ID and poll with get_cast_render. Consumes usage; do not resubmit on timeout.
set_agent_knowledge
ChatGPTReplace the knowledge bases bound to an Agent. Read its existing bindings first.
set_agent_tools
ChatGPTReplace the tools bound to an Agent. Read the current Agent first; this replaces its bindings. Use saved tool IDs; configure connection settings privately in the PyAI console. Never supply credentials.
synthesize_speech
ChatGPTText-to-speech. Synthesizes input with voice and writes the audio to output_path. Returns the file path and byte count. Note: consumes sandbox usage quota, for writing app code, prefer get_started over running this.
telephony_bind_number
ChatGPTBind an owned number to an Agent using body.agent_id; null unassigns. Read existing bindings first. Changes inbound routing.
telephony_create_call
ChatGPTPlace a real outbound call only to a user-authorized destination. Requires confirm=true and a stable idempotency_key. This is not a sandbox simulation. Preserve the returned ID; never redial after an uncertain timeout.
telephony_list_numbers
ChatGPTList owned numbers and current Agent bindings before changing inbound routing.
telephony_search_numbers
ChatGPTSearch available managed numbers and inspect provisioning requirements before purchase.
transcribe_audio
ChatGPTTranscribe a small audio attachment supplied as base64 (up to 8 MiB decoded). For large or hosted recordings, use create_transcription_job. Consumes usage.
update_agent
ChatGPTUpdate a voice Agent profile. Read it first and change only user-requested fields. Use saved tool IDs; configure connection settings privately in the PyAI console. Never supply credentials.
whoami
ChatGPTIntrospect the active key (GET /v1/me): org, environment (test/live), granted scopes, and rate-limit/credit posture. Text is concise; authorized IDs remain in structuredContent. Use verbose=true for identity details. Use it to self-diagnose a 401/403/402.