PostNitro

O servidor MCP PostNitro permite que assistentes e agentes de IA criem carrosséis e posts de imagem, gerenciem kits de marca e contas sociais conectadas, e agendem posts diretamente.

Documentação

Servidor MCP PostNitro

O servidor MCP PostNitro permite que assistentes e agentes de IA — Claude (Desktop, Code e Cowork), Cursor, ChatGPT e qualquer outro cliente Model Context Protocol — criem carrosséis, posts de imagem e vídeos, gerenciem kits de marca, faixas de áudio e contas sociais conectadas, e agendem posts diretamente. Em vez de escrever chamadas de API REST, você conecta o servidor uma vez e seu assistente de IA recebe ferramentas prontas que cobrem geração de carrosséis, imagens e vídeos, marcas, áudio, contas sociais e agendamento — usando a mesma chave e créditos da Embed API que a API REST.

Referência Rápida

URL do servidorhttps://mcp.postnitro.ai/mcp
TransporteHTTP Streamable
AutenticaçãoCabeçalho Authorization: Bearer <your-api-key> (chaves começam com pn-)
Chave da APIMesma chave da Embed API — como obter uma
Verificação de saúdeGET https://mcp.postnitro.ai/health
PreçosUsa seus créditos da Embed API — o plano gratuito inclui 5 créditos/mês, sem necessidade de cartão

Conectando

Claude Code

claude mcp add --transport http postnitro https://mcp.postnitro.ai/mcp \
  --header "Authorization: Bearer pn-your-api-key-here"

Claude Desktop / configuração JSON

Adicione o servidor ao seu arquivo de configuração 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

O Cursor tem suporte nativo a MCP — adicione a mesma configuração JSON acima nas configurações MCP do Cursor.

Outros clientes MCP

Qualquer cliente que suporte o transporte HTTP Streamable pode se conectar usando a URL do servidor e o cabeçalho Authorization: Bearer mostrado acima.

Substitua pn-your-api-key-here pela sua chave de API real. A chave é a mesma usada para a Embed API — veja Obtendo uma Chave de API.

Padrões salvos

Em vez de passar templateId, brandId e presetId em cada chamada, salve-os uma vez com postnitro_set_defaults. Eles persistem entre sessões e são aplicados automaticamente sempre que uma ferramenta de geração/importação os omite.

Seleção automática: se um ID obrigatório estiver ausente e seu workspace tiver exatamente um candidato (por exemplo, um único preset de IA), o servidor o seleciona automaticamente. Se houver vários, o erro lista os IDs candidatos para que o assistente possa escolher sem uma consulta separada.

Identificadores de carrossel — embedPostId vs designId

A geração produz dois IDs distintos:

IdentificadorRepresentaUsado por
embedPostIdO job de geraçãopostnitro_check_status, postnitro_get_output
designIdO artefato de design durávelAgendamento (campo designId)

O designId do agendamento resolve na tabela de designs — passar um embedPostId onde um designId é esperado falha com 400 "Design not found.". Toda ferramenta que retorna um carrossel concluído (postnitro_get_output, postnitro_generate_and_wait, postnitro_import_and_wait) expõe um campo designId de nível superior para conectar a geração ao agendamento. A ferramenta de etapa única postnitro_generate_and_schedule resolve isso automaticamente.

Ferramentas disponíveis

Configuração

FerramentaDescrição
postnitro_set_defaultsSalva template padrão, marca, preset de IA e formato de saída para não repeti-los em cada chamada
postnitro_get_defaultsRecupera seus padrões salvos

Descoberta

FerramentaDescrição
postnitro_list_templatesNavegue pelos seus templates de design com IDs, dimensões e proporções
postnitro_list_brandsListe suas configurações de marca
postnitro_list_ai_presetsListe seus presets de IA (plataforma, tom, público, idioma, contagem de slides)
postnitro_get_import_templateObtenha a estrutura exata de slides e as regras para importar conteúdo

Criação — carrosséis

