Skip to content

MCP

Connect AI assistants to the Zernio API using the Model Context Protocol

Connect AI assistants to the full Zernio API using the Model Context Protocol (MCP). Schedule posts, manage ads, automate DMs, run sequences, and more across 14 platforms, all through natural language.

The Zernio MCP server exposes 280+ tools auto-generated from the Zernio OpenAPI spec, covering every API endpoint. It works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.

What You Can Do

Ask your AI assistant things like:

  • "Post 'Hello world!' to Twitter"
  • "Schedule a LinkedIn post for tomorrow at 9am"
  • "Show my connected accounts"
  • "Cross-post this to Twitter and LinkedIn"
  • "Post this image to Instagram" (with browser upload flow)
  • "List my ad campaigns"
  • "Send a WhatsApp broadcast to my contacts"
  • "Show my inbox conversations"
  • "Create a comment automation for my latest post"

Setup

Choose your preferred setup method:

The hosted MCP server at mcp.zernio.com requires no local installation. Just configure your client to connect over HTTP.

Get Your API Key

Go to zernio.com/dashboard/api-keys and create an API key.

Configure Your Client

Claude Desktop

Open Claude Desktop settings and go to Developer > Edit Config, then edit claude_desktop_config.json:

~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
json
{
  "mcpServers": {
    "zernio": {
      "url": "https://mcp.zernio.com/mcp",
      "headers": {
        "Authorization": "Bearer your_api_key_here"
      }
    }
  }
}

Cursor

Add to your project's .cursor/mcp.json:

json
{
  "zernio": {
    "type": "http",
    "url": "https://mcp.zernio.com/mcp",
    "headers": {
      "Authorization": "Bearer your_api_key_here"
    }
  }
}

Restart Your Client

Close and reopen your AI client. The Zernio integration will be available immediately.

Run the MCP server locally using uvx (no install needed).

Install uv

bash
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Get Your API Key

Go to zernio.com/dashboard/api-keys and create an API key.

Configure Claude Desktop

Open Claude Desktop settings and go to Developer > Edit Config:

!Claude Desktop Developer Settings

Edit claude_desktop_config.json:

json
{
  "mcpServers": {
    "zernio": {
      "command": "uvx",
      "args": ["--from", "zernio-sdk[mcp]", "zernio-mcp"],
      "env": {
        "ZERNIO_API_KEY": "your_api_key_here"
      }
    }
  }
}

Restart Claude Desktop

Close and reopen Claude Desktop. The Zernio integration will be available immediately.

Install the MCP server via pip.

bash
pip install zernio-sdk[mcp]

Configure Claude Desktop:

json
{
  "mcpServers": {
    "zernio": {
      "command": "python",
      "args": ["-m", "zernio.mcp"],
      "env": {
        "ZERNIO_API_KEY": "your_api_key_here"
      }
    }
  }
}

Replace your_api_key_here with your actual API key.

Available Tools

The MCP server exposes 280+ tools covering the entire Zernio API. Here are the main categories:

Core Tools

These hand-crafted tools provide the best experience for common tasks:

ToolDescription
accounts_listShow all connected social media accounts
accounts_getGet account details for a specific platform
profiles_list / get / create / update / deleteManage profiles
posts_list / get / create / update / deleteManage posts
posts_publish_nowPublish a post immediately
posts_cross_postPost to multiple platforms at once
posts_retry / posts_list_failed / posts_retry_all_failedHandle failed posts
media_generate_upload_linkGet a link to upload media files
media_check_upload_statusCheck if media upload is complete
docs_searchSearch the Zernio API documentation

Auto-Generated Tools

These tools are auto-generated from the OpenAPI spec and cover every endpoint:

CategoryExamples
Adslist_ad_campaigns, create_standalone_ad, boost_post, get_ad_analytics, search_ad_interests
WhatsAppcreate_whats_app_broadcast, send_whats_app_bulk, get_whats_app_contacts, create_whats_app_template
Inboxlist_inbox_conversations, send_inbox_message, reply_to_inbox_post, list_inbox_reviews
Contactslist_contacts, create_contact, bulk_create_contacts, set_contact_field_value
Sequencescreate_sequence, enroll_contacts, activate_sequence, pause_sequence
Comment Automationscreate_comment_automation, list_comment_automation_logs
Broadcastscreate_broadcast, schedule_broadcast, send_broadcast
Analyticsget_analytics, get_best_time_to_post, get_instagram_demographics, get_you_tube_daily_views
Connectget_connect_url, handle_o_auth_callback, connect_bluesky_credentials
Webhookscreate_webhook_settings, get_webhook_logs, test_webhook

The auto-generated tools update automatically when new API endpoints are added. You always have access to the latest Zernio API features.

Tool Reference

Detailed parameters for the core tools.

Posts

Multi-account users (agencies, multi-client setups): when you have more than one account on the same platform, you must pass account_id (or profile_id) to disambiguate. The write tools below return an error with the candidate account IDs if the selection is ambiguous, instead of silently picking one. Call accounts_list first to discover IDs. Available in zernio-sdk 1.4.0+.

posts_create

Create a social media post. Can be saved as DRAFT, SCHEDULED, or PUBLISHED immediately.

Choose the correct mode based on user intent:

  • DRAFT MODE (is_draft=true): Use when user says "draft", "save for later", "don't publish". Post is saved but NOT published.
  • IMMEDIATE MODE (publish_now=true): Use when user says "publish now", "post now", "immediately". Post goes live right away.
  • SCHEDULED MODE (default): Use when user says "schedule", "in X minutes/hours". Post is scheduled for future publication.
