mcp-registry/com.viral-cat/viral-cat · v1.6.0
As of 2026-10-18 18:08 UTC, the Viral Cat MCP server is up with a Glimind reliability score of 87/100 (grade B). Over the last 30 days it answered 99.9% of Glimind's liveness checks. It had 3 outages in 90 days, with a median recovery of 7 minutes.
Schedule and publish social posts across platforms, with drafts, media uploads and analytics.
Claude Code
claude mcp add --transport http viral-cat-mcp-server https://viral-cat.com/api/mcp/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"viral-cat-mcp-server": {
"type": "http",
"url": "https://viral-cat.com/api/mcp/mcp"
}
}
}
Third-party server, listed as discovered. Review its source before installing.
21 of 21 tool(s) carry no readOnlyHint/destructiveHint annotations.
Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones. How to fix →
18 parameter(s) across 11 tool(s) have no description.
Add a "description" to each parameter with its format and an example ("ISO 8601 date, e.g. 2026-10-17"). This is the commonest cause of wrong arguments on the first call. How to fix →
10 tool(s) look like they change state (create/send/delete/pay…) but declare no destructiveHint.
Set annotations {"readOnlyHint": false, "destructiveHint": true|false, "idempotentHint": …}. Clients use these to ask the user before a side effect and to auto-approve safe reads. How to fix →
No tool declares an outputSchema.
Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably. How to fix →
Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. 11 tool(s) still need parameter descriptions written by someone who knows the API. All of them as JSON: /v1/readiness/mcp-registry%2Fcom.viral-cat%2Fviral-cat/fixes
{
"name": "cancel_post",
"description": "WRITE (safe): cancel a queued post, or move it to a new slot. Omit scheduled_date to CANCEL (status -> cancelled; the publisher ignores it). Pass scheduled_date to RESCHEDULE to that time instead (ISO 8601, at least 15 minutes out; a draft keeps its draft status). Works on draft or scheduled posts (cancel or reschedule); also works on FAILED posts but cancel-only (omit scheduled_date) — this is the way to clear a dead failed-post backlog, since failed has no other exit. Posts already posting/pos",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"post_id"
],
"properties": {
"post_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Post id to cancel or reschedule (from content_queue)"
},
"scheduled_date": {
"type": "string",
"description": "Omit to cancel. Provide to reschedule: ISO 8601, at least 15 minutes in the future"
}
}
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": true
}
}{
"name": "create_brand",
"description": "WRITE (gated): create a brand (content profile) so create_draft and schedule_post have something to target. Every other write here needs a brand_id, so an agent had no way to set one up. Returns the brand_id and the Drive folder the publisher will read its media from (Viral-Cat/_Res/{name}/Vids). Publishes nothing and reaches no audience.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Brand name. Also names its Drive media folder, so keep it filesystem-friendly."
},
"cta_url": {
"type": "string",
"maxLength": 500,
"description": "Link included in posts."
},
"hashtags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100
},
"maxItems": 30,
"description": "Brand hashtags appended to captions unless skip_hashtags is set."
},
"description": {
"type": "string",
"maxLength": 1000
},
"website_url": {
"type": "string",
"maxLength": 500
},
"content_type": {
"enum": [
"video",
"image"
],
"type": "string",
"description": "What the publisher should expect to find for this brand."
}
}
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false
}
}{
"name": "create_draft",
"description": "WRITE (safe): create a DRAFT post for a brand. Drafts are never picked up by the publisher, so nothing goes live; a human approves in the dashboard or promotes it later with schedule_post. scheduled_date is a proposed slot (default: 7 days out).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"brand_id",
"platform"
],
"properties": {
"caption": {
"type": "string",
"maxLength": 2200,
"description": "Post body. Omit to inherit the brand's taglines."
},
"brand_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"platform": {
"type": "string",
"maxLength": 20,
"description": "Target platform, e.g. youtube, tiktok, instagram"
},
"reply_text": {
"type": "string",
"maxLength": 2200,
"description": "Follow-up reply posted under the main post. On X this is where a link belongs: a URL in the post body costs up to 94% of the reach (near-total on a non-Premium account), while the same URL one reply down costs nothing. Omit to reply with the brand's CTA url; pass an empty string for no reply at all. Ignored by every platform except X."
},
"skip_hashtags": {
"type": "boolean",
"description": "true = publish the caption as-is with NO brand hashtags appended; false = always append them. Omit to auto-detect: long hand-authored captions (>280 chars, no '#') skip hashtags. The result's hashtagsSkipped shows the decision."
},
"scheduled_date": {
"type": "string",
"description": "Proposed ISO 8601 slot, e.g. 2026-07-15T09:00:00Z"
}
}
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false
}
}Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:
curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/com.viral-cat/viral-cat"],"email":"[email protected]"}'Agents: watch_tool({"toolId": "mcp-registry/com.viral-cat/viral-cat"}) over MCP.
update_brand ~567 tokensschedule_post ~481 tokenscreate_draft ~457 tokenscreate_media_upload ~423 tokensretry_failed_posts ~393 tokensStatic checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).
Operator? Fix these, then re-check live. Embed the readiness badge:
[](https://glimind.com/server/mcp-registry%2Fcom.viral-cat%2Fviral-cat?ref=badge)
<a href="https://glimind.com/server/mcp-registry%2Fcom.viral-cat%2Fviral-cat?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fcom.viral-cat%2Fviral-cat.svg" alt="MCP agent-readiness"></a>
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fcom.viral-cat%2Fviral-cat.svg :target: https://glimind.com/server/mcp-registry%2Fcom.viral-cat%2Fviral-cat?ref=badge :alt: MCP agent-readiness
Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:911878511c177895…, first seen 2026-10-17, included at leaf 16308 of 23,019. Version history · verify what your client received.
Compare: most reliable analytics servers · most reliable content management servers · most reliable media servers · most reliable data servers · most reliable communication servers
Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.
Claude Code
claude mcp add --transport http glimind https://glimind.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"glimind": {
"type": "http",
"url": "https://glimind.com/mcp"
}
}
}
As of 2026-10-18 18:08 UTC, the Viral Cat MCP server is up with a Glimind reliability score of 87/100 (grade B). Over the last 30 days it answered 99.9% of Glimind's liveness checks. It had 3 outages in 90 days, with a median recovery of 7 minutes.
Viral Cat MCP server advertises 21 tools, including campaign_summary, cancel_post, content_queue, create_brand, create_draft.
Point your MCP client at this streamable-http endpoint: https://viral-cat.com/api/mcp/mcp
Glimind scanned all 21 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.
Status page: 90-day uptime, every outage and how long it lasted.
Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.
Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.