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 servidor | https://mcp.postnitro.ai/mcp |
| Transporte | HTTP Streamable |
| Autenticação | Cabeçalho Authorization: Bearer <your-api-key> (chaves começam com pn-) |
| Chave da API | Mesma chave da Embed API — como obter uma |
| Verificação de saúde | GET https://mcp.postnitro.ai/health |
| Preços | Usa 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:
| Identificador | Representa | Usado por |
|---|---|---|
embedPostId | O job de geração | postnitro_check_status, postnitro_get_output |
designId | O artefato de design durável | Agendamento (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
| Ferramenta | Descrição |
|---|---|
postnitro_set_defaults | Salva template padrão, marca, preset de IA e formato de saída para não repeti-los em cada chamada |
postnitro_get_defaults | Recupera seus padrões salvos |
Descoberta
| Ferramenta | Descrição |
|---|---|
postnitro_list_templates | Navegue pelos seus templates de design com IDs, dimensões e proporções |
postnitro_list_brands | Liste suas configurações de marca |
postnitro_list_ai_presets | Liste seus presets de IA (plataforma, tom, público, idioma, contagem de slides) |
postnitro_get_import_template | Obtenha 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").
| Ferramenta | Descrição |
|---|---|
postnitro_generate_carousel | Gere um carrossel com IA a partir de um tópico/texto, URL de artigo ou URL de post do X (Twitter) |
postnitro_import_carousel | Crie um carrossel a partir do seu próprio conteúdo de slides (array de slides tipados) |
postnitro_generate_and_wait | Gere um carrossel com IA, faça polling até concluir e retorne a saída em uma única chamada |
postnitro_import_and_wait | Importe 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.
| Ferramenta | Descrição |
|---|---|
postnitro_generate_image | Gere 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_image | Crie 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_wait | Gere um post de imagem com IA, faça polling até concluir e retorne a saída em uma única chamada |
postnitro_import_image_and_wait | Importe 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.
| Ferramenta | Descrição |
|---|---|
postnitro_generate_video | Gere 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_video | Crie um vídeo a partir das suas próprias cenas (o mesmo array de slides tipados que um carrossel recebe) |
postnitro_generate_video_and_wait | Gere um vídeo com IA, faça polling até concluir e retorne a saída em uma única chamada |
postnitro_import_video_and_wait | Importe 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
| Ferramenta | Descrição |
|---|---|
postnitro_list_audio | Liste as faixas de áudio do workspace — a fonte do audioId usado por posts de vídeo e reels |
postnitro_delete_audio | Exclua 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
| Ferramenta | Descrição |
|---|---|
postnitro_check_status | Verifique o status da geração (PENDING, PROCESSING, COMPLETED, FAILED) e os logs de processamento |
postnitro_get_output | Recupere 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
| Ferramenta | Descrição |
|---|---|
postnitro_create_brand | Crie um kit de marca (nome, handle, logotipo, flags de exibição) |
postnitro_get_brand | Busque um kit de marca |
postnitro_update_brand | Atualize 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
| Ferramenta | Descrição |
|---|---|
postnitro_list_social_accounts | Liste contas conectadas do LinkedIn, Instagram, TikTok, Threads e Facebook (Página) — retorna os IDs usados em selectedAccounts ao agendar |
postnitro_get_social_account | Busque uma conta com uso de posts agendados por status e expiração de token |
postnitro_disconnect_social_account | Desconecte 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
| Ferramenta | Descrição |
|---|---|
postnitro_list_scheduled_posts | Liste posts agendados e rascunhos em um intervalo de datas, opcionalmente filtrados para contas específicas com socialAccountIds |
postnitro_create_scheduled_post | Crie um post agendado ou rascunho |
postnitro_get_scheduled_post | Busque um post agendado |
postnitro_update_scheduled_post | Atualize um post agendado — isso substitui legendas e contas selecionadas, então envie o estado completo pretendido |
postnitro_delete_scheduled_post | Exclua 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
| Ferramenta | Descrição |
|---|---|
postnitro_generate_and_schedule | Gere um post com IA (postType CAROUSEL, IMAGE ou VIDEO), aguarde a conclusão e agende-o — em uma única chamada |
postnitro_import_and_schedule | Importe 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) | |
|---|---|---|---|
postType | CAROUSEL | IMAGE | VIDEO |
| Conteúdo próprio | slides — um array de slides tipados (exatamente um starting_slide, ≥1 body_slide, exatamente um ending_slide) | slide — um objeto único, sem slide type | slides — o mesmo array que um carrossel; cada slide é uma cena |
| Conteúdo de IA | aiGeneration — produz vários slides | aiGeneration — produz uma imagem | aiGeneration — produz as cenas |
| Layout de infográfico | Por slide no array | No objeto de slide único | Por cena no array |
| Tipos de resposta | PDF | PNG | DESIGN | PDF | PNG | DESIGN | MP4 | 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 detext,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 slidetype. Apenasheadingé obrigatório;sub_heading,description,cta_button,imageebackground_imagesão opcionais.- Layout de infográfico é suportado: defina
layoutType: "infographic"e forneçalayoutConfig(mesma forma que infográficos de carrossel —columnDatacomidfornecidos pelo chamador, itenscontent, 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
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
videoDuration | número | ✅ quando o objeto é enviado | Duração do vídeo inteiro em segundos — pelo menos 5, abaixo de 60. Não por cena |
audioId | string | não | Trilha 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).
| Campo | Tipo | Obrigatório (MCP/CLI) | Padrão | Valores permitidos |
|---|---|---|---|---|
context | string | ✅ sim | — | Tópico/briefing que orienta os prompts de imagem |
imagePlacement | string | não | "auto" | "auto", "background", "in-line" |
imageStrategy | string | nã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 paraaiGeneration.contextna geração, ou uma string vazia na importação). Todo o resto sobregenerateImagesé 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
- Descobrir — chame
postnitro_list_templates,postnitro_list_brandsepostnitro_list_ai_presetspara encontrar IDs válidos (oupostnitro_set_defaultsuma vez para pular isso em sessões futuras) - Criar — para um carrossel, chame
postnitro_generate_and_wait(IA) oupostnitro_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(adicionevideoSettings, epostnitro_list_audioprimeiro se o usuário quiser uma trilha sonora). Essas ferramentas cuidam da sondagem para você - 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 - Agendar (opcional) — chame
postnitro_create_scheduled_postcom odesignId, ou vá direto para lá compostnitro_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
scheduledPostIdde nível superior (para ferramentas de agendamento) para que se alinhe com oscheduledPostIdque 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 postdocumentdo LinkedIn sem umpostTitlevá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,postSettingsegenerateImagessã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 MCP | Assistentes de IA e agentes criando e agendando carrosséis, imagens e vídeos conversacionalmente (Claude, Cursor, agentes personalizados) |
| API Embed | Automação programática — Make.com, Zapier, n8n, tarefas cron, backends personalizados |
| SDK Embed | Permitir que seus usuários criem e editem carrosséis visualmente dentro do seu aplicativo web |
Suporte
- E-mail: support@postnitro.ai
- Chat ao vivo: Disponível em postnitro.ai
- Mais detalhes: postnitro.ai/mcp