ParameterTypeDescriptionRequiredDefault
contentstringThe post text/contentYes-
platformstringTarget platform: twitter, instagram, linkedin, tiktok, bluesky, facebook, youtube, pinterest, threads, googlebusiness, telegram, snapchatYes-
account_idstringSpecific account to post from. Required when the user has multiple accounts on this platform. Call accounts_list to find IDs.No""
profile_idstringScope account auto-resolution to one profile (e.g. one client in an agency setup). Use when account_id is unknown but the target profile is.No""
is_draftbooleanSet to true to save as DRAFT (not published, not scheduled)Nofalse
publish_nowbooleanSet to true to publish IMMEDIATELYNofalse
schedule_minutesintegerMinutes from now to schedule. Only used when is_draft=false AND publish_now=falseNo60
media_urlsstringComma-separated URLs of media files to attach (images, videos)No""
titlestringPost title (required for YouTube, recommended for Pinterest)No""

posts_publish_now

Publish a post immediately to a platform. Convenience wrapper around posts_create with publish_now=true.

ParameterTypeDescriptionRequiredDefault
contentstringThe post text/contentYes-
platformstringTarget platformYes-
account_idstringSpecific account ID. Required when the user has multiple accounts on this platform.No""
profile_idstringScope auto-resolution to a single profile when account_id is unknown.No""
media_urlsstringComma-separated URLs of media files to attachNo""

posts_cross_post

Post the same content to multiple platforms at once. To target multiple accounts of the same platform in one call, repeat the platform: platforms="twitter,twitter", account_ids="acc_a,acc_b".

ParameterTypeDescriptionRequiredDefault
contentstringThe post text/contentYes-
platformsstringComma-separated list of platforms (e.g., 'twitter,linkedin,bluesky'). Repeat a platform to target multiple accounts of it.Yes-
account_idsstringComma-separated account IDs, parallel to platforms. Empty positions fall back to profile/auto-resolution. Required for multi-account users to disambiguate.No""
profile_idstringScope auto-resolution to one profile when account_ids is empty.No""
is_draftbooleanSet to true to save as DRAFT (not published)Nofalse
publish_nowbooleanSet to true to publish IMMEDIATELY to all platformsNofalse
media_urlsstringComma-separated URLs of media files to attachNo""

posts_create_post

Autogenerated tool that mirrors the full createPost REST surface. Use this instead of posts_create when you need per-target customisation that the simplified tool doesn't expose: customContent (different caption per platform), customMedia (different attachments per target), per-target scheduledFor, or platformSpecificData (TikTok privacy, YouTube category, etc.). The platforms argument is a JSON-encoded array of objects with platform, accountId, and any per-target overrides. Available in zernio-sdk 1.4.0+.

posts_list

ParameterTypeDescriptionRequiredDefault
statusstringFilter by status: draft, scheduled, published, failedNo""
limitintegerMaximum number of posts to returnNo10

posts_get / posts_delete / posts_retry

ParameterTypeDescriptionRequired
post_idstringThe post IDYes

posts_update

ParameterTypeDescriptionRequiredDefault
post_idstringThe post ID to updateYes-
contentstringNew contentNo""
scheduled_forstringNew schedule time (ISO string)No""
titlestringNew titleNo""

Media

Generate a unique upload URL for the user to upload files via browser. The flow is:

  1. Call this tool to get an upload URL
  2. Ask the user to open the URL in their browser
  3. User uploads files through the web interface
  4. Call media_check_upload_status to get the uploaded file URLs
  5. Use those URLs when creating the post with posts_create

media_check_upload_status

ParameterTypeDescriptionRequired
tokenstringThe upload token from media_generate_upload_linkYes

Uploading Images & Videos

Since AI clients can't access files on your computer directly, we use a browser upload flow:

Say something like: "I want to post an image to Instagram"

The assistant will give you a unique upload URL.

Upload Your File

Open the URL in your browser. You'll see a simple upload page where you can drag & drop your image or video.

Confirm Upload

Just say "done" or "uploaded". The assistant will check the status and create your post with the media attached.

Supported file types:

  • Images: JPG, PNG, WebP, GIF
  • Videos: MP4, MOV, WebM
  • Documents: PDF

Maximum file size: 5GB

Example Conversations

Simple Post

> You: Post "Just launched our new feature!" to Twitter > > Assistant: Published to Twitter (@yourhandle) > Post ID: post_abc123

Scheduled Post

> You: Schedule a LinkedIn post for tomorrow at 9am: "Excited to announce our Series A funding!" > > Assistant: Scheduled for LinkedIn (@yourcompany) > Post ID: post_xyz789 > Scheduled: 2025-03-15 09:00

Cross-Posting

> You: Post "Big news coming soon..." to Twitter and LinkedIn > > Assistant: Published to: twitter, linkedin > Post ID: post_multi456

With Image

> You: I want to post a product photo to Instagram > > Assistant: Upload link generated! Open this link in your browser to upload: > > You: done > > Assistant: Upload completed! 1 file uploaded. Creating the post... > Published to Instagram with 1 media file

Troubleshooting

"Command not found: uvx" (local setup only)

Make sure uv is installed and in your PATH:

bash
# Check if installed
uvx --version

# If not, install it
curl -LsSf https://astral.sh/uv/install.sh | sh

You may need to restart your terminal or add uv to your PATH.

"Invalid API key"

  1. Check your API key at zernio.com/dashboard/api-keys
  2. Make sure you copied it correctly (no extra spaces)
  3. Verify the key is active

"No accounts connected"

You need to connect social media accounts at zernio.com before you can post.

Changes not taking effect

After editing your client's MCP configuration, you must restart the client completely.

  • Zernio Dashboard
  • Get API Key
  • Python SDK
  • SDKs
  • MCP Protocol