Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,528Letters: 13Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:793fa404c8165cf5914b78df19c6e28459fae2a9f6cdb5b6e155e041acac2d94
What it is
What a remote MCP server returned when asked what it offers: 148 tools

The blob, as servednamed by its sha256

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