ViralCat
Qué hace este MCP
Schedules, drafts, publishes, manages, and analyzes branded social media posts across connected platforms.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'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)$'}, 'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'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'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['file_name', 'mime_type', 'size_bytes'], 'properties': {'kind': {'enum': ['video', 'image', 'music'], 'type': 'string', 'description': 'Which brand folder receives the file: Vids, Imgs or Music. Omit to route by media type, which is almost always right.'}, 'brand': {'type': 'string', 'maxLength': 200, 'description': 'Brand whose _Res/{brand} folder should receive the file. Ignored when folder_id is given.'}, 'file_name': {'type': 'string', 'maxLength': 200, 'description': 'Name to save as in Drive, e.g. "ducktax-short.mp4".'}, 'folder_id': {'type': 'string', 'maxLength': 200, 'description': 'Destination Drive folder id, overriding brand.'}, 'mime_type': {'type': 'string', 'maxLength': 100, 'description': 'Media type of the file, e.g. "video/mp4".'}, 'size_bytes': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Exact byte length of the file. Drive rejects a mismatch.', 'exclusiveMinimum': 0}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'default': 60, 'maximum': 365, 'minimum': 1, 'description': 'Rolling window of failed posts to analyze'}, 'platform': {'type': 'string', 'maxLength': 20, 'description': 'Scope to a single platform, e.g. pinterest'}, 'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['brand_id'], 'properties': {'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)$'}, 'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'status': {'enum': ['draft', 'scheduled', 'posting', 'posted', 'failed', 'cancelled'], 'type': 'string'}, 'platform': {'type': 'string', 'maxLength': 20, 'description': 'Filter to a single platform, e.g. youtube or tiktok'}, 'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'default': 30, 'maximum': 365, 'minimum': 1}, '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}, 'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Queue-scan mode only: how many upcoming posts to check.'}, 'post_id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Check one existing post (id from list_posts or content_queue). Omit to scan the whole upcoming queue instead.'}, 'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users (email contains "sample"). Default: real data only.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['platform'], 'properties': {'platform': {'type': 'string', 'maxLength': 20, 'description': 'Platform to reconnect, e.g. twitter, youtube, google_drive'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'include_samples': {'type': 'boolean', 'default': False, 'description': 'Include sample users. Default false: real accounts only, matching every read tool.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['post_id', 'scheduled_date'], 'properties': {'post_id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Post id (from list_posts, content_queue or diagnose_failures)'}, 'scheduled_date': {'type': 'string', 'description': 'New slot, ISO 8601, at least 15 minutes in the future'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'dry_run': {'type': 'boolean', 'default': True, 'description': 'true = plan only, change nothing (the default)'}, 'reasons': {'type': 'array', 'items': {'type': 'string', 'maxLength': 40}, 'description': 'Failure reason classes to retry. Default: token_expired, missed_window, platform_transient_error, drive_media_missing. Non-retryable classes are rejected.'}, 'platform': {'type': 'string', 'maxLength': 20, 'description': 'Scope to a single platform'}, 'start_at': {'type': 'string', 'description': 'ISO 8601 start of the retry window, at least 15 minutes out. Default: ~20 minutes from now.'}, 'spacing_minutes': {'type': 'integer', 'default': 30, 'maximum': 240, 'minimum': 5, 'description': 'Gap between retries on the same platform'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scheduled_date'], 'properties': {'caption': {'type': 'string', 'maxLength': 2200}, 'post_id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Draft post id to promote (from content_queue)'}, '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}, '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. When promoting a draft without a new caption, omitting this keeps the draft's existing setting."}, 'scheduled_date': {'type': 'string', 'description': 'ISO 8601, at least 15 minutes in the future'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['brand_id'], 'properties': {'cta_url': {'type': 'string', 'maxLength': 500, 'description': 'Link included in posts. Pass an empty string to clear it.'}, '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)$'}, 'hashtags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100}, 'maxItems': 30, 'description': 'Brand hashtags appended to captions unless skip_hashtags is set.'}, 'taglines': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500}, 'maxItems': 30, 'description': 'Short lines the publisher rotates through when a post has no caption of its own.'}, 'description': {'type': 'string', 'maxLength': 1000, 'description': 'What the product actually is. The generator writes captions from this, so a wrong description makes every post wrong.'}, 'website_url': {'type': 'string', 'maxLength': 500}, 'content_type': {'enum': ['video', 'image'], 'type': 'string', 'description': 'What the publisher should expect to find for this brand.'}, 'auto_post_enabled': {'type': 'boolean', 'description': 'false = stop the content generator booking posts for this brand from its next cycle; true = let it resume. This is the only way to stop a brand auto-posting without opening the dashboard. Already-scheduled posts are NOT withdrawn by this: cancel those with cancel_post.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source_url'], 'properties': {'kind': {'enum': ['video', 'image', 'music'], 'type': 'string', 'description': 'Which brand folder receives the file: Vids, Imgs or Music. Omit to route by media type, which is almost always right.'}, 'brand': {'type': 'string', 'maxLength': 200, 'description': 'Brand whose _Res/{brand} folder should receive the file. Ignored when folder_id is given.'}, 'file_name': {'type': 'string', 'maxLength': 200, 'description': 'Name to save as. Omit to take it from the URL.'}, 'folder_id': {'type': 'string', 'maxLength': 200, 'description': 'Destination Drive folder id, overriding brand. Omit to use the Viral-Cat folder.'}, 'source_url': {'type': 'string', 'format': 'uri', 'description': 'Public https URL of the media to store, e.g. a rendered Short. Must be reachable without auth.'}}}
Cambios recientes en herramientas
Servidores MCP similares
captapi
Retrieves social media profiles, posts, engagement metrics, comments, marketplace listings, events, and Meta advertising data acr…
SendIt
Plans, generates, approves, schedules, publishes, and analyzes social media content across LinkedIn, Instagram, Threads, TikTok, …
aidelly
Supports agency social media operations including content creation, approvals, scheduling, publishing, repurposing, analytics, ec…
LinkedIn MCP Server (Salesbot)
Supports LinkedIn lead discovery, contact enrichment, CRM pipelines, campaign sequencing, message approval and human-reviewed out…
excalibur-mcp
Creates, schedules, manages, and measures formatted posts for X, with OAuth, snippets, writing voice, and post performance tracki…
uplika
Publishes and manages posts, replies, messages, media, and automations across connected social platforms.
Prowlo — Reddit & X for AI agents
Indexes and searches Reddit and X-related social data, discovers communities, monitors keywords, finds engagement opportunities, …
ChiefLab
Runs approval-gated product launch workflows with channel-specific marketing drafts, social publishing, email actions, measuremen…