Carrosséis são posts com vários slides (postType: "CAROUSEL").

FerramentaDescrição
postnitro_generate_carouselGere um carrossel com IA a partir de um tópico/texto, URL de artigo ou URL de post do X (Twitter)
postnitro_import_carouselCrie um carrossel a partir do seu próprio conteúdo de slides (array de slides tipados)
postnitro_generate_and_waitGere um carrossel com IA, faça polling até concluir e retorne a saída em uma única chamada
postnitro_import_and_waitImporte um carrossel, faça polling até concluir e retorne a saída em uma única chamada

Criação — posts de imagem

Posts de imagem são posts de slide único (postType: "IMAGE") — os equivalentes image-maker das ferramentas de carrossel.

FerramentaDescrição
postnitro_generate_imageGere um post de imagem única com IA a partir de um tópico/texto, URL de artigo ou URL de post do X (Twitter)
postnitro_import_imageCrie um post de imagem única a partir do seu próprio conteúdo — passe slide como um objeto (não um array), sem slide type. Layout de infográfico é suportado
postnitro_generate_image_and_waitGere um post de imagem com IA, faça polling até concluir e retorne a saída em uma única chamada
postnitro_import_image_and_waitImporte um post de imagem, faça polling até concluir e retorne a saída em uma única chamada

Criação — posts de vídeo

Posts de vídeo (postType: "VIDEO") transformam slides em cenas. import recebe o mesmo array de slides que um carrossel; a entrada extra é videoSettings.

FerramentaDescrição
postnitro_generate_videoGere um vídeo com IA a partir de um tópico/texto, URL de artigo ou URL de post do X (Twitter) — cada slide que a IA escreve vira uma cena
postnitro_import_videoCrie um vídeo a partir das suas próprias cenas (o mesmo array de slides tipados que um carrossel recebe)
postnitro_generate_video_and_waitGere um vídeo com IA, faça polling até concluir e retorne a saída em uma única chamada
postnitro_import_video_and_waitImporte um vídeo, faça polling até concluir e retorne a saída em uma única chamada

Todas as quatro aceitam videoSettings e um responseType exclusivo de vídeo — veja Posts de vídeo.

Áudio

FerramentaDescrição
postnitro_list_audioListe as faixas de áudio do workspace — a fonte do audioId usado por posts de vídeo e reels
postnitro_delete_audioExclua permanentemente uma faixa de áudio e seu arquivo armazenado (destrutivo; recusado enquanto um post agendado a usar)

O upload de áudio acontece no aplicativo PostNitro — estas ferramentas apenas listam e excluem. Veja a API de Áudio.

Status e saída

FerramentaDescrição
postnitro_check_statusVerifique o status da geração (PENDING, PROCESSING, COMPLETED, FAILED) e os logs de processamento
postnitro_get_outputRecupere as URLs das imagens PNG geradas, a URL do documento PDF ou a URL do vídeo MP4, além do designId a ser usado ao agendar

Marcas

FerramentaDescrição
postnitro_create_brandCrie um kit de marca (nome, handle, logotipo, flags de exibição)
postnitro_get_brandBusque um kit de marca
postnitro_update_brandAtualize o nome, handle, imagem ou flags de exibição de um kit de marca

Veja a API de Marcas para definições completas dos campos.

Contas sociais

FerramentaDescrição
postnitro_list_social_accountsListe contas conectadas do LinkedIn, Instagram, TikTok, Threads e Facebook (Página) — retorna os IDs usados em selectedAccounts ao agendar
postnitro_get_social_accountBusque uma conta com uso de posts agendados por status e expiração de token
postnitro_disconnect_social_accountDesconecte uma conta e remova-a de todo post agendado ao qual estava vinculada (destrutivo)

Veja a API de Contas Sociais para definições completas dos campos.

Agendamento

