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 分

    请在仓库或注册中心条目中声明许可证。