Publish and schedule social posts, upload media, and review analytics through OAuth.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Analyze a project for audience, positioning, differentiators, content pillars, and risks.
Optional team ID or slug. Ignored when using a team-scoped API key.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Analyze a project for audience, positioning, differentiators, content pillars, and risks.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Optional team ID or slug. Ignored when using a team-scoped API key. |
| projectId* | string |
{
"type": "object",
"required": [
"projectId"
],
"properties": {
"team_id": {
"type": "string",
"description": "Optional team ID or slug. Ignored when using a team-scoped API key."
},
"projectId": {
"type": "string"
}
}
}Approve a scheduled post that is pending approval. Once approved, it will be published at the scheduled time.
| Argument | Type | Description |
|---|---|---|
| postId* | string | The scheduled post ID to approve |
| comment | string | Optional approval comment |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
{
"type": "object",
"required": [
"postId"
],
"properties": {
"postId": {
"type": "string",
"description": "The scheduled post ID to approve"
},
"comment": {
"type": "string",
"description": "Optional approval comment"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
}
}
}Approve all pending items in an autopilot plan, or approve/reject individual items. After approval, use autopilot_execute_plan to schedule the approved posts.
| Argument | Type | Description |
|---|---|---|
| action | string | Action for individual item (default: approve) |
| itemId | string | Individual item ID to approve or reject |
| planId | string | Plan ID to approve (approves all pending items) |
| feedback | string | Feedback when rejecting an item |
{
"type": "object",
"properties": {
"action": {
"enum": [
"approve",
"reject"
],
"type": "string",
"description": "Action for individual item (default: approve)"
},
"itemId": {
"type": "string",
"description": "Individual item ID to approve or reject"
},
"planId": {
"type": "string",
"description": "Plan ID to approve (approves all pending items)"
},
"feedback": {
"type": "string",
"description": "Feedback when rejecting an item"
}
}
}Schedule all approved posts in an autopilot plan. Posts are spaced out over time and scheduled via the standard publishing pipeline.
| Argument | Type | Description |
|---|---|---|
| planId* | string | Plan ID to execute |
{
"type": "object",
"required": [
"planId"
],
"properties": {
"planId": {
"type": "string",
"description": "Plan ID to execute"
}
}
}Generate a weekly content plan for an autopilot goal. Chains 5 AI agents: Strategy Planner -> Content Ideation -> Calendar Optimizer -> Multi-Format Composer -> Variant Repurposer. Returns a plan with individual post items for review.
| Argument | Type | Description |
|---|---|---|
| goalId* | string | The autopilot goal ID to generate a plan for |
| weekNumber | number | Specific week number to generate (optional, auto-increments) |
{
"type": "object",
"required": [
"goalId"
],
"properties": {
"goalId": {
"type": "string",
"description": "The autopilot goal ID to generate a plan for"
},
"weekNumber": {
"type": "number",
"description": "Specific week number to generate (optional, auto-increments)"
}
}
}Get progress metrics for an autopilot goal — weeks planned, posts approved, scheduled, published.
| Argument | Type | Description |
|---|---|---|
| goalId* | string | Goal ID to check progress for |
{
"type": "object",
"required": [
"goalId"
],
"properties": {
"goalId": {
"type": "string",
"description": "Goal ID to check progress for"
}
}
}List all autopilot goals for the current user.
No arguments.
{
"type": "object",
"properties": {}
}Set a social media goal for the AI autopilot to work toward. The autopilot will use AI agents to plan content, generate posts, and schedule them. Example goals: 'Grow LinkedIn followers by 20%', 'Post 5x/week on Instagram about AI'.
| Argument | Type | Description |
|---|---|---|
| goalText* | string | The social media goal to achieve |
| platforms* | array | Target platforms (e.g. ['twitter', 'linkedin', 'instagram']) |
| durationWeeks | number | How many weeks to run the autopilot (1-52, default 4) |
| targetMetrics | object | Target metrics (e.g. { followers: 1000, engagement_rate: 0.05 }) |
{
"type": "object",
"required": [
"goalText",
"platforms"
],
"properties": {
"goalText": {
"type": "string",
"description": "The social media goal to achieve"
},
"platforms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target platforms (e.g. ['twitter', 'linkedin', 'instagram'])"
},
"durationWeeks": {
"type": "number",
"description": "How many weeks to run the autopilot (1-52, default 4)"
},
"targetMetrics": {
"type": "object",
"description": "Target metrics (e.g. { followers: 1000, engagement_rate: 0.05 })",
"additionalProperties": true
}
}
}Schedule multiple posts at once from CSV content. USE THIS WHEN: • User has a spreadsheet or list of posts to schedule • Planning a content calendar for a month • Migrating content from another tool CSV FORMAT (required columns): • platform: linkedin, instagram, x, tiktok, threads • scheduled_time: ISO 8601 format (e.g., 2024-02-15T10:00:00Z) • text: Post content/caption OPTIONAL COLUMNS: • media_url: Image or video URL • first_comment: First comment to add (Instagram/LinkedIn) • hashtags: Additional hashtags to append PROCESS: 1. First call with validate_only: true to check for errors 2. Review validation report with user 3. Call again with validate_only: false to execute import
| Argument | Type | Description |
|---|---|---|
| filename | string | Optional filename for tracking (default: upload.csv) |
| csv_content* | string | CSV content as a string (include header row) |
| skip_errors | boolean | If true, skip rows with errors and schedule valid rows only |
| validate_only | boolean | If true, only validate without scheduling. Default: true for safety. |
{
"type": "object",
"required": [
"csv_content"
],
"properties": {
"filename": {
"type": "string",
"description": "Optional filename for tracking (default: upload.csv)"
},
"csv_content": {
"type": "string",
"description": "CSV content as a string (include header row)"
},
"skip_errors": {
"type": "boolean",
"description": "If true, skip rows with errors and schedule valid rows only"
},
"validate_only": {
"type": "boolean",
"description": "If true, only validate without scheduling. Default: true for safety."
}
}
}Apply one bulk action to many calendar events at once, including shifts, explicit reschedules, queue moves, cancellations, or assignments.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Calendar event IDs or scheduled post IDs to update. |
| shift | object | |
| action* | string | Bulk action to apply. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| timezone | string | Optional IANA timezone for queue-based moves. |
| applyScope | string | Whether to affect only the selected IDs or their recurrence groups. |
| assigneeId | string | Required for the 'assign' action. |
| scheduledAt | string | Replacement ISO 8601 time for the 'set_time' action. |
| deltaMinutes | number | Compatibility shift amount in minutes. |
Cancel a recurring series and stop future pending occurrences from publishing.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for seriesId. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| seriesId | string | Recurring series parent scheduled post ID. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for seriesId."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"seriesId": {
"type": "string",
"description": "Recurring series parent scheduled post ID."
}
}
}Check the status of an AI media generation job. Returns current status (pending, processing, completed, failed) and result URL when complete.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The AI media job ID to check |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "The AI media job ID to check"
}
}
}Mark a Product Hunt goal as complete or incomplete. REQUIREMENTS: • Must have Product Hunt account connected • Write access requires app whitelisting by Product Hunt
| Argument | Type | Description |
|---|---|---|
| goalId* | string | The ID of the goal to update |
| completed* | boolean | Set to true to mark complete, false to mark incomplete |
{
"type": "object",
"required": [
"goalId",
"completed"
],
"properties": {
"goalId": {
"type": "string",
"description": "The ID of the goal to update"
},
"completed": {
"type": "boolean",
"description": "Set to true to mark complete, false to mark incomplete"
}
}
}Get the credential setup schema to connect Bluesky using API key or token credentials.
No arguments.
{
"type": "object",
"properties": {}
}Initiate authentication flow for a connector. For OAuth2 connectors, returns an authorization URL. For API key connectors, stores the provided key. For webhook connectors, registers the webhook URL.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | API key (for api_key auth strategy connectors) |
| botToken | string | Bot token (for bot_token auth strategy connectors like Telegram, Discord) |
| webhookUrl | string | Webhook URL (for webhook auth strategy connectors) |
| connectorId* | string | Connector ID to connect |
{
"type": "object",
"required": [
"connectorId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "API key (for api_key auth strategy connectors)"
},
"botToken": {
"type": "string",
"description": "Bot token (for bot_token auth strategy connectors like Telegram, Discord)"
},
"webhookUrl": {
"type": "string",
"description": "Webhook URL (for webhook auth strategy connectors)"
},
"connectorId": {
"type": "string",
"description": "Connector ID to connect"
}
}
}Get the credential setup schema to connect DEV.to using API key or token credentials.
No arguments.
{
"type": "object",
"properties": {}
}Get the webhook setup schema to connect Discord.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your Dribbble account.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your Facebook account.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your Google My Business account.
No arguments.
{
"type": "object",
"properties": {}
}Get the credential setup schema to connect Hashnode using API key or token credentials.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your Instagram account.
No arguments.
{
"type": "object",
"properties": {}
}Get the credential setup schema to connect Lemmy using API key or token credentials.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your LinkedIn account.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your LinkedIn Page account.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your Mastodon account.
No arguments.
{
"type": "object",
"properties": {}
}Get the custom connection setup instructions for Nostr. Note: This is an unofficial connector and may change without notice.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your Pinterest account.
No arguments.
{
"type": "object",
"properties": {}
}Connect a platform dynamically by platform ID. Returns OAuth URL, webhook setup details, or credential form contract depending on the platform auth method.
| Argument | Type | Description |
|---|---|---|
| platform* | string | Platform ID to connect |
{
"type": "object",
"required": [
"platform"
],
"properties": {
"platform": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string",
"description": "Platform ID to connect"
}
}
}Get the OAuth URL to connect your Product Hunt account.
No arguments.
{
"type": "object",
"properties": {}
}Get the webhook setup schema to connect Slack.
No arguments.
{
"type": "object",
"properties": {}
}Get the credential setup schema to connect Telegram using API key or token credentials.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your Threads account.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your TikTok account.
No arguments.
{
"type": "object",
"properties": {}
}Get the credential setup schema to connect Whop using API key or token credentials. Note: This is an unofficial connector and may change without notice.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your X account.
No arguments.
{
"type": "object",
"properties": {}
}Get the OAuth URL to connect your YouTube account.
No arguments.
{
"type": "object",
"properties": {}
}Create a new advertising campaign on a connected ad platform. Supports campaign creation across Meta Ads, Google Ads, LinkedIn Ads, TikTok Ads, Pinterest Ads, and all other connected ad platforms. The AI Campaign Builder agent can help design optimal campaign structures.
| Argument | Type | Description |
|---|---|---|
| name* | string | Campaign name |
| endDate | string | Campaign end date (optional) |
| objective* | string | Campaign objective |
| startDate | string | Campaign start date (ISO 8601) |
| targeting | object | Targeting configuration (platform-specific) |
| budgetType* | string | Budget type |
| adAccountId* | string | Ad account ID |
| budgetAmount* | number | Budget amount in account currency |
Create an ad creative (image, video, carousel, or text ad). The Creative Asset agent can help generate ad visuals and copy.
| Argument | Type | Description |
|---|---|---|
| body* | string | Ad body text |
| name | string | Creative name |
| adSetId | string | Ad set ID (optional) |
| headline* | string | Ad headline |
| mediaUrls | array | Media URLs for the creative |
| campaignId* | string | Campaign ID |
| landingUrl | string | Landing page URL |
| callToAction | string | Call to action button text |
| creativeType* | string | Creative type |
Create a brand voice profile to guide AI content generation. Configurable fields: • tone: Overall tone (professional, casual, energetic, witty, etc.) • personality: Brand personality description • writingStyle: Writing style guidelines • doRules: Array of things the brand voice SHOULD do • dontRules: Array of things the brand voice should NEVER do • examplePosts: Example posts in this brand voice • approvedHashtags: Preferred hashtags to prioritize • bannedWords: Words to never use in content • keyPhrases: Key phrases to incorporate naturally
| Argument | Type | Description |
|---|---|---|
| name* | string | Name for this brand voice profile |
| tone | string | Overall tone (e.g., professional, casual, energetic) |
| doRules | array | Things the brand voice SHOULD do |
| dontRules | array | Things the brand voice should NEVER do |
| isDefault | boolean | Set as the default brand voice |
| keyPhrases | array | Key phrases to incorporate |
| bannedWords | array | Words to never use |
| personality | string | Brand personality description |
Create a new maker goal on Product Hunt. REQUIREMENTS: • Must have Product Hunt account connected • Write access requires app whitelisting by Product Hunt • Goal title limited to 280 characters If write access is not available, you'll receive an error with instructions to request whitelisting.
| Argument | Type | Description |
|---|---|---|
| dueAt | string | Optional due date in ISO 8601 format |
| title* | string | Goal title (max 280 characters) |
{
"type": "object",
"required": [
"title"
],
"properties": {
"dueAt": {
"type": "string",
"format": "date-time",
"description": "Optional due date in ISO 8601 format"
},
"title": {
"type": "string",
"description": "Goal title (max 280 characters)"
}
}
}Save content to your library as a draft, template, or evergreen content for reuse. Alias for save_to_library.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tags for organization |
| text* | string | The content text/caption |
| type | string | Content type (default: draft) |
| title* | string | Title for the saved content |
| category | string | Category for organization |
| mediaUrl | string | Media URL (image or video) |
| targetPlatforms | array | Which platforms this content is designed for |
| evergreenEnabled | boolean | Enable evergreen auto-republishing |
| evergreenIntervalDays | number | Days between evergreen republishes |
{
"type": "object",
"required": [
"title",
"text"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags for organization"
},
"text": {
"type": "string",
"description": "The content text/caption"
},
"type": {
"enum": [
"draft",
"template",
"evergreen"
],
"type": "string",
"description": "Content type (default: draft)"
},
"title": {
"type": "string",
"description": "Title for the saved content"
},
"category": {
"type": "string",
"description": "Category for organization"
},
"mediaUrl": {
"type": "string",
"description": "Media URL (image or video)"
},
"targetPlatforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Which platforms this content is designed for"
},
"evergreenEnabled": {
"type": "boolean",
"description": "Enable evergreen auto-republishing"
},
"evergreenIntervalDays": {
"type": "number",
"description": "Days between evergreen republishes"
}
}
}Create a Projects workspace for a product, app, or codebase.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| tags | array | |
| sources | array | |
| team_id | string | Optional team ID or slug. Ignored when using a team-scoped API key. |
| category | string | |
| description | string |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"sources": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"fileName": {
"type": "string"
},
"mimeType": {
"type": "string"
}
},
"additionalProperties": true
}
]
}
},
"team_id": {
"type": "string",
"description": "Optional team ID or slug. Ignored when using a team-scoped API key."
},
"category": {
"type": "string"
},
"description": {
"type": "string"
}
}
}Create a recurring analytics report that's generated and delivered automatically.
| Argument | Type | Description |
|---|---|---|
| name* | string | Report name |
| schedule* | string | Report frequency |
| platforms | array | Platforms to include |
| reportType* | string | Report type |
| deliveryMethod | string | How to deliver the report |
| deliveryTarget | string | Email address, Slack channel, or webhook URL |
{
"type": "object",
"required": [
"name",
"reportType",
"schedule"
],
"properties": {
"name": {
"type": "string",
"description": "Report name"
},
"schedule": {
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string",
"description": "Report frequency"
},
"platforms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Platforms to include"
},
"reportType": {
"enum": [
"performance_overview",
"channel_comparison",
"content_analysis",
"ad_performance",
"attribution",
"executive_summary"
],
"type": "string",
"description": "Report type"
},
"deliveryMethod": {
"enum": [
"email",
"slack",
"webhook"
],
"type": "string",
"description": "How to deliver the report"
},
"deliveryTarget": {
"type": "string",
"description": "Email address, Slack channel, or webhook URL"
}
}
}Create a browser upload link for media files. ALWAYS use this when the user shares an image or video in chat — their file is local and cannot be passed directly to publish_content. WORKFLOW: 1. Call this tool to get an uploadUrl 2. Give the user the link to open in their browser and upload their file 3. After upload, call get_upload_session to get the public media URL(s) 4. Use the returned URL with publish_content or schedule_content Supports up to 20 files per session. Expires in 15 minutes.
| Argument | Type | Description |
|---|---|---|
| mediaType | string | Optional hint for expected media type |
{
"type": "object",
"properties": {
"mediaType": {
"enum": [
"image",
"video"
],
"type": "string",
"description": "Optional hint for expected media type"
}
}
}Create a new automation workflow. Workflows consist of a trigger and a sequence of steps. Trigger types: • manual - Run on demand • schedule - Cron-based schedule • event - Triggered by SendIt events (post published, mention detected, etc.) • webhook - Triggered by external webhook • connector_event - Triggered by connector-specific events Step types: • connector_action - Execute a connector operation • connector_operation - Alias of connector_action • agent_invoke - Run an AI agent • condition - Conditional control step (skip subsequent steps) • delay - Wait for a duration • http_request - Outbound HTTP request • transform - Transform data between steps • notify - Send notification (email, Slack, etc.)
| Argument | Type | Description |
|---|---|---|
| name* | string | Workflow name |
| steps* | array | Workflow steps in execution order |
| active | boolean | Activate workflow immediately (default: false) |
| description | string | Workflow description |
| triggerType* | string | Trigger type |
| triggerConfig* | object | Trigger configuration (cron expression, event type, etc.) |
{
"type": "object",
"required": [
"name",
"triggerType",
"triggerConfig",
"steps"
],
"properties": {
"name": {
"type": "string",
"description": "Workflow name"
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"name",
"config"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"enum": [
"connector_action",
"connector_operation",
"agent_invoke",
"condition",
"delay",
"http_request",
"transform",
"notify"
],
"type": "string"
},
"config": {
"type": "object",
"additionalProperties": true
},
"onError": {
"enum": [
"stop",
"skip",
"retry"
],
"type": "string"
}
}
},
"description": "Workflow steps in execution order"
},
"active": {
"type": "boolean",
"description": "Activate workflow immediately (default: false)"
},
"description": {
"type": "string",
"description": "Workflow description"
},
"triggerType": {
"enum": [
"manual",
"schedule",
"event",
"webhook",
"connector_event"
],
"type": "string",
"description": "Trigger type"
},
"triggerConfig": {
"type": "object",
"description": "Trigger configuration (cron expression, event type, etc.)",
"additionalProperties": true
}
}
}Score and critique post content with AI-powered suggestions. Returns a quality score (0-100), breakdown, and improvement tips.
| Argument | Type | Description |
|---|---|---|
| text* | string | Post text to critique (required) |
| mediaUrl | string | Optional media URL for media score |
| platforms* | array | Target platforms for scoring context (required) |
{
"type": "object",
"required": [
"platforms",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Post text to critique (required)"
},
"mediaUrl": {
"type": "string",
"description": "Optional media URL for media score"
},
"platforms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target platforms for scoring context (required)"
}
}
}Delete a content library item.
| Argument | Type | Description |
|---|---|---|
| id* | string | The content library item ID to delete |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The content library item ID to delete"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
}
}
}Delete a published post from a platform. Supports: X, Facebook, LinkedIn, Threads, YouTube, Pinterest, Bluesky, Mastodon, Telegram. Provide the post ID (database ID returned when published through SendIt), the platform post ID, or the post URL.
| Argument | Type | Description |
|---|---|---|
| postId* | string | Post identifier: database ID, platform post ID, or post URL |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| platform* | string | Platform to delete from |
{
"type": "object",
"required": [
"platform",
"postId"
],
"properties": {
"postId": {
"type": "string",
"description": "Post identifier: database ID, platform post ID, or post URL"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"platform": {
"enum": [
"x",
"facebook",
"linkedin",
"linkedin-page",
"threads",
"youtube",
"pinterest",
"bluesky",
"mastodon",
"telegram"
],
"type": "string",
"description": "Platform to delete from"
}
}
}Cancel a scheduled post before it's published.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| scheduleId* | string | Schedule ID to delete |
{
"type": "object",
"required": [
"scheduleId"
],
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"scheduleId": {
"type": "string",
"description": "Schedule ID to delete"
}
}
}Delete a workflow permanently.
| Argument | Type | Description |
|---|---|---|
| workflowId* | string | Workflow ID |
{
"type": "object",
"required": [
"workflowId"
],
"properties": {
"workflowId": {
"type": "string",
"description": "Workflow ID"
}
}
}Disconnect and revoke credentials for a connector.
| Argument | Type | Description |
|---|---|---|
| connectorId* | string | Connector ID to disconnect |
| credentialId | string | Specific credential ID to revoke (optional) |
{
"type": "object",
"required": [
"connectorId"
],
"properties": {
"connectorId": {
"type": "string",
"description": "Connector ID to disconnect"
},
"credentialId": {
"type": "string",
"description": "Specific credential ID to revoke (optional)"
}
}
}Generate an AI-powered reply draft for a social mention. Returns a draft with tone and safety flags.
| Argument | Type | Description |
|---|---|---|
| tone | string | Reply tone: friendly, professional, casual |
| max_length | number | Maximum reply length in characters (default: 280) |
| mention_id* | string | The ID of the mention to reply to (required) |
{
"type": "object",
"required": [
"mention_id"
],
"properties": {
"tone": {
"type": "string",
"description": "Reply tone: friendly, professional, casual"
},
"max_length": {
"type": "number",
"description": "Maximum reply length in characters (default: 280)"
},
"mention_id": {
"type": "string",
"description": "The ID of the mention to reply to (required)"
}
}
}Create a new scheduled post by duplicating an existing scheduled post. If no time is supplied, SendIt shifts it forward automatically.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for postId. |
| postId | string | Scheduled post ID. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| scheduleId | string | Compatibility alias for postId. |
| scheduledAt | string | Optional ISO 8601 time for the duplicated post. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for postId."
},
"postId": {
"type": "string",
"description": "Scheduled post ID."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"scheduleId": {
"type": "string",
"description": "Compatibility alias for postId."
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "Optional ISO 8601 time for the duplicated post."
}
}
}Edit a published post on a supported platform. Updates the text/caption of an already published post. SUPPORTED: YouTube (title/description/tags), LinkedIn, Facebook, Mastodon, Telegram, Bluesky NOT SUPPORTED: X, Threads, Instagram, Pinterest, TikTok Requires the published post ID returned when the post was originally published through SendIt.
| Argument | Type | Description |
|---|---|---|
| tags | array | New tags (YouTube only) |
| text | string | New text/caption/commentary for the post |
| title | string | New title (YouTube only) |
| postId* | string | Published post ID (database ID returned when the post was published) |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| description | string | New description (YouTube only) |
{
"type": "object",
"required": [
"postId"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "New tags (YouTube only)"
},
"text": {
"type": "string",
"description": "New text/caption/commentary for the post"
},
"title": {
"type": "string",
"description": "New title (YouTube only)"
},
"postId": {
"type": "string",
"description": "Published post ID (database ID returned when the post was published)"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"description": {
"type": "string",
"description": "New description (YouTube only)"
}
}
}Edit a pending scheduled post. Supports text, media, platform, timing, approval-scope, and publish-now updates.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for postId. |
| text | string | Updated post text. |
| postId | string | Scheduled post ID. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| mediaUrl | string | Replacement public HTTPS media URL, or an empty value to remove media. |
| timezone | string | Optional IANA timezone for the updated schedule. |
| mediaUrls | array | Replacement public HTTPS media URLs. |
| platforms | array | Optional replacement platform list. |
| applyScope | string | Whether to apply the edit to only this post or this and future occurrences. |
| publishNow | boolean |
Escalate a social conversation to a connected support platform (Zendesk, Intercom, etc.). Creates a support ticket from the conversation context.
| Argument | Type | Description |
|---|---|---|
| note | string | Internal note for the support team |
| priority | string | |
| conversationId* | string | Conversation to escalate |
| targetConnector* | string | Support platform to escalate to |
{
"type": "object",
"required": [
"conversationId",
"targetConnector"
],
"properties": {
"note": {
"type": "string",
"description": "Internal note for the support team"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
],
"type": "string"
},
"conversationId": {
"type": "string",
"description": "Conversation to escalate"
},
"targetConnector": {
"enum": [
"zendesk",
"intercom",
"hubspot",
"salesforce"
],
"type": "string",
"description": "Support platform to escalate to"
}
}
}Execute a specific operation on a connected connector. Use get_connector_capabilities to discover available operations. Operations include read/write actions specific to each connector.
| Argument | Type | Description |
|---|---|---|
| data | object | Operation-specific input data |
| operation* | string | Operation name (e.g., 'publish', 'read_posts', 'campaigns.list') |
| connectorId* | string | Connector ID |
| idempotencyKey | string | Idempotency key to prevent duplicate operations (optional) |
{
"type": "object",
"required": [
"connectorId",
"operation"
],
"properties": {
"data": {
"type": "object",
"description": "Operation-specific input data",
"additionalProperties": true
},
"operation": {
"type": "string",
"description": "Operation name (e.g., 'publish', 'read_posts', 'campaigns.list')"
},
"connectorId": {
"type": "string",
"description": "Connector ID"
},
"idempotencyKey": {
"type": "string",
"description": "Idempotency key to prevent duplicate operations (optional)"
}
}
}Generate AI images or videos using approved media providers. Supported providers: - heygen-mcp: HeyGen Direct API or MCP video/avatar generation - codex-oauth-image: Codex OAuth image generation for gpt-image-2 Returns a job ID that can be polled for status.
| Argument | Type | Description |
|---|---|---|
| prompt* | string | Creative prompt for generation |
| provider* | string | AI media provider |
| media_type | string | Type of media to generate (default: video) |
| parameters | object | Provider-specific parameters (e.g. duration, resolution, style, aspectRatio) |
{
"type": "object",
"required": [
"provider",
"prompt"
],
"properties": {
"prompt": {
"type": "string",
"description": "Creative prompt for generation"
},
"provider": {
"enum": [
"heygen-mcp",
"codex-oauth-image"
],
"type": "string",
"description": "AI media provider"
},
"media_type": {
"enum": [
"image",
"video"
],
"type": "string",
"description": "Type of media to generate (default: video)"
},
"parameters": {
"type": "object",
"description": "Provider-specific parameters (e.g. duration, resolution, style, aspectRatio)"
}
}
}Generate AI-powered platform-optimized content without publishing. Uses AI to create platform-specific text, hashtags, and titles from a prompt or media URL. Respects brand voice profiles if configured. Returns generated content variants for each target platform. Use publish_content to publish the generated content, or publish_ai to generate and publish in one step.
| Argument | Type | Description |
|---|---|---|
| prompt | string | Creative prompt or topic for content generation |
| hashtags | string | Hashtag mode |
| mediaUrl | string | Media URL to analyze for content generation |
| strictAi | boolean | If true, fail instead of using fallback templates when AI is unavailable |
| platforms* | array | Target platforms to generate content for |
| generation | object | Generation parameters for tone, style, and CTA |
| contentOverrides | object | Manual overrides for generated content |
{
"type": "object",
"required": [
"platforms"
],
"properties": {
"prompt": {
"type": "string",
"description": "Creative prompt or topic for content generation"
},
"hashtags": {
"enum": [
"on",
"off",
"platform_auto"
],
"type": "string",
"description": "Hashtag mode"
},
"mediaUrl": {
"type": "string",
"description": "Media URL to analyze for content generation"
},
"strictAi": {
"type": "boolean",
"description": "If true, fail instead of using fallback templates when AI is unavailable"
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Target platforms to generate content for"
},
"generation": {
"type": "object",
"properties": {
"tone": {
"enum": [
"professional",
"casual",
"energetic",
"informative"
],
"type": "string",
"description": "Content tone"
},
"style": {
"enum": [
"storytelling",
"promotional",
"educational",
"entertaining"
],
"type": "string",
"description": "Content style"
},
"callToAction": {
"type": "string",
"description": "Call to action to include"
}
},
"description": "Generation parameters for tone, style, and CTA"
},
"contentOverrides": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Override generated title"
},
"caption": {
"type": "string",
"description": "Override generated caption"
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Override generated hashtags"
}
},
"description": "Manual overrides for generated content"
}
}
}Generate multi-variant AI content with quality scoring for multiple platforms. Returns the best variant plus alternatives.
| Argument | Type | Description |
|---|---|---|
| prompt* | string | Content topic or instructions (required) |
| platforms* | array | Target platforms (required) |
| generation | object | Generation parameters (tone, style, CTA) |
| variant_count | number | Number of variants to generate (1-5, default: 3) |
{
"type": "object",
"required": [
"platforms",
"prompt"
],
"properties": {
"prompt": {
"type": "string",
"description": "Content topic or instructions (required)"
},
"platforms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target platforms (required)"
},
"generation": {
"type": "object",
"properties": {
"tone": {
"type": "string"
},
"style": {
"type": "string"
},
"callToAction": {
"type": "string"
}
},
"description": "Generation parameters (tone, style, CTA)"
},
"variant_count": {
"type": "number",
"description": "Number of variants to generate (1-5, default: 3)"
}
}
}Generate project-local brand voice, positioning, audience, and social content strategy.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Optional team ID or slug. Ignored when using a team-scoped API key. |
| projectId* | string |
{
"type": "object",
"required": [
"projectId"
],
"properties": {
"team_id": {
"type": "string",
"description": "Optional team ID or slug. Ignored when using a team-scoped API key."
},
"projectId": {
"type": "string"
}
}
}Get performance metrics for campaigns, ad sets, or creatives. Returns impressions, clicks, spend, conversions, CTR, CPC, CPM, ROAS, and custom metrics. Supports date range filtering and breakdown by day.
| Argument | Type | Description |
|---|---|---|
| endDate | string | End date (YYYY-MM-DD) |
| metrics | array | Specific metrics to retrieve (optional, returns all by default) |
| entityId* | string | Entity ID |
| breakdown | string | Breakdown dimension |
| startDate | string | Start date (YYYY-MM-DD) |
| entityType* | string | Entity type to get metrics for |
{
"type": "object",
"required": [
"entityType",
"entityId"
],
"properties": {
"endDate": {
"type": "string",
"format": "date",
"description": "End date (YYYY-MM-DD)"
},
"metrics": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific metrics to retrieve (optional, returns all by default)"
},
"entityId": {
"type": "string",
"description": "Entity ID"
},
"breakdown": {
"enum": [
"none",
"day",
"week",
"month",
"platform"
],
"type": "string",
"description": "Breakdown dimension"
},
"startDate": {
"type": "string",
"format": "date",
"description": "Start date (YYYY-MM-DD)"
},
"entityType": {
"enum": [
"account",
"campaign",
"ad_set",
"creative"
],
"type": "string",
"description": "Entity type to get metrics for"
}
}
}Get the active policies/guardrails for an agent.
| Argument | Type | Description |
|---|---|---|
| agentId* | string | Agent to get policies for |
{
"type": "object",
"required": [
"agentId"
],
"properties": {
"agentId": {
"enum": [
"strategy_planner",
"content_ideation",
"multi_format_composer",
"creative_asset",
"variant_repurposer",
"calendar_optimizer",
"listening_analyst",
"inbox_reply",
"campaign_builder",
"budget_optimizer",
"experimentation",
"executive_insights"
],
"type": "string",
"description": "Agent to get policies for"
}
}
}Get the details and output of a specific agent run.
| Argument | Type | Description |
|---|---|---|
| runId* | string | Agent run ID |
{
"type": "object",
"required": [
"runId"
],
"properties": {
"runId": {
"type": "string",
"description": "Agent run ID"
}
}
}Get engagement analytics for a platform. Facebook and TikTok can include account-wide posts not published through SendIt; unresolved TikTok inbox-draft deliveries may appear as placeholders until SendIt can link them.
| Argument | Type | Description |
|---|---|---|
| limit | number | Optional maximum posts to return. Facebook feed scanning is capped at 1,000 posts. |
| endDate | string | Optional end date (YYYY-MM-DD). |
| team_id | string | Team ID to get team analytics. If omitted, gets personal analytics. |
| platform* | string | Platform to get analytics for |
| startDate | string | Optional start date (YYYY-MM-DD). For Facebook, omit this to scan up to 2 years of Page feed history. |
{
"type": "object",
"required": [
"platform"
],
"properties": {
"limit": {
"type": "number",
"maximum": 1000,
"minimum": 1,
"description": "Optional maximum posts to return. Facebook feed scanning is capped at 1,000 posts."
},
"endDate": {
"type": "string",
"format": "date",
"description": "Optional end date (YYYY-MM-DD)."
},
"team_id": {
"type": "string",
"description": "Team ID to get team analytics. If omitted, gets personal analytics."
},
"platform": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string",
"description": "Platform to get analytics for"
},
"startDate": {
"type": "string",
"format": "date",
"description": "Optional start date (YYYY-MM-DD). For Facebook, omit this to scan up to 2 years of Page feed history."
}
}
}Get recent anomaly alerts detected across metrics. Includes sudden drops/spikes in engagement, unusual spend patterns, and content performance outliers.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max results (default 20) |
| severity | string | Filter by severity (optional) |
| dismissed | boolean | Include dismissed alerts |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max results (default 20)"
},
"severity": {
"enum": [
"info",
"warning",
"critical"
],
"type": "string",
"description": "Filter by severity (optional)"
},
"dismissed": {
"type": "boolean",
"description": "Include dismissed alerts"
}
}
}List approval comments for one scheduled post in team approval scope.
| Argument | Type | Description |
|---|---|---|
| postId | string | Scheduled post ID to load comments for. |
| post_id | string | Compatibility alias for postId. |
| team_id* | string | Team ID is required because approval comments are only available in team scope. |
{
"type": "object",
"required": [
"team_id"
],
"properties": {
"postId": {
"type": "string",
"description": "Scheduled post ID to load comments for."
},
"post_id": {
"type": "string",
"description": "Compatibility alias for postId."
},
"team_id": {
"type": "string",
"description": "Team ID is required because approval comments are only available in team scope."
}
}
}Generate an attribution report showing how channels contribute to conversions. Models: • first_touch - All credit to first interaction • last_touch - All credit to last interaction • linear - Equal credit across all touchpoints • time_decay - More credit to recent touchpoints • position_based - 40% first, 40% last, 20% middle • data_driven - ML-based attribution
| Argument | Type | Description |
|---|---|---|
| model* | string | Attribution model |
| endDate* | string | |
| startDate* | string | |
| conversionType | string | Filter by conversion type (optional) |
{
"type": "object",
"required": [
"model",
"startDate",
"endDate"
],
"properties": {
"model": {
"enum": [
"first_touch",
"last_touch",
"linear",
"time_decay",
"position_based",
"data_driven"
],
"type": "string",
"description": "Attribution model"
},
"endDate": {
"type": "string",
"format": "date"
},
"startDate": {
"type": "string",
"format": "date"
},
"conversionType": {
"type": "string",
"description": "Filter by conversion type (optional)"
}
}
}Retrieve audit log entries for your account. Shows a timestamped trail of all actions performed: publishes, schedules, account connections, content library changes, etc. Filter by action type, resource type, or date range.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max entries to return (default 50, max 200) |
| action | string | Filter by action (e.g. 'post.published', 'account.connected') |
| end_date | string | End date (YYYY-MM-DD) |
| start_date | string | Start date (YYYY-MM-DD) |
| resource_type | string | Filter by resource type (e.g. 'post', 'account', 'keyword') |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max entries to return (default 50, max 200)"
},
"action": {
"type": "string",
"description": "Filter by action (e.g. 'post.published', 'account.connected')"
},
"end_date": {
"type": "string",
"format": "date",
"description": "End date (YYYY-MM-DD)"
},
"start_date": {
"type": "string",
"format": "date",
"description": "Start date (YYYY-MM-DD)"
},
"resource_type": {
"type": "string",
"description": "Filter by resource type (e.g. 'post', 'account', 'keyword')"
}
}
}Compare your performance against industry benchmarks. Returns how your engagement rates, growth, and content performance compare to similar accounts in your industry.
| Argument | Type | Description |
|---|---|---|
| metric* | string | Metric to compare |
| industry | string | Industry vertical for comparison |
| platform* | string | Platform to benchmark |
{
"type": "object",
"required": [
"platform",
"metric"
],
"properties": {
"metric": {
"enum": [
"engagement_rate",
"follower_growth",
"click_through_rate",
"conversion_rate",
"cost_per_click"
],
"type": "string",
"description": "Metric to compare"
},
"industry": {
"type": "string",
"description": "Industry vertical for comparison"
},
"platform": {
"type": "string",
"description": "Platform to benchmark"
}
}
}Get the optimal posting times for a platform based on your historical engagement data. Returns top time slots ranked by engagement score. Falls back to industry defaults when insufficient personal data exists.
| Argument | Type | Description |
|---|---|---|
| limit | number | Number of time slots to return (default 5, max 20) |
| platform* | string | Platform to get best times for |
{
"type": "object",
"required": [
"platform"
],
"properties": {
"limit": {
"type": "number",
"description": "Number of time slots to return (default 5, max 20)"
},
"platform": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string",
"description": "Platform to get best times for"
}
}
}Detect open days in the publishing calendar and return gap metadata for planning.
| Argument | Type | Description |
|---|---|---|
| end* | string | Range end date in YYYY-MM-DD format. |
| start* | string | Range start date in YYYY-MM-DD format. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| platforms | array | Optional platform subset to inspect. |
{
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"format": "date",
"description": "Range end date in YYYY-MM-DD format."
},
"start": {
"type": "string",
"format": "date",
"description": "Range start date in YYYY-MM-DD format."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Optional platform subset to inspect."
}
}
}Return top recommended recurring posting slots from historical performance data.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| timezone | string | Optional IANA timezone for the recommendation labels. |
| platforms | array | Optional platform subset to optimize for. |
{
"type": "object",
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone for the recommendation labels."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Optional platform subset to optimize for."
}
}
}Get detailed capabilities and operations for a specific connector. Returns supported operations, auth requirements, rate limits, and constraints.
| Argument | Type | Description |
|---|---|---|
| connectorId* | string | Connector ID (e.g., 'linkedin', 'meta_ads', 'slack') |
{
"type": "object",
"required": [
"connectorId"
],
"properties": {
"connectorId": {
"type": "string",
"description": "Connector ID (e.g., 'linkedin', 'meta_ads', 'slack')"
}
}
}Get health status and SLO metrics for a connector.
| Argument | Type | Description |
|---|---|---|
| connectorId* | string | Connector ID |
{
"type": "object",
"required": [
"connectorId"
],
"properties": {
"connectorId": {
"type": "string",
"description": "Connector ID"
}
}
}Get full conversation thread with all messages.
| Argument | Type | Description |
|---|---|---|
| conversationId* | string | Conversation ID |
{
"type": "object",
"required": [
"conversationId"
],
"properties": {
"conversationId": {
"type": "string",
"description": "Conversation ID"
}
}
}Get a summary of the unified inbox: total conversations, unread count, sentiment breakdown, and response time metrics.
| Argument | Type | Description |
|---|---|---|
| timeRange | string | Time range for summary metrics |
{
"type": "object",
"properties": {
"timeRange": {
"enum": [
"24h",
"7d",
"30d"
],
"type": "string",
"description": "Time range for summary metrics"
}
}
}Get a specific content library item by ID.
| Argument | Type | Description |
|---|---|---|
| id* | string | The content library item ID |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The content library item ID"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
}
}
}Get detailed content requirements for a platform. Returns: Character limits, media specifications, rate limits, and special notes. Call this when you need specifics like exact character counts, file size limits, or supported formats. The publish_content description has a quick reference, but this tool provides complete details.
| Argument | Type | Description |
|---|---|---|
| platform* | string | Platform to get requirements for |
{
"type": "object",
"required": [
"platform"
],
"properties": {
"platform": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string",
"description": "Platform to get requirements for"
}
}
}Get the JSON schema contract for content.platformSettings.<platformId>, including platform-specific publish options, validation-only gates, and supported per-platform content overrides.
| Argument | Type | Description |
|---|---|---|
| platform* | string | Platform ID to inspect |
{
"type": "object",
"required": [
"platform"
],
"properties": {
"platform": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string",
"description": "Platform ID to inspect"
}
}
}Fetch drilldown analytics for one published post, including per-snapshot metrics and campaign context.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for postId. |
| postId | string | Published post ID to inspect. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| publishedPostId | string | Compatibility alias for postId. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for postId."
},
"postId": {
"type": "string",
"description": "Published post ID to inspect."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"publishedPostId": {
"type": "string",
"description": "Compatibility alias for postId."
}
}
}Get analytics for your products on Product Hunt. Returns: • Total products, votes, comments, reviews • Number of featured products • Per-product metrics including vote counts and ratings Works with read-only access (no whitelisting required).
| Argument | Type | Description |
|---|---|---|
| limit | number | Maximum products to fetch (default 20) |
| username | string | Product Hunt username (optional, defaults to connected account) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum products to fetch (default 20)"
},
"username": {
"type": "string",
"description": "Product Hunt username (optional, defaults to connected account)"
}
}
}Fetch stored project analysis, strategy, recent generations, and activity.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Optional team ID or slug. Ignored when using a team-scoped API key. |
| projectId* | string |
{
"type": "object",
"required": [
"projectId"
],
"properties": {
"team_id": {
"type": "string",
"description": "Optional team ID or slug. Ignored when using a team-scoped API key."
},
"projectId": {
"type": "string"
}
}
}Fetch one scheduled post with approval, recurrence, retry, and published-link metadata.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for postId. |
| postId | string | Scheduled post ID. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| scheduleId | string | Compatibility alias for postId. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for postId."
},
"postId": {
"type": "string",
"description": "Scheduled post ID."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"scheduleId": {
"type": "string",
"description": "Compatibility alias for postId."
}
}
}List scheduled posts and their current status, including pending, publishing, TikTok draft-delivered, published, failed, or cancelled posts.
| Argument | Type | Description |
|---|---|---|
| limit | number | Optional forward-compatible maximum number of scheduled posts to return. |
| cursor | string | Optional forward-compatible pagination cursor from a previous scheduled-post listing response. |
| status | string | Optional forward-compatible status filter. Legacy handlers may continue returning pending posts only. |
| endDate | string | Optional forward-compatible upper date bound in YYYY-MM-DD format. |
| team_id | string | Team ID to list team's scheduled posts. If omitted, lists personal posts. |
| platform | string | Filter by platform (optional) |
| upcoming | boolean | Optional forward-compatible flag to prefer upcoming scheduled posts. |
| startDate | string | Optional forward-compatible lower date bound in YYYY-MM-DD format. |
Fetch fresh TikTok Content Posting API creator info for the connected account. Use this before rendering TikTok publish settings.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to fetch the team TikTok account. If omitted, uses the personal TikTok account. |
{
"type": "object",
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to fetch the team TikTok account. If omitted, uses the personal TikTok account."
}
}
}Get a cross-platform advertising performance report. Aggregates metrics across all connected ad platforms into a single view. Useful for comparing performance across Meta, Google, LinkedIn, TikTok, etc.
| Argument | Type | Description |
|---|---|---|
| endDate* | string | End date |
| groupBy | string | Group results by dimension |
| startDate* | string | Start date |
{
"type": "object",
"required": [
"startDate",
"endDate"
],
"properties": {
"endDate": {
"type": "string",
"format": "date",
"description": "End date"
},
"groupBy": {
"enum": [
"platform",
"campaign",
"objective",
"day"
],
"type": "string",
"description": "Group results by dimension"
},
"startDate": {
"type": "string",
"format": "date",
"description": "Start date"
}
}
}Get cross-platform analytics combining organic and paid performance. Aggregates metrics across all connected platforms into a single view. Supports time-series breakdowns and platform comparison.
| Argument | Type | Description |
|---|---|---|
| endDate* | string | End date (YYYY-MM-DD) |
| breakdown | string | Breakdown dimension |
| platforms | array | Filter to specific platforms (optional, all if omitted) |
| startDate* | string | Start date (YYYY-MM-DD) |
| includePaid | boolean | Include paid metrics (default true) |
| includeOrganic | boolean | Include organic metrics (default true) |
{
"type": "object",
"required": [
"startDate",
"endDate"
],
"properties": {
"endDate": {
"type": "string",
"format": "date",
"description": "End date (YYYY-MM-DD)"
},
"breakdown": {
"enum": [
"none",
"day",
"week",
"month",
"platform",
"content_type"
],
"type": "string",
"description": "Breakdown dimension"
},
"platforms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to specific platforms (optional, all if omitted)"
},
"startDate": {
"type": "string",
"format": "date",
"description": "Start date (YYYY-MM-DD)"
},
"includePaid": {
"type": "boolean",
"description": "Include paid metrics (default true)"
},
"includeOrganic": {
"type": "boolean",
"description": "Include organic metrics (default true)"
}
}
}Check the status of an upload session and get the media URL(s) once uploaded. Call this after the user clicks the upload link to see if they've completed the upload. Returns: • status: 'pending' - User hasn't uploaded yet • status: 'uploaded' - Upload complete, includes mediaUrl, mediaUrls, fileCount, mediaItems • status: 'expired' - Session expired (15 min limit)
| Argument | Type | Description |
|---|---|---|
| sessionId* | string | The session ID returned from create_upload_session |
{
"type": "object",
"required": [
"sessionId"
],
"properties": {
"sessionId": {
"type": "string",
"description": "The session ID returned from create_upload_session"
}
}
}Get detailed step-by-step execution log for a workflow run.
| Argument | Type | Description |
|---|---|---|
| runId* | string | Workflow run ID |
{
"type": "object",
"required": [
"runId"
],
"properties": {
"runId": {
"type": "string",
"description": "Workflow run ID"
}
}
}Import GitHub, app-store, website, file, or media source context into a project.
| Argument | Type | Description |
|---|---|---|
| sources* | array | |
| team_id | string | Optional team ID or slug. Ignored when using a team-scoped API key. |
| projectId* | string |
{
"type": "object",
"required": [
"projectId",
"sources"
],
"properties": {
"sources": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"team_id": {
"type": "string",
"description": "Optional team ID or slug. Ignored when using a team-scoped API key."
},
"projectId": {
"type": "string"
}
}
}Invoke a specific AI agent with given inputs. The agent will execute within policy constraints and return structured output. All agent runs are logged for audit and traceability.
| Argument | Type | Description |
|---|---|---|
| input* | object | Agent-specific input parameters |
| agentId* | string | Agent to invoke |
| context | object | Additional context (brand voice ID, date range, etc.) |
{
"type": "object",
"required": [
"agentId",
"input"
],
"properties": {
"input": {
"type": "object",
"description": "Agent-specific input parameters",
"additionalProperties": true
},
"agentId": {
"enum": [
"strategy_planner",
"content_ideation",
"multi_format_composer",
"creative_asset",
"variant_repurposer",
"calendar_optimizer",
"listening_analyst",
"inbox_reply",
"campaign_builder",
"budget_optimizer",
"experimentation",
"executive_insights"
],
"type": "string",
"description": "Agent to invoke"
},
"context": {
"type": "object",
"description": "Additional context (brand voice ID, date range, etc.)",
"additionalProperties": true
}
}
}List all connected advertising accounts across platforms. Returns ad accounts from Meta Ads, Google Ads, LinkedIn Ads, TikTok Ads, etc.
| Argument | Type | Description |
|---|---|---|
| platform | string | Filter by ad platform (e.g., 'meta_ads', 'google_ads_search') |
{
"type": "object",
"properties": {
"platform": {
"type": "string",
"description": "Filter by ad platform (e.g., 'meta_ads', 'google_ads_search')"
}
}
}List campaigns for an ad account with status and performance summary.
| Argument | Type | Description |
|---|---|---|
| status | string | Filter by status |
| adAccountId* | string | Ad account ID |
{
"type": "object",
"required": [
"adAccountId"
],
"properties": {
"status": {
"enum": [
"draft",
"active",
"paused",
"completed",
"archived"
],
"type": "string",
"description": "Filter by status"
},
"adAccountId": {
"type": "string",
"description": "Ad account ID"
}
}
}List recent agent runs with status and summary.
| Argument | Type | Description |
|---|---|---|
| limit | number | Maximum results to return (default 20) |
| status | string | Filter by status (optional) |
| agentId | string | Filter by agent (optional) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum results to return (default 20)"
},
"status": {
"enum": [
"pending",
"running",
"completed",
"failed"
],
"type": "string",
"description": "Filter by status (optional)"
},
"agentId": {
"enum": [
"strategy_planner",
"content_ideation",
"multi_format_composer",
"creative_asset",
"variant_repurposer",
"calendar_optimizer",
"listening_analyst",
"inbox_reply",
"campaign_builder",
"budget_optimizer",
"experimentation",
"executive_insights"
],
"type": "string",
"description": "Filter by agent (optional)"
}
}
}List all available AI agents and their capabilities. SendIt includes 12 specialized agents: • Strategy Planner - Content strategy from audience/trend analysis • Content Ideation - Topic ideas from trends and calendar gaps • Multi-Format Composer - Platform-optimized content from a brief • Creative Asset - AI image/video generation orchestration • Variant Repurposer - Repurpose content for different platforms • Calendar Optimizer - Optimal posting time suggestions • Listening Analyst - Social mention and sentiment analysis • Inbox Reply - Contextual reply drafts with brand voice • Campaign Builder - Ad campaign structure recommendations • Budget Optimizer - Spend pacing and budget reallocation • Experimentation - A/B test design and analysis • Executive Insights - Executive summary reports
No arguments.
{
"type": "object",
"properties": {}
}List saved analytics report definitions for the current personal or team scope.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
{
"type": "object",
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
}
}
}List all brand voice profiles. Brand voices guide AI content generation with tone, personality, writing rules, and example posts.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
{
"type": "object",
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
}
}
}List scheduled and published calendar events with optional date-range, status, platform, and pagination filters.
| Argument | Type | Description |
|---|---|---|
| end | string | Optional range end. ISO 8601 date or date-time. |
| limit | number | Maximum number of results to return. |
| start | string | Optional range start. ISO 8601 date or date-time. |
| cursor | string | Opaque pagination cursor from a previous response. |
| status | string | Optional event status filter. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| upcoming | boolean | If true, return only upcoming events. |
| platforms | array | Optional platform filter. |
{
"type": "object",
"properties": {
"end": {
"type": "string",
"description": "Optional range end. ISO 8601 date or date-time."
},
"limit": {
"type": "number",
"maximum": 200,
"minimum": 1,
"description": "Maximum number of results to return."
},
"start": {
"type": "string",
"description": "Optional range start. ISO 8601 date or date-time."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response."
},
"status": {
"enum": [
"draft",
"scheduled",
"queued",
"pending",
"publishing",
"draft_delivered",
"published",
"failed",
"cancelled"
],
"type": "string",
"description": "Optional event status filter."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"upcoming": {
"type": "boolean",
"description": "If true, return only upcoming events."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Optional platform filter."
}
}
}List all connected social media accounts. Pass team_id to see a team's accounts instead of your personal ones.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to list team accounts. Get available teams with list_teams. If omitted, lists personal accounts. |
{
"type": "object",
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to list team accounts. Get available teams with list_teams. If omitted, lists personal accounts."
}
}
}List all currently connected connectors with their status and health. Includes both legacy platform connections and new connector connections.
| Argument | Type | Description |
|---|---|---|
| category | string | Filter by category (optional) |
{
"type": "object",
"properties": {
"category": {
"enum": [
"organic",
"paid_media",
"automation",
"workspace"
],
"type": "string",
"description": "Filter by category (optional)"
}
}
}List all available connectors in the SendIt platform. Returns connectors organized by category: organic, paid_media, automation, workspace. Each connector includes its ID, name, status, auth strategy, and capabilities. Use this to discover what integrations are available before connecting.
| Argument | Type | Description |
|---|---|---|
| status | string | Filter by availability status (optional) |
| category | string | Filter by connector category (optional) |
{
"type": "object",
"properties": {
"status": {
"enum": [
"available",
"beta",
"coming_soon"
],
"type": "string",
"description": "Filter by availability status (optional)"
},
"category": {
"enum": [
"organic",
"paid_media",
"automation",
"workspace"
],
"type": "string",
"description": "Filter by connector category (optional)"
}
}
}List unified inbox conversations across all connected channels. Aggregates comments, mentions, DMs, and messages from all organic and workspace connectors into a single inbox view.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max results (default 20) |
| status | string | Filter by conversation status |
| priority | string | Filter by priority |
| sentiment | string | Filter by sentiment |
| assignedTo | string | Filter by assignee |
| connectorId | string | Filter by connector/platform |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max results (default 20)"
},
"status": {
"enum": [
"open",
"closed",
"snoozed",
"archived"
],
"type": "string",
"description": "Filter by conversation status"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
],
"type": "string",
"description": "Filter by priority"
},
"sentiment": {
"enum": [
"positive",
"neutral",
"negative",
"mixed"
],
"type": "string",
"description": "Filter by sentiment"
},
"assignedTo": {
"type": "string",
"description": "Filter by assignee"
},
"connectorId": {
"type": "string",
"description": "Filter by connector/platform"
}
}
}List posts that failed all retry attempts and were moved to the dead letter queue. Review and decide to requeue or discard them.
| Argument | Type | Description |
|---|---|---|
| limit | number | Maximum items to return (default 50) |
| status | string | Filter by status (default: dead) |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum items to return (default 50)"
},
"status": {
"enum": [
"dead",
"requeued",
"discarded"
],
"type": "string",
"description": "Filter by status (default: dead)"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
}
}
}List comment threads on your published posts. Returns threads from your social inbox, showing comments and replies from followers on your posts across all platforms.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max threads to return (default 20) |
| status | string | Filter by thread status (optional) |
| platform | string | Filter by platform (optional) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max threads to return (default 20)"
},
"status": {
"enum": [
"open",
"replied",
"closed",
"archived"
],
"type": "string",
"description": "Filter by thread status (optional)"
},
"platform": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string",
"description": "Filter by platform (optional)"
}
}
}List saved content from your library. Returns drafts, templates, and evergreen content.
| Argument | Type | Description |
|---|---|---|
| type | string | Filter by content type |
| limit | number | Maximum items to return (default 20, max 100) |
| search | string | Search in title and text |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| category | string | Filter by category |
{
"type": "object",
"properties": {
"type": {
"enum": [
"draft",
"template",
"evergreen"
],
"type": "string",
"description": "Filter by content type"
},
"limit": {
"type": "number",
"description": "Maximum items to return (default 20, max 100)"
},
"search": {
"type": "string",
"description": "Search in title and text"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"category": {
"type": "string",
"description": "Filter by category"
}
}
}List media library assets with filtering by collection, type, tags, search, and pagination.
| Argument | Type | Description |
|---|---|---|
| kind | string | Optional broad media kind filter. |
| tags | array | Optional tag filter. Assets matching any supplied tag may be returned. |
| limit | number | Maximum number of results to return. |
| cursor | string | Opaque pagination cursor from a previous response. |
| search | string | Optional filename search query. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| mimeType | string | Optional exact MIME type filter such as image/png or video/mp4. |
| collection | string | Optional collection name filter. |
{
"type": "object",
"properties": {
"kind": {
"enum": [
"image",
"video"
],
"type": "string",
"description": "Optional broad media kind filter."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional tag filter. Assets matching any supplied tag may be returned."
},
"limit": {
"type": "number",
"maximum": 200,
"minimum": 1,
"description": "Maximum number of results to return."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response."
},
"search": {
"type": "string",
"description": "Optional filename search query."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"mimeType": {
"type": "string",
"description": "Optional exact MIME type filter such as image/png or video/mp4."
},
"collection": {
"type": "string",
"description": "Optional collection name filter."
}
}
}List all scheduled posts that are pending approval. These posts won't be published until approved.
No arguments.
{
"type": "object",
"properties": {}
}List imported product/codebase projects for social strategy and content generation.
| Argument | Type | Description |
|---|---|---|
| limit | number | |
| search | string | |
| status | string | |
| team_id | string | Optional team ID or slug. Ignored when using a team-scoped API key. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"maximum": 100,
"minimum": 1
},
"search": {
"type": "string"
},
"status": {
"enum": [
"draft",
"importing",
"analyzing",
"ready",
"failed",
"archived"
],
"type": "string"
},
"team_id": {
"type": "string",
"description": "Optional team ID or slug. Ignored when using a team-scoped API key."
}
}
}List recurring scheduled-post series and their recurrence metadata.
| Argument | Type | Description |
|---|---|---|
| limit | number | Maximum number of results to return. |
| cursor | string | Opaque pagination cursor from a previous response. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"maximum": 100,
"minimum": 1,
"description": "Maximum number of results to return."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
}
}
}List all teams you belong to. Returns team names, IDs, and your role. Use the returned team ID with the team_id parameter in other tools to operate in team context.
No arguments.
{
"type": "object",
"properties": {}
}List recent runs for a workflow.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max results (default 20) |
| status | string | |
| workflowId* | string | Workflow ID |
{
"type": "object",
"required": [
"workflowId"
],
"properties": {
"limit": {
"type": "number",
"description": "Max results (default 20)"
},
"status": {
"enum": [
"pending",
"running",
"completed",
"failed",
"paused"
],
"type": "string"
},
"workflowId": {
"type": "string",
"description": "Workflow ID"
}
}
}List all automation workflows with their status and trigger info.
| Argument | Type | Description |
|---|---|---|
| active | boolean | Filter by active/inactive (optional) |
| triggerType | string | Filter by trigger type (optional) |
{
"type": "object",
"properties": {
"active": {
"type": "boolean",
"description": "Filter by active/inactive (optional)"
},
"triggerType": {
"enum": [
"manual",
"schedule",
"event",
"webhook",
"connector_event"
],
"type": "string",
"description": "Filter by trigger type (optional)"
}
}
}Generate a visual preview of how content will appear on each platform. USE THIS WHEN: • Before publishing to see how posts will look • To validate content against platform requirements • To check character counts, hashtag limits, and media requirements Returns an HTML preview mockup for each platform with validation results: • Character count vs limit • Hashtag count (Instagram has 30 max) • Media requirement check • Platform-specific warnings and errors
| Argument | Type | Description |
|---|---|---|
| content* | object | |
| platforms* | array | Platforms to generate previews for |
{
"type": "object",
"required": [
"platforms",
"content"
],
"properties": {
"content": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Post text/caption"
},
"mediaUrl": {
"type": "string",
"description": "Single media URL (optional)"
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Media type hint"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multiple media URLs for carousel (optional)"
}
}
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Platforms to generate previews for"
}
}
}Generate AI content and publish it in a single step. Combines generate_content + publish_content into one call. First generates platform-optimized content using AI, then publishes to the specified platforms. Same platform requirements as publish_content apply.
| Argument | Type | Description |
|---|---|---|
| prompt | string | Creative prompt for AI content generation |
| hashtags | string | |
| mediaUrl | string | Media URL for the post |
| strictAi | boolean | |
| mediaType | string | Media type hint |
| mediaUrls | array | Multiple media URLs for carousel |
| platforms* | array | Target platforms to generate content for and publish to |
| generation | object | |
| contentOverrides | object |
Publish content to social media platforms. MEDIA RULES: • mediaUrl must be a public HTTPS URL — NOT a local file path. • If the user shares an image/video in chat, call create_upload_session FIRST to get a browser upload link, then use the returned URL here. • Text-only works on: LinkedIn, Threads, X, Facebook. • Image required: Instagram, Pinterest. • TikTok supports one video or 1-35 Photo Mode images. • Video required: YouTube. Call validate_content to check before publishing.
| Argument | Type | Description |
|---|---|---|
| content* | object | |
| team_id | string | Team ID to publish as team. Get available teams with list_teams. If omitted, publishes from personal accounts. |
| platforms* | array | Target platforms. Choose based on content type: text-only→LinkedIn/Threads/X, image→Instagram/Threads/Facebook/Pinterest/TikTok Photo Mode, video→Instagram/TikTok/Threads/YouTube |
{
"type": "object",
"required": [
"platforms",
"content"
],
"properties": {
"content": {
"type": "object",
"required": [
"text"
],
"properties": {
"link": {
"type": "string",
"description": "Pinterest source URL for the pin"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "YouTube video tags"
},
"text": {
"type": "string",
"description": "Post caption/text. Required for all platforms."
},
"title": {
"type": "string",
"description": "YouTube video title, Pinterest pin title"
},
"boardId": {
"type": "string",
"description": "Pinterest only: Board ID to pin to. If not specified, uses first available board."
},
"mediaUrl": {
"type": "string",
"description": "Public HTTPS media URL. Do NOT pass local file paths — use create_upload_session to get a public URL first."
},
"boardName": {
"type": "string",
"description": "Pinterest only: Board name (alternative to boardId). Searches for matching board."
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Media type hint: 'image' for photos, 'video' for Reels/TikTok"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Carousel: Instagram (2-10 images), Threads (2-20 mixed), X (2-4 images)"
},
"description": {
"type": "string",
"description": "YouTube video description"
},
"youtubeMode": {
"enum": [
"auto",
"short",
"standard"
],
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for YouTube mode. Preferred: content.platformSettings.youtube.youtubeMode"
},
"facebookMode": {
"enum": [
"auto",
"reel",
"feed"
],
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for Facebook mode. Preferred: content.platformSettings.facebook.facebookMode"
},
"firstComment": {
"type": "string",
"description": "Instagram first comment text (often used for hashtags)"
},
"threadTweets": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Tweet text (max 280 chars)"
},
"mediaUrl": {
"type": "string",
"description": "Optional public HTTPS image or video URL for this tweet"
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Media type hint"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional multiple images for this tweet (max 4)"
}
}
},
"description": "X (Twitter) only: additional tweets in the thread after the main text. The main text is always the first tweet. Each item here becomes a subsequent reply in the thread."
},
"privacyStatus": {
"enum": [
"public",
"unlisted",
"private"
],
"type": "string",
"description": "YouTube video privacy: public, unlisted, or private"
},
"pinterestBoardId": {
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for Pinterest board targeting. Preferred: content.platformSettings.pinterest.boardId"
},
"platformSettings": {
"type": "object",
"description": "Optional advanced per-platform settings map. Key by platform ID and use it for platform-specific publish options plus per-platform text/title/description overrides.",
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
}
}
},
"team_id": {
"type": "string",
"description": "Team ID to publish as team. Get available teams with list_teams. If omitted, publishes from personal accounts."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Target platforms. Choose based on content type: text-only→LinkedIn/Threads/X, image→Instagram/Threads/Facebook/Pinterest/TikTok Photo Mode, video→Instagram/TikTok/Threads/YouTube"
}
}
}Publish content directly from your library to one or more platforms.
| Argument | Type | Description |
|---|---|---|
| id* | string | The content library item ID to publish |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| platforms* | array | Platforms to publish to |
{
"type": "object",
"required": [
"id",
"platforms"
],
"properties": {
"id": {
"type": "string",
"description": "The content library item ID to publish"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Platforms to publish to"
}
}
}Reject a scheduled post that is pending approval. The post will not be published.
| Argument | Type | Description |
|---|---|---|
| postId* | string | The scheduled post ID to reject |
| reason* | string | Reason for rejection |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
{
"type": "object",
"required": [
"postId",
"reason"
],
"properties": {
"postId": {
"type": "string",
"description": "The scheduled post ID to reject"
},
"reason": {
"type": "string",
"description": "Reason for rejection"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
}
}
}Reply to a comment on one of your published posts. Supported platforms: X (reply tweets), Threads, Instagram, Facebook, YouTube. Not supported: LinkedIn, Pinterest, TikTok.
| Argument | Type | Description |
|---|---|---|
| text* | string | Your reply text |
| threadId* | string | The inbox thread ID to reply to |
{
"type": "object",
"required": [
"threadId",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Your reply text"
},
"threadId": {
"type": "string",
"description": "The inbox thread ID to reply to"
}
}
}Send a reply in a conversation. The reply is sent through the original channel (e.g., Instagram comment, X reply, Facebook comment, etc.). Replies require conversation reply routing metadata (credential + operation). Provide "routing" once and it will be stored on the conversation for future replies. Use the Inbox Reply agent to get AI-drafted replies with brand voice.
| Argument | Type | Description |
|---|---|---|
| content* | string | Reply text |
| routing | object | Optional: set conversation reply routing (persisted on conversations.metadata.replyRouting). Use this when the conversation doesn't yet have reply routing configured. |
| mediaUrls | array | Media to attach (optional) |
| conversationId* | string | Conversation ID |
{
"type": "object",
"required": [
"conversationId",
"content"
],
"properties": {
"content": {
"type": "string",
"description": "Reply text"
},
"routing": {
"type": "object",
"required": [
"credentialId",
"operation"
],
"properties": {
"baseInput": {
"type": "object",
"description": "Static input merged into every reply (e.g. channel/thread identifiers)",
"additionalProperties": true
},
"operation": {
"type": "string",
"description": "Connector operation name to execute (e.g. send_message)"
},
"connectorId": {
"type": "string",
"description": "Optional: connector ID for validation"
},
"credentialId": {
"type": "string",
"description": "connector_credentials.id to execute with"
}
},
"description": "Optional: set conversation reply routing (persisted on conversations.metadata.replyRouting). Use this when the conversation doesn't yet have reply routing configured.",
"additionalProperties": true
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Media to attach (optional)"
},
"conversationId": {
"type": "string",
"description": "Conversation ID"
}
}
}Takes a URL (article, YouTube video, or podcast) and repurposes its content into platform-optimized posts. Supports: • Web articles — extracts text content • YouTube videos — extracts transcript/captions • Podcast RSS feeds — extracts episode descriptions and show notes Returns platform-specific formatted output (X threads, Instagram carousel slides, Medium articles, etc.) with a quality score (0-100) for each variant.
| Argument | Type | Description |
|---|---|---|
| url* | string | Source URL to repurpose (article, YouTube video, or podcast RSS feed) |
| tone | string | Optional tone override (e.g., 'professional', 'casual', 'witty') |
| brand_voice_id | string | Optional brand voice profile ID to apply |
| target_platforms* | array | Target platforms to generate content for (e.g., ['x', 'linkedin', 'instagram']) |
{
"type": "object",
"required": [
"url",
"target_platforms"
],
"properties": {
"url": {
"type": "string",
"description": "Source URL to repurpose (article, YouTube video, or podcast RSS feed)"
},
"tone": {
"type": "string",
"description": "Optional tone override (e.g., 'professional', 'casual', 'witty')"
},
"brand_voice_id": {
"type": "string",
"description": "Optional brand voice profile ID to apply"
},
"target_platforms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target platforms to generate content for (e.g., ['x', 'linkedin', 'instagram'])"
}
}
}Generate UGC, slideshow, remix, caption, or calendar content from project intelligence.
| Argument | Type | Description |
|---|---|---|
| goal | string | |
| count | number | |
| prompt | string | |
| team_id | string | Optional team ID or slug. Ignored when using a team-scoped API key. |
| platforms | array | |
| projectId* | string | |
| contentType | string | |
| saveToLibrary | boolean | |
| consentConfirmed | boolean | Required when using uploaded creator or likeness-like media. |
{
"type": "object",
"required": [
"projectId"
],
"properties": {
"goal": {
"type": "string"
},
"count": {
"type": "number",
"maximum": 10,
"minimum": 1
},
"prompt": {
"type": "string"
},
"team_id": {
"type": "string",
"description": "Optional team ID or slug. Ignored when using a team-scoped API key."
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"projectId": {
"type": "string"
},
"contentType": {
"enum": [
"reaction_demo",
"hook_slideshow",
"tiktok_video_remix",
"tiktok_slideshow_remix",
"ugc_avatar",
"caption_pack",
"content_calendar"
],
"type": "string"
},
"saveToLibrary": {
"type": "boolean"
},
"consentConfirmed": {
"type": "boolean",
"description": "Required when using uploaded creator or likeness-like media."
}
}
}Requeue a dead letter post for another publishing attempt. Creates a new scheduled post from the dead letter entry.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| deadLetterId* | string | The dead letter post ID to requeue |
{
"type": "object",
"required": [
"deadLetterId"
],
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"deadLetterId": {
"type": "string",
"description": "The dead letter post ID to requeue"
}
}
}Retry a failed scheduled post, optionally editing the content, narrowing to failed platforms, rescheduling, or publishing immediately.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for postId. |
| text | string | Replacement post text for the retry. |
| postId | string | Scheduled post ID. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| mediaUrl | string | Replacement public HTTPS media URL for the retry. |
| mediaUrls | array | Replacement public HTTPS media URLs for the retry. |
| platforms | array | Optional subset of failed platforms to retry. |
| publishNow | boolean | Publish the retry immediately instead of scheduling it. |
| scheduleId | string | Compatibility alias for postId. |
| scheduledAt | string |
Execute one saved analytics report immediately and return the generated run plus aggregated analytics data.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for reportId. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| reportId | string | Saved analytics report ID. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for reportId."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"reportId": {
"type": "string",
"description": "Saved analytics report ID."
}
}
}Generate project content and save the outputs into the reusable content library.
| Argument | Type | Description |
|---|---|---|
| count | number | |
| prompt | string | |
| team_id | string | Optional team ID or slug. Ignored when using a team-scoped API key. |
| platforms | array | |
| projectId* | string | |
| contentType | string |
{
"type": "object",
"required": [
"projectId"
],
"properties": {
"count": {
"type": "number",
"maximum": 10,
"minimum": 1
},
"prompt": {
"type": "string"
},
"team_id": {
"type": "string",
"description": "Optional team ID or slug. Ignored when using a team-scoped API key."
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"projectId": {
"type": "string"
},
"contentType": {
"enum": [
"reaction_demo",
"hook_slideshow",
"tiktok_video_remix",
"tiktok_slideshow_remix",
"ugc_avatar",
"caption_pack",
"content_calendar"
],
"type": "string"
}
}
}Save content to your library as a draft, template, or evergreen content for reuse.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tags for organization |
| text* | string | The content text/caption |
| type | string | Content type (default: draft) |
| title* | string | Title for the saved content |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| category | string | Category for organization |
| mediaUrl | string | Media URL (image or video) |
| targetPlatforms | array | Which platforms this content is designed for |
| evergreenEnabled | boolean | Enable evergreen auto-republishing |
| evergreenIntervalDays | number | Days between evergreen republishes |
Schedule content for future publishing. Same media rules as publish_content apply. • mediaUrl must be a public HTTPS URL — call create_upload_session if user shares a file in chat. • Content is validated at schedule time, not publish time.
| Argument | Type | Description |
|---|---|---|
| content* | object | |
| team_id | string | Team ID to schedule as team. Get available teams with list_teams. If omitted, schedules from personal accounts. |
| timezone | string | Optional IANA timezone for queue scheduling and recurring series metadata. |
| platforms* | array | Target platforms - ensure content matches each platform's requirements |
| scoreGate | number | Optional forward-compatible minimum content score threshold for advanced scheduling flows. |
| recurrence | object | Optional forward-compatible structured recurrence definition. |
| bypassToken | string | Optional forward-compatible bypass token returned by advanced scheduling score-gate checks. |
| scheduleMode | string | Optional forward-compatible scheduling mode. 'queue' asks SendIt to place the post in the next available queue slot. |
Schedule content with explicit target accounts, queue placement, recurrence, platform overrides, media library attachments, and score gating.
| Argument | Type | Description |
|---|---|---|
| content* | object | |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| timezone | string | Optional IANA timezone for queue resolution and recurrence. |
| scoreGate | number | Optional minimum content score threshold. If unmet, the tool can return a bypass token instead of scheduling. |
| recurrence | object | Optional structured recurrence definition. |
| bypassToken | string | Optional bypass token returned from a previous score gate warning. |
| scheduledAt | string | ISO 8601 time for exact scheduling. Required unless scheduleMode is 'queue'. |
| scheduleMode | string | Scheduling strategy. Use 'queue' to place the post into the next available queue slot. |
| recurrenceRule |
Schedule the same post in multiple languages, linking all variants into one translation group.
| Argument | Type | Description |
|---|---|---|
| title | string | Optional shared title for supported platforms. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| mediaUrl | string | Optional shared public HTTPS media URL. |
| timezone | string | Optional IANA timezone stored with the scheduled posts. |
| versions* | array | Language-specific post variants. Maximum 11 versions per request. |
| mediaType | string | Optional shared media type hint. |
| mediaUrls | array | Optional shared public HTTPS media URLs. |
| scheduledAt* | string | Future ISO 8601 publish time for every language version. |
{
"type": "object",
"required": [
"versions",
"scheduledAt"
],
"properties": {
"title": {
"type": "string",
"description": "Optional shared title for supported platforms."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"mediaUrl": {
"type": "string",
"description": "Optional shared public HTTPS media URL."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone stored with the scheduled posts."
},
"versions": {
"type": "array",
"items": {
"type": "object",
"required": [
"lang",
"text",
"targetAccounts"
],
"properties": {
"lang": {
"type": "string",
"description": "Language code such as en, es, fr, or de."
},
"text": {
"type": "string",
"description": "Localized post text for this version."
},
"targetAccounts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Connected account IDs for this language version."
}
}
},
"description": "Language-specific post variants. Maximum 11 versions per request."
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Optional shared media type hint."
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional shared public HTTPS media URLs."
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "Future ISO 8601 publish time for every language version."
}
}
}Score content quality on a 0-100 scale before publishing. Evaluates 5 factors (20 points each): 1. Text length optimization for target platforms 2. Hashtag count optimization 3. Posting time alignment with best engagement windows 4. Media presence (images/videos) 5. Content patterns (CTA, hooks, formatting, emoji) Returns overall score, per-factor breakdown, and improvement suggestions.
| Argument | Type | Description |
|---|---|---|
| text* | string | The post text content |
| mediaUrl | string | Primary media URL (optional) |
| mediaUrls | array | Multiple media URLs for carousel (optional) |
| platforms* | array | Target platforms to score against |
| scheduledTime | string | Scheduled publish time in ISO 8601 (optional, improves time score) |
{
"type": "object",
"required": [
"platforms",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The post text content"
},
"mediaUrl": {
"type": "string",
"description": "Primary media URL (optional)"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multiple media URLs for carousel (optional)"
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Target platforms to score against"
},
"scheduledTime": {
"type": "string",
"format": "date-time",
"description": "Scheduled publish time in ISO 8601 (optional, improves time score)"
}
}
}Set a brand voice profile as the default. The default brand voice is automatically used by all AI content generation tools.
| Argument | Type | Description |
|---|---|---|
| id* | string | The brand voice profile ID to set as default |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The brand voice profile ID to set as default"
}
}
}Suggest the next recommended publish time using best-times insights or configured queue slots without creating a post.
| Argument | Type | Description |
|---|---|---|
| mode | string | Use 'best_time' for analytics-based suggestions or 'queue' for queue-slot suggestions. |
| after | string | Optional lower bound. Suggestions should be strictly after this time. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| platform | string | Single platform to optimize for. |
| timezone | string | Optional IANA timezone for the returned recommendation. |
| mediaType | string | Optional content media type hint for best-time recommendations. |
| platforms | array | Optional platform set to optimize across. |
{
"type": "object",
"properties": {
"mode": {
"enum": [
"best_time",
"queue"
],
"type": "string",
"description": "Use 'best_time' for analytics-based suggestions or 'queue' for queue-slot suggestions."
},
"after": {
"type": "string",
"format": "date-time",
"description": "Optional lower bound. Suggestions should be strictly after this time."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"platform": {
"type": "string",
"description": "Single platform to optimize for."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone for the returned recommendation."
},
"mediaType": {
"enum": [
"text",
"image",
"carousel",
"video",
"story"
],
"type": "string",
"description": "Optional content media type hint for best-time recommendations."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Optional platform set to optimize across."
}
}
}Suggest reusable queue slots derived from best-time insights for one or more platforms.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| timezone | string | Optional IANA timezone for the suggested local queue times. |
| platforms | array | Optional platform list. If omitted, suggestions may be generated for all supported platforms. |
| slotsPerPlatform | number | How many suggested slots to return per platform. |
{
"type": "object",
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone for the suggested local queue times."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Optional platform list. If omitted, suggestions may be generated for all supported platforms."
},
"slotsPerPlatform": {
"type": "number",
"maximum": 10,
"minimum": 1,
"description": "How many suggested slots to return per platform."
}
}
}Cluster and summarize recent social mentions by theme and sentiment using AI.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max mentions to analyze (default: 30, max: 50) |
| since | string | ISO date string — only include mentions after this date |
| platform | string | Filter to a specific platform |
| keyword_id | string | Filter to mentions matching a specific keyword |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max mentions to analyze (default: 30, max: 50)"
},
"since": {
"type": "string",
"description": "ISO date string — only include mentions after this date"
},
"platform": {
"type": "string",
"description": "Filter to a specific platform"
},
"keyword_id": {
"type": "string",
"description": "Filter to mentions matching a specific keyword"
}
}
}Manually trigger a scheduled post to publish immediately.
| Argument | Type | Description |
|---|---|---|
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| scheduleId* | string | The ID of the scheduled post to trigger |
{
"type": "object",
"required": [
"scheduleId"
],
"properties": {
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"scheduleId": {
"type": "string",
"description": "The ID of the scheduled post to trigger"
}
}
}Manually trigger a workflow run.
| Argument | Type | Description |
|---|---|---|
| inputData | object | Input data to pass to the workflow run |
| workflowId* | string | Workflow ID to trigger |
{
"type": "object",
"required": [
"workflowId"
],
"properties": {
"inputData": {
"type": "object",
"description": "Input data to pass to the workflow run",
"additionalProperties": true
},
"workflowId": {
"type": "string",
"description": "Workflow ID to trigger"
}
}
}Update campaign settings (name, budget, dates, status).
| Argument | Type | Description |
|---|---|---|
| name | string | New campaign name |
| status | string | Change campaign status |
| endDate | string | Updated end date |
| campaignId* | string | Campaign ID |
| budgetAmount | number | Updated budget amount |
{
"type": "object",
"required": [
"campaignId"
],
"properties": {
"name": {
"type": "string",
"description": "New campaign name"
},
"status": {
"enum": [
"active",
"paused"
],
"type": "string",
"description": "Change campaign status"
},
"endDate": {
"type": "string",
"format": "date-time",
"description": "Updated end date"
},
"campaignId": {
"type": "string",
"description": "Campaign ID"
},
"budgetAmount": {
"type": "number",
"description": "Updated budget amount"
}
}
}Create or update a policy/guardrail for an agent. Policy types: • brand_safety - Content must align with brand guidelines • platform_compliance - Must follow platform ad policies • approval_gate - Require human approval before execution • budget_limit - Cap spending or resource usage • content_filter - Filter certain topics or language
| Argument | Type | Description |
|---|---|---|
| rules* | array | Policy rules |
| active | boolean | Whether policy is active |
| agentId* | string | Agent to set policy for |
| policyType* | string | Policy type |
{
"type": "object",
"required": [
"agentId",
"policyType",
"rules"
],
"properties": {
"rules": {
"type": "array",
"items": {
"type": "object",
"required": [
"condition",
"action",
"reason"
],
"properties": {
"action": {
"enum": [
"allow",
"block",
"require_approval",
"warn"
],
"type": "string"
},
"reason": {
"type": "string",
"description": "Reason for this rule"
},
"condition": {
"type": "string",
"description": "Rule condition"
}
}
},
"description": "Policy rules"
},
"active": {
"type": "boolean",
"description": "Whether policy is active"
},
"agentId": {
"enum": [
"strategy_planner",
"content_ideation",
"multi_format_composer",
"creative_asset",
"variant_repurposer",
"calendar_optimizer",
"listening_analyst",
"inbox_reply",
"campaign_builder",
"budget_optimizer",
"experimentation",
"executive_insights"
],
"type": "string",
"description": "Agent to set policy for"
},
"policyType": {
"enum": [
"brand_safety",
"platform_compliance",
"approval_gate",
"budget_limit",
"content_filter"
],
"type": "string",
"description": "Policy type"
}
}
}Update one calendar event by rescheduling it, changing status, reassigning it, or storing metadata.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for eventId. |
| postId | string | Compatibility alias when the calendar event maps directly to a scheduled post. |
| status | string | Updated event status. |
| eventId | string | Calendar event ID or backing scheduled post ID. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| metadata | object | Optional event metadata patch. |
| assigneeId | string | Optional assignee user ID. |
| scheduledAt | string | Updated ISO 8601 schedule time for the event. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for eventId."
},
"postId": {
"type": "string",
"description": "Compatibility alias when the calendar event maps directly to a scheduled post."
},
"status": {
"enum": [
"draft",
"scheduled",
"queued",
"pending",
"publishing",
"draft_delivered",
"published",
"failed",
"cancelled"
],
"type": "string",
"description": "Updated event status."
},
"eventId": {
"type": "string",
"description": "Calendar event ID or backing scheduled post ID."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"metadata": {
"type": "object",
"description": "Optional event metadata patch.",
"additionalProperties": true
},
"assigneeId": {
"type": "string",
"description": "Optional assignee user ID."
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "Updated ISO 8601 schedule time for the event."
}
}
}Update conversation status, priority, assignment, or tags.
| Argument | Type | Description |
|---|---|---|
| tags | array | Set tags |
| status | string | |
| priority | string | |
| sentiment | string | |
| assignedTo | string | Assign to team member ID |
| conversationId* | string | Conversation ID |
{
"type": "object",
"required": [
"conversationId"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Set tags"
},
"status": {
"enum": [
"open",
"closed",
"snoozed",
"archived"
],
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
],
"type": "string"
},
"sentiment": {
"enum": [
"positive",
"neutral",
"negative",
"mixed"
],
"type": "string"
},
"assignedTo": {
"type": "string",
"description": "Assign to team member ID"
},
"conversationId": {
"type": "string",
"description": "Conversation ID"
}
}
}Update an existing content library item.
| Argument | Type | Description |
|---|---|---|
| id* | string | The content library item ID |
| tags | array | Tags |
| text | string | New content text |
| type | string | Content type |
| title | string | New title |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| category | string | Category |
| mediaUrl | string | Media URL |
| evergreenEnabled | boolean | Enable evergreen |
| evergreenIntervalDays | number | Republish interval in days |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The content library item ID"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags"
},
"text": {
"type": "string",
"description": "New content text"
},
"type": {
"enum": [
"draft",
"template",
"evergreen"
],
"type": "string",
"description": "Content type"
},
"title": {
"type": "string",
"description": "New title"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"category": {
"type": "string",
"description": "Category"
},
"mediaUrl": {
"type": "string",
"description": "Media URL"
},
"evergreenEnabled": {
"type": "boolean",
"description": "Enable evergreen"
},
"evergreenIntervalDays": {
"type": "number",
"description": "Republish interval in days"
}
}
}Update the recurrence rule or end date for future occurrences in a recurring series.
| Argument | Type | Description |
|---|---|---|
| id | string | Compatibility alias for seriesId. |
| team_id | string | Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope. |
| seriesId | string | Recurring series parent scheduled post ID. |
| recurrenceRule | string | Replacement RRULE string. |
| recurrenceEndDate | string | Replacement ISO 8601 end date for the series. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for seriesId."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"seriesId": {
"type": "string",
"description": "Recurring series parent scheduled post ID."
},
"recurrenceRule": {
"type": "string",
"description": "Replacement RRULE string."
},
"recurrenceEndDate": {
"type": "string",
"format": "date-time",
"description": "Replacement ISO 8601 end date for the series."
}
}
}Update a workflow's configuration or status.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| steps | array | |
| active | boolean | |
| workflowId* | string | Workflow ID |
{
"type": "object",
"required": [
"workflowId"
],
"properties": {
"name": {
"type": "string"
},
"steps": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"active": {
"type": "boolean"
},
"workflowId": {
"type": "string",
"description": "Workflow ID"
}
}
}FOR CLAUDE DESKTOP ONLY (with filesystem access). For Claude.ai/web: Use create_upload_session instead - it provides a browser upload link. Upload local media to cloud storage, returning a public HTTPS URL. WHEN TO USE: • Instagram, LinkedIn, Threads, X: REQUIRED for local files before calling publish_content • TikTok: NOT NEEDED - pass local path directly to publish_content SUPPORTED FORMATS: • Images: jpg, png, gif, webp (max 10MB) • Videos: mp4, mov, webm (max 100MB) Returns { url: 'https://...' } for use in publish_content mediaUrl parameter.
| Argument | Type | Description |
|---|---|---|
| folder | string | Optional folder name for organizing uploads |
| filePath | string | Local file path to upload (e.g., ~/Photos/image.jpg) |
| mediaUrl | string | Existing public URL to validate (alternative to filePath) |
{
"type": "object",
"properties": {
"folder": {
"type": "string",
"description": "Optional folder name for organizing uploads"
},
"filePath": {
"type": "string",
"description": "Local file path to upload (e.g., ~/Photos/image.jpg)"
},
"mediaUrl": {
"type": "string",
"description": "Existing public URL to validate (alternative to filePath)"
}
}
}Upvote a product on Product Hunt. REQUIREMENTS: • Must have Product Hunt account connected • Write access requires app whitelisting by Product Hunt Provide the Product Hunt post ID (not the slug).
| Argument | Type | Description |
|---|---|---|
| postId* | string | The Product Hunt post ID to upvote |
{
"type": "object",
"required": [
"postId"
],
"properties": {
"postId": {
"type": "string",
"description": "The Product Hunt post ID to upvote"
}
}
}Validate content against platform requirements BEFORE publishing. USE THIS WHEN: • Unsure if content will work on target platforms • Publishing to multiple platforms with different requirements • Want to catch errors before attempting publish Returns specific errors (e.g., 'TikTok requires video', 'Instagram needs media') and warnings (e.g., 'text close to character limit').
| Argument | Type | Description |
|---|---|---|
| content* | object | |
| platforms* | array | Platforms to validate against |
{
"type": "object",
"required": [
"platforms",
"content"
],
"properties": {
"content": {
"type": "object",
"required": [
"text"
],
"properties": {
"link": {
"type": "string",
"description": "Pinterest source URL for the pin"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "YouTube video tags"
},
"text": {
"type": "string",
"description": "Post caption/text. Required for all platforms."
},
"title": {
"type": "string",
"description": "YouTube video title, Pinterest pin title"
},
"boardId": {
"type": "string",
"description": "Pinterest only: Board ID to pin to. If not specified, uses first available board."
},
"mediaUrl": {
"type": "string",
"description": "Public HTTPS media URL. Do NOT pass local file paths — use create_upload_session to get a public URL first."
},
"boardName": {
"type": "string",
"description": "Pinterest only: Board name (alternative to boardId). Searches for matching board."
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Media type hint: 'image' for photos, 'video' for Reels/TikTok"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Carousel: Instagram (2-10 images), Threads (2-20 mixed), X (2-4 images)"
},
"description": {
"type": "string",
"description": "YouTube video description"
},
"youtubeMode": {
"enum": [
"auto",
"short",
"standard"
],
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for YouTube mode. Preferred: content.platformSettings.youtube.youtubeMode"
},
"facebookMode": {
"enum": [
"auto",
"reel",
"feed"
],
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for Facebook mode. Preferred: content.platformSettings.facebook.facebookMode"
},
"firstComment": {
"type": "string",
"description": "Instagram first comment text (often used for hashtags)"
},
"threadTweets": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Tweet text (max 280 chars)"
},
"mediaUrl": {
"type": "string",
"description": "Optional public HTTPS image or video URL for this tweet"
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Media type hint"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional multiple images for this tweet (max 4)"
}
}
},
"description": "X (Twitter) only: additional tweets in the thread after the main text. The main text is always the first tweet. Each item here becomes a subsequent reply in the thread."
},
"privacyStatus": {
"enum": [
"public",
"unlisted",
"private"
],
"type": "string",
"description": "YouTube video privacy: public, unlisted, or private"
},
"pinterestBoardId": {
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for Pinterest board targeting. Preferred: content.platformSettings.pinterest.boardId"
},
"platformSettings": {
"type": "object",
"description": "Optional advanced per-platform settings map. Key by platform ID and use it for platform-specific publish options plus per-platform text/title/description overrides.",
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
}
}
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Platforms to validate against"
}
}
}| scheduledTime |
| string |
| Compatibility alias for scheduledAt. |
{
"type": "object",
"required": [
"ids",
"action"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 200,
"minItems": 1,
"description": "Calendar event IDs or scheduled post IDs to update."
},
"shift": {
"type": "object",
"required": [
"amount",
"unit"
],
"properties": {
"unit": {
"enum": [
"minutes",
"hours",
"days"
],
"type": "string",
"description": "Shift unit."
},
"amount": {
"type": "number",
"description": "Shift magnitude."
}
}
},
"action": {
"enum": [
"shift",
"set_time",
"move_to_queue",
"cancel",
"assign"
],
"type": "string",
"description": "Bulk action to apply."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone for queue-based moves."
},
"applyScope": {
"enum": [
"single",
"recurrence_group"
],
"type": "string",
"description": "Whether to affect only the selected IDs or their recurrence groups."
},
"assigneeId": {
"type": "string",
"description": "Required for the 'assign' action."
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "Replacement ISO 8601 time for the 'set_time' action."
},
"deltaMinutes": {
"type": "number",
"description": "Compatibility shift amount in minutes."
},
"scheduledTime": {
"type": "string",
"format": "date-time",
"description": "Compatibility alias for scheduledAt."
}
}
}{
"type": "object",
"required": [
"adAccountId",
"name",
"objective",
"budgetType",
"budgetAmount"
],
"properties": {
"name": {
"type": "string",
"description": "Campaign name"
},
"endDate": {
"type": "string",
"format": "date-time",
"description": "Campaign end date (optional)"
},
"objective": {
"enum": [
"awareness",
"traffic",
"engagement",
"leads",
"conversions",
"app_installs",
"video_views",
"reach"
],
"type": "string",
"description": "Campaign objective"
},
"startDate": {
"type": "string",
"format": "date-time",
"description": "Campaign start date (ISO 8601)"
},
"targeting": {
"type": "object",
"description": "Targeting configuration (platform-specific)",
"additionalProperties": true
},
"budgetType": {
"enum": [
"daily",
"lifetime"
],
"type": "string",
"description": "Budget type"
},
"adAccountId": {
"type": "string",
"description": "Ad account ID"
},
"budgetAmount": {
"type": "number",
"description": "Budget amount in account currency"
}
}
}{
"type": "object",
"required": [
"campaignId",
"creativeType",
"headline",
"body"
],
"properties": {
"body": {
"type": "string",
"description": "Ad body text"
},
"name": {
"type": "string",
"description": "Creative name"
},
"adSetId": {
"type": "string",
"description": "Ad set ID (optional)"
},
"headline": {
"type": "string",
"description": "Ad headline"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Media URLs for the creative"
},
"campaignId": {
"type": "string",
"description": "Campaign ID"
},
"landingUrl": {
"type": "string",
"description": "Landing page URL"
},
"callToAction": {
"enum": [
"learn_more",
"shop_now",
"sign_up",
"book_now",
"contact_us",
"download",
"get_offer",
"subscribe"
],
"type": "string",
"description": "Call to action button text"
},
"creativeType": {
"enum": [
"image",
"video",
"carousel",
"text",
"native"
],
"type": "string",
"description": "Creative type"
}
}
}| examplePosts |
| array |
| Example posts in this voice |
| writingStyle | string | Writing style guidelines |
| approvedHashtags | array | Preferred hashtags |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Name for this brand voice profile"
},
"tone": {
"type": "string",
"description": "Overall tone (e.g., professional, casual, energetic)"
},
"doRules": {
"type": "array",
"items": {
"type": "string"
},
"description": "Things the brand voice SHOULD do"
},
"dontRules": {
"type": "array",
"items": {
"type": "string"
},
"description": "Things the brand voice should NEVER do"
},
"isDefault": {
"type": "boolean",
"description": "Set as the default brand voice"
},
"keyPhrases": {
"type": "array",
"items": {
"type": "string"
},
"description": "Key phrases to incorporate"
},
"bannedWords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Words to never use"
},
"personality": {
"type": "string",
"description": "Brand personality description"
},
"examplePosts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Example posts in this voice"
},
"writingStyle": {
"type": "string",
"description": "Writing style guidelines"
},
"approvedHashtags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Preferred hashtags"
}
}
}| If true, publish immediately after applying the edit. |
| scheduleId | string | Compatibility alias for postId. |
| scheduledAt | string | Compatibility alias for scheduledTime. |
| firstComment | string | Optional replacement Instagram first comment. |
| scheduledTime | string | Updated ISO 8601 scheduled publish time. |
| pinterestBoardId | string | Optional replacement Pinterest board ID. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for postId."
},
"text": {
"type": "string",
"description": "Updated post text."
},
"postId": {
"type": "string",
"description": "Scheduled post ID."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"mediaUrl": {
"type": "string",
"description": "Replacement public HTTPS media URL, or an empty value to remove media."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone for the updated schedule."
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replacement public HTTPS media URLs."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Optional replacement platform list."
},
"applyScope": {
"enum": [
"single",
"this_and_future"
],
"type": "string",
"description": "Whether to apply the edit to only this post or this and future occurrences."
},
"publishNow": {
"type": "boolean",
"description": "If true, publish immediately after applying the edit."
},
"scheduleId": {
"type": "string",
"description": "Compatibility alias for postId."
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "Compatibility alias for scheduledTime."
},
"firstComment": {
"type": "string",
"description": "Optional replacement Instagram first comment."
},
"scheduledTime": {
"type": "string",
"format": "date-time",
"description": "Updated ISO 8601 scheduled publish time."
},
"pinterestBoardId": {
"type": "string",
"description": "Optional replacement Pinterest board ID."
}
}
}{
"type": "object",
"properties": {
"limit": {
"type": "number",
"maximum": 200,
"minimum": 1,
"description": "Optional forward-compatible maximum number of scheduled posts to return."
},
"cursor": {
"type": "string",
"description": "Optional forward-compatible pagination cursor from a previous scheduled-post listing response."
},
"status": {
"enum": [
"pending",
"publishing",
"draft_delivered",
"published",
"failed",
"cancelled"
],
"type": "string",
"description": "Optional forward-compatible status filter. Legacy handlers may continue returning pending posts only."
},
"endDate": {
"type": "string",
"format": "date",
"description": "Optional forward-compatible upper date bound in YYYY-MM-DD format."
},
"team_id": {
"type": "string",
"description": "Team ID to list team's scheduled posts. If omitted, lists personal posts."
},
"platform": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string",
"description": "Filter by platform (optional)"
},
"upcoming": {
"type": "boolean",
"description": "Optional forward-compatible flag to prefer upcoming scheduled posts."
},
"startDate": {
"type": "string",
"format": "date",
"description": "Optional forward-compatible lower date bound in YYYY-MM-DD format."
}
}
}{
"type": "object",
"required": [
"platforms"
],
"properties": {
"prompt": {
"type": "string",
"description": "Creative prompt for AI content generation"
},
"hashtags": {
"enum": [
"on",
"off",
"platform_auto"
],
"type": "string"
},
"mediaUrl": {
"type": "string",
"description": "Media URL for the post"
},
"strictAi": {
"type": "boolean"
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Media type hint"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multiple media URLs for carousel"
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Target platforms to generate content for and publish to"
},
"generation": {
"type": "object",
"properties": {
"tone": {
"enum": [
"professional",
"casual",
"energetic",
"informative"
],
"type": "string"
},
"style": {
"enum": [
"storytelling",
"promotional",
"educational",
"entertaining"
],
"type": "string"
},
"callToAction": {
"type": "string"
}
}
},
"contentOverrides": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"caption": {
"type": "string"
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}| New ISO 8601 retry time. Required unless publishNow is true. |
| firstComment | string | Optional replacement Instagram first comment. |
| pinterestBoardId | string | Optional replacement Pinterest board ID. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Compatibility alias for postId."
},
"text": {
"type": "string",
"description": "Replacement post text for the retry."
},
"postId": {
"type": "string",
"description": "Scheduled post ID."
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"mediaUrl": {
"type": "string",
"description": "Replacement public HTTPS media URL for the retry."
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replacement public HTTPS media URLs for the retry."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Optional subset of failed platforms to retry."
},
"publishNow": {
"type": "boolean",
"description": "Publish the retry immediately instead of scheduling it."
},
"scheduleId": {
"type": "string",
"description": "Compatibility alias for postId."
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "New ISO 8601 retry time. Required unless publishNow is true."
},
"firstComment": {
"type": "string",
"description": "Optional replacement Instagram first comment."
},
"pinterestBoardId": {
"type": "string",
"description": "Optional replacement Pinterest board ID."
}
}
}{
"type": "object",
"required": [
"title",
"text"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags for organization"
},
"text": {
"type": "string",
"description": "The content text/caption"
},
"type": {
"enum": [
"draft",
"template",
"evergreen"
],
"type": "string",
"description": "Content type (default: draft)"
},
"title": {
"type": "string",
"description": "Title for the saved content"
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"category": {
"type": "string",
"description": "Category for organization"
},
"mediaUrl": {
"type": "string",
"description": "Media URL (image or video)"
},
"targetPlatforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Which platforms this content is designed for"
},
"evergreenEnabled": {
"type": "boolean",
"description": "Enable evergreen auto-republishing"
},
"evergreenIntervalDays": {
"type": "number",
"description": "Days between evergreen republishes"
}
}
}| scheduledTime* | string | ISO 8601 datetime in UTC (e.g., 2025-01-15T14:30:00Z) |
| recurrenceRule | string | Optional forward-compatible RRULE string for recurring schedules. |
| targetAccounts | array | Optional advanced scheduling target account IDs. Legacy handlers may ignore this until advanced scheduling is enabled. |
| mediaAttachments | array | Optional forward-compatible media asset attachments to associate with the scheduled post. |
| platformOverrides | object | Optional forward-compatible per-platform overrides keyed by platform ID. |
| recurrenceEndDate | string | Optional forward-compatible ISO 8601 end date for recurrence. |
{
"type": "object",
"required": [
"platforms",
"content",
"scheduledTime"
],
"properties": {
"content": {
"type": "object",
"required": [
"text"
],
"properties": {
"link": {
"type": "string",
"description": "Pinterest source URL for the pin"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "YouTube video tags"
},
"text": {
"type": "string",
"description": "Post caption/text. Required for all platforms."
},
"title": {
"type": "string",
"description": "YouTube video title, Pinterest pin title"
},
"boardId": {
"type": "string",
"description": "Pinterest only: Board ID to pin to. If not specified, uses first available board."
},
"mediaUrl": {
"type": "string",
"description": "Public HTTPS media URL. Do NOT pass local file paths — use create_upload_session to get a public URL first."
},
"boardName": {
"type": "string",
"description": "Pinterest only: Board name (alternative to boardId). Searches for matching board."
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Media type hint: 'image' for photos, 'video' for Reels/TikTok"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Carousel: Instagram (2-10 images), Threads (2-20 mixed), X (2-4 images)"
},
"description": {
"type": "string",
"description": "YouTube video description"
},
"youtubeMode": {
"enum": [
"auto",
"short",
"standard"
],
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for YouTube mode. Preferred: content.platformSettings.youtube.youtubeMode"
},
"facebookMode": {
"enum": [
"auto",
"reel",
"feed"
],
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for Facebook mode. Preferred: content.platformSettings.facebook.facebookMode"
},
"firstComment": {
"type": "string",
"description": "Instagram first comment text (often used for hashtags)"
},
"threadTweets": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Tweet text (max 280 chars)"
},
"mediaUrl": {
"type": "string",
"description": "Optional public HTTPS image or video URL for this tweet"
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Media type hint"
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional multiple images for this tweet (max 4)"
}
}
},
"description": "X (Twitter) only: additional tweets in the thread after the main text. The main text is always the first tweet. Each item here becomes a subsequent reply in the thread."
},
"privacyStatus": {
"enum": [
"public",
"unlisted",
"private"
],
"type": "string",
"description": "YouTube video privacy: public, unlisted, or private"
},
"pinterestBoardId": {
"type": "string",
"deprecated": true,
"description": "Deprecated compatibility alias for Pinterest board targeting. Preferred: content.platformSettings.pinterest.boardId"
},
"platformSettings": {
"type": "object",
"description": "Optional advanced per-platform settings map. Key by platform ID and use it for platform-specific publish options plus per-platform text/title/description overrides.",
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
}
}
},
"team_id": {
"type": "string",
"description": "Team ID to schedule as team. Get available teams with list_teams. If omitted, schedules from personal accounts."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone for queue scheduling and recurring series metadata."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"x",
"linkedin",
"linkedin-page",
"facebook",
"instagram",
"threads",
"bluesky",
"mastodon",
"nostr",
"youtube",
"tiktok",
"lemmy",
"discord",
"slack",
"telegram",
"pinterest",
"dribbble",
"devto",
"hashnode",
"gmb",
"whop",
"producthunt"
],
"type": "string"
},
"description": "Target platforms - ensure content matches each platform's requirements"
},
"scoreGate": {
"type": "number",
"maximum": 100,
"minimum": 1,
"description": "Optional forward-compatible minimum content score threshold for advanced scheduling flows."
},
"recurrence": {
"type": "object",
"required": [
"frequency"
],
"properties": {
"count": {
"type": "number",
"maximum": 52,
"minimum": 1
},
"until": {
"type": "string",
"format": "date-time"
},
"interval": {
"type": "number",
"minimum": 1
},
"frequency": {
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string"
}
},
"description": "Optional forward-compatible structured recurrence definition."
},
"bypassToken": {
"type": "string",
"description": "Optional forward-compatible bypass token returned by advanced scheduling score-gate checks."
},
"scheduleMode": {
"enum": [
"exact",
"queue"
],
"type": "string",
"description": "Optional forward-compatible scheduling mode. 'queue' asks SendIt to place the post in the next available queue slot."
},
"scheduledTime": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 datetime in UTC (e.g., 2025-01-15T14:30:00Z)"
},
"recurrenceRule": {
"type": "string",
"description": "Optional forward-compatible RRULE string for recurring schedules."
},
"targetAccounts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional advanced scheduling target account IDs. Legacy handlers may ignore this until advanced scheduling is enabled."
},
"mediaAttachments": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"url"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"altText": {
"type": "string"
},
"saveToLibrary": {
"type": "boolean"
}
}
},
"description": "Optional forward-compatible media asset attachments to associate with the scheduled post."
},
"platformOverrides": {
"type": "object",
"description": "Optional forward-compatible per-platform overrides keyed by platform ID.",
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"recurrenceEndDate": {
"type": "string",
"format": "date-time",
"description": "Optional forward-compatible ISO 8601 end date for recurrence."
}
}
}| string |
| Optional RRULE string for advanced recurring schedules. |
| targetAccounts* | array | Connected account IDs to schedule to. These determine the target platforms. |
| mediaAttachments | array | Optional media library assets to link to the scheduled post. |
| platformOverrides | object | Optional per-platform overrides keyed by platform ID. Use this for platform-specific text, title, description, or publish settings. |
| recurrenceEndDate | string | Optional ISO 8601 date-time to stop the recurring series. |
{
"type": "object",
"required": [
"content",
"targetAccounts"
],
"properties": {
"content": {
"type": "object",
"properties": {
"body": {
"type": "string",
"description": "Compatibility alias for content text. If both are provided, text wins."
},
"text": {
"type": "string",
"description": "Primary post caption or body text."
},
"title": {
"type": "string",
"description": "Optional title for platforms that support titles such as YouTube or Pinterest."
},
"mediaUrl": {
"type": "string",
"description": "Optional public HTTPS media URL."
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Optional media type hint."
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional public HTTPS media URLs for carousels or multi-asset posts."
},
"firstComment": {
"type": "string",
"description": "Optional Instagram first comment text."
},
"threadTweets": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Tweet text for this follow-up post."
},
"mediaUrl": {
"type": "string",
"description": "Optional public HTTPS media URL for this tweet."
},
"mediaType": {
"enum": [
"image",
"video",
"auto"
],
"type": "string",
"description": "Optional media type hint for this tweet."
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional public HTTPS media URLs for this tweet."
}
}
},
"description": "Optional X thread tweets after the primary tweet."
},
"pinterestBoardId": {
"type": "string",
"description": "Optional Pinterest board ID override."
}
}
},
"team_id": {
"type": "string",
"description": "Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone for queue resolution and recurrence."
},
"scoreGate": {
"type": "number",
"maximum": 100,
"minimum": 1,
"description": "Optional minimum content score threshold. If unmet, the tool can return a bypass token instead of scheduling."
},
"recurrence": {
"type": "object",
"required": [
"frequency"
],
"properties": {
"count": {
"type": "number",
"maximum": 52,
"minimum": 1,
"description": "Maximum number of occurrences to create."
},
"until": {
"type": "string",
"format": "date-time",
"description": "Stop generating occurrences after this ISO 8601 time."
},
"interval": {
"type": "number",
"minimum": 1,
"description": "Repeat every N frequency units."
},
"frequency": {
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string",
"description": "Recurrence frequency."
}
},
"description": "Optional structured recurrence definition."
},
"bypassToken": {
"type": "string",
"description": "Optional bypass token returned from a previous score gate warning."
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 time for exact scheduling. Required unless scheduleMode is 'queue'."
},
"scheduleMode": {
"enum": [
"exact",
"queue"
],
"type": "string",
"description": "Scheduling strategy. Use 'queue' to place the post into the next available queue slot."
},
"recurrenceRule": {
"type": "string",
"description": "Optional RRULE string for advanced recurring schedules."
},
"targetAccounts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Connected account IDs to schedule to. These determine the target platforms."
},
"mediaAttachments": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "Media asset ID."
},
"url": {
"type": "string",
"description": "Public HTTPS URL for the attachment."
},
"altText": {
"type": "string",
"description": "Optional accessibility alt text."
},
"saveToLibrary": {
"type": "boolean",
"description": "If true, preserve this asset in the media library after scheduling."
}
}
},
"description": "Optional media library assets to link to the scheduled post."
},
"platformOverrides": {
"type": "object",
"description": "Optional per-platform overrides keyed by platform ID. Use this for platform-specific text, title, description, or publish settings.",
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"recurrenceEndDate": {
"type": "string",
"format": "date-time",
"description": "Optional ISO 8601 date-time to stop the recurring series."
}
}
}