FerramentaDescrição
postnitro_list_scheduled_postsListe posts agendados e rascunhos em um intervalo de datas, opcionalmente filtrados para contas específicas com socialAccountIds
postnitro_create_scheduled_postCrie um post agendado ou rascunho
postnitro_get_scheduled_postBusque um post agendado
postnitro_update_scheduled_postAtualize um post agendado — isso substitui legendas e contas selecionadas, então envie o estado completo pretendido
postnitro_delete_scheduled_postExclua um post agendado ou rascunho (destrutivo)

postnitro_create_scheduled_post e postnitro_update_scheduled_post recebem um designId (de postnitro_get_output, não um embedPostId), legendas postContent por plataforma, selectedAccounts e objetos de configurações por plataforma. Qual objeto de configurações é obrigatório depende das plataformas selecionadas e se um designId está anexado — veja Configurações de plataforma para a referência completa.

Uma convenção que vale conhecer: quando a saída de um design é PDF e o post tem como alvo o LinkedIn, o linkedinPostSettings.postType correto é "document" (com um postTitle de 5 a 90 caracteres) em vez de "carousel". postnitro_generate_and_schedule aplica isso automaticamente; as outras ferramentas de agendamento repassam sua escolha como está.

Para Facebook, facebookPostSettings.postType "carousel" é um post com várias fotos (todos os slides em um único post), enquanto "link_carousel" são cartões de link deslizáveis. Um carrossel de links precisa de um linkUrl (uma URL http(s) absoluta) ao ser agendado, de 2 a 10 slides e, opcionalmente, aceita um callToAction, showEndCard, useSlideTitles e useSlideDescriptions. O Facebook só aceita imagens de cartão de carrossel de links para links em um domínio que o negócio da Página verificou, então prefira "carousel" para designs que apontam para outros lugares. Referência completa de campos: Configurações de plataforma.

postnitro_list_scheduled_posts aceita um array opcional de socialAccountIds (IDs de postnitro_list_social_accounts) — útil para "o que está agendado no meu LinkedIn na próxima semana". Ele filtra posts, não as contas dentro deles: um post que tem como alvo LinkedIn e Instagram é retornado quando você filtra por qualquer um deles, e seu array accounts ainda lista ambos. IDs desconhecidos não correspondem a nada em vez de gerar erro.

postSettings (as configurações de vídeo de um reel) é opcional: quando omitido, a API preenche a duração e o áudio a partir das configurações com as quais o design anexado foi gerado, recorrendo a 30 segundos sem áudio. Sua forma é idêntica ao videoSettings de um post de vídeo, então um vídeo agendado como reel mantém sua própria duração e áudio automaticamente.

CRUD completo para agendamento também está disponível via API de Agendamento se você precisar fora de um assistente de IA.

Auxiliar combinado

FerramentaDescrição
postnitro_generate_and_scheduleGere um post com IA (postType CAROUSEL, IMAGE ou VIDEO), aguarde a conclusão e agende-o — em uma única chamada
postnitro_import_and_scheduleImporte seu próprio conteúdo (array slides para CAROUSEL / VIDEO, objeto slide para IMAGE), aguarde e agende-o — em uma única chamada

Ambas recebem um postType e, para VIDEO, o objeto videoSettings. O design gerado é anexado automaticamente — não passe designId a menos que queira anexar um design diferente e pré-existente. Se o agendamento falhar após a geração ser concluída, a ferramenta retorna o designId gerado para que você possa tentar novamente com postnitro_create_scheduled_post sem regenerar (o que consumiria créditos novamente).

Carrosséis vs. posts de imagem vs. vídeos

Ambos os tipos de post compartilham o mesmo ciclo de vida (iniciar → polling → saída), os mesmos identificadores e a mesma forma de saída. Eles diferem apenas no conteúdo que você passa:

