Tu asistente de IA puede crear y pagar por ti locuciones para tu central telefónica y voz para tus videos, sin
cuenta. Funciona con cualquier cliente MCP que acepte un servidor remoto por URL, por ejemplo Claude, Cursor o VS
Code.
Dirección del servidor MCP
https://novu.isbry.com/mcp
Streamable HTTPTransporte MCP sin estado ni sesión.
Sin cuenta ni llaveNo pide registro, API key ni OAuth.
Pago por enlace o códigoEnlace de pago de ePayco, o código promocional.
Conecta tu cliente
Agrega Novu como servidor MCP remoto. No necesitas llave ni inicio de sesión. El equipo de Novu probó la conexión con
Claude Code y compras completas con MCP Inspector. Los demás clientes están configurados según su documentación
oficial.
Claude Code
Conexión probada
Corre este comando en tu terminal:
Terminal
claude mcp add --transport http novu https://novu.isbry.com/mcp
Sin --transport http, Claude Code trata la URL como un comando local. Por defecto, el servidor queda
solo para ti en el proyecto actual. Para usarlo en todos tus proyectos, agrega --scope user:
Terminal
claude mcp add --transport http novu --scope user https://novu.isbry.com/mcp
Para compartirlo con tu equipo por git, agrégalo a .mcp.json en la raíz del repositorio. Incluye
"type": "http". Claude Code lee una entrada con url y sin type como un
servidor local, y la configuración falla.
Agrega Novu como conector personalizado. Claude Desktop y claude.ai usan el mismo conector.
Abre Customize > Connectors y haz clic en Add custom connector.
Pega la URL https://novu.isbry.com/mcp.
En la autenticación, elige No sign-in.
Haz clic en Add.
El plan Free permite un solo conector personalizado. En Team y Enterprise, un Owner agrega el conector en
Organization settings > Connectors con Add y luego Custom.
Si la app lo pide, elige Web. Después, cada miembro hace clic en Connect en
Customize > Connectors.
Novu usa Streamable HTTP. Envía cada mensaje JSON-RPC por POST a https://novu.isbry.com/mcp con el encabezado
Accept: application/json, text/event-stream. Si abres esa dirección en un navegador, llegas a esta
página. El servidor rechaza con 403 las
peticiones de navegador que llegan desde otro sitio. Los clientes MCP y los conectores alojados no envían
Origin y pasan.
Con curl, primero envía initialize y luego tools/list:
Una compra tiene cinco pasos. El agente hace casi todo. La persona elige la voz, aprueba el texto y paga.
Agente y persona
Elegir la voz
El agente llama a list_voices y comparte los enlaces preview_url. La persona escucha
las muestras y elige.
Agente y persona
Acordar el texto exacto
La voz lee el texto tal como está escrito. Para la central telefónica, el agente redacta los mensajes con la
persona. Para un video, acuerdan el guion completo.
Agente
Crear el paquete y decir el precio
El agente llama a create_ivr_package o create_video_package. Novu fija el plan y
devuelve price_cop. Todavía no cobra nada.
La persona paga
Pagar con código o con enlace
El agente llama a pay_for_ivr_package o pay_for_video_package con el correo de la
persona. Si la persona tiene un código promocional, el agente lo envía y el paquete se desbloquea al instante.
Si no, el agente le entrega checkout_url, un enlace de pago de ePayco que dura 24 horas. La
persona abre el enlace y paga.
Agente
Entregar el audio
El agente llama a get_ivr_package o get_video_package hasta que status
es ready. Luego le entrega a la persona download_url.
Después del pago, Novu produce el audio aunque la conversación haya terminado. También envía el enlace de
descarga al correo de la persona.
Cuando la persona paga en ePayco, su navegador vuelve a una página de Novu que dice "¡Pago confirmado!". Esa
página le avisa que su asistente de IA le entregará el enlace de descarga y que también lo recibirá por correo.
Un paquete de central telefónica suele estar listo en 1 a 5 minutos. Un video puede tardar varios minutos si hay
otros pedidos antes.
Herramientas
El servidor tiene 7 herramientas. Cada resultado trae los datos en structuredContent y el mismo JSON
como texto en content. tools/list publica el JSON Schema de entrada y de salida de cada
herramienta. Los ejemplos muestran los arguments de tools/call y el
structuredContent del resultado.
Novu fija el plan según la cantidad de mensajes o el largo del guion. create_ivr_package y
create_video_package devuelven price_cop antes de cobrar nada. Los planes y precios
vigentes están en Precios.
Común
list_voices
Lista las voces a la venta, tanto para la central telefónica como para videos. Es gratis y no cambia nada. No
recibe argumentos.
Salida
Campo
Tipo
Qué es
voices[].voice_id
string
Pásalo a create_ivr_package o create_video_package.
voices[].name
string
Nombre de la voz.
voices[].gender
string
Opcional. F o M.
voices[].description
string
Opcional. Tono y estilo.
voices[].preview_url
string
URL absoluta de un MP3 de muestra. Compártela para que la persona escuche la voz.
Llamada (arguments)
{}
Resultado (structuredContent)
{
"voices": [
{
"voice_id": "5z6tF6eAwkAluMyjDFJJ",
"name": "Alejandro",
"gender": "M",
"description": "Una cálida voz masculina en español latinoamericano con un tono íntimo.",
"preview_url": "https://novu.isbry.com/api/v1/voices/5z6tF6eAwkAluMyjDFJJ/demo?v=2"
},
{
"voice_id": "EYBbN7OENxAX5QX56IiW",
"name": "Catalina",
"gender": "F",
"description": "Una voz femenina joven, natural, cercana y conversacional en español latinoamericano.",
"preview_url": "https://novu.isbry.com/api/v1/voices/EYBbN7OENxAX5QX56IiW/demo?v=2"
}
]
}
Central telefónica
create_ivr_package
Crea un paquete de central telefónica a partir de los mensajes. Todavía no cobra nada. Cada mensaje se vuelve un
archivo de audio, leído tal como está escrito. Los mensajes no se pueden editar después. Para cambiarlos, crea
otro paquete. Un paquete sin pagar no cuesta nada.
Si el plan cubre más mensajes de los que enviaste, next_step lo dice. Para usar los mensajes que
sobran sin costo extra, crea un paquete nuevo con más mensajes.
Entrada
Campo
Tipo
Regla
business_name
string
Obligatorio. De 1 a 100 caracteres, sin contar los espacios al inicio y al final. Nombra el ZIP y la transcripción. La voz solo lo dice si un mensaje lo incluye.
voice_id
string
Obligatorio. Un voice_id de list_voices.
messages
array
Obligatorio. De 1 a 50 mensajes, en el orden en que suenan. Empieza con un saludo. La cantidad fija el plan y el precio.
messages[].type
string
Obligatorio. greeting (bienvenida), menu (lista las opciones), option (suena cuando quien llama elige una opción), after-hours (fuera de horario) u on-hold (en espera).
messages[].text
string
Obligatorio. De 1 a 700 caracteres. La voz lo lee tal cual. Escribe los números, correos y direcciones web como deben sonar.
audio_format
string
Opcional. mp3_44100_128 (MP3, por defecto), pcm_16000 (WAV 16 kHz) o ulaw_8000 (mu-law 8 kHz, para Asterisk y otras centrales).
Salida
Campo
Tipo
Qué es
package_id
string
La llave del paquete. Empieza con ivr_. Pásalo en cada llamada siguiente.
status
string
draft, awaiting_payment, generating, ready o failed.
plan
string
El plan que Novu eligió según la cantidad de mensajes.
message_count
integer
Cantidad de mensajes del paquete.
price_cop
integer
Precio del paquete en pesos colombianos (COP).
checkout_url
string
Enlace de pago de ePayco para la persona. Solo lo devuelve pay_for_ivr_package.
download_url
string
ZIP con todos los audios, una transcripción y un README. Solo aparece cuando status es ready. Cada llamada firma un enlace nuevo.
download_expires_at
string
Fecha RFC 3339 en que vence download_url.
next_step
string
Qué hacer ahora, en inglés.
Llamada (arguments)
{
"business_name": "Clínica Dental Sonrisa",
"voice_id": "5z6tF6eAwkAluMyjDFJJ",
"messages": [
{
"type": "greeting",
"text": "Gracias por llamar a Clínica Dental Sonrisa."
},
{
"type": "menu",
"text": "Para agendar una cita, marque uno. Para hablar con recepción, marque dos."
},
{
"type": "after-hours",
"text": "Nuestro horario es de lunes a viernes, de ocho de la mañana a seis de la tarde."
}
]
}
Resultado (structuredContent)
{
"package_id": "ivr_8c1f4a2e9b7d4e6fa03c5b1d2e7f9a46QH4XN7KD2MZP5WT3RL6CVB2YJF",
"status": "draft",
"plan": "emprendedor",
"message_count": 3,
"price_cop": 132000,
"next_step": "Call pay_for_ivr_package with the customer's email, and their promo code if they have one."
}
pay_for_ivr_package
Desbloquea un paquete en borrador para producir su audio. Devuelve la misma salida que create_ivr_package.
Pasa siempre el correo de la persona. Novu le envía ahí el enlace de descarga.
Con promo_code, el paquete se desbloquea al instante y la producción empieza. El resultado trae el
estado generating.
Sin promo_code, el resultado trae el estado awaiting_payment y
checkout_url. Entrégale el enlace a la persona. La producción empieza sola cuando paga, aunque la
conversación haya terminado.
Si la persona pierde el enlace, llama otra vez sin promo_code. Recibes el mismo enlace mientras
siga abierto, o uno nuevo si ya venció. Los enlaces de pago duran 24 horas. Novu conserva el correo de la
primera llamada.
Después de emitir un enlace, el paquete ya no acepta código promocional y responde
payment_link_already_issued.
Si el paquete ya está en generating, ready o failed, la llamada devuelve
su estado actual, no un error.
Un código promocional solo sirve para su producto y, en la central telefónica, solo para su plan exacto.
Entrada
Campo
Tipo
Regla
package_id
string
Obligatorio. El package_id de create_ivr_package.
email
string
Obligatorio. El correo de la persona. Novu le envía ahí el enlace de descarga.
promo_code
string
Opcional. El código promocional de la persona, de 4 a 32 letras, dígitos y guiones. Sin él, recibes checkout_url.
{
"package_id": "ivr_8c1f4a2e9b7d4e6fa03c5b1d2e7f9a46QH4XN7KD2MZP5WT3RL6CVB2YJF",
"status": "awaiting_payment",
"plan": "emprendedor",
"message_count": 3,
"price_cop": 132000,
"checkout_url": "https://novu.isbry.com/pagar?checkout=68eefce71d65…",
"next_step": "Give the customer checkout_url to pay 132,000 COP. When they say they paid, call get_ivr_package. Once paid, novu produces the audio and emails them the download link, even if this conversation has ended."
}
get_ivr_package
Consulta el estado de un paquete y su enlace de descarga. Devuelve la misma salida que create_ivr_package.
Mientras el estado es generating, la llamada espera hasta 20 segundos a que cambie. Llámala
en bucle, sin pausas entre llamadas.
Mientras el estado es awaiting_payment, llámala cuando la persona diga que pagó.
En ready, download_url es un ZIP con un archivo de audio por mensaje, una
transcripción y un README. Cada llamada firma un enlace nuevo, válido por 7 días.
Si algunos mensajes no se pudieron producir, next_step los nombra y pide escribir a soporte.
{
"package_id": "ivr_8c1f4a2e9b7d4e6fa03c5b1d2e7f9a46QH4XN7KD2MZP5WT3RL6CVB2YJF",
"status": "ready",
"plan": "emprendedor",
"message_count": 3,
"price_cop": 132000,
"download_url": "https://…",
"download_expires_at": "2026-10-27T15:04:05Z",
"next_step": "Give the customer download_url. It holds one audio file per message, a transcript and a README. novu also emailed the link to the customer."
}
Videos
create_video_package
Crea un paquete de voz para video. Una voz de Novu lee el guion completo y Novu entrega un MP3 y un WAV de 48
kHz. Todavía no cobra nada. El guion no se puede editar después. Para cambiarlo, crea otro paquete.
El JSON Schema no limita el largo de script ni de intent. Novu cuenta los caracteres
después de normalizar el texto, y el error dice exactamente cuántos sobran.
No hay muestra del guion antes de pagar. La persona elige la voz con las muestras preview_url de
list_voices.
Entrada
Campo
Tipo
Regla
voice_id
string
Obligatorio. Un voice_id de list_voices.
script
string
Obligatorio. Lo que lee la voz, tal cual y en el idioma de la persona. De 1 a 4.500 caracteres, contados después de normalizar los saltos de línea y quitar los espacios al inicio y al final. El largo fija el paquete y el precio.
intent
string
Opcional. Hasta 600 caracteres. Cómo debe sonar la lectura, en palabras simples, por ejemplo "tranquila al inicio y emocionada al final". Guía la interpretación y la voz nunca lo lee.
Salida
Campo
Tipo
Qué es
package_id
string
La llave del paquete. Empieza con vid_. Pásalo en cada llamada siguiente.
status
string
draft, awaiting_payment, generating, ready o failed.
package
string
video-corto, video-medio o video-largo. Novu lo elige según el largo del guion.
title
string
Las primeras palabras del guion. Nombran los archivos.
characters
integer
El largo del guion, contado como Novu lo cobra.
max_characters
integer
El guion más largo que cubre este paquete.
price_cop
integer
Precio del paquete en pesos colombianos (COP).
checkout_url
string
Enlace de pago de ePayco para la persona. Solo lo devuelve pay_for_video_package.
download_url
string
ZIP con la voz en MP3 y en WAV de 48 kHz, el guion y un README. Solo cuando status es ready.
audio_url
string
Solo el MP3, para escucharlo enseguida. Solo cuando status es ready.
duration_seconds
number
Duración de la voz en segundos. Solo cuando status es ready.
download_expires_at
string
Fecha RFC 3339 en que vencen download_url y audio_url.
next_step
string
Qué hacer ahora, en inglés.
Llamada (arguments)
{
"voice_id": "EYBbN7OENxAX5QX56IiW",
"script": "¿Sabías que la primera impresión de tu marca se forma en menos de siete segundos? En Café Altura tostamos cada grano en pequeños lotes, a mano, para que tu mañana empiece con el sabor de las montañas. Pide hoy y recibe tu café recién tostado en casa.",
"intent": "Tranquila al inicio, emocionada al final"
}
Resultado (structuredContent)
{
"package_id": "vid_2b7e5c9d1a4f4e8b9c3d6a0f1e2b4c57WM5RZ3KT7HQ2XN4PJ6LD2VC5YB",
"status": "draft",
"package": "video-corto",
"title": "¿Sabías que la primera impresión de tu marca se forma en",
"characters": 250,
"max_characters": 1000,
"price_cop": 60000,
"next_step": "Call pay_for_video_package with the customer's email, and their promo code if they have one. A promo code for this package or a larger one pays for it, but a larger package's code is used up whole on this one, so tell the customer before you use one. The video-corto package covers scripts of up to 1,000 characters and this one has 250."
}
pay_for_video_package
Funciona igual que pay_for_ivr_package, con los mismos campos de
entrada. Cambia esto:
package_id debe empezar con vid_.
Devuelve la misma salida que create_video_package.
Un código promocional de video paga su propio paquete y cualquier paquete más pequeño. El código se gasta
completo en este paquete. Antes de usar el código de un paquete más grande, el agente debe avisarle a la
persona.
get_video_package
Funciona igual que get_ivr_package. Mientras el estado es
generating, espera hasta 20 segundos a que cambie. Cambia esto:
package_id debe empezar con vid_.
En ready, download_url es un ZIP con la voz en MP3 y en WAV de 48 kHz, el guion y un
README. audio_url es solo el MP3. duration_seconds es la duración en segundos.
Los dos enlaces valen 7 días y cada llamada los firma de nuevo.
La grabación puede tardar varios minutos si hay otros pedidos antes.
Resultado (structuredContent)
{
"package_id": "vid_2b7e5c9d1a4f4e8b9c3d6a0f1e2b4c57WM5RZ3KT7HQ2XN4PJ6LD2VC5YB",
"status": "ready",
"package": "video-corto",
"title": "¿Sabías que la primera impresión de tu marca se forma en",
"characters": 250,
"max_characters": 1000,
"price_cop": 60000,
"download_url": "https://…",
"audio_url": "https://…",
"duration_seconds": 15.8,
"download_expires_at": "2026-10-27T15:04:05Z",
"next_step": "Give the customer download_url: a ZIP with the voiceover as MP3 and as 48 kHz WAV, the script and a README. audio_url is the MP3 alone, to listen to right away. novu also emailed the download link to the customer."
}
Estados del paquete
Un paquete empieza en draft. Con un enlace de pago pasa a awaiting_payment. Con el pago o
con un código promocional pasa a generating, y termina en ready o en
failed.
Cada producto tiene su herramienta de pago y su herramienta de consulta. En la central telefónica son
pay_for_ivr_package y get_ivr_package. En video son pay_for_video_package y
get_video_package.
Estados
Estado
Qué significa
Qué hace el agente
draft
Creado y sin pagar.
Llama a la herramienta de pago con el correo de la persona, y su código promocional si tiene uno.
awaiting_payment
Tiene un enlace de pago de ePayco. Novu espera el pago.
Llama a la herramienta de consulta cuando la persona diga que pagó. Si el enlace se perdió o venció, llama otra vez a la herramienta de pago sin promo_code.
generating
Pagado. Novu está produciendo el audio.
Llama a la herramienta de consulta en bucle. Cada llamada espera hasta 20 segundos a que el estado cambie.
ready
El audio está listo.
Entrega download_url. Para un enlace nuevo, llama otra vez a la herramienta de consulta.
failed
Novu no pudo producir el audio.
Si la persona pagó, pídele que escriba a hola@novu.io con el package_id. Si no pagó, crea un paquete nuevo.
La llave del paquete
package_id es la única llave de un paquete. Novu no tiene cuentas. Quien tenga el
package_id puede ver el paquete y descargar su audio. Guárdalo en privado.
Los package_id de central telefónica empiezan con ivr_ y solo funcionan con sus
herramientas. Los de video empiezan con vid_ y solo funcionan con las de video. La herramienta
equivocada responde package_not_found y nombra las herramientas correctas.
Si se pierde antes de pagar, crea un paquete nuevo. Novu no cobró nada por el anterior.
Si se pierde después de pagar, la persona recibe el enlace de descarga por correo cuando el audio está listo. Para cualquier otro
problema, escribe a hola@novu.io con el package_id.
Errores
Un error de herramienta llega como un resultado con isError: true. Su texto tiene la forma
<código>: <mensaje>. El código identifica el error. El mensaje, en inglés, dice qué
hacer después.
Resultado con error
{
"content": [
{
"type": "text",
"text": "invalid_email: email must be a valid address like name@company.com."
}
],
"isError": true
}
Si los argumentos no cumplen el JSON Schema de la herramienta, por ejemplo 51 mensajes o un tipo de mensaje
desconocido, el servidor los rechaza antes de ejecutar la herramienta. Ese resultado también trae
isError: true, pero su texto empieza con validating "arguments" y no lleva código de
Novu.
Códigos de error
Código
Qué significa
invalid_business_name
business_name está vacío o pasa de 100 caracteres.
no_messages
El paquete no trae mensajes. Empieza con un saludo.
too_many_messages
El paquete pasa de 50 mensajes. Divide el guion en dos paquetes.
invalid_message_type
Un mensaje tiene un type que no existe.
empty_message
Un mensaje no tiene texto.
message_too_long
Un mensaje pasa de 700 caracteres. Acórtalo o divídelo en dos.
invalid_audio_format
audio_format no es uno de los tres formatos.
unknown_voice
voice_id no es una voz de Novu. Llama a list_voices.
empty_script
El guion está vacío.
script_too_long
El guion pasa de 4.500 caracteres. El mensaje dice cuántos sobran.
intent_too_long
intent pasa de 600 caracteres. El mensaje dice cuántos sobran.
invalid_text
El guion o intent contiene un carácter NUL (U+0000).
invalid_email
El correo no es una dirección válida.
package_not_found
Ningún paquete coincide con el package_id, o el package_id es del otro producto. En ese caso, el mensaje nombra las herramientas correctas.
package_not_payable
El paquete ya está pagado o su pago se está confirmando. Consulta su estado.
payment_link_already_issued
El paquete ya tiene un enlace de pago, así que no acepta código promocional. Pide el enlace otra vez sin promo_code.
invalid_promo_code
El código no tiene el formato de Novu, que es de 4 a 32 letras, dígitos y guiones.
promo_code_not_found
No existe ese código. Revisa cómo se escribe con la persona.
promo_code_inactive
El código ya no está activo. La persona puede pagar con tarjeta.
promo_code_expired
El código venció. La persona puede pagar con tarjeta.
promo_code_exhausted
Al código no le quedan usos. La persona puede pagar con tarjeta.
promo_plan_mismatch
El código es de otro producto o de otro tamaño de paquete.
payment_unavailable
El pago con tarjeta no está disponible ahora. Reintenta en unos minutos o usa un código promocional.
rate_limited
Demasiados paquetes creados o demasiados intentos de código desde esta red en el último minuto. Espera 60 segundos.
voice_catalog_unavailable
El catálogo de voces no responde. Reintenta en un minuto.
internal_error
Algo falló del lado de Novu. Reintenta una vez. Si sigue fallando, la persona debe escribir a hola@novu.io con el package_id.
Límites
Límites
Qué
Límite
Paquetes creados, sumando create_ivr_package y create_video_package
30 llamadas por minuto por IP
Intentos de código promocional, sumando MCP y el formulario web
5 por minuto por IP
Mensajes por paquete de central telefónica
De 1 a 50
Largo de cada mensaje
700 caracteres
business_name
100 caracteres
Guion de video
4.500 caracteres
intent
600 caracteres
Espera de get_ivr_package y get_video_package
20 segundos por llamada
Enlaces de descarga
7 días
Enlaces de pago de ePayco
24 horas
Código promocional
De 4 a 32 letras, dígitos y guiones
Por MCP no hay muestra gratis del guion de un video. Para escuchar antes de pagar, la persona usa las muestras
preview_url de cada voz.
Qué debe decirle el agente a la persona
Durante la compra, el agente debe preguntarle o decirle esto a la persona:
Los enlaces preview_url, para que escuche cada voz antes de elegir.
Para la central telefónica, qué sistema reproduce el audio, para elegir audio_format: MP3, WAV 16
kHz o mu-law 8 kHz.
Que confirme el texto exacto, porque la voz lo lee tal cual.
El precio en pesos (price_cop) antes de pagar.
El enlace checkout_url para pagar con tarjeta, o que usará su código promocional.
Que Novu también le envía el enlace de descarga por correo y produce el audio aunque la conversación termine.
Que el enlace de descarga dura 7 días y que el agente puede pedir uno nuevo.
Que guarde el package_id en privado, porque es la llave de su audio.
Que, si algo falla después de pagar, escriba a hola@novu.io con el
package_id.
Para agentes y desarrolladores
Estos archivos describen el servidor para otros agentes y herramientas.
/llms.txtResumen del servidor para modelos de lenguaje, en inglés.
/llms-full.txtReferencia completa de las herramientas, con sus JSON Schema.