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{
"mcpServers": {
"zernio": {
"url": "https://mcp.zernio.com/mcp",
"headers": {
"Authorization": "Bearer your_api_key_here"
}
}
}
}Cursor
Add to your project's .cursor/mcp.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
curl -LsSf https://astral.sh/uv/install.sh | shpowershell -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:

Edit claude_desktop_config.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.
pip install zernio-sdk[mcp]Configure Claude Desktop:
{
"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:
| Tool | Description |
|---|---|
accounts_list | Show all connected social media accounts |
accounts_get | Get account details for a specific platform |
profiles_list / get / create / update / delete | Manage profiles |
posts_list / get / create / update / delete | Manage posts |
posts_publish_now | Publish a post immediately |
posts_cross_post | Post to multiple platforms at once |
posts_retry / posts_list_failed / posts_retry_all_failed | Handle failed posts |
media_generate_upload_link | Get a link to upload media files |
media_check_upload_status | Check if media upload is complete |
docs_search | Search the Zernio API documentation |
Auto-Generated Tools
These tools are auto-generated from the OpenAPI spec and cover every endpoint:
| Category | Examples |
|---|---|
| Ads | list_ad_campaigns, create_standalone_ad, boost_post, get_ad_analytics, search_ad_interests |
create_whats_app_broadcast, send_whats_app_bulk, get_whats_app_contacts, create_whats_app_template | |
| Inbox | list_inbox_conversations, send_inbox_message, reply_to_inbox_post, list_inbox_reviews |
| Contacts | list_contacts, create_contact, bulk_create_contacts, set_contact_field_value |
| Sequences | create_sequence, enroll_contacts, activate_sequence, pause_sequence |
| Comment Automations | create_comment_automation, list_comment_automation_logs |
| Broadcasts | create_broadcast, schedule_broadcast, send_broadcast |
| Analytics | get_analytics, get_best_time_to_post, get_instagram_demographics, get_you_tube_daily_views |
| Connect | get_connect_url, handle_o_auth_callback, connect_bluesky_credentials |
| Webhooks | create_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
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.
| Parameter | Type | Description | Required | Default |
|---|---|---|---|---|
content | string | The post text/content | Yes | - |
platform | string | Target platform: twitter, instagram, linkedin, tiktok, bluesky, facebook, youtube, pinterest, threads, googlebusiness, telegram, snapchat | Yes | - |
is_draft | boolean | Set to true to save as DRAFT (not published, not scheduled) | No | false |
publish_now | boolean | Set to true to publish IMMEDIATELY | No | false |
schedule_minutes | integer | Minutes from now to schedule. Only used when is_draft=false AND publish_now=false | No | 60 |
media_urls | string | Comma-separated URLs of media files to attach (images, videos) | No | "" |
title | string | Post 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.
| Parameter | Type | Description | Required | Default |
|---|---|---|---|---|
content | string | The post text/content | Yes | - |
platform | string | Target platform | Yes | - |
media_urls | string | Comma-separated URLs of media files to attach | No | "" |
posts_cross_post
Post the same content to multiple platforms at once.
| Parameter | Type | Description | Required | Default |
|---|---|---|---|---|
content | string | The post text/content | Yes | - |
platforms | string | Comma-separated list of platforms (e.g., 'twitter,linkedin,bluesky') | Yes | - |
is_draft | boolean | Set to true to save as DRAFT (not published) | No | false |
publish_now | boolean | Set to true to publish IMMEDIATELY to all platforms | No | false |
media_urls | string | Comma-separated URLs of media files to attach | No | "" |
posts_list
| Parameter | Type | Description | Required | Default |
|---|---|---|---|---|
status | string | Filter by status: draft, scheduled, published, failed | No | "" |
limit | integer | Maximum number of posts to return | No | 10 |
posts_get / posts_delete / posts_retry
| Parameter | Type | Description | Required |
|---|---|---|---|
post_id | string | The post ID | Yes |
posts_update
| Parameter | Type | Description | Required | Default |
|---|---|---|---|---|
post_id | string | The post ID to update | Yes | - |
content | string | New content | No | "" |
scheduled_for | string | New schedule time (ISO string) | No | "" |
title | string | New title | No | "" |
Media
media_generate_upload_link
Generate a unique upload URL for the user to upload files via browser. The flow is:
- Call this tool to get an upload URL
- Ask the user to open the URL in their browser
- User uploads files through the web interface
- Call
media_check_upload_statusto get the uploaded file URLs - Use those URLs when creating the post with
posts_create
media_check_upload_status
| Parameter | Type | Description | Required |
|---|---|---|---|
token | string | The upload token from media_generate_upload_link | Yes |
Uploading Images & Videos
Since AI clients can't access files on your computer directly, we use a browser upload flow:
Ask to Create an Upload Link
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: https://...
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:
# Check if installed
uvx --version
# If not, install it
curl -LsSf https://astral.sh/uv/install.sh | shYou may need to restart your terminal or add uv to your PATH.
"Invalid API key"
- Check your API key at zernio.com/dashboard/api-keys
- Make sure you copied it correctly (no extra spaces)
- 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.