Carrossel (postnitro_*_carousel)Imagem (postnitro_*_image)Vídeo (postnitro_*_video)
postTypeCAROUSELIMAGEVIDEO
Conteúdo próprioslides — um array de slides tipados (exatamente um starting_slide, ≥1 body_slide, exatamente um ending_slide)slide — um objeto único, sem slide typeslides — o mesmo array que um carrossel; cada slide é uma cena
Conteúdo de IAaiGeneration — produz vários slidesaiGeneration — produz uma imagemaiGeneration — produz as cenas
Layout de infográficoPor slide no arrayNo objeto de slide únicoPor cena no array
Tipos de respostaPDF | PNG | DESIGNPDF | PNG | DESIGNMP4 | DESIGN apenas
Entrada extra——videoSettings (duração + áudio opcional)

Entradas da ferramenta de imagem

postnitro_generate_image / postnitro_generate_image_and_wait (conteúdo de IA):

  • aiGeneration (obrigatório) — { type, context, instructions }. type é um de text, article, x; context é o tópico/prompt ou uma URL.
  • templateId, brandId, presetId, responseType, requestorId — todos opcionais se você salvou padrões; caso contrário, forneça-os. responseType é PDF | PNG | DESIGN.

postnitro_import_image / postnitro_import_image_and_wait (seu próprio conteúdo):

  • slide (obrigatório) — um único objeto, não um array, com nenhum slide type. Apenas heading é obrigatório; sub_heading, description, cta_button, image e background_image são opcionais.
  • Layout de infográfico é suportado: defina layoutType: "infographic" e forneça layoutConfig (mesma forma que infográficos de carrossel — columnData com id fornecidos pelo chamador, itens content, etc.).
  • templateId, brandId, responseType, requestorId — opcionais se você salvou padrões.

Posts de vídeo

Um vídeo é renderizado para MP4, ou para DESIGN para pular a renderização e finalizá-lo no editor de vídeo via editorUrl. PDF / PNG são rejeitados para um vídeo, e MP4 é rejeitado para qualquer outro tipo de post. As ferramentas de vídeo usam DESIGN por padrão; um padrão salvo de PDF / PNG é tratado como DESIGN e relatado em warnings em vez de falhar a chamada — e MP4 não pode ser salvo com postnitro_set_defaults, pois quebraria chamadas de carrossel e imagem.

videoSettings

CampoTipoObrigatórioDescrição
videoDurationnúmero✅ quando o objeto é enviadoDuração do vídeo inteiro em segundos — pelo menos 5, abaixo de 60. Não por cena
audioIdstringnãoTrilha de áudio sobreposta ao vídeo. Um ID de mídia, nunca uma URL

videoSettings é obrigatório quando responseType é MP4 (uma renderização precisa de uma duração) e opcional para DESIGN. Se enviado para qualquer outro tipo de post, é rejeitado.

videoDuration e audioId são as únicas chaves aceitas, e o servidor rejeita qualquer outra coisa diretamente em vez de descartá-la — então um campo com nome errado (audio em vez de audioId, por exemplo) retorna como um erro unrecognized_keys nomeando a chave ofensora, em vez de renderizar silenciosamente um vídeo sem sua trilha sonora. A mesma rigidez se aplica a postSettings e generateImages.

audioId vem de postnitro_list_audio. É verificado quando a chamada é feita: a mídia deve existir, pertencer ao seu workspace e ser um arquivo de áudio — uma URL, um ID de imagem ou um ID de outro workspace é rejeitado. Omita-o para um vídeo silencioso.

Renderizar um vídeo leva mais tempo que um carrossel — tipicamente 15–45 segundos para as ferramentas _and_wait com MP4, e mais para designs com animações ou GIFs (que usam o renderizador aprimorado). Veja Posts de vídeo para a referência de nível REST.

Geração de imagens por IA (generateImages)

Toda ferramenta de criação — postnitro_generate_carousel, postnitro_import_carousel, postnitro_generate_image, postnitro_import_image, postnitro_generate_video, postnitro_import_video (e suas variantes _and_wait) — aceita um objeto generateImages opcional. Quando presente, o servidor gera imagens por IA e as incorpora ao design antes da renderização. Veja a referência REST para o comportamento completo (melhor esforço, créditos, limites do plano).

