PyAI Voice AI

io.github.atomsai由 GitHub 帳號 atomsai 發布v0.5.1更新於 Oct 25, 2026

User-approved phone calls, speech, transcription and voice agents with PyAI OAuth.

已驗證Streamable HTTP可網頁執行溝通與協作

概覽

AI 產生的概覽

PyAI Voice AI 讓助理透過 PyAI 並經 OAuth 登入,在使用者核准後撥打真實電話,並處理語音、轉錄與語音代理。

可以做什麼
在使用者核准後透過 PyAI 服務撥打真實電話。使用語音與語音代理功能,並將音訊轉為文字轉錄。可連線託管的 PyAI 端點,或以 npx 啟動本機程序。透過 PyAI OAuth 登入,不需貼上金鑰。
適用情境
適合助理需要撥打或處理真實電話、產生或處理語音、轉錄音訊,且使用者願意逐次核准通話並登入 PyAI 的情境。
執行需求
需要 PyAI 帳戶並完成 OAuth 登入(必要)。可使用 api.pyai.com 遠端端點,或透過 npx 執行 @pyai/mcp 套件的本機程序(需 Node.js)。需要連線至 PyAI 的網路。
安裝前請注意
通話會經第三方撥打至真實電話號碼,音訊與通話詳情會傳送給 PyAI,且每次通話需使用者核准。OAuth 授權會讓伺服器存取 PyAI 帳戶,請檢查所要求的權限範圍。通話可能依 PyAI 方案產生費用。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 PyAI Voice AI,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.atomsai%2Fpyai/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "pyai-voice-ai": {
      "type": "http",
      "url": "https://api.pyai.com/mcp"
    }
  }
}

README

該儲存庫沒有 README。

工具

57

openapi_get

Openapi Get

Fetch 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.

輸入參數pathmethodsha256include_document

create_sandbox_key

Create Sandbox Key

Create a NEW isolated sandbox only when the user asks to try PyAI without an account. Local stdio only. Adopts the key privately for this session; never returns the secret. Prefer pyai login to use an existing workspace.

輸入參數label

get_started

Get Started

Return 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.

無需輸入參數。

whoami

Who Am I

Introspect 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.

輸入參數verbose

list_models

List Models

List the available PyAI models (catalog). No arguments.

無需輸入參數。

list_voices

List Voices

List PyAI stock + cloned voices. Optionally filter by gender or region. Use a returned voice id as the `voice` for synthesize_speech.

輸入參數genderregion

synthesize_speech

Synthesize Speech

Text-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.

輸入參數input必填modelvoiceoutput_pathresponse_format

create_transcription_job

Create Transcription Job

Submit an async speech-to-text job for an audio URL (https). Returns a job_id; poll with get_transcription_job. Supports diarization.

輸入參數modelcall_idchanneldiarizepack_idaudio_url必填customer_namecall_directionoutput_formats

get_transcription_job

Get Transcription Job

Get the status + result of a transcription job by id.

輸入參數job_id必填

configure_amd

Configure AMD

Set 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.

輸入參數webhook_urlaggressiveness

list_amd_calls

List AMD Calls

List 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.

輸入參數limitsession_label

get_amd_call

Get AMD Call

Get one PyAI AMD decision by call id (GET /v1/amd/calls/{id}): who/what answered, with the reason.

輸入參數call_id必填

enable_recap

Enable Recap

Enable 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.

輸入參數enabledwebhook_urldefault_pack_id

create_recap

Create Recap

Submit 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.

輸入參數call_id必填pack_idutterances必填customer_namecall_direction

get_recap

Get Recap

Read 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).

輸入參數call_id必填

list_recap_calls

List Recap Calls

List recent Recap records (GET /v1/recap/calls). Requires recap:read and Recap enabled.

輸入參數limitstatus

omni_list_calls

Omni List Calls

List Omni sessions, including inbound calls. Filter by session_label and preserve each returned call_id.

輸入參數limitcursorsession_label

omni_get_call

Omni Get Call

Read an Omni session's transcript, recording availability and summary. For outbound calls use artifacts.omni_call_id from calls_get.

輸入參數call_id必填

omni_get_summary

Omni Get Summary

Read the structured summary for an Omni call when generated; a missing summary is not an empty result.

輸入參數call_id必填

omni_get_transcript

Omni Get Transcript

Read the complete Omni call transcript through the authenticated API.

輸入參數call_id必填

omni_get_recording

Omni Get Recording

Get the canonical authenticated recording resource URL. Requires response=url. This URL is not public playable audio; recording must have been enabled.

輸入參數call_id必填response必填

telephony_search_numbers

Telephony Search Numbers

Search available managed numbers and inspect provisioning requirements before purchase.

輸入參數limitcountrycontainsarea_code

telephony_list_numbers

Telephony List Numbers

List owned numbers and current Agent bindings before changing inbound routing.

