# Zernio MCP

```json
{
  "name": "Zernio MCP",
  "slug": "zernio_mcp",
  "url": "https://composio.dev/toolkits/zernio_mcp",
  "markdown_url": "https://composio.dev/toolkits/zernio_mcp.md",
  "logo_url": "https://logos.composio.dev/api/zernio_mcp",
  "categories": [
    "marketing & social media"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-10-12T14:11:41.610Z"
}
```

![Zernio MCP logo](https://logos.composio.dev/api/zernio_mcp)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Zernio MCP or direct API to schedule social posts, pull cross-platform analytics, manage inbox conversations, and run ads through natural language.

## Summary

Zernio is a social media management API for scheduling, analytics, inbox management, and ads across 14+ platforms.
It gives teams one API for Facebook, Instagram, LinkedIn, TikTok, X, YouTube, Reddit, WhatsApp Business, Telegram, and more.

## Categories

- marketing & social media

## Toolkit Details

- Tools: 52

## Images

- Logo: https://logos.composio.dev/api/zernio_mcp

## Authentication

- **Dcr Oauth**
  - Type: `custom`
  - Description: Dcr Oauth authentication for Zernio MCP.
  - Setup:
    - Configure Dcr Oauth credentials for Zernio MCP.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Schedule Instagram post for Friday launch
- Pull TikTok analytics from last week
- Reply to Facebook inbox conversations

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `ZERNIO_MCP_ACCOUNT_GROUPS_LIST_ACCOUNT_GROUPS` | Account groups list account groups | List groups |
| `ZERNIO_MCP_ACCOUNTS_GET` | Accounts get | Get account details for a specific platform. Returns username and ID for the first account matching the platform. |
| `ZERNIO_MCP_ACCOUNTS_GET_ACCOUNT_HEALTH` | Accounts get account health | Check account health |
| `ZERNIO_MCP_ACCOUNTS_GET_ALL_ACCOUNTS_HEALTH` | Accounts get all accounts health | Check accounts health |
| `ZERNIO_MCP_ACCOUNTS_GET_FOLLOWER_STATS` | Accounts get follower stats | Get follower stats |
| `ZERNIO_MCP_ACCOUNTS_LIST` | Accounts list | List all connected social media accounts. Returns the platform, username, and account ID for each connected account. Use this to find account IDs needed for creating posts. |
| `ZERNIO_MCP_ACCOUNTS_MOVE_ACCOUNT_TO_PROFILE` | Accounts move account to profile | Move account to another profile |
| `ZERNIO_MCP_ANALYTICS_GET_ANALYTICS` | Analytics get analytics | Get post analytics |
| `ZERNIO_MCP_ANALYTICS_GET_BEST_TIME_TO_POST` | Analytics get best time to post | Get best times to post |
| `ZERNIO_MCP_ANALYTICS_GET_DAILY_METRICS` | Analytics get daily metrics | Get daily aggregated metrics Args: platform: Filter by platform (e.g. "instagram", "tiktok"). Omit for all platforms. profile_id: Filter by profile ID. Omit for all profiles. account_id: Filter by account ID from_date: Inclusive start date (ISO 8601). Defaults to 180 days ago. to_date: Inclusive end date (ISO 8601). Defaults to now. source: Filter by post origin. "late" for posts published via Zernio, "external" for posts imported from platforms. attribution: How each post's engagement is attributed to a day. "publish" (default) sums each post's lifetime total on its publish date. "received" buckets the per-day increase in engagement by the day it actually arrived (engagement-over-time), so engagement on older posts appears on the day it was gained rather than the post's publish date. |
| `ZERNIO_MCP_ANALYTICS_GET_POST_TIMELINE` | Analytics get post timeline | Get post analytics timeline Args: post_id: The post to fetch timeline for. Accepts an ExternalPost ID, a platformPostId, or a Zernio Post ID. (required) from_date: Start of date range (ISO 8601). Defaults to 90 days ago. to_date: End of date range (ISO 8601). Defaults to now. |
| `ZERNIO_MCP_CALL_TOOL` | Call tool | Call a tool by name with the given arguments. Use this to execute tools discovered via search_tools. |
| `ZERNIO_MCP_COMMENTS_GET_INBOX_POST_COMMENTS` | Comments get inbox post comments | Get post comments |
| `ZERNIO_MCP_COMMENTS_LIST_INBOX_COMMENTS` | Comments list inbox comments | List commented posts |
| `ZERNIO_MCP_COMMENTS_REPLY_TO_INBOX_POST` | Comments reply to inbox post | Reply to comment |
| `ZERNIO_MCP_DOCS_SEARCH` | Docs search | Search across the Late API documentation to find relevant information, code examples, API references, and guides. Use this tool when you need to answer questions about Late, find specific documentation, understand how features work, or locate implementation details. The search returns contextual content with section titles and relevant snippets. |
| `ZERNIO_MCP_MEDIA_CHECK_UPLOAD_STATUS` | Media check upload status | Check the status of an upload token and get uploaded file URLs. Use this after the user has uploaded files through the browser upload page. Returns: pending (waiting for upload), completed (files ready), or expired (token expired). |
| `ZERNIO_MCP_MEDIA_GENERATE_UPLOAD_LINK` | Media generate upload link | Generate a unique upload URL for the user to upload files via browser. Use this when the user wants to include images or videos in their post. 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 |
| `ZERNIO_MCP_MENTIONS_LIST_INBOX_MENTIONS` | Mentions list inbox mentions | List mentions |
| `ZERNIO_MCP_MENTIONS_REPLY_TO_MENTION` | Mentions reply to mention | Reply to a mention |
| `ZERNIO_MCP_POSTS_BULK_UPLOAD_POSTS` | Posts bulk upload posts | Bulk upload from CSV Args: dry_run |
| `ZERNIO_MCP_POSTS_CREATE` | Posts create | Create a social media post. Can be saved as DRAFT, SCHEDULED, or PUBLISHED immediately. ⚠️ IMPORTANT - Choose the correct mode based on user intent: **DRAFT MODE (is_draft=True)** Use when user says: "draft", "borrador", "save for later", "don't publish", "save it", "guardar" → Post is saved but NOT published and NOT scheduled. User can edit it later. **IMMEDIATE MODE (publish_now=True)** Use when user says: "publish now", "post now", "publica ya", "immediately", "right now", "ahora" → Post goes live IMMEDIATELY. **SCHEDULED MODE (default)** Use when user says: "schedule", "programar", "in X minutes/hours", "at 3pm", "tomorrow" → Post is scheduled for future publication. Use schedule_minutes to set the delay. ⚠️ MULTI-ACCOUNT USERS (agencies, multi-client setups): If the user has more than one account on the target platform, you MUST pass `account_id`. Call `accounts_list` (or `profiles_list` then `accounts_list`) first to discover the right ID. If you omit account_id when multiple accounts exist, the tool returns an error listing the candidates - use it to retry. Examples: - "Create a draft tweet" → is_draft=True - "Post this to Twitter now" → publish_now=True - "Schedule a LinkedIn post for 2 hours from now" → schedule_minutes=120 - "Post this to Acme's Twitter" → call accounts_list, find Acme's twitter ID, pass account_id |
| `ZERNIO_MCP_POSTS_CROSS_POST` | Posts cross post | Post the same content to multiple platforms at once. ⚠️ IMPORTANT - Choose the correct mode based on user intent: **DRAFT MODE (is_draft=True)** Use when user says: "draft", "borrador", "save for later", "don't publish" → Posts are saved but NOT published. User can edit them later. **IMMEDIATE MODE (publish_now=True)** Use when user says: "publish now", "post now", "immediately" → Posts go live IMMEDIATELY on all platforms. **SCHEDULED MODE (default)** Use when user says: "schedule", "programar", "in X hours" → Posts are scheduled for 1 hour from now. ⚠️ MULTI-ACCOUNT USERS: - To pick a specific account per platform, pass `account_ids` parallel to `platforms` (same order, comma-separated). Use empty string for a position to fall back to profile/auto-resolution. - To target multiple accounts of the SAME platform in one call, repeat the platform: platforms='twitter,twitter', account_ids='acc_a,acc_b'. - If you omit account_ids and the user has multiple accounts for any of the requested platforms, the tool errors with the candidate list - use it to retry. |
| `ZERNIO_MCP_POSTS_DELETE` | Posts delete | Delete a post by ID. Published posts cannot be deleted. |
| `ZERNIO_MCP_POSTS_EDIT_POST` | Posts edit post | Edit published post |
| `ZERNIO_MCP_POSTS_GET` | Posts get | Get full details of a specific post including content, status, and scheduling info. |
| `ZERNIO_MCP_POSTS_LIST` | Posts list | List posts with optional filtering by status. Status options: draft, scheduled, published, failed |
| `ZERNIO_MCP_POSTS_LIST_FAILED` | Posts list failed | List all failed posts that can be retried. |
| `ZERNIO_MCP_POSTS_PUBLISH_NOW` | Posts publish now | Publish a post immediately to a platform. The post goes live right away. Use this when user explicitly wants to publish NOW, not schedule for later. This is a convenience wrapper around posts_create with publish_now=True. ⚠️ MULTI-ACCOUNT USERS: pass `account_id` when the user has more than one account on this platform. Call `accounts_list` first to find the right ID. |
| `ZERNIO_MCP_POSTS_RETRY` | Posts retry | Retry publishing a failed post. Only works on posts with 'failed' status. |
| `ZERNIO_MCP_POSTS_RETRY_ALL_FAILED` | Posts retry all failed | Retry all failed posts at once. |
| `ZERNIO_MCP_POSTS_UNPUBLISH_POST` | Posts unpublish post | Unpublish post |
| `ZERNIO_MCP_POSTS_UPDATE` | Posts update | Update an existing post. Only draft, scheduled, and failed posts can be updated. Published posts cannot be modified. |
| `ZERNIO_MCP_PROFILES_CREATE` | Profiles create | Create a new profile for grouping social accounts. |
| `ZERNIO_MCP_PROFILES_DELETE` | Profiles delete | Delete a profile. The profile must have no connected accounts. |
| `ZERNIO_MCP_PROFILES_GET` | Profiles get | Get details of a specific profile including name, description, and color. |
| `ZERNIO_MCP_PROFILES_LIST` | Profiles list | List all profiles. Profiles group multiple social accounts together for easier management. |
| `ZERNIO_MCP_PROFILES_UPDATE` | Profiles update | Update an existing profile. Only provided fields will be changed. |
| `ZERNIO_MCP_QUEUE_CREATE_QUEUE_SLOT` | Queue create queue slot | Create schedule |
| `ZERNIO_MCP_QUEUE_DELETE_QUEUE_SLOT` | Queue delete queue slot | Delete schedule |
| `ZERNIO_MCP_QUEUE_GET_NEXT_QUEUE_SLOT` | Queue get next queue slot | Get next available slot |
| `ZERNIO_MCP_QUEUE_LIST_QUEUE_SLOTS` | Queue list queue slots | List schedules |
| `ZERNIO_MCP_QUEUE_PREVIEW_QUEUE` | Queue preview queue | Preview upcoming slots |
| `ZERNIO_MCP_QUEUE_UPDATE_QUEUE_SLOT` | Queue update queue slot | Update schedule |
| `ZERNIO_MCP_SEARCH_TOOLS` | Search tools | Search for tools using natural language. Returns matching tool definitions ranked by relevance, in the same format as list_tools. |
| `ZERNIO_MCP_TRACKING_TAGS_GET_TRACKING_TAG_STATS` | Tracking tags get tracking tag stats | Get aggregated event stats |
| `ZERNIO_MCP_TRACKING_TAGS_LIST_TRACKING_TAGS` | Tracking tags list tracking tags | List tracking tags |
| `ZERNIO_MCP_USAGE_GET_USAGE` | Usage get usage | Usage snapshot (default) or billed-spend metering (with params) Args: reconcile: Snapshot mode only. For Stripe subscription users, `true` forces a subscription reconciliation pass even when cached plan data looks complete. range: Window to report. `cycle` / `prev-cycle` resolve to the customer's real billing-period bounds (falling back to a trailing 30 days when no invoice exists yet); `7d`…`12mo` are trailing windows; `custom` uses `from` / `to`. from_: Inclusive start (UTC date). Required when `range=custom`. to: Inclusive end (UTC date). Required when `range=custom`. Max span 366 days. granularity: Bucketing of the `days` series: `day` (one row per UTC day), `month` (one row per calendar month, dated to the 1st), or `total` (no series, read `totals`). Does not affect `totals`. group_by: Metering mode. Adds `attribution`: the window's spend split per profile or per account (keys are ids; resolve names via `GET /v1/profiles` / `GET /v1/accounts`). profile_id: Metering mode (pair with `range`). Project the payload onto this profile's attributed share. Mutually exclusive with `accountId`, and `groupBy` (if given) must be `profile`; 404 when the profile is not in your team (or outside a scoped key's profiles). account_id: Metering mode (pair with `range`). Project the payload onto this account's attributed share. Mutually exclusive with `profileId`, and `groupBy` (if given) must be `account`; 404 when the account is not visible to the caller. |
| `ZERNIO_MCP_VALIDATE_MEDIA` | Validate media | Validate media URL |
| `ZERNIO_MCP_VALIDATE_POST` | Validate post | Validate post content |
| `ZERNIO_MCP_VALIDATE_POST_LENGTH` | Validate post length | Validate character count |
| `ZERNIO_MCP_ZERNIO_OVERVIEW` | Zernio overview | Show an overview of what this Zernio MCP server can do (accounts, posts, analytics, ads, inbox) and how to find the right tool. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
```python
pip install composio composio_openai openai
```