CampoTipoObrigatório (MCP/CLI)PadrãoValores permitidos
contextstring✅ sim—Tópico/briefing que orienta os prompts de imagem
imagePlacementstringnão"auto""auto", "background", "in-line"
imageStrategystringnão"strategic""strategic", "all"

A única diferença entre MCP/CLI e a API REST direta: generateImages.context é obrigatório via MCP e CLI, porque o agente de IA o compõe para o usuário. Em chamadas diretas à API REST, o mesmo campo é opcional (ele recai para aiGeneration.context na geração, ou uma string vazia na importação). Todo o resto sobre generateImages é idêntico em ambos.

Omita o objeto generateImages inteiro para pular a geração de imagens por IA (padrão). A geração de imagens é de melhor esforço e adiciona latência — o post ainda é concluído sem imagens se falhar ou não for permitido (ex.: plano gratuito ou acima da cota de imagens por IA da organização), registrado como uma etapa GENERATE_IMAGES em postnitro_check_status.

Fluxo de trabalho típico do agente

  1. Descobrir — chame postnitro_list_templates, postnitro_list_brands e postnitro_list_ai_presets para encontrar IDs válidos (ou postnitro_set_defaults uma vez para pular isso em sessões futuras)
  2. Criar — para um carrossel, chame postnitro_generate_and_wait (IA) ou postnitro_import_and_wait (seu próprio conteúdo); para uma única imagem, postnitro_generate_image_and_wait / postnitro_import_image_and_wait; para um vídeo, postnitro_generate_video_and_wait / postnitro_import_video_and_wait (adicione videoSettings, e postnitro_list_audio primeiro se o usuário quiser uma trilha sonora). Essas ferramentas cuidam da sondagem para você
  3. Usar a saída — as ferramentas retornam URLs PNG (uma por slide), uma única URL PDF ou uma única URL MP4, além de um designId, prontos para baixar, publicar ou agendar
  4. Agendar (opcional) — chame postnitro_create_scheduled_post com o designId, ou vá direto para lá com postnitro_generate_and_schedule

Para gerações de longa duração ou sondagem personalizada, use a ferramenta sem espera (postnitro_generate_carousel / postnitro_import_carousel / postnitro_generate_image / postnitro_import_image / postnitro_generate_video / postnitro_import_video) seguida por postnitro_check_status e postnitro_get_output.

Convenções de resposta

  • Resultados bem-sucedidos de ferramentas são JSON. Ferramentas de criação/atualização retornam o objeto afetado mais um scheduledPostId de nível superior (para ferramentas de agendamento) para que se alinhe com o scheduledPostId que outras ferramentas esperam como entrada.
  • As ferramentas podem incluir um array warnings — avisos não fatais, ex.: um post de mídia sem design anexado, ou um post document do LinkedIn sem um postTitle válido.
  • Erros da API são exibidos literalmente como PostNitro API Error (<status>): <message>. Veja a referência de erros da API de agendamento para mensagens específicas de agendamento.
  • Chaves desconhecidas dentro de videoSettings, postSettings e generateImages são rejeitadas antes que a solicitação seja enviada (unrecognized_keys, nomeando o campo) em vez de serem ignoradas silenciosamente — então uma opção com erro de digitação surge como um erro que você pode corrigir, não como um post que usou padrões silenciosamente.

Créditos

O servidor MCP consome os mesmos créditos que a API Embed:

  • Importação de conteúdo: 1 crédito por slide
  • Geração por IA: 2 créditos por slide
  • Plano gratuito: 5 créditos por mês (sem cartão necessário) — planos pagos começam em $10/mês por 250 créditos

MCP vs. API Embed vs. SDK Embed

Melhor para
Servidor MCPAssistentes de IA e agentes criando e agendando carrosséis, imagens e vídeos conversacionalmente (Claude, Cursor, agentes personalizados)
API EmbedAutomação programática — Make.com, Zapier, n8n, tarefas cron, backends personalizados
SDK EmbedPermitir que seus usuários criem e editem carrosséis visualmente dentro do seu aplicativo web

Suporte