Zernio
REMOTE · MCP.ZERNIO.COM · SCANNED SEP 20
Schedule, publish, and analyze social media across 15+ platforms, plus inbox, ads, and analytics.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability0
- Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http. See how to fix → View diagnostics → Unverified
Schema Quality & AI Usability0
- Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
- Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
- Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified
Unverified: 6 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.
How do I install the Zernio MCP server?
Zernio is a hosted endpoint at https://mcp.zernio.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.zernio.com
claude mcp add --transport http com-zernio-zernio 'https://mcp.zernio.com/mcp'
{
"mcpServers": {
"com-zernio-zernio": {
"url": "https://mcp.zernio.com/mcp"
}
}
} {
"servers": {
"com-zernio-zernio": {
"type": "http",
"url": "https://mcp.zernio.com/mcp"
}
}
} [mcp_servers.com-zernio-zernio] url = "https://mcp.zernio.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-zernio-zernio": {
"type": "remote",
"url": "https://mcp.zernio.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-zernio-zernio --url 'https://mcp.zernio.com/mcp' --transport streamable-http
mcp_servers:
com-zernio-zernio:
url: "https://mcp.zernio.com/mcp" {
"McpServers": {
"com-zernio-zernio": {
"Transport": "http",
"Url": "https://mcp.zernio.com/mcp"
}
}
} assistant mcp add com-zernio-zernio -t streamable-http -u 'https://mcp.zernio.com/mcp'
{
"mcpServers": {
"com-zernio-zernio": {
"type": "http",
"url": "https://mcp.zernio.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 16 Sept 26 −52
- Endpoint reachability: reachable → behind authorisation ▼ security
- Tool safety: pass → unverified ▼ security
- Stability: 0.70 → unverified ▼ security
- Transport: pass → unverified ▼ security
- Authorization: The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. security
- Tool coverage: 98 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- 15 Sept 26 0
- “comments_list_inbox_comments” reworded the description of “platform” cosmetic
1 cosmetic change on this day. Switch on “Show cosmetic changes” to see it.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 0
- “analytics_get_analytics” reworded the description of “sort_by” cosmetic
- “comments_get_inbox_post_comments” reworded the description of “comment_id” cosmetic
2 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 0
- Tool “analytics_get_daily_metrics” rewrote its description, which is the text the model reads security
- Tool “usage_get_usage” rewrote its description, which is the text the model reads security
- “analytics_get_analytics” reworded the description of “account_id” cosmetic
- “analytics_get_best_time_to_post” reworded the description of “account_id” cosmetic
- “comments_list_inbox_comments” reworded the description of “account_id” cosmetic
- “mentions_list_inbox_mentions” reworded the description of “account_id” cosmetic
- “mentions_reply_to_mention” reworded the description of “account_id” cosmetic
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://mcp.zernio.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=zernio.com | CN=YE2,O=Let's Encrypt,C=US | 10 Sept 2026 | 9 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 5ab71dab568a5002a70d846eda43c5ec3b2 |
| SANs: *.zernio.com, zernio.com | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.zernio.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| zernio.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.zernio.com/.well-known/oauth-protected-resource/mcp"
Bearer resource_metadata="https://mcp.zernio.com/.well-known/oauth-protected-resource/mcp" | Header | Value |
|---|---|
| www-authenticate | Bearer resource_metadata="https://mcp.zernio.com/.well-known/oauth-protected-resource/mcp" |
Protected resource metadata
| Document | https://mcp.zernio.com/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.zernio.com/mcp |
| Authorisation server | https://zernio.com/ |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.zernio.com/mcp | Auth required | 401 | |
| http (plaintext) | http://mcp.zernio.com/mcp | HTTPS enforced | 301 | https://mcp.zernio.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
account_groups_list_account_groups List groups ~14
List groups
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
accounts_get Get account details for a specific platform ~59
Get account details for a specific platform. Returns username and ID for the first account matching the platform.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | yes | Platform name: twitter, instagram, linkedin, tiktok, bluesky, facebook, youtube, pinterest, threads (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
accounts_get_account_health Check account health ~29
Check account health
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | The account ID to check (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
accounts_get_all_accounts_health Check accounts health ~42
Check accounts health
| Name | Type | Req | Description |
|---|---|---|---|
| platform | – | – | Filter by platform |
| profile_id | – | – | Filter by profile ID |
| status | – | – | Filter by health status |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
accounts_get_follower_stats Get follower stats ~94
Get follower stats
| Name | Type | Req | Description |
|---|---|---|---|
| account_ids | – | – | Comma-separated list of account IDs (optional, defaults to all user's accounts) |
| from_date | – | – | Start date in YYYY-MM-DD format (defaults to 30 days ago) |
| granularity | string | – | Data aggregation level |
| profile_id | – | – | Filter by profile ID |
| to_date | – | – | End date in YYYY-MM-DD format (defaults to today) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
accounts_list List all connected social media accounts ~40
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
accounts_move_account_to_profile Move account to another profile ~57
Move account to another profile
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | (required) |
| profile_id | string | yes | Target profile ID (must be a valid ObjectId and owned by the same user as the account). (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
analytics_get_analytics Get post analytics ~253
Get post analytics
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | Filter by account ID |
| from_date | – | – | Inclusive lower bound (YYYY-MM-DD). Defaults to 90 days ago if omitted. Max range is 366 days. |
| limit | integer | – | Page size (default 50) |
| order | string | – | Sort order |
| page | integer | – | Page number (default 1) |
| platform | – | – | Filter by platform (default "all") |
| post_id | – | – | Returns analytics for a single post. Accepts both Zernio Post IDs and External Post IDs. Zernio IDs are auto-resolved to External Post analytics. |
| profile_id | – | – | Filter by profile ID (default "all") |
| sort_by | string | – | Sort by date, engagement, or a specific metric. Platform-specific metrics (follows, reposts, reels_skip_rate, ig_reels_*, completion_rate, profile_views) sort a null value as 0. |
| source | string | – | Filter by post source: late (posted via Zernio API), external (synced from platform), all (default) |
| to_date | – | – | Inclusive upper bound (YYYY-MM-DD). Defaults to today if omitted. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
analytics_get_best_time_to_post Get best times to post ~105
Get best times to post
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | Filter by account ID. Omit for all accounts. |
| platform | – | – | Filter by platform (e.g. "instagram", "tiktok"). Omit for all platforms. |
| profile_id | – | – | Filter by profile ID. Omit for all profiles. |
| source | string | – | Filter by post origin. "late" for posts published via Zernio, "external" for posts imported from platforms. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
analytics_get_daily_metrics Get daily aggregated metrics ~246
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| attribution | string | – | – |
| from_date | – | – | – |
| platform | – | – | – |
| profile_id | – | – | – |
| source | string | – | – |
| to_date | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
analytics_get_post_timeline Get post analytics timeline ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| from_date | – | – | – |
| post_id | string | yes | – |
| to_date | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
call_tool Call a tool discovered via search ~53
Call a tool by name with the given arguments. Use this to execute tools discovered via search_tools.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | – | – | Arguments to pass to the tool |
| name | string | yes | The name of the tool to call |
No output schema declared.
No examples provided.
comments_get_inbox_post_comments Get post comments ~176
Get post comments
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | (required) |
| comment_id | – | – | (Reddit and TikTok only) Get replies to a specific comment |
| cursor | – | – | Pagination cursor, returned by a previous call as `pagination.cursor`. This is the platform's own opaque paging value passed through verbatim: never construct, decode or validate it client-side. |
| limit | integer | – | Maximum number of comments to return |
| post_id | string | yes | Zernio post ID or platform-specific post ID. Zernio IDs are auto-resolved. LinkedIn third-party posts accept full activity URN or numeric ID. On Facebook and Instagram, a comment ID is also accepted… |
| subreddit | – | – | (Reddit only) Subreddit name |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
comments_list_inbox_comments List commented posts ~156
List commented posts
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | Filter by specific account ID |
| cursor | – | – | – |
| limit | integer | – | – |
| min_comments | – | – | Minimum comment count |
| platform | – | – | Filter by platform. `metaads` is a synthetic value meaning the user's ads (boosted/dark posts) only; `facebook`/`instagram` return organic posts only. `tiktok` covers accounts connected through the T… |
| profile_id | – | – | Filter by profile ID |
| since | – | – | Posts created after this date |
| sort_by | string | – | Sort field |
| sort_order | string | – | Sort order |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
comments_reply_to_inbox_post Reply to comment ~172
Reply to comment
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | (required) |
| attachment_url | – | – | (Facebook only) URL of an image to attach, publishing a photo comment alongside the text. The URL must be publicly accessible so Meta can fetch it. Returns 400 for other platforms. |
| comment_id | – | – | Reply to specific comment (optional) |
| message | string | yes | (required) |
| parent_cid | – | – | (Bluesky only) Parent content identifier |
| post_id | string | yes | Zernio post ID or platform-specific post ID. LinkedIn third-party posts accept full activity URN or numeric ID. (required) |
| root_cid | – | – | (Bluesky only) Root post CID |
| root_uri | – | – | (Bluesky only) Root post URI |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
docs_search Search the Late API documentation ~92
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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search query (e.g., 'webhooks', 'create post', 'authentication') (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
media_check_upload_status Check upload status and get file URLs ~73
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).
| Name | Type | Req | Description |
|---|---|---|---|
| token | string | yes | The upload token from media_generate_upload_link (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
media_generate_upload_link Generate an upload URL for media files ~104
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
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
mentions_list_inbox_mentions List mentions ~72
List mentions
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | Filter by account ID |
| cursor | – | – | Cursor for pagination (ID of the last item from the previous page) |
| limit | integer | – | – |
| profile_id | – | – | Filter by profile ID |
| sort_order | string | – | Sort order by publishedAt |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
mentions_reply_to_mention Reply to a mention ~80
Reply to a mention
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | The Instagram account ID (required) |
| comment_id | – | – | The mentioning comment's ID. Omit for a caption mention. |
| media_id | string | yes | The ID of the media the account was mentioned in (required) |
| message | string | yes | The reply text (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_bulk_upload_posts Bulk upload from CSV ~29
Bulk upload from CSV Args: dry_run
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_create Create a social media post (draft, scheduled, or immediate) ~639
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
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Specific account ID to post from. REQUIRED when the user has multiple accounts on this platform. Call accounts_list first to find IDs. Leave empty only if there is exactly one account for this platfo… |
| content | string | yes | The post text/content (required) |
| is_draft | boolean | – | Set to True to save as DRAFT (not published, not scheduled). Use when user wants to save without publishing Default: False. |
| media_urls | string | – | Comma-separated URLs of media files to attach (images, videos) Default: . |
| platform | string | yes | Target platform: twitter, instagram, linkedin, tiktok, bluesky, facebook, youtube, pinterest, threads (required) |
| profile_id | string | – | Scope account resolution to one profile (e.g. one client in an agency setup). Use when account_id is unknown but the target profile is. Call profiles_list to find IDs. Default: . |
| publish_now | boolean | – | Set to True to publish IMMEDIATELY. Post goes live right now Default: False. |
| schedule_minutes | integer | – | Minutes from now to schedule. Only used when is_draft=False AND publish_now=False Default: 60. |
| title | string | – | Post title (required for YouTube, recommended for Pinterest) Default: . |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_cross_post Post the same content to multiple platforms ~475
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_ids | string | – | Comma-separated account IDs, parallel to `platforms`. Empty positions fall back to profile/auto-resolution. Required for multi-account users to disambiguate. Default: . |
| content | string | yes | The post text/content (required) |
| is_draft | boolean | – | Set to True to save as DRAFT (not published). Use when user wants to save without publishing Default: False. |
| media_urls | string | – | Comma-separated URLs of media files to attach Default: . |
| platforms | string | yes | Comma-separated list of platforms (e.g., 'twitter,linkedin,bluesky'). Repeat a platform to target multiple accounts of it: 'twitter,twitter'. (required) |
| profile_id | string | – | Scope auto-resolution to one profile when account_ids is empty. Default: . |
| publish_now | boolean | – | Set to True to publish IMMEDIATELY to all platforms Default: False. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_delete Delete a post ~35
Delete a post by ID. Published posts cannot be deleted.
| Name | Type | Req | Description |
|---|---|---|---|
| post_id | string | yes | The post ID to delete (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_edit_post Edit published post ~86
Edit published post
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | Which account's copy of the post to edit when the post was published to several accounts on the same platform; defaults to the first. |
| content | string | yes | The new post text content (required) |
| platform | string | yes | The platform to edit the post on. (required) |
| post_id | string | yes | (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_get Get details of a specific post ~39
Get full details of a specific post including content, status, and scheduling info.
| Name | Type | Req | Description |
|---|---|---|---|
| post_id | string | yes | The post ID to retrieve (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_list List posts with optional filtering ~70
List posts with optional filtering by status. Status options: draft, scheduled, published, failed
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of posts to return Default: 10. |
| status | string | – | Filter by status: draft, scheduled, published, failed. Leave empty for all posts Default: . |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_list_failed List all failed posts ~36
List all failed posts that can be retried.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of posts to return Default: 10. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_publish_now Publish a post immediately ~206
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Specific account ID. REQUIRED when the user has multiple accounts on this platform. Leave empty only if there is exactly one. Default: . |
| content | string | yes | The post text/content (required) |
| media_urls | string | – | Comma-separated URLs of media files to attach Default: . |
| platform | string | yes | Target platform: twitter, instagram, linkedin, tiktok, bluesky, etc. (required) |
| profile_id | string | – | Scope auto-resolution to a single profile when account_id is unknown. Default: . |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_retry Retry a failed post ~42
Retry publishing a failed post. Only works on posts with 'failed' status.
| Name | Type | Req | Description |
|---|---|---|---|
| post_id | string | yes | The ID of the failed post to retry (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_retry_all_failed Retry all failed posts ~17
Retry all failed posts at once.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_unpublish_post Unpublish post ~40
Unpublish post
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | yes | The platform to delete the post from (required) |
| post_id | string | yes | (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
posts_update Update an existing post ~105
Update an existing post. Only draft, scheduled, and failed posts can be updated. Published posts cannot be modified.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | – | New content (leave empty to keep current) Default: . |
| post_id | string | yes | The post ID to update (required) |
| scheduled_for | string | – | New schedule time as ISO string (leave empty to keep current) Default: . |
| title | string | – | New title (leave empty to keep current) Default: . |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
profiles_create Create a new profile ~60
Create a new profile for grouping social accounts.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | Optional hex color (e.g., '#4CAF50') Default: . |
| description | string | – | Optional description Default: . |
| name | string | yes | Profile name (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
profiles_delete Delete a profile ~35
Delete a profile. The profile must have no connected accounts.
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | string | yes | The profile ID to delete (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
profiles_get Get details of a specific profile ~35
Get details of a specific profile including name, description, and color.
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | string | yes | The profile ID (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
profiles_list List all profiles ~22
List all profiles. Profiles group multiple social accounts together for easier management.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
profiles_update Update an existing profile ~105
Update an existing profile. Only provided fields will be changed.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | New hex color (leave empty to keep current) Default: . |
| description | string | – | New description (leave empty to keep current) Default: . |
| is_default | boolean | – | Set as default profile Default: False. |
| name | string | – | New name (leave empty to keep current) Default: . |
| profile_id | string | yes | The profile ID to update (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
queue_create_queue_slot Create schedule ~69
Create schedule
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | – | – |
| name | string | yes | Queue name (e.g., Evening Posts) (required) |
| profile_id | string | yes | Profile ID (required) |
| slots | – | yes | (required) |
| timezone | string | yes | IANA timezone (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
queue_delete_queue_slot Delete schedule ~43
Delete schedule
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | string | yes | (required) |
| queue_id | – | – | Queue ID to delete. Omit to delete all queues for the profile |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
queue_get_next_queue_slot Get next available slot ~44
Get next available slot
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | string | yes | (required) |
| queue_id | – | – | Specific queue ID (optional, defaults to profile's default queue) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
queue_list_queue_slots List schedules ~59
List schedules
| Name | Type | Req | Description |
|---|---|---|---|
| all | – | – | Set to 'true' to list all queues for the profile |
| profile_id | string | yes | Profile ID to get queues for (required) |
| queue_id | – | – | Specific queue ID to retrieve (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
queue_preview_queue Preview upcoming slots ~49
Preview upcoming slots
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| profile_id | string | yes | (required) |
| queue_id | – | – | Filter by specific queue ID. Omit to use the default queue. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
queue_update_queue_slot Update schedule ~97
Update schedule
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | – | – |
| name | – | – | Queue name |
| profile_id | string | yes | (required) |
| queue_id | – | – | Queue ID to update (optional) |
| reshuffle_existing | boolean | – | Whether to reschedule existing queued posts to match new slots |
| set_as_default | – | – | Make this queue the default |
| slots | – | yes | (required) |
| timezone | string | yes | (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
search_tools Search available tools ~45
Search for tools using natural language. Returns matching tool definitions ranked by relevance, in the same format as list_tools.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Natural language query to search for tools |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
tracking_tags_get_tracking_tag_stats Get aggregated event stats ~75
Get aggregated event stats
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | (required) |
| aggregation | string | – | Aggregation dimension. Defaults to `event`. |
| end_time | – | – | Unix seconds upper bound. |
| start_time | – | – | Unix seconds lower bound. |
| tag_id | string | yes | Pixel id. (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
tracking_tags_list_tracking_tags List tracking tags ~75
List tracking tags
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Ads SocialAccount id (platform `metaads` or `openaiads`). (required) |
| ad_account_id | – | – | Optional, Meta only. Scope to one ad account, e.g. `act_123456789`. Ignored for OpenAI Ads. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
usage_get_usage Usage snapshot (default) or billed-spend metering (with params) ~436
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| from_ | – | – | – |
| granularity | string | – | – |
| group_by | – | – | – |
| profile_id | – | – | – |
| range | string | – | – |
| reconcile | – | – | – |
| to | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
validate_media Validate media URL ~26
Validate media URL
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Public media URL to validate (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
validate_post Validate post content ~51
Validate post content
| Name | Type | Req | Description |
|---|---|---|---|
| content | – | – | Post text content |
| media_items | – | – | Root media items shared across platforms |
| platforms | – | yes | Target platforms (same format as POST /v1/posts) (required) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
What is the Zernio MCP server?
Zernio is an MCP server listed in the public MCP registry as com.zernio/zernio. Schedule, publish, and analyze social media across 15+ platforms, plus inbox, ads, and analytics. This page covers its hosted endpoint (https://mcp.zernio.com/mcp).
Is the Zernio MCP server safe to use?
Zernio scores 36 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Zernio MCP server expose?
Zernio exposes 52 tools: zernio_overview, accounts_list, accounts_get, profiles_list, profiles_get, and 47 more. Their descriptions and schemas cost roughly 5,243 tokens of context every time the server is loaded.
Does the Zernio MCP server require authentication?
Yes. Zernio asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Zernio MCP server still maintained?
Zernio is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.