```typescript
npm install @composio/core @composio/openai openai
```

#### Path 1, Step 2: Create a Composio session

Initialize Composio with the OpenAI Responses provider and create a session scoped to Zernio MCP
```python
import json
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
client = OpenAI()

session = composio.create(user_id="your-user-id", toolkits=["zernio_mcp"])
tools = session.tools()
```

```typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["zernio_mcp"] });
const tools = await session.tools();
```

#### Path 1, Step 3: Run Zernio MCP tools with your agent

Send a request, execute the Zernio MCP tool calls through the session, and print the final answer
```python
response = client.responses.create(
    model="gpt-5.6-sol",
    tools=tools,
    input=[{"role": "user", "content": "Schedule a LinkedIn post for tomorrow at 9 AM announcing our product launch"}],
)

while True:
    tool_calls = [o for o in response.output if o.type == "function_call"]
    if not tool_calls:
        break
    results = composio.provider.handle_tool_calls(response=response, session=session)
    response = client.responses.create(
        model="gpt-5.6-sol",
        tools=tools,
        previous_response_id=response.id,
        input=[
            {"type": "function_call_output", "call_id": call.call_id, "output": json.dumps(results[i])}
            for i, call in enumerate(tool_calls)
        ],
    )

print(response.output_text)
```

```typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "Schedule a LinkedIn post for tomorrow at 9 AM announcing our product launch" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and your agent framework
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
```

#### Path 2, Step 2: Create a session with MCP enabled

Create a session scoped to Zernio MCP and read its MCP URL and headers
```python
from composio import Composio

composio = Composio()
session = composio.create(user_id="your-user-id", toolkits=["zernio_mcp"], mcp=True)
```

```typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["zernio_mcp"],
  mcp: true,
});
```

#### Path 2, Step 3: Connect your agent to the MCP server

Pass the session's MCP URL and headers to your agent and run a Zernio MCP request
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock

options = ClaudeAgentOptions(
    mcp_servers={
        "composio": {
            "type": "http",
            "url": session.mcp.url,
            "headers": session.mcp.headers,
        }
    },
    system_prompt="You are a helpful assistant with access to Zernio MCP tools.",
    tools=[],
    allowed_tools=["mcp__composio__*"],
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query("Schedule a LinkedIn post for tomorrow at 9 AM announcing our product launch")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "Schedule a LinkedIn post for tomorrow at 9 AM announcing our product launch",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
```

## Why Use Composio?

### 1. AI Native Zernio MCP Integration

- Supports both Zernio MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable social media tool execution
- Rich coverage for scheduling posts, reading analytics, managing inboxes, and handling ad workflows across Zernio

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke Zernio MCP access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know which post, inbox action, analytics pull, or ad task ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Zernio MCP
- Scoped, least privilege access to Zernio social accounts, analytics, inboxes, and ad resources
- Full audit trail of agent actions to support review and compliance

## Use Zernio MCP with any AI Agent Framework

Choose a framework you want to connect Zernio MCP with:

None listed.

## Related Toolkits

- [Reddit](https://composio.dev/toolkits/reddit) - Reddit is a social news platform with thriving user-driven communities (subreddits). It's the go-to place for discussion, content sharing, and viral marketing.
- [Facebook](https://composio.dev/toolkits/facebook) - Facebook is a social media and advertising platform for businesses and creators. It helps you connect, share, and manage content across your public Facebook Pages.
- [Linkedin](https://composio.dev/toolkits/linkedin) - LinkedIn is a professional networking platform for connecting, sharing content, and engaging with business opportunities. It's the go-to place for building your professional brand and unlocking new career connections.
- [Active campaign](https://composio.dev/toolkits/active_campaign) - ActiveCampaign is a marketing automation and CRM platform for managing email campaigns, sales pipelines, and customer segmentation. It helps businesses engage customers and drive growth through smart automation and targeted outreach.
- [ActiveTrail](https://composio.dev/toolkits/active_trail) - ActiveTrail is a user-friendly email marketing and automation platform. It helps you reach subscribers and automate campaigns with ease.
- [Adobe Marketing Agent MCP](https://composio.dev/toolkits/adobe_marketing_agent_mcp) - Adobe Marketing Agent MCP is Adobe's hosted MCP service that exposes marketing context, preferences, and agent capabilities. Use it to provide agents with campaign, audience, and analytics context via a managed integration.
- [Ahrefs](https://composio.dev/toolkits/ahrefs) - Ahrefs is an SEO and marketing platform for site audits, keyword research, and competitor insights. It helps you improve search rankings and drive organic traffic.
- [AimTell](https://composio.dev/toolkits/aimtell) - AimTell is a web push notification platform for managing websites, subscribers, campaigns, segments, and delivery analytics. Use it to send targeted browser notifications and measure engagement across your web push campaigns.
- [Amcards](https://composio.dev/toolkits/amcards) - AMCards lets you create and mail personalized greeting cards online. Build stronger customer relationships with easy, automated card campaigns.
- [AWeber](https://composio.dev/toolkits/aweber) - AWeber is an email marketing platform for creating campaigns, lists, and landing pages. It helps businesses automate email outreach and measure subscriber engagement.
- [Beamer](https://composio.dev/toolkits/beamer) - Beamer is a news and changelog platform for in-app announcements and feature updates. It helps companies boost user engagement by sharing news where users are most active.
- [Beehiiv](https://composio.dev/toolkits/beehiiv) - Beehiiv is a newsletter platform for creating and managing publications and subscribers. It helps grow audience engagement and monetize your mailing list.
- [Benchmark email](https://composio.dev/toolkits/benchmark_email) - Benchmark Email is a platform for creating, sending, and tracking email campaigns. It's built to help you engage audiences and analyze results—all in one place.
- [Bigmailer](https://composio.dev/toolkits/bigmailer) - BigMailer is an email marketing platform for managing multiple brands with white-labeling and automation. It helps teams streamline campaigns and simplify integration with Amazon SES.
- [Bitly](https://composio.dev/toolkits/bitly) - Bitly is a link management platform for shortening, customizing, sharing, and tracking links and QR codes. It helps teams create branded links and measure engagement across campaigns.
- [BlueFox Email](https://composio.dev/toolkits/bluefox_email) - BlueFox Email is an email API for managing contacts, subscriber lists, and sending transactional and triggered messages. Use it to reliably send transactional and triggered emails and manage subscribers at scale.
- [Brandfetch](https://composio.dev/toolkits/brandfetch) - Brandfetch is an API that delivers company logos, colors, and visual branding assets. It helps marketers and developers keep brand visuals consistent everywhere.
- [Braze](https://composio.dev/toolkits/braze) - Braze is a customer engagement platform for managing user data, messaging, campaigns, and analytics. Use it to deliver targeted, multi-channel messaging and analyze campaign performance.
- [Brevo](https://composio.dev/toolkits/brevo) - Brevo is an all-in-one email and SMS marketing platform for transactional messaging, automation, and CRM. It helps businesses engage customers and streamline communications through powerful campaign tools.
- [Buffer](https://composio.dev/toolkits/buffer) - Buffer is a social media management platform for planning, creating, scheduling, and publishing posts across connected channels. It helps teams keep content organized and publish consistently without jumping between social apps.

## Frequently Asked Questions

### Do I need my own developer credentials to use Zernio MCP with Composio?

Yes, Zernio MCP requires you to configure your own DCR OAuth credentials. Once set up, Composio handles secure credential storage and management for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
