PostNitro
El servidor MCP de PostNitro permite a los asistentes y agentes de IA crear carruseles y publicaciones de imágenes, gestionar kits de marca y cuentas sociales conectadas, y programar publicaciones directamente.
Documentación
Servidor MCP de PostNitro
El servidor MCP de PostNitro permite que asistentes y agentes de IA — Claude (Desktop, Code y Cowork), Cursor, ChatGPT y cualquier otro cliente de Model Context Protocol — creen carruseles, publicaciones de imagen y videos, gestionen kits de marca, pistas de audio y cuentas sociales conectadas, y programen publicaciones directamente. En lugar de escribir llamadas a la API REST, conectas el servidor una vez y tu asistente de IA obtiene herramientas listas para usar que cubren la generación de carruseles, imágenes y videos, marcas, audio, cuentas sociales y programación — usando la misma clave y créditos de la Embed API que la API REST.
Referencia rápida
| URL del servidor | https://mcp.postnitro.ai/mcp |
| Transporte | HTTP transmisible |
| Autenticación | Cabecera Authorization: Bearer <your-api-key> (las claves comienzan con pn-) |
| Clave API | Misma clave que la Embed API — cómo obtener una |
| Verificación de estado | GET https://mcp.postnitro.ai/health |
| Precios | Usa tus créditos de Embed API — el plan gratuito incluye 5 créditos/mes, sin necesidad de tarjeta |
Conexión
Claude Code
claude mcp add --transport http postnitro https://mcp.postnitro.ai/mcp \
--header "Authorization: Bearer pn-your-api-key-here"
Claude Desktop / configuración JSON
Añade el servidor a tu archivo de configuración MCP (para Claude Desktop: claude_desktop_config.json):
{
"mcpServers": {
"postnitro": {
"type": "http",
"url": "https://mcp.postnitro.ai/mcp",
"headers": {
"Authorization": "Bearer pn-your-api-key-here"
}
}
}
}
Cursor
Cursor tiene soporte nativo para MCP — añade la misma configuración JSON anterior a la configuración MCP de Cursor.
Otros clientes MCP
Cualquier cliente que admita el transporte HTTP transmisible puede conectarse usando la URL del servidor y la cabecera Authorization: Bearer mostrada arriba.
Reemplaza pn-your-api-key-here con tu clave API real. La clave es la misma que se usa para la Embed API — consulta Obtención de una clave API.
Valores predeterminados guardados
En lugar de pasar templateId, brandId y presetId en cada llamada, guárdalos una vez con postnitro_set_defaults. Persisten entre sesiones y se aplican automáticamente cuando una herramienta de generación/importación los omite.
Selección automática: si falta un ID requerido y tu espacio de trabajo tiene exactamente un candidato (por ejemplo, un único ajuste preestablecido de IA), el servidor lo selecciona automáticamente. Si existen varios, el error lista los IDs candidatos para que el asistente pueda elegir sin una búsqueda adicional.
Identificadores de carrusel — embedPostId vs designId
La generación produce dos IDs distintos:
| Identificador | Representa | Usado por |
|---|---|---|
embedPostId | El trabajo de generación | postnitro_check_status, postnitro_get_output |
designId | El artefacto de diseño duradero | Programación (campo designId) |
El designId de programación se resuelve contra la tabla de diseños — pasar un embedPostId donde se espera un designId falla con 400 "Design not found.". Toda herramienta que devuelve un carrusel completado (postnitro_get_output, postnitro_generate_and_wait, postnitro_import_and_wait) muestra un campo designId de nivel superior para conectar la generación con la programación. La herramienta de un solo paso postnitro_generate_and_schedule lo resuelve automáticamente.
Herramientas disponibles
Configuración
| Herramienta | Descripción |
|---|---|
postnitro_set_defaults | Guarda plantilla, marca, ajuste preestablecido de IA y formato de salida predeterminados para no repetirlos en cada llamada |
postnitro_get_defaults | Recupera tus valores predeterminados guardados |
Descubrimiento
| Herramienta | Descripción |
|---|---|
postnitro_list_templates | Explora tus plantillas de diseño con IDs, dimensiones y relaciones de aspecto |
postnitro_list_brands | Lista tus configuraciones de marca |
postnitro_list_ai_presets | Lista tus ajustes preestablecidos de IA (plataforma, tono, audiencia, idioma, número de diapositivas) |
postnitro_get_import_template | Obtén la estructura exacta de diapositivas y las reglas para importar contenido |
Creación — carruseles
Los carruseles son publicaciones de múltiples diapositivas (postType: "CAROUSEL").
| Herramienta | Descripción |
|---|---|
postnitro_generate_carousel | Genera un carrusel con IA a partir de un tema/texto, URL de artículo o URL de publicación X (Twitter) |
postnitro_import_carousel | Crea un carrusel a partir de tu propio contenido de diapositivas (matriz de diapositivas tipadas) |
postnitro_generate_and_wait | Genera un carrusel con IA, consulta hasta completar y devuelve la salida en una sola llamada |
postnitro_import_and_wait | Importa un carrusel, consulta hasta completar y devuelve la salida en una sola llamada |
Creación — publicaciones de imagen
Las publicaciones de imagen son publicaciones de una sola diapositiva (postType: "IMAGE") — los equivalentes de creación de imágenes de las herramientas de carrusel.
| Herramienta | Descripción |
|---|---|
postnitro_generate_image | Genera con IA una publicación de una sola imagen a partir de un tema/texto, URL de artículo o URL de publicación X (Twitter) |
postnitro_import_image | Crea una publicación de una sola imagen a partir de tu propio contenido — pasa slide como un objeto (no una matriz), sin type de diapositiva. Se admite el diseño de infografía |
postnitro_generate_image_and_wait | Genera con IA una publicación de imagen, consulta hasta completar y devuelve la salida en una sola llamada |
postnitro_import_image_and_wait | Importa una publicación de imagen, consulta hasta completar y devuelve la salida en una sola llamada |
Creación — publicaciones de video
Las publicaciones de video (postType: "VIDEO") convierten diapositivas en escenas. import toma la misma matriz de diapositivas que un carrusel; la entrada adicional es videoSettings.
| Herramienta | Descripción |
|---|---|
postnitro_generate_video | Genera con IA un video a partir de un tema/texto, URL de artículo o URL de publicación X (Twitter) — cada diapositiva que escribe la IA se convierte en una escena |
postnitro_import_video | Crea un video a partir de tus propias escenas (la misma matriz de diapositivas tipadas que toma un carrusel) |
postnitro_generate_video_and_wait | Genera con IA un video, consulta hasta completar y devuelve la salida en una sola llamada |
postnitro_import_video_and_wait | Importa un video, consulta hasta completar y devuelve la salida en una sola llamada |
Las cuatro aceptan videoSettings y un responseType solo de video — consulta Publicaciones de video.
Audio
| Herramienta | Descripción |
|---|---|
postnitro_list_audio | Lista las pistas de audio del espacio de trabajo — la fuente del audioId usado por publicaciones de video y reels |
postnitro_delete_audio | Elimina permanentemente una pista de audio y su archivo almacenado (destructivo; se rechaza mientras una publicación programada la use) |
La carga de audio ocurre en la aplicación PostNitro — estas herramientas solo listan y eliminan. Consulta la API de Audio.
Estado y salida
| Herramienta | Descripción |
|---|---|
postnitro_check_status | Verifica el estado de generación (PENDING, PROCESSING, COMPLETED, FAILED) y los registros de procesamiento |
postnitro_get_output | Recupera las URLs de imágenes PNG generadas, la URL del documento PDF o la URL del video MP4, además del designId para usar al programar |
Marcas
| Herramienta | Descripción |
|---|---|
postnitro_create_brand | Crea un kit de marca (nombre, identificador, logotipo, indicadores de visualización) |
postnitro_get_brand | Obtiene un kit de marca |
postnitro_update_brand | Actualiza el nombre, identificador, imagen o indicadores de visualización de un kit de marca |
Consulta la API de Marcas para las definiciones completas de campos.
Cuentas sociales
| Herramienta | Descripción |
|---|---|
postnitro_list_social_accounts | Lista cuentas conectadas de LinkedIn, Instagram, TikTok, Threads y Facebook (Página) — devuelve los IDs usados en selectedAccounts al programar |
postnitro_get_social_account | Obtiene una cuenta con el uso de publicaciones programadas por estado y expiración de token |
postnitro_disconnect_social_account | Desconecta una cuenta y la elimina de toda publicación programada a la que estaba adjunta (destructivo) |
Consulta la API de Cuentas Sociales para las definiciones completas de campos.
Programación
| Herramienta | Descripción |
|---|---|
postnitro_list_scheduled_posts | Lista publicaciones programadas y borradores en un rango de fechas, opcionalmente filtrados a cuentas específicas con socialAccountIds |
postnitro_create_scheduled_post | Crea una publicación programada o un borrador |
postnitro_get_scheduled_post | Obtiene una publicación programada |
postnitro_update_scheduled_post | Actualiza una publicación programada — esto reemplaza subtítulos y cuentas seleccionadas, así que envía el estado completo previsto |
postnitro_delete_scheduled_post | Elimina una publicación programada o un borrador (destructivo) |
postnitro_create_scheduled_post y postnitro_update_scheduled_post toman un designId (de postnitro_get_output, no un embedPostId), subtítulos postContent por plataforma, selectedAccounts y objetos de configuración por plataforma. Qué objeto de configuración se requiere depende de las plataformas seleccionadas y de si hay un designId adjunto — consulta Configuración de plataforma para la referencia completa.
Una convención que vale la pena conocer: cuando la salida de un diseño es PDF y la publicación se dirige a LinkedIn, el linkedinPostSettings.postType correcto es "document" (con un postTitle de 5 a 90 caracteres) en lugar de "carousel". postnitro_generate_and_schedule aplica esto automáticamente; las otras herramientas de programación transmiten tu elección tal cual.
Para Facebook, facebookPostSettings.postType "carousel" es una publicación de múltiples fotos (cada diapositiva en una publicación), mientras que "link_carousel" son tarjetas de enlace deslizables. Un carrusel de enlaces necesita un linkUrl (una URL http(s) absoluta) al programarse, de 2 a 10 diapositivas, y opcionalmente toma un callToAction, showEndCard, useSlideTitles y useSlideDescriptions. Facebook solo acepta imágenes de tarjetas de carrusel de enlaces para enlaces en un dominio que el negocio de la Página haya verificado, así que prefiere "carousel" para diseños que enlazan a otro lugar. Referencia completa de campos: Configuración de plataforma.
postnitro_list_scheduled_posts toma un array socialAccountIds opcional (IDs de postnitro_list_social_accounts) — útil para "qué está programado en mi LinkedIn la próxima semana". Filtra publicaciones, no las cuentas dentro de ellas: una publicación dirigida a LinkedIn e Instagram se devuelve cuando filtras por cualquiera de las dos, y su array accounts aún lista ambas. Los IDs desconocidos no coinciden con nada en lugar de dar error.
postSettings (la configuración de video de un reel) es opcional: cuando se omite, la API completa la duración y el audio desde la configuración con la que se generó el diseño adjunto, recurriendo a 30 segundos sin audio. Su forma es idéntica al videoSettings de una publicación de video, así que un video programado como reel conserva automáticamente su propia duración y audio.
El CRUD completo para programación también está disponible a través de la API de Programación si lo necesitas fuera de un asistente de IA.
Asistente combinado
| Herramienta | Descripción |
|---|---|
postnitro_generate_and_schedule | Genera una publicación con IA (postType CAROUSEL, IMAGE o VIDEO), espera la finalización y prográmala — en una sola llamada |
postnitro_import_and_schedule | Importa tu propio contenido (array slides para CAROUSEL / VIDEO, objeto slide para IMAGE), espera y prográmala — en una sola llamada |
Ambas toman un postType y, para VIDEO, el objeto videoSettings. El diseño generado se adjunta automáticamente — no pases designId a menos que quieras adjuntar un diseño diferente preexistente en su lugar. Si la programación falla después de que la generación tenga éxito, la herramienta devuelve el designId generado para que puedas reintentar con postnitro_create_scheduled_post sin regenerar (lo que volvería a consumir créditos).
Carruseles vs. publicaciones de imagen vs. videos
Ambos tipos de publicación comparten el mismo ciclo de vida (iniciar → consultar → salida), los mismos identificadores y la misma forma de salida. Solo difieren en el contenido que pasas:
Carrusel (postnitro_*_carousel) | Imagen (postnitro_*_image) | Video (postnitro_*_video) | |
|---|---|---|---|
postType | CAROUSEL | IMAGE | VIDEO |
| Contenido propio | slides — una matriz de diapositivas tipadas (exactamente un starting_slide, ≥1 body_slide, exactamente un ending_slide) | slide — un objeto único, sin type de diapositiva | slides — la misma matriz que un carrusel; cada diapositiva es una escena |
| Contenido IA | aiGeneration — produce múltiples diapositivas | aiGeneration — produce una imagen | aiGeneration — produce las escenas |
| Diseño de infografía | Por diapositiva en la matriz | En el objeto de diapositiva único | Por escena en la matriz |
| Tipos de respuesta | PDF | PNG | DESIGN | PDF | PNG | DESIGN | MP4 | DESIGN solamente |
| Entrada adicional | — | — | videoSettings (duración + audio opcional) |
Entradas de la herramienta de imagen
postnitro_generate_image / postnitro_generate_image_and_wait (contenido IA):
aiGeneration(obligatorio) —{ type, context, instructions }.typees uno detext,article,x;contextes el tema/indicación o una URL.templateId,brandId,presetId,responseType,requestorId— todos opcionales si has guardado valores predeterminados; de lo contrario, proporciónalos.responseTypeesPDF|PNG|DESIGN.
postnitro_import_image / postnitro_import_image_and_wait (tu propio contenido):
slide(obligatorio) — un solo objeto, no un array, con ningúntypede diapositiva. Soloheadinges obligatorio;sub_heading,description,cta_button,imageybackground_imageson opcionales.- Se admite el diseño de infografía: establece
layoutType: "infographic"y proporcionalayoutConfig(misma forma que las infografías de carrusel —columnDataconidproporcionados por el llamador, elementoscontent, etc.). templateId,brandId,responseType,requestorId— opcionales si has guardado valores predeterminados.
Publicaciones de video
Un video se renderiza a MP4, o a DESIGN para omitir el renderizado y terminarlo en el editor de video mediante editorUrl. PDF / PNG se rechazan para un video, y MP4 se rechaza para cualquier otro tipo de publicación. Las herramientas de video usan por defecto DESIGN; un valor predeterminado guardado de PDF / PNG se trata como DESIGN y se informa en warnings en lugar de fallar la llamada — y MP4 no se puede guardar con postnitro_set_defaults, ya que rompería las llamadas de carrusel e imagen.
videoSettings
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
videoDuration | número | ✅ cuando se envía el objeto | Duración del video completo en segundos — al menos 5, menos de 60. No por escena |
audioId | cadena | no | Pista de audio superpuesta al video. Un ID de medio, nunca una URL |
videoSettings es obligatorio cuando responseType es MP4 (un renderizado necesita una duración) y opcional para DESIGN. Si se envía para cualquier otro tipo de publicación, se rechaza.
videoDuration y audioId son las únicas claves aceptadas, y el servidor rechaza cualquier otra directamente en lugar de descartarla — así que un campo mal nombrado (audio en lugar de audioId, por ejemplo) devuelve un error unrecognized_keys que nombra la clave infractora, en lugar de renderizar silenciosamente un video sin su banda sonora. La misma rigurosidad se aplica a postSettings y generateImages.
audioId proviene de postnitro_list_audio. Se verifica cuando se realiza la llamada: el medio debe existir, pertenecer a tu espacio de trabajo y ser un archivo de audio — una URL, un ID de imagen o un ID de otro espacio de trabajo se rechaza. Omítelo para un video silencioso.
Renderizar un video toma más tiempo que un carrusel — típicamente 15–45 segundos para las herramientas _and_wait con MP4, y más para diseños con animaciones o GIFs (que usan el renderizador mejorado). Consulta Publicaciones de video para la referencia a nivel REST.
Generación de imágenes con IA (generateImages)
Cada herramienta de creación — postnitro_generate_carousel, postnitro_import_carousel, postnitro_generate_image, postnitro_import_image, postnitro_generate_video, postnitro_import_video (y sus variantes _and_wait) — acepta un objeto generateImages opcional. Cuando está presente, el servidor genera imágenes con IA y las integra en el diseño antes de renderizar. Consulta la referencia REST para el comportamiento completo (mejor esfuerzo, créditos, límites del plan).
| Campo | Tipo | Obligatorio (MCP/CLI) | Predeterminado | Valores permitidos |
|---|---|---|---|---|
context | cadena | ✅ sí | — | Tema/breve que guía las indicaciones de imagen |
imagePlacement | cadena | no | "auto" | "auto", "background", "in-line" |
imageStrategy | cadena | no | "strategic" | "strategic", "all" |
La única diferencia entre MCP/CLI y la API REST directa:
generateImages.contextes obligatorio a través de MCP y la CLI, porque el agente de IA lo compone para el usuario. En llamadas directas a la API REST, el mismo campo es opcional (se recurre aaiGeneration.contextal generar, o una cadena vacía al importar). Todo lo demás sobregenerateImageses idéntico en ambos.
Omite el objeto generateImages por completo para omitir la generación de imágenes con IA (predeterminado). La generación de imágenes es de mejor esfuerzo y añade latencia — la publicación aún se completa sin imágenes si falla o no está permitida (p. ej., plan gratuito o por encima de la cuota de imágenes con IA de la organización), registrada como un paso GENERATE_IMAGES en postnitro_check_status.
Flujo de trabajo típico del agente
- Descubrir — llama a
postnitro_list_templates,postnitro_list_brandsypostnitro_list_ai_presetspara encontrar IDs válidos (opostnitro_set_defaultsuna vez para omitir esto en sesiones futuras) - Crear — para un carrusel llama a
postnitro_generate_and_wait(IA) opostnitro_import_and_wait(tu propio contenido); para una imagen única,postnitro_generate_image_and_wait/postnitro_import_image_and_wait; para un video,postnitro_generate_video_and_wait/postnitro_import_video_and_wait(añadevideoSettings, ypostnitro_list_audioprimero si el usuario quiere una banda sonora). Estas herramientas gestionan el sondeo por ti - Usar la salida — las herramientas devuelven URLs PNG (una por diapositiva), una única URL PDF o una única URL MP4, además de un
designId, listas para descargar, publicar o programar - Programar (opcional) — llama a
postnitro_create_scheduled_postcon eldesignId, o ve directamente allí conpostnitro_generate_and_schedule
Para generaciones de larga duración o sondeo personalizado, usa la herramienta sin espera (postnitro_generate_carousel / postnitro_import_carousel / postnitro_generate_image / postnitro_import_image / postnitro_generate_video / postnitro_import_video) seguida de postnitro_check_status y postnitro_get_output.
Convenciones de respuesta
- Los resultados exitosos de las herramientas son JSON. Las herramientas de creación/actualización devuelven el objeto afectado más un
scheduledPostIdde nivel superior (para herramientas de programación) para que coincida con elscheduledPostIdque otras herramientas esperan como entrada. - Las herramientas pueden incluir un array
warnings— avisos no fatales, p. ej., una publicación de medio sin diseño adjunto, o una publicación de LinkedIndocumentsin unpostTitleválido. - Los errores de la API se muestran textualmente como
PostNitro API Error (<status>): <message>. Consulta la referencia de errores de la API de programación para mensajes específicos de programación. - Las claves desconocidas dentro de
videoSettings,postSettingsygenerateImagesse rechazan antes de enviar la solicitud (unrecognized_keys, nombrando el campo) en lugar de ignorarse silenciosamente — así que una opción mal escrita aparece como un error que puedes corregir, no como una publicación que usó silenciosamente los valores predeterminados.
Créditos
El servidor MCP consume los mismos créditos que la API Embed:
- Importación de contenido: 1 crédito por diapositiva
- Generación con IA: 2 créditos por diapositiva
- Plan gratuito: 5 créditos al mes (sin tarjeta requerida) — los planes de pago comienzan en $10/mes por 250 créditos
MCP vs. API Embed vs. SDK Embed
| Mejor para | |
|---|---|
| Servidor MCP | Asistentes de IA y agentes que crean y programan carruseles, imágenes y videos conversacionalmente (Claude, Cursor, agentes personalizados) |
| API Embed | Automatización programática — Make.com, Zapier, n8n, trabajos cron, backends personalizados |
| SDK Embed | Permitir que tus usuarios creen y editen carruseles visualmente dentro de tu aplicación web |
Soporte
- Correo electrónico: support@postnitro.ai
- Chat en vivo: Disponible en postnitro.ai
- Más detalles: postnitro.ai/mcp