SocialGPT
Server Details
Social media analytics, video analysis, and competitor intel for any MCP-compatible AI agent.
- Status
- Unhealthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- scrollmark/socialgpt-mcp
- GitHub Stars
- 10
- Server Listing
- socialgpt-mcp
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
26 tool updates
- Changed
analyze_creator4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `analyze_creator` / `publish_post` — an async job was queued." - added
Output schema / propertiesAdded value: +{ + "job_id": { + "type": "string" + }, + "note": { + "type": "string" + }, + "status": { + "description": "Always 'pending' at creation; poll the matching status tool.", + "type": "string" + } +} - added
Output schema / requiredAdded value: +[ + "job_id", + "status", + "note" +]
- Changed
analyze_post4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `analyze_post`. Deep analysis runs async — poll\n`get_video_analysis(platform, post_id)`; when `is_new_creator` is true a\nbackfill job also runs (poll `get_analysis_status(ingest_job_id)`)." - added
Output schema / propertiesAdded value: +{ + "analysis_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deep-analysis job status at ingest time (e.g. 'pending')." + }, + "creator_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "ingest_job_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Creator-backfill job id; null unless a new creator was created." + }, + "is_new_creator": { + "type": "boolean" + }, + "note": { + "type": "string" + }, + "post": { + "description": "The post just queued by `analyze_post`.", + "properties": { + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Composite resource id ('<platform>:<post_id>') usable with `fetch`." + }, + "platform": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "post_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The platform-native post id — pass to get_video_analysis." + } + }, + "required": [ + "id", + "platform", + "post_id", + "caption", + "creator_username" + ], + "type": "object" + } +} - added
Output schema / requiredAdded value: +[ + "post", + "creator_id", + "is_new_creator", + "analysis_status", + "ingest_job_id", + "note" +]
- Changed
fetch3 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "id": { + "type": "string" + }, + "metadata": { + "additionalProperties": true, + "type": "object" + }, + "text": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } +} - added
Output schema / requiredAdded value: +[ + "id", + "title", + "text", + "url" +]
- Changed
get_account4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"One of the caller's connected social accounts. `account_id` is the handle\nother tools accept (e.g. get_account_metrics, list_videos)." - added
Output schema / propertiesAdded value: +{ + "account_group_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "account_group_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "account_id": { + "type": "string" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "is_verified": { + "default": false, + "type": "boolean" + }, + "platform": { + "type": "string" + }, + "profile_link": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "profile_picture_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "username": { + "type": "string" + } +} - added
Output schema / requiredAdded value: +[ + "account_id", + "platform", + "username" +]
- Changed
get_account_metrics4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `get_account_metrics`. `reason`='account_not_found' appears\nonly when the requested account_id resolved to none of the caller's\naccounts (then platforms/series/metrics are empty)." - added
Output schema / propertiesAdded value: +{ + "account_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The account_id the caller passed (null = all accounts)." + }, + "granularity": { + "enum": [ + "daily", + "weekly", + "raw" + ], + "type": "string" + }, + "metrics": { + "additionalProperties": true, + "description": "Legacy per-platform {columns, data} matrix (back-compat).", + "type": "object" + }, + "platform": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "platforms": { + "items": { + "type": "string" + }, + "type": "array" + }, + "post_limit": { + "type": "integer" + }, + "reason": { + "anyOf": [ + { + "const": "account_not_found", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when the requested account_id could not be resolved." + }, + "series": { + "additionalProperties": { + "items": { + "additionalProperties": true, + "description": "One time-series point. Metric columns (views, like_count,\nfollower_count, ...) are carried as additional properties; `bucket` is\npresent only for 'daily'/'weekly' granularity.", + "properties": { + "bucket": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Bucket label (ISO date or ISO year-week); absent for granularity='raw'." + }, + "timestamp": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Snapshot time of this point." + } + }, + "type": "object" + }, + "type": "array" + }, + "description": "Per-platform typed time series.", + "type": "object" + }, + "window_days": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "account_id", + "platform", + "window_days", + "post_limit", + "granularity", + "platforms", + "series", + "metrics" +]
- Changed
get_analysis_status4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `get_analysis_status` — a creator-ingest job's progress." - added
Output schema / propertiesAdded value: +{ + "creator_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "job_id": { + "type": "string" + }, + "note": { + "type": "string" + }, + "platform": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "progress": { + "description": "Completion percentage (0-100).", + "type": "integer" + }, + "result": { + "default": null, + "title": "Result" + }, + "status": { + "description": "One of: pending, scraping, completed, failed.", + "type": "string" + }, + "username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } +} - added
Output schema / requiredAdded value: +[ + "job_id", + "status", + "progress", + "creator_id", + "platform", + "username", + "error", + "note" +]
- Changed
get_content_profile5 fields changed- added
Input schema / properties / group_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional account-group (brand) id from list_accounts. Omit to use the default group." +} - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `get_content_profile`. When `content_profile` is null,\n`reason` says why: 'not_connected' (no accounts/onboarding yet) or\n'not_synthesized' (connected but DNA not generated yet)." - added
Output schema / propertiesAdded value: +{ + "content_profile": { + "anyOf": [ + { + "description": "The caller's content DNA — empirical persona + prescriptive playbook.", + "properties": { + "persona": { + "default": null, + "title": "Persona" + }, + "playbook": { + "default": null, + "title": "Playbook" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "reason": { + "anyOf": [ + { + "enum": [ + "not_synthesized", + "not_connected" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when content_profile is null — why it is null." + } +} - added
Output schema / requiredAdded value: +[ + "content_profile" +]
- Changed
get_creator2 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / anyOfAdded value: +[ + { + "description": "A public/competitor creator's profile (analysis:read:public).", + "properties": { + "account_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Account Type" + }, + "bio": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Bio" + }, + "content_dna": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Content Dna" + }, + "creator_id": { + "title": "Creator Id", + "type": "string" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Display Name" + }, + "follower_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Follower Count" + }, + "following_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Following Count" + }, + "platform": { + "title": "Platform", + "type": "string" + }, + "profile_picture_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Profile Picture Url" + }, + "username": { + "title": "Username", + "type": "string" + }, + "videos_analyzed_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Videos Analyzed Count" + } + }, + "required": [ + "creator_id", + "platform", + "username" + ], + "title": "McpCreatorProfile", + "type": "object" + }, + { + "description": "Soft, non-error output of `get_creator` when the creator isn't in the\nanalysis library yet. Discriminator vs. the profile variant\n(`McpCreatorProfile`): `reason` == 'creator_not_in_library'. Recover by\ncalling the tool named in `next_step`.", + "properties": { + "hint": { + "title": "Hint", + "type": "string" + }, + "next_step": { + "const": "analyze_creator", + "description": "The tool to call to ingest this creator.", + "title": "Next Step", + "type": "string" + }, + "platform": { + "title": "Platform", + "type": "string" + }, + "reason": { + "const": "creator_not_in_library", + "title": "Reason", + "type": "string" + }, + "username": { + "title": "Username", + "type": "string" + } + }, + "required": [ + "reason", + "platform", + "username", + "next_step", + "hint" + ], + "title": "McpCreatorNotInLibrary", + "type": "object" + } +]
- Changed
get_follower_history4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `get_follower_history`. `reason`='account_not_found' appears\nonly when the requested account_id resolved to none of the caller's\naccounts." - added
Output schema / propertiesAdded value: +{ + "account_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The account_id the caller passed (null = all accounts)." + }, + "granularity": { + "enum": [ + "daily", + "weekly", + "raw" + ], + "type": "string" + }, + "platform": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "platforms": { + "items": { + "type": "string" + }, + "type": "array" + }, + "reason": { + "anyOf": [ + { + "const": "account_not_found", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when the requested account_id could not be resolved." + }, + "series": { + "additionalProperties": { + "items": { + "additionalProperties": true, + "description": "One time-series point. Metric columns (views, like_count,\nfollower_count, ...) are carried as additional properties; `bucket` is\npresent only for 'daily'/'weekly' granularity.", + "properties": { + "bucket": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Bucket label (ISO date or ISO year-week); absent for granularity='raw'." + }, + "timestamp": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Snapshot time of this point." + } + }, + "type": "object" + }, + "type": "array" + }, + "description": "Per-platform typed time series.", + "type": "object" + }, + "window_days": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "account_id", + "platform", + "window_days", + "granularity", + "platforms", + "series" +]
- Changed
get_growth_summary4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `get_growth_summary`. `reason`='account_not_found' appears\nonly when the requested account_id resolved to none of the caller's\naccounts." - added
Output schema / propertiesAdded value: +{ + "account_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The account_id the caller passed (null = all accounts)." + }, + "platform": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "platforms": { + "items": { + "type": "string" + }, + "type": "array" + }, + "reason": { + "anyOf": [ + { + "const": "account_not_found", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when the requested account_id could not be resolved." + }, + "summary": { + "additionalProperties": { + "additionalProperties": { + "description": "Window summary for one metric (see `get_growth_summary`).", + "properties": { + "accelerating": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when the recent half moved more than the prior half." + }, + "change": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + } + ] + }, + "current": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + } + ] + }, + "pct_change": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Percent change start→current; null when start is 0." + }, + "prior_change": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Change over the prior half of the window." + }, + "recent_change": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Change over the recent half of the window." + }, + "start": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + } + ] + } + }, + "required": [ + "start", + "current", + "change", + "pct_change", + "recent_change", + "prior_change", + "accelerating" + ], + "type": "object" + }, + "type": "object" + }, + "description": "Per-platform, per-metric window summaries.", + "type": "object" + }, + "window_days": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "account_id", + "platform", + "window_days", + "platforms", + "summary" +]
- Changed
get_post_metrics_history4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `get_post_metrics_history`. `reason`='no_metrics_history'\nappears only when `series` is empty." - added
Output schema / propertiesAdded value: +{ + "granularity": { + "enum": [ + "daily", + "weekly", + "raw" + ], + "type": "string" + }, + "platform": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "post_id": { + "type": "string" + }, + "reason": { + "anyOf": [ + { + "const": "no_metrics_history", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when series is empty." + }, + "series": { + "items": { + "additionalProperties": true, + "description": "One time-series point. Metric columns (views, like_count,\nfollower_count, ...) are carried as additional properties; `bucket` is\npresent only for 'daily'/'weekly' granularity.", + "properties": { + "bucket": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Bucket label (ISO date or ISO year-week); absent for granularity='raw'." + }, + "timestamp": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Snapshot time of this point." + } + }, + "type": "object" + }, + "type": "array" + }, + "window_days": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "platform", + "post_id", + "window_days", + "granularity", + "series" +]
- Added
get_publish_options - Added
get_publish_status - Added
get_upload_link - Changed
get_video3 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "analysis_available": { + "default": false, + "type": "boolean" + }, + "analysis_preview": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "id": { + "type": "string" + }, + "metrics": { + "anyOf": [ + { + "properties": { + "comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "engagement_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "likes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "saves": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "shares": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "views": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "owned_by_user": { + "default": false, + "type": "boolean" + }, + "platform": { + "type": "string" + }, + "post_created_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "post_id": { + "type": "string" + }, + "post_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } +} - added
Output schema / requiredAdded value: +[ + "id", + "platform", + "post_id" +]
- Changed
get_video_analysis2 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / anyOfAdded value: +[ + { + "properties": { + "content_themes": { + "items": { + "type": "string" + }, + "title": "Content Themes", + "type": "array" + }, + "executive_summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Executive Summary" + }, + "hooks": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Hooks", + "type": "array" + }, + "note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Note" + }, + "post": { + "properties": { + "analysis_available": { + "default": false, + "title": "Analysis Available", + "type": "boolean" + }, + "analysis_preview": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Analysis Preview" + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Caption" + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Creator Username" + }, + "duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Duration" + }, + "id": { + "title": "Id", + "type": "string" + }, + "metrics": { + "anyOf": [ + { + "properties": { + "comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Comments" + }, + "engagement_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Engagement Rate" + }, + "likes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Likes" + }, + "saves": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Saves" + }, + "shares": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Shares" + }, + "views": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Views" + } + }, + "title": "McpPostMetrics", + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "owned_by_user": { + "default": false, + "title": "Owned By User", + "type": "boolean" + }, + "platform": { + "title": "Platform", + "type": "string" + }, + "post_created_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Post Created Time" + }, + "post_id": { + "title": "Post Id", + "type": "string" + }, + "post_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Post Url" + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Thumbnail Url" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + } + }, + "required": [ + "id", + "platform", + "post_id" + ], + "title": "McpPostSummary", + "type": "object" + }, + "scenes": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Scenes", + "type": "array" + }, + "suggested_hooks": { + "items": { + "type": "string" + }, + "title": "Suggested Hooks", + "type": "array" + }, + "transcript": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Transcript" + }, + "transcript_segments": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Transcript Segments" + }, + "video_analysis": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Video Analysis" + } + }, + "required": [ + "post" + ], + "title": "McpPostAnalysis", + "type": "object" + }, + { + "description": "Output of `get_video_analysis` while the deep analysis is not readable.\n\nDiscriminator vs. the completed variant (`McpPostAnalysis`): this shape has\na `status` field ('pending' or 'failed'); the completed analysis does not.\n'pending' is expected right after `analyze_post` — wait `retry_after_seconds`\nand call again.", + "properties": { + "message": { + "title": "Message", + "type": "string" + }, + "platform": { + "title": "Platform", + "type": "string" + }, + "post_id": { + "title": "Post Id", + "type": "string" + }, + "retry_after_seconds": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only while status='pending' — how long to wait before retrying.", + "title": "Retry After Seconds" + }, + "status": { + "enum": [ + "pending", + "failed" + ], + "title": "Status", + "type": "string" + } + }, + "required": [ + "status", + "platform", + "post_id", + "message" + ], + "title": "McpAnalysisProgress", + "type": "object" + } +]
- Changed
list_accounts5 fields changed- added
Input schema / properties / group_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional account-group (brand) id from list_accounts. Omit to use the default group." +} - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `list_accounts`. `reason`='no_connected_accounts' appears only\nwhen `accounts` is empty; `connect_url` is always present." - added
Output schema / propertiesAdded value: +{ + "accounts": { + "items": { + "description": "One of the caller's connected social accounts. `account_id` is the handle\nother tools accept (e.g. get_account_metrics, list_videos).", + "properties": { + "account_group_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "account_group_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "account_id": { + "type": "string" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "is_verified": { + "default": false, + "type": "boolean" + }, + "platform": { + "type": "string" + }, + "profile_link": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "profile_picture_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "username": { + "type": "string" + } + }, + "required": [ + "account_id", + "platform", + "username" + ], + "type": "object" + }, + "type": "array" + }, + "connect_url": { + "description": "Where the user connects (more) social accounts.", + "type": "string" + }, + "groups": { + "description": "The caller's account groups (brands/workspaces) — pass a group_id to list_accounts / get_content_profile / get_publish_options / publish_post to scope to one.", + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "reason": { + "anyOf": [ + { + "const": "no_connected_accounts", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when accounts is empty." + } +} - added
Output schema / requiredAdded value: +[ + "accounts", + "connect_url" +]
- Changed
list_creator_videos4 fields changed- added
Input schema / properties / cursorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Opaque pagination cursor — pass the next_cursor from the previous page verbatim to fetch the next page (keep the same sort/filters). Omit for the first page." +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of videos to return (default 12)."New value: +"Maximum number of videos per page (default 12)." - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / anyOfAdded value: +[ + { + "description": "Output of `list_creator_videos` for an ingested creator.\n`reason`='creator_has_no_indexed_videos' appears only when `videos` is\nempty. `next_cursor` appears only when the listing was truncated.", + "properties": { + "next_cursor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Opaque cursor for the next page; present only when more results exist. Pass it back as `cursor` with the same filters.", + "title": "Next Cursor" + }, + "reason": { + "anyOf": [ + { + "const": "creator_has_no_indexed_videos", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when videos is empty.", + "title": "Reason" + }, + "videos": { + "items": { + "properties": { + "analysis_available": { + "default": false, + "title": "Analysis Available", + "type": "boolean" + }, + "analysis_preview": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Analysis Preview" + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Caption" + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Creator Username" + }, + "duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Duration" + }, + "id": { + "title": "Id", + "type": "string" + }, + "metrics": { + "anyOf": [ + { + "properties": { + "comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Comments" + }, + "engagement_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Engagement Rate" + }, + "likes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Likes" + }, + "saves": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Saves" + }, + "shares": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Shares" + }, + "views": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Views" + } + }, + "title": "McpPostMetrics", + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "owned_by_user": { + "default": false, + "title": "Owned By User", + "type": "boolean" + }, + "platform": { + "title": "Platform", + "type": "string" + }, + "post_created_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Post Created Time" + }, + "post_id": { + "title": "Post Id", + "type": "string" + }, + "post_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Post Url" + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Thumbnail Url" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + } + }, + "required": [ + "id", + "platform", + "post_id" + ], + "title": "McpPostSummary", + "type": "object" + }, + "title": "Videos", + "type": "array" + } + }, + "required": [ + "videos" + ], + "title": "McpCreatorVideosEnvelope", + "type": "object" + }, + { + "description": "Output of `list_creator_videos` when the creator isn't in the analysis\nlibrary yet (same discriminator as `McpCreatorNotInLibrary`, plus an empty\n`videos` list).", + "properties": { + "hint": { + "title": "Hint", + "type": "string" + }, + "next_step": { + "const": "analyze_creator", + "description": "The tool to call to ingest this creator.", + "title": "Next Step", + "type": "string" + }, + "platform": { + "title": "Platform", + "type": "string" + }, + "reason": { + "const": "creator_not_in_library", + "title": "Reason", + "type": "string" + }, + "username": { + "title": "Username", + "type": "string" + }, + "videos": { + "default": [], + "items": { + "properties": { + "analysis_available": { + "default": false, + "title": "Analysis Available", + "type": "boolean" + }, + "analysis_preview": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Analysis Preview" + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Caption" + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Creator Username" + }, + "duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Duration" + }, + "id": { + "title": "Id", + "type": "string" + }, + "metrics": { + "anyOf": [ + { + "properties": { + "comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Comments" + }, + "engagement_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Engagement Rate" + }, + "likes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Likes" + }, + "saves": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Saves" + }, + "shares": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Shares" + }, + "views": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Views" + } + }, + "title": "McpPostMetrics", + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "owned_by_user": { + "default": false, + "title": "Owned By User", + "type": "boolean" + }, + "platform": { + "title": "Platform", + "type": "string" + }, + "post_created_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Post Created Time" + }, + "post_id": { + "title": "Post Id", + "type": "string" + }, + "post_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Post Url" + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Thumbnail Url" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + } + }, + "required": [ + "id", + "platform", + "post_id" + ], + "title": "McpPostSummary", + "type": "object" + }, + "title": "Videos", + "type": "array" + } + }, + "required": [ + "reason", + "platform", + "username", + "next_step", + "hint" + ], + "title": "McpCreatorVideosNotInLibrary", + "type": "object" + } +]
- Changed
list_similar_videos4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `list_similar_videos`. `reason` appears only when `videos` is\nempty: 'source_not_analyzed' (reference post has no embedding yet) or\n'no_similar_videos'." - added
Output schema / propertiesAdded value: +{ + "reason": { + "anyOf": [ + { + "enum": [ + "source_not_analyzed", + "no_similar_videos" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when videos is empty — why it is empty." + }, + "videos": { + "items": { + "description": "A similar/competitor post; `analysis` is attached (possibly null) only\nwhen the tool was called with include_analysis=true.", + "properties": { + "analysis": { + "anyOf": [ + { + "properties": { + "content_themes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "executive_summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "hooks": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "post": { + "properties": { + "analysis_available": { + "default": false, + "type": "boolean" + }, + "analysis_preview": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "id": { + "type": "string" + }, + "metrics": { + "anyOf": [ + { + "properties": { + "comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "engagement_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "likes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "saves": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "shares": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "views": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "owned_by_user": { + "default": false, + "type": "boolean" + }, + "platform": { + "type": "string" + }, + "post_created_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "post_id": { + "type": "string" + }, + "post_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "id", + "platform", + "post_id" + ], + "type": "object" + }, + "scenes": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "suggested_hooks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "transcript": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "transcript_segments": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null + }, + "video_analysis": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "post" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Full analysis; only present when include_analysis=true (null when unavailable)." + }, + "analysis_available": { + "default": false, + "type": "boolean" + }, + "analysis_preview": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "id": { + "type": "string" + }, + "metrics": { + "anyOf": [ + { + "properties": { + "comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "engagement_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "likes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "saves": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "shares": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "views": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "owned_by_user": { + "default": false, + "type": "boolean" + }, + "platform": { + "type": "string" + }, + "post_created_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "post_id": { + "type": "string" + }, + "post_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "id", + "platform", + "post_id" + ], + "type": "object" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "videos" +]
- Added
list_uploads - Changed
list_videos6 fields changed- added
Input schema / properties / cursorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Opaque pagination cursor — pass the next_cursor from the previous page verbatim to fetch the next page (keep the same sort/filters). Omit for the first page." +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of videos to return (default 20)."New value: +"Maximum number of videos per page (default 20)." - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `list_videos` / `search_videos`. `reason` appears only when\n`videos` is empty: 'no_matching_videos' (accounts connected, nothing\nmatched) or 'no_connected_accounts' (then `connect_url` is also present).\n`next_cursor` appears only when the listing was truncated — its absence is\nthe \"you have everything\" signal." - added
Output schema / propertiesAdded value: +{ + "connect_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Where to connect an account; present only with reason='no_connected_accounts'." + }, + "next_cursor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Opaque cursor for the next page; present only when more results exist. Pass it back as `cursor` with the same filters." + }, + "reason": { + "anyOf": [ + { + "enum": [ + "no_matching_videos", + "no_connected_accounts" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when videos is empty — why it is empty." + }, + "videos": { + "items": { + "properties": { + "analysis_available": { + "default": false, + "type": "boolean" + }, + "analysis_preview": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "id": { + "type": "string" + }, + "metrics": { + "anyOf": [ + { + "properties": { + "comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "engagement_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "likes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "saves": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "shares": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "views": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "owned_by_user": { + "default": false, + "type": "boolean" + }, + "platform": { + "type": "string" + }, + "post_created_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "post_id": { + "type": "string" + }, + "post_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "id", + "platform", + "post_id" + ], + "type": "object" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "videos" +]
- Added
publish_post - Changed
search4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `search`. `reason` appears only when `results` is empty:\n'no_matching_content' (accounts connected, nothing matched) or\n'no_connected_accounts' (then `connect_url` is also present)." - added
Output schema / propertiesAdded value: +{ + "connect_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Where to connect an account; present only with reason='no_connected_accounts'." + }, + "reason": { + "anyOf": [ + { + "enum": [ + "no_matching_content", + "no_connected_accounts" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when results is empty — why it is empty." + }, + "results": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "additionalProperties": true, + "type": "object" + }, + "text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "url" + ], + "type": "object" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "results" +]
- Changed
search_videos6 fields changed- added
Input schema / properties / cursorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Opaque pagination cursor — pass the next_cursor from the previous page verbatim to fetch the next page (keep the same sort/filters). Omit for the first page." +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of videos to return (default 10)."New value: +"Maximum number of videos per page (default 10)." - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `list_videos` / `search_videos`. `reason` appears only when\n`videos` is empty: 'no_matching_videos' (accounts connected, nothing\nmatched) or 'no_connected_accounts' (then `connect_url` is also present).\n`next_cursor` appears only when the listing was truncated — its absence is\nthe \"you have everything\" signal." - added
Output schema / propertiesAdded value: +{ + "connect_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Where to connect an account; present only with reason='no_connected_accounts'." + }, + "next_cursor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Opaque cursor for the next page; present only when more results exist. Pass it back as `cursor` with the same filters." + }, + "reason": { + "anyOf": [ + { + "enum": [ + "no_matching_videos", + "no_connected_accounts" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Present only when videos is empty — why it is empty." + }, + "videos": { + "items": { + "properties": { + "analysis_available": { + "default": false, + "type": "boolean" + }, + "analysis_preview": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "creator_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "id": { + "type": "string" + }, + "metrics": { + "anyOf": [ + { + "properties": { + "comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "engagement_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "likes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "saves": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "shares": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "views": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "owned_by_user": { + "default": false, + "type": "boolean" + }, + "platform": { + "type": "string" + }, + "post_created_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "post_id": { + "type": "string" + }, + "post_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "id", + "platform", + "post_id" + ], + "type": "object" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "videos" +]
- Changed
server_info4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `server_info`." - added
Output schema / propertiesAdded value: +{ + "name": { + "type": "string" + }, + "scopes": { + "description": "All OAuth scopes this server supports.", + "items": { + "type": "string" + }, + "type": "array" + }, + "surface": { + "description": "The tool-surface label, e.g. 'public-read-v1'.", + "type": "string" + }, + "version": { + "type": "string" + } +} - added
Output schema / requiredAdded value: +[ + "name", + "version", + "surface", + "scopes" +]
- Changed
whoami4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Output of `whoami` — the authenticated caller." - added
Output schema / propertiesAdded value: +{ + "actor_type": { + "type": "string" + }, + "scopes": { + "description": "Scopes granted to this token (sorted).", + "items": { + "type": "string" + }, + "type": "array" + }, + "user_id": { + "type": "string" + } +} - added
Output schema / requiredAdded value: +[ + "user_id", + "scopes", + "actor_type" +]
18 tool updates
- Changed
analyze_creator3 fields changed- added
Input schema / properties / platform / descriptionAdded value: +"Target platform — instagram, tiktok, or youtube (case-insensitive)." - added
Input schema / properties / post_limit / descriptionAdded value: +"How many of the creator's recent posts to scrape + analyze (1–30, default 10; clamped)." - added
Input schema / properties / username / descriptionAdded value: +"The creator's public handle, e.g. 'natgeo' (no leading @)."
- Changed
analyze_post1 field changed- added
Input schema / properties / post_url / descriptionAdded value: +"Full public URL of a single TikTok, YouTube, or Instagram post / reel / video."
- Changed
fetch1 field changed- added
Input schema / properties / id / descriptionAdded value: +"A resource id returned by `search` (the `id` field of a search result)."
- Changed
get_account1 field changed- added
Input schema / properties / account_id / descriptionAdded value: +"An account_id from list_accounts."
- Changed
get_account_metrics5 fields changed- added
Input schema / properties / account_id / descriptionAdded value: +"A connected account_id from list_accounts. Omit to aggregate across all your accounts." - added
Input schema / properties / granularity / descriptionAdded value: +"Time-series bucketing: 'daily' (default), 'weekly', or 'raw' (every scrape)." - added
Input schema / properties / platform / descriptionAdded value: +"Optional platform filter — instagram, tiktok, or youtube (case-insensitive). Omit to span all connected platforms." - added
Input schema / properties / post_limit / descriptionAdded value: +"How many recent posts form the baseline (1–100, default 20; clamped)." - added
Input schema / properties / window_days / descriptionAdded value: +"Trailing window in days (1–365, default 28; out-of-range values are clamped)."
- Changed
get_analysis_status1 field changed- added
Input schema / properties / job_id / descriptionAdded value: +"The job_id (a UUID) returned by analyze_creator or analyze_post."
- Changed
get_creator2 fields changed- added
Input schema / properties / platform / descriptionAdded value: +"Target platform — instagram, tiktok, or youtube (case-insensitive)." - added
Input schema / properties / username / descriptionAdded value: +"The creator's public handle, e.g. 'natgeo' (no leading @)."
- Changed
get_follower_history4 fields changed- added
Input schema / properties / account_id / descriptionAdded value: +"A connected account_id from list_accounts. Omit to aggregate across all your accounts." - added
Input schema / properties / granularity / descriptionAdded value: +"Time-series bucketing: 'daily' (default), 'weekly', or 'raw' (every scrape)." - added
Input schema / properties / platform / descriptionAdded value: +"Optional platform filter — instagram, tiktok, or youtube (case-insensitive). Omit to span all connected platforms." - added
Input schema / properties / window_days / descriptionAdded value: +"Trailing window in days (1–365, default 90; out-of-range values are clamped)."
- Changed
get_growth_summary3 fields changed- added
Input schema / properties / account_id / descriptionAdded value: +"A connected account_id from list_accounts. Omit to aggregate across all your accounts." - added
Input schema / properties / platform / descriptionAdded value: +"Optional platform filter — instagram, tiktok, or youtube (case-insensitive). Omit to span all connected platforms." - added
Input schema / properties / window_days / descriptionAdded value: +"Trailing window in days (1–365, default 90; out-of-range values are clamped)."
- Changed
get_post_metrics_history4 fields changed- added
Input schema / properties / granularity / descriptionAdded value: +"Time-series bucketing: 'daily' (default), 'weekly', or 'raw' (every scrape)." - added
Input schema / properties / platform / descriptionAdded value: +"Target platform — instagram, tiktok, or youtube (case-insensitive)." - added
Input schema / properties / post_id / descriptionAdded value: +"The post's native post_id (from list_videos / analyze_post)." - added
Input schema / properties / window_days / descriptionAdded value: +"Trailing window in days (1–365, default 90; out-of-range values are clamped)."
- Changed
get_video3 fields changed- added
Input schema / properties / include_analysis / descriptionAdded value: +"Attach the video's full analysis inline." - added
Input schema / properties / platform / descriptionAdded value: +"Target platform — instagram, tiktok, or youtube (case-insensitive)." - added
Input schema / properties / post_id / descriptionAdded value: +"The platform's native post id — the `post_id` field from list_videos / search_videos (NOT the composite `id`)."
- Changed
get_video_analysis2 fields changed- added
Input schema / properties / platform / descriptionAdded value: +"Target platform — instagram, tiktok, or youtube (case-insensitive)." - added
Input schema / properties / post_id / descriptionAdded value: +"The platform's native post id — the `post_id` from analyze_post / list_videos. Pass platform and post_id separately, NOT the composite `id`."
- Changed
list_accounts1 field changed- added
Input schema / properties / platform / descriptionAdded value: +"Optional platform filter — instagram, tiktok, or youtube (case-insensitive). Omit to span all connected platforms."
- Changed
list_creator_videos5 fields changed- added
Input schema / properties / include_analysis / descriptionAdded value: +"Attach each video's full analysis inline (heavier response)." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of videos to return (default 12)." - added
Input schema / properties / platform / descriptionAdded value: +"Target platform — instagram, tiktok, or youtube (case-insensitive)." - added
Input schema / properties / sort / descriptionAdded value: +"Ordering: 'recent' (newest first) or 'top' (best-performing)." - added
Input schema / properties / username / descriptionAdded value: +"The creator's public handle, e.g. 'natgeo' (no leading @)."
- Changed
list_similar_videos4 fields changed- added
Input schema / properties / include_analysis / descriptionAdded value: +"Attach each video's full analysis inline (heavier response)." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of similar videos to return (default 8)." - added
Input schema / properties / platform / descriptionAdded value: +"Target platform — instagram, tiktok, or youtube (case-insensitive)." - added
Input schema / properties / post_id / descriptionAdded value: +"The reference post's native post_id (from list_videos / get_video). Similarity is computed from this post's content embedding."
- Changed
list_videos6 fields changed- added
Input schema / properties / account_id / descriptionAdded value: +"A connected account_id from list_accounts. Omit to aggregate across all your accounts." - added
Input schema / properties / include_analysis / descriptionAdded value: +"Attach each video's full analysis inline (heavier response)." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of videos to return (default 20)." - added
Input schema / properties / platform / descriptionAdded value: +"Optional platform filter — instagram, tiktok, or youtube (case-insensitive). Omit to span all connected platforms." - added
Input schema / properties / query / descriptionAdded value: +"Optional free-text filter over your videos (caption / title)." - added
Input schema / properties / sort / descriptionAdded value: +"Ordering: 'recent' (newest first) or 'top' (best-performing)."
- Changed
search3 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of results to return (default 10)." - added
Input schema / properties / platform / descriptionAdded value: +"Optional platform filter — instagram, tiktok, or youtube (case-insensitive). Omit to span all connected platforms." - added
Input schema / properties / query / descriptionAdded value: +"Free-text query matched against your connected accounts' content (captions, titles, transcripts)."
- Changed
search_videos3 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of videos to return (default 10)." - added
Input schema / properties / platform / descriptionAdded value: +"Optional platform filter — instagram, tiktok, or youtube (case-insensitive). Omit to span all connected platforms." - added
Input schema / properties / query / descriptionAdded value: +"What to look for inside your analyzed videos (themes, topics, on-screen content)."
4 tool updates
- Changed
get_account_metrics1 field changed- added
Input schema / properties / granularityAdded value: +{ + "default": "daily", + "enum": [ + "daily", + "weekly", + "raw" + ], + "type": "string" +}
- Added
get_follower_history - Added
get_growth_summary - Added
get_post_metrics_history
18 tool updates
- First observed
analyze_creator - First observed
analyze_post - First observed
fetch - First observed
get_account - First observed
get_account_metrics - First observed
get_analysis_status - First observed
get_content_profile - First observed
get_creator - First observed
get_video - First observed
get_video_analysis - First observed
list_accounts - First observed
list_creator_videos - First observed
list_similar_videos - First observed
list_videos - First observed
search - First observed
search_videos - First observed
server_info - First observed
whoami
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Social media analytics, post insights, and competitor benchmarking for AI agents.
The Google for AI agents — company intel, competitor tracking, market research via MCP. JSON output
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceSocial media analytics, post insights, and competitor benchmarking for AI agents.6MIT- FlicenseNot gradedqualityBmaintenanceProvides social intelligence tools for AI agents to analyze competitor sentiment, trends, and brand mentions from X/Twitter data.-
- AlicenseAqualityCmaintenanceWeb intelligence MCP server for AI agents. 7 tools for SERP analysis, competitor research, market trends, content gap analysis, keyword insights, audience discovery, and citation tracking.72AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to post, schedule, thread, delete, and analyze social media posts across platforms like X, Bluesky, LinkedIn, and Instagram through a single MCP interface.17MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools have clearly distinct purposes, such as analyze_creator vs analyze_post or list_videos vs search_videos. A few pairs like 'search' and 'search_videos' could cause confusion, but descriptions mitigate overlap.
The majority follow verb_noun pattern (e.g., analyze_creator, list_accounts, publish_post). Deviations include 'fetch', 'search', and 'whoami', which are fixed by spec or stylistic choices.
26 tools is on the higher side but appropriate for a server covering account management, content analysis, publishing, and search across multiple platforms. It supports the domain without unnecessary bloat.
Coverage is broad: account connection, content ingestion (analyze), metrics (get_account_metrics, get_follower_history), publishing (publish_post, get_publish_options), and search. Minor gaps like scheduling or account disconnection are absent but not critical.