PyAI — Voice AI
PyAI озвучивает, распознаёт и переводит речь, а также строит голосовых агентов прямо из ассистента
Что умеет
- Синтезировать речь выбранным голосом и моделью
- Транскрибировать аудио и получать статус задачи
- Создавать и настраивать голосовых агентов
- Проверять звонки на соответствие правилам через Trace
- Формировать резюме и список задач из записи разговора
Какие данные видит
Ассистент работает от имени авторизованного проекта PyAI, генерация и обработка расходуют лимиты и кредиты проекта.
Нужен ли аккаунт
Не нужен: сервер работает без входа
PyAI — MCP-сервер голосовых сервисов: синтез речи, распознавание, дублирование с переводом, разбор звонков на соответствие правилам и извлечение резюме с задачами из записей. Ассистент подключается через OAuth к проекту PyAI, выбирает модель и голос, создаёт агентов и настраивает их инструменты и базу знаний.
Как подключить
Как подключить PyAI — Voice AI к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://pyai--gaurav-ywfe.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить PyAI — Voice AI к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://pyai--gaurav-ywfe.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить PyAI — Voice AI к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://pyai--gaurav-ywfe.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (43)
Технические названия из tools/list. Нужны только разработчикам.
| 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 | Introspect the active key (GET /v1/me): org, environment (test/live), granted scopes, and rate-limit/credit posture. Use it to self-diagnose a 401/403/402. |
| list_models | List the available PyAI models (catalog). No arguments. |
| list_voices | List PyAI stock + cloned voices. Optionally filter by gender or region. Use a returned voice id as the `voice` for 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. |
| 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. |
| get_transcription_job | Get the status + result of a transcription job by id. |
| 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. |
| 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. |
| get_amd_call | Get one PyAI AMD decision by call id (GET /v1/amd/calls/{id}): who/what answered, with the reason. |
| 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. |
| 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. |
| 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). |
| list_recap_calls | List recent Recap records (GET /v1/recap/calls). Requires recap:read and Recap enabled. |
| list_agents | List saved voice Agent profiles before creating or changing one. |
| create_agent | Create a reusable voice Agent profile: persona, greeting, voice, language, tools and knowledge. Does not place a call. |
| get_agent | Read a saved voice Agent profile and its current configuration. |
| update_agent | Update a voice Agent profile. Read it first and change only user-requested fields. |
| set_agent_tools | Replace the tools bound to an Agent. Read the current Agent first; this replaces its bindings. |
| set_agent_knowledge | Replace the knowledge bases bound to an Agent. Read its existing bindings first. |
| get_trace_config | Inspect Trace call-compliance configuration. |
| configure_trace | Configure Trace compliance monitoring for the selected workspace. |
| list_trace_rule_packs | Discover available Trace compliance rule packs before enabling monitoring. |
| create_trace_rule_pack | Create a workspace Trace compliance rule pack. This creates persistent configuration. |
| list_trace_interactions | Find monitored calls and interactions for compliance review. |
| get_trace_interaction | Read one monitored interaction and its compliance evidence. |
| list_trace_findings | Find compliance findings with source evidence. Findings are signals for review, not legal conclusions. |
| list_trace_violations | List Trace rule violations for compliance review. |
| get_trace_exposure | Read aggregate compliance exposure for the workspace. |
| get_recap_config | Read Recap summarization configuration before changing it. |
| get_cast_capabilities | Discover Cast voices, emotions, formats and supported rendering capabilities. |
| direct_cast_script | Turn a narration script into directed Cast lines before rendering. Consumes usage. |
| 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. |
| list_transcription_jobs | Find existing audio processing and transcription jobs before submitting duplicates. |
| 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. |
| get_dub_capabilities | Read currently supported Dub input and output languages before submitting a translation. |
| create_dub | Submit an audio URL for translation and dubbing. Consumes usage. Keep job_id and poll get_dub_job; do not submit again after a timeout. |
| get_dub_job | Check a submitted Dub job. Poll pending/processing states without resubmitting. |
| get_dub_audio | Retrieve completed dubbed audio as a playable result or download. Call only when get_dub_job reports done. |
| get_cast_render | Check a durable Cast render job. Preserve the original job ID. |
| get_cast_audio | Retrieve completed Cast narration as playable audio or a download. |
| preview_cast_line | Generate one directed Cast line. Consumes usage. Check get_cast_capabilities for supported voice, emotion and intensity. |
| 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. |