PostNitro

by Unknown

Not rated
Website

About

The PostNitro MCP server lets AI assistants and agents create carousels and image posts, manage brand kits and connected social accounts, and schedule posts directly.

Details

Author
Unknown
Categories
Marketing, Other, Automation

The PostNitro MCP server lets AI assistants and agents — Claude (Desktop, Code, and Cowork), Cursor, ChatGPT, and any otherModel Context Protocolclient — create carousels, image posts, and videos, manage brand kits, audio tracks, and connected social accounts, and schedule posts directly. Instead of writing REST API calls, you connect the server once and your AI assistant gets ready-made tools covering carousel, image, and video generation, brands, audio, social accounts, and scheduling — using the sameEmbed APIkey and credits as the REST API.

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

Add the server to your MCP configuration file (for 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 has native MCP support — add the same JSON configuration above to your Cursor MCP settings.

Any client that supports the Streamable HTTP transport can connect using the server URL and theAuthorization: Bearerheader shown above.

Replacepn-your-api-key-herewith your actual API key. The key is the same one used for theEmbed API— seeObtaining an API Key.

Rather than passingtemplateId,brandId, andpresetIdon every call, save them once withpostnitro_set_defaults. They persist across sessions and are applied automatically whenever a generate/import tool omits them.

Auto-selection:if a required ID is missing and your workspace has exactly one candidate (e.g. a single AI preset), the server selects it automatically. If several exist, the error lists the candidate IDs so the assistant can choose without a separate lookup.

Carousel identifiers — embedPostId vs designId

Scheduling’sdesignIdresolves against the design table — passing anembedPostIdwhere adesignIdis expected fails with400 "Design not found."Every tool that returns a completed carousel (postnitro_get_output,postnitro_generate_and_wait,postnitro_import_and_wait) surfaces a top-leveldesignIdfield to bridge generation into scheduling. The one-steppostnitro_generate_and_scheduletool resolves it automatically.

Carousels are multi-slide posts (postType: "CAROUSEL").

Image posts are single-slide posts (postType: "IMAGE") — the image-maker equivalents of the carousel tools.

Video posts (postType: "VIDEO") turn slides into scenes.importtakes thesame slide arrayas a carousel; the extra input isvideoSettings.

All four acceptvideoSettingsand a video-onlyresponseType— seeVideo posts.

Uploading audio happens in the PostNitro app — these tools list and delete only. See theAudio API.

See theBrands APIfor full field definitions.

See theSocial Accounts APIfor full field definitions.

postnitro_create_scheduled_postandpostnitro_update_scheduled_posttake adesignId(frompostnitro_get_output, not anembedPostId),postContentcaptions per platform,selectedAccounts, and per-platform settings objects. Which settings object is required depends on the platforms selected and whether adesignIdis attached — seePlatform settingsfor the full reference.

One convention worth knowing: when a design’s output isPDFand the post targetsLinkedIn, the correctlinkedinPostSettings.postTypeis"document"(with a 5–90 characterpostTitle) rather than"carousel".postnitro_generate_and_scheduleapplies this automatically; the other schedule tools pass your choice through as-is.

postnitro_list_scheduled_poststakes an optionalsocialAccountIdsarray (IDs frompostnitro_list_social_accounts) — useful for“what’s scheduled on my LinkedIn next week”. It filtersposts, not the accounts inside them: a post targeting LinkedIn and Instagram is returned when you filter by either, and itsaccountsarray still lists both. Unknown IDs match nothing rather than erroring.

postSettings(a reel’s video settings) isoptional: when omitted, the API fills the duration and audio from the settings the attached design was generated with, falling back to 30 seconds with no audio. Its shape is identical to a video post’svideoSettings, so a video scheduled as a reel keeps its own duration and audio automatically.

Full CRUD for scheduling is also available via theSchedule APIif you need it outside an AI assistant.

Both post types share the same lifecycle (initiate → poll → output), the same identifiers, and the same output shape. They differ only in the content you pass:

postnitro_generate_image/postnitro_generate_image_and_wait(AI content):

- aiGeneration(required) —{ type, context, instructions }.typeis one oftext,article,x;contextis the topic/prompt or a URL.
- templateId,brandId,presetId,responseType,requestorId— all optional if you’ve saved
defaults; otherwise provide them.responseTypeisPDF|PNG|DESIGN.

postnitro_import_image/postnitro_import_image_and_wait(your own content):

- slide(required) — a single object,notan array, withnoslidetype. Onlyheadingis required;sub_heading,description,cta_button,image, andbackground_imageare optional.
- Infographic layout is supported: setlayoutType: "infographic"and providelayoutConfig(same shape as carousel infographics —columnDatawith caller-providedids,contentitems, etc.).
- templateId,brandId,responseType,requestorId— optional if you’ve saved defaults.

A video renders toMP4, or toDESIGNto skip rendering and finish it in the video maker viaeditorUrl.PDF/PNGare rejected for a video, andMP4is rejected for every other post type. The video tools default toDESIGN; a savedPDF/PNGdefault is treated asDESIGNand reported inwarningsrather than failing the call — andMP4can’t be saved withpostnitro_set_defaults, since it would break carousel and image calls.

videoSettingsisrequiredwhenresponseTypeisMP4(a render needs a length) and optional forDESIGN. Sent for any other post type, it’s rejected.

videoDurationandaudioIdare theonlyaccepted keys, and the server rejects anything else outright rather than dropping it — so a misnamed field (audioinstead ofaudioId, say) comes back as anunrecognized_keyserror naming the offending key, instead of silently rendering a video without its soundtrack. The same strictness applies topostSettingsandgenerateImages.

audioIdcomes frompostnitro_list_audio. It’s verified when the call is made: the media must exist, belong to your workspace, and be an audio file — a URL, an image ID, or an ID from another workspace is rejected. Omit it for a silent video.

Rendering a video takes longer than a carousel — typically15–45 secondsfor the_and_waittools withMP4, and longer for designs with animations or GIFs (which use the enhanced renderer). SeeVideo postsfor the REST-level reference.

Every creation tool —postnitro_generate_carousel,postnitro_import_carousel,postnitro_generate_image,postnitro_import_image,postnitro_generate_video,postnitro_import_video(and their_and_waitvariants) — accepts an optionalgenerateImagesobject. When present, the server generates AI images and bakes them into the design before rendering. See theREST referencefor the full behavior (best-effort, credits, plan limits).

The one difference between MCP/CLI and the direct REST API:generateImages.contextiscompulsoryover MCP and the CLI, because the AI agent composes it for the user. On direct REST API calls the same field is optional (it falls back toaiGeneration.contexton generate, or an empty string on import). Everything else aboutgenerateImagesis identical across both.

Omit thegenerateImagesobject entirely to skip AI image generation (default). Image generation is best-effort and adds latency — the post still completes without images if it fails or isn’t permitted (e.g. free plan or over the org’s AI-image quota), recorded as aGENERATE_IMAGESstep inpostnitro_check_status.
- Discover— callpostnitro_list_templates,postnitro_list_brands, andpostnitro_list_ai_presetsto find valid IDs (orpostnitro_set_defaultsonce to skip this in future sessions)
- Create— for a carousel callpostnitro_generate_and_wait(AI) orpostnitro_import_and_wait(your own content); for a single image,postnitro_generate_image_and_wait/postnitro_import_image_and_wait; for a video,postnitro_generate_video_and_wait/postnitro_import_video_and_wait(addvideoSettings, andpostnitro_list_audiofirst if the user wants a soundtrack). These handle polling for you
- Use the output— the tools return PNG URLs (one per slide), a single PDF URL, or a single MP4 URL, plus adesignId, ready to download, publish, or schedule
- Schedule (optional)— callpostnitro_create_scheduled_postwith thedesignId, or skip straight there withpostnitro_generate_and_schedule

For long-running generations or custom polling, use the non-waiting tool (postnitro_generate_carousel/postnitro_import_carousel/postnitro_generate_image/postnitro_import_image/postnitro_generate_video/postnitro_import_video) followed bypostnitro_check_statusandpostnitro_get_output.

- Successful tool results are JSON. Create/update tools return the affected object plus a top-levelscheduledPostId(for schedule tools) so it lines up with thescheduledPostIdother tools expect as input.
- Tools may include awarningsarray — non-fatal advisories, e.g. a media post with no design attached, or a LinkedIndocumentpost missing a validpostTitle.
- Errors from the API are surfaced verbatim asPostNitro API Error (<status>): <message>. See the
Schedule API error referencefor scheduling-specific messages.
- Unknown keys insidevideoSettings,postSettings, andgenerateImagesare rejected before the request is sent (unrecognized_keys, naming the field) rather than being silently ignored — so a misspelled option surfaces as an error you can correct, not as a post that quietly used defaults.

The MCP server consumes the same credits as theEmbed API:

- Content import: 1 credit per slide
- AI generation: 2 credits per slide
- Free plan: 5 credits per month (no card required) — paid plans start at $10/month for 250 credits

- Email:support@postnitro.ai
- Live Chat: Available on
postnitro.ai
- More details:
postnitro.ai/mcp

Free MCP that drives an audit of your marketing. Your AI connects, adsOS digs through your ads, email and site, and hands back a growth plan you can run today.

MCP server that distributes a single piece of content across 8+ channels (DEV.to, Hashnode, GitHub Discussions, Reddit, Bluesky, LinkedIn, Medium, Twitter) with automatic platform-specific adaptation, idempotent publishing, per-community anti-spam rules, and centralized state management.

Publish, schedule, moderate your social inbox, and pull analytics across every major network directly from any AI assistant, via Eclincher.

A hosted MCP server for planning, scheduling, media, analytics, and social publishing.

Remote MCP server to publish, schedule, and measure posts across X, Instagram, Facebook, Threads, LinkedIn, TikTok, YouTube, Pinterest, and Reddit.

Agent-first, local-first social media planner. An AI agent drafts and schedules posts across Instagram, Facebook, LinkedIn, YouTube and X behind a human approval gate the operator controls. MCP-native, MIT-licensed.

Schedule and publish posts to Instagram, TikTok, X, LinkedIn, Facebook, Telegram, Threads, Bluesky and YouTube — previewing each one exactly as the network will render it.

Draft, validate, publish, and schedule social posts from AI assistants.

sprkly.app enables users to publish their shortform content to tiktok, facebook, instagram, youtube, threads via natural language.

Create, schedule, and publish LinkedIn posts directly from Claude Desktop or ChatGPT through natural conversations

An AI-native publishing engine for persona-driven content creation and multi-platform publishing.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.