輸入參數include_released

telephony_buy_number

Telephony Buy Number

Purchase a managed number. Requires explicit user approval (confirm=true) and a stable idempotency_key. May incur recurring charges; regulatory or billing setup may require Console.

輸入參數body必填confirmidempotency_key必填

telephony_bind_number

Telephony Bind Number

Bind an owned number to an Agent using body.agent_id; null unassigns. Read existing bindings first. Changes inbound routing.

輸入參數id必填body必填

telephony_create_call

Telephony Create Call

Place 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.

輸入參數body必填confirmidempotency_key必填

calls_list

Calls List

List outbound calls and normalized network outcomes before retrying a dispatch.

輸入參數limit

calls_get

Calls Get

Read the current state of an outbound call by returned ID. dispatch_unknown needs inspection, not another call. Recap and Omni recordings are separate resources.

輸入參數id必填

list_agents

List Agents

List saved voice Agent profiles before creating or changing one.

無需輸入參數。

create_agent

Create Agent

Create a reusable voice Agent profile: persona, greeting, voice, language, tools and knowledge. Does not place a call.

輸入參數body必填

get_agent

Get Agent

Read a saved voice Agent profile and its current configuration.

輸入參數id必填

update_agent

Update Agent

Update a voice Agent profile. Read it first and change only user-requested fields.

輸入參數id必填body必填

set_agent_tools

Set Agent Tools

Replace the tools bound to an Agent. Read the current Agent first; this replaces its bindings.

輸入參數id必填body必填

set_agent_knowledge

Set Agent Knowledge

Replace the knowledge bases bound to an Agent. Read its existing bindings first.

輸入參數id必填body必填

get_trace_config

Get Trace Config

Inspect Trace call-compliance configuration.

輸入參數agent_id

configure_trace

Configure Trace

Configure Trace compliance monitoring for the selected workspace.

輸入參數body必填

list_trace_rule_packs

List Trace Rule Packs

Discover available Trace compliance rule packs before enabling monitoring.

無需輸入參數。

create_trace_rule_pack

Create Trace Rule Pack

Create a workspace Trace compliance rule pack. This creates persistent configuration.

輸入參數body必填

list_trace_interactions

List Trace Interactions

Find monitored calls and interactions for compliance review.

輸入參數limitcursorverdictagent_id

get_trace_interaction

Get Trace Interaction

Read one monitored interaction and its compliance evidence.

輸入參數id必填

list_trace_findings

List Trace Findings

Find compliance findings with source evidence. Findings are signals for review, not legal conclusions.

輸入參數limitactioncursorcheck_idseverityinteraction_id

list_trace_violations

List Trace Violations

List Trace rule violations for compliance review.

輸入參數limitcursorrule_idseverityinteraction_id

get_trace_exposure

Get Trace Exposure

Read aggregate compliance exposure for the workspace.

輸入參數window_days

get_recap_config

Get Recap Config

Read Recap summarization configuration before changing it.

無需輸入參數。

get_cast_capabilities

Get Cast Capabilities

Discover Cast voices, emotions, formats and supported rendering capabilities.

無需輸入參數。

direct_cast_script

Direct Cast Script

Turn a narration script into directed Cast lines before rendering. Consumes usage.

輸入參數body必填

render_cast

Render Cast

Submit 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.

輸入參數body必填

list_transcription_jobs

List Transcription Jobs

Find existing audio processing and transcription jobs before submitting duplicates.

輸入參數limitcursor

discover_tools

Discover Tools

Find 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.

輸入參數taskquery

get_dub_capabilities

Get Dub Capabilities

Read currently supported Dub input and output languages before submitting a translation.

無需輸入參數。

create_dub

Create Dub

Fetch 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.

輸入參數source_url必填source_lang必填target_lang必填

get_dub_job

Get dubbing job status

Retrieve 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.

輸入參數job_id必填

get_dub_audio

Get Dub Audio

Retrieve completed dubbed audio as a playable result or download. Call only when get_dub_job reports done.

輸入參數job_id必填

get_cast_render

Get Cast Render

Check a durable Cast render job. Preserve the original job ID.

輸入參數job_id必填

get_cast_audio

Get Cast Audio

Retrieve completed Cast narration as playable audio or a download.

輸入參數job_id必填

preview_cast_line

Preview Cast Line

Generate one directed Cast line. Consumes usage. Check get_cast_capabilities for supported voice, emotion and intensity.

輸入參數text必填voice必填emotion必填intensity必填

transcribe_audio

Transcribe Audio

Transcribe a small audio attachment supplied as base64 (up to 8 MiB decoded). For large or hosted recordings, use create_transcription_job. Consumes usage.

輸入參數filename必填languageaudio_base64必填

版本歷史

2
  1. v0.5.1最新Oct 25, 2026
  2. v0.3.3Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。