# SendIt (remote · sendit.infiniteappsai.com)

AI-native social media publishing to LinkedIn, Instagram, Threads, TikTok, and X.

- Trust score: 78/100 (medium)
- Change this week: +8
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `sendit.infiniteappsai.com`: 78/100 (this document), [markdown](https://verifymcp.io/servers/shree-git-sendit/sendit.md), [page](https://verifymcp.io/servers/shree-git-sendit/sendit)

## Channel facts

- Endpoint: `https://sendit.infiniteappsai.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 82/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 13713 tokens (~83/item across 165 items; 148 tools + 17 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 91% of tool parameters carry a description.
  - Structured output schemas are declared (9% of tools); any adoption earns full credit.
- **Capabilities**: 47/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http shree-git-sendit https://sendit.infiniteappsai.com/mcp
```

### Codex

```toml
[mcp_servers.shree-git-sendit]
url = "https://sendit.infiniteappsai.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "shree-git-sendit": {
      "type": "remote",
      "url": "https://sendit.infiniteappsai.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add shree-git-sendit --url https://sendit.infiniteappsai.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  shree-git-sendit:
    url: "https://sendit.infiniteappsai.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "shree-git-sendit": {
      "type": "http",
      "url": "https://sendit.infiniteappsai.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 77, +6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 71, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 70, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 69)

First indexed and scored.

## MCP tools (148)

### `publish_content` (~206 tokens)

Publish Content

Publish content to social media platforms.

MEDIA RULES:
• mediaUrl must be a public HTTPS URL — NOT a local file path.
• If the user shares an image/video in chat, call create_upload_session FIRST to get a browser upload link, then use the returned URL here.
• Text-only works on: LinkedIn, Threads, X, Facebook.
• Image required: Instagram, Pinterest.
• TikTok supports one video or 1-35 Photo Mode images.
• Video required: YouTube.

Call validate_content to check before publishing.

Input parameters:

- `content` (object, required)
- `platforms` (array, required): 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
- `team_id` (string): Team ID to publish as team. Get available teams with list_teams. If omitted, publishes from personal accounts.

Output parameters:

- `errorMessage` (string)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `results` (array)
- `success` (boolean)
- `successfulPlatforms` (number)
- `totalPlatforms` (number)

### `schedule_content` (~344 tokens)

Schedule Content

Schedule content for future publishing. Same media rules as publish_content apply.

• mediaUrl must be a public HTTPS URL — call create_upload_session if user shares a file in chat.
• Content is validated at schedule time, not publish time.

Input parameters:

- `bypassToken` (string): Optional forward-compatible bypass token returned by advanced scheduling score-gate checks.
- `content` (object, required)
- `mediaAttachments` (array): Optional forward-compatible media asset attachments to associate with the scheduled post.
- `platformOverrides` (object): Optional forward-compatible per-platform overrides keyed by platform ID.
- `platforms` (array, required): Target platforms - ensure content matches each platform's requirements
- `recurrence` (object): Optional forward-compatible structured recurrence definition.
- `recurrenceEndDate` (string): Optional forward-compatible ISO 8601 end date for recurrence.
- `recurrenceRule` (string): Optional forward-compatible RRULE string for recurring schedules.
- `scheduleMode` (string): Optional forward-compatible scheduling mode. 'queue' asks SendIt to place the post in the next available queue slot.
- `scheduledTime` (string, required): ISO 8601 datetime in UTC (e.g., 2025-01-15T14:30:00Z)
- `scoreGate` (number): Optional forward-compatible minimum content score threshold for advanced scheduling flows.
- `targetAccounts` (array): Optional advanced scheduling target account IDs. Legacy handlers may ignore this until advanced scheduling is enabled.
- `team_id` (string): Team ID to schedule as team. Get available teams with list_teams. If omitted, schedules from personal accounts.
- `timezone` (string): Optional IANA timezone for queue scheduling and recurring series metadata.

Output parameters:

- `errorMessage` (string)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `platforms` (array)
- `scheduleId` (string)
- `scheduledTime` (string)
- `status` (string)
- `success` (boolean)

### `get_analytics` (~153 tokens)

Get Analytics

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.

Input parameters:

- `endDate` (string): Optional end date (YYYY-MM-DD).
- `limit` (number): Optional maximum posts to return. Facebook feed scanning is capped at 1,000 posts.
- `platform` (string, required): Platform to get analytics for
- `startDate` (string): Optional start date (YYYY-MM-DD). For Facebook, omit this to scan up to 2 years of Page feed history.
- `team_id` (string): Team ID to get team analytics. If omitted, gets personal analytics.

Output parameters:

- `dateRange` (object)
- `errorMessage` (string)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `platform` (string)
- `rawText` (string)
- `success` (boolean)
- `summary` (object)
- `topPosts` (array)
- `warning` (string)
- `warnings` (array)

### `list_teams` (~45 tokens)

List Teams

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.

### `list_connected_accounts` (~59 tokens)

List Connected Accounts

List all connected social media accounts. Pass team_id to see a team's accounts instead of your personal ones.

Input parameters:

- `team_id` (string): Team ID to list team accounts. Get available teams with list_teams. If omitted, lists personal accounts.

Output parameters:

- `accounts` (array)
- `connectedCount` (number)
- `errorMessage` (string)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `totalPlatforms` (number)

### `get_tiktok_creator_info` (~61 tokens)

Get TikTok Creator Info

Fetch fresh TikTok Content Posting API creator info for the connected account. Use this before rendering TikTok publish settings.

Input parameters:

- `team_id` (string): Team ID to fetch the team TikTok account. If omitted, uses the personal TikTok account.

### `get_scheduled_posts` (~182 tokens)

Get Scheduled Posts

List scheduled posts and their current status, including pending, publishing, TikTok draft-delivered, published, failed, or cancelled posts.

Input parameters:

- `cursor` (string): Optional forward-compatible pagination cursor from a previous scheduled-post listing response.
- `endDate` (string): Optional forward-compatible upper date bound in YYYY-MM-DD format.
- `limit` (number): Optional forward-compatible maximum number of scheduled posts to return.
- `platform` (string): Filter by platform (optional)
- `startDate` (string): Optional forward-compatible lower date bound in YYYY-MM-DD format.
- `status` (string): Optional forward-compatible status filter. Legacy handlers may continue returning pending posts only.
- `team_id` (string): Team ID to list team's scheduled posts. If omitted, lists personal posts.
- `upcoming` (boolean): Optional forward-compatible flag to prefer upcoming scheduled posts.

Output parameters:

- `errorMessage` (string)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `postCount` (number)
- `posts` (array)
- `schedules` (array)
- `success` (boolean)

### `delete_scheduled_post` (~60 tokens)

Delete Scheduled Post

Cancel a scheduled post before it's published.

Input parameters:

- `scheduleId` (string, required): Schedule ID to delete
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

Output parameters:

- `error` (string)
- `message` (string)
- `success` (boolean)

### `delete_post` (~126 tokens)

Delete Published Post

Delete a published post from a platform. Supports: X, Facebook, LinkedIn, Threads, YouTube, Pinterest, Bluesky, Mastodon, Telegram.

Provide the post ID (database ID returned when published through SendIt), the platform post ID, or the post URL.

Input parameters:

- `platform` (string, required): Platform to delete from
- `postId` (string, required): Post identifier: database ID, platform post ID, or post URL
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

Output parameters:

- `error` (string)
- `message` (string)
- `success` (boolean)

### `edit_post` (~188 tokens)

Edit Published Post

Edit a published post on a supported platform. Updates the text/caption of an already published post.

SUPPORTED: YouTube (title/description/tags), LinkedIn, Facebook, Mastodon, Telegram, Bluesky
NOT SUPPORTED: X, Threads, Instagram, Pinterest, TikTok

Requires the published post ID returned when the post was originally published through SendIt.

Input parameters:

- `description` (string): New description (YouTube only)
- `postId` (string, required): Published post ID (database ID returned when the post was published)
- `tags` (array): New tags (YouTube only)
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `text` (string): New text/caption/commentary for the post
- `title` (string): New title (YouTube only)

### `get_platform_requirements` (~80 tokens)

Get Platform Requirements

Get detailed content requirements for a platform.

Returns: Character limits, media specifications, rate limits, and special notes.

Call this when you need specifics like exact character counts, file size limits, or supported formats. The publish_content description has a quick reference, but this tool provides complete details.

Input parameters:

- `platform` (string, required): Platform to get requirements for

Output parameters:

- `name` (string)
- `platform` (string)
- `textLimit` (number)

### `validate_content` (~98 tokens)

Validate Content

Validate content against platform requirements BEFORE publishing.

USE THIS WHEN:
• Unsure if content will work on target platforms
• Publishing to multiple platforms with different requirements
• Want to catch errors before attempting publish

Returns specific errors (e.g., 'TikTok requires video', 'Instagram needs media') and warnings (e.g., 'text close to character limit').

Input parameters:

- `content` (object, required)
- `platforms` (array, required): Platforms to validate against

Output parameters:

- `errorMessage` (string)
- `errors` (array)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `platforms` (array)
- `valid` (boolean)
- `warnings` (array)

### `upload_media` (~197 tokens)

Upload Media

FOR CLAUDE DESKTOP ONLY (with filesystem access).
For Claude.ai/web: Use create_upload_session instead - it provides a browser upload link.

Upload local media to cloud storage, returning a public HTTPS URL.

WHEN TO USE:
• Instagram, LinkedIn, Threads, X: REQUIRED for local files before calling publish_content
• TikTok: NOT NEEDED - pass local path directly to publish_content

SUPPORTED FORMATS:
• Images: jpg, png, gif, webp (max 10MB)
• Videos: mp4, mov, webm (max 100MB)

Returns { url: 'https://...' } for use in publish_content mediaUrl parameter.

Input parameters:

- `filePath` (string): Local file path to upload (e.g., ~/Photos/image.jpg)
- `folder` (string): Optional folder name for organizing uploads
- `mediaUrl` (string): Existing public URL to validate (alternative to filePath)

### `create_upload_session` (~136 tokens)

Create Upload Session

Create a browser upload link for media files. ALWAYS use this when the user shares an image or video in chat — their file is local and cannot be passed directly to publish_content.

WORKFLOW:
1\. Call this tool to get an uploadUrl
2\. Give the user the link to open in their browser and upload their file
3\. After upload, call get_upload_session to get the public media URL(s)
4\. Use the returned URL with publish_content or schedule_content

Supports up to 20 files per session. Expires in 15 minutes.

Input parameters:

- `mediaType` (string): Optional hint for expected media type

Output parameters:

- `errorMessage` (string)
- `expiresAt` (string)
- `files` (array)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `mediaItems` (array)
- `mediaType` (string)
- `mediaUrl` (string)
- `mediaUrls` (array)
- `sessionId` (string)
- `status` (string)
- `success` (boolean)
- `uploadUrl` (string)

### `get_upload_session` (~110 tokens)

Get Upload Session

Check the status of an upload session and get the media URL(s) once uploaded.

Call this after the user clicks the upload link to see if they've completed the upload.

Returns:
• status: 'pending' - User hasn't uploaded yet
• status: 'uploaded' - Upload complete, includes mediaUrl, mediaUrls, fileCount, mediaItems
• status: 'expired' - Session expired (15 min limit)

Input parameters:

- `sessionId` (string, required): The session ID returned from create_upload_session

Output parameters:

- `errorMessage` (string)
- `expiresAt` (string)
- `files` (array)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `mediaItems` (array)
- `mediaType` (string)
- `mediaUrl` (string)
- `mediaUrls` (array)
- `sessionId` (string)
- `status` (string)
- `success` (boolean)
- `uploadUrl` (string)

### `create_goal` (~100 tokens)

Create Product Hunt Goal

Create a new maker goal on Product Hunt.

REQUIREMENTS:
• Must have Product Hunt account connected
• Write access requires app whitelisting by Product Hunt
• Goal title limited to 280 characters

If write access is not available, you'll receive an error with instructions to request whitelisting.

Input parameters:

- `dueAt` (string): Optional due date in ISO 8601 format
- `title` (string, required): Goal title (max 280 characters)

### `complete_goal` (~75 tokens)

Complete Product Hunt Goal

Mark a Product Hunt goal as complete or incomplete.

REQUIREMENTS:
• Must have Product Hunt account connected
• Write access requires app whitelisting by Product Hunt

Input parameters:

- `completed` (boolean, required): Set to true to mark complete, false to mark incomplete
- `goalId` (string, required): The ID of the goal to update

### `upvote_product` (~68 tokens)

Upvote Product Hunt Product

Upvote a product on Product Hunt.

REQUIREMENTS:
• Must have Product Hunt account connected
• Write access requires app whitelisting by Product Hunt

Provide the Product Hunt post ID (not the slug).

Input parameters:

- `postId` (string, required): The Product Hunt post ID to upvote

### `get_producthunt_analytics` (~92 tokens)

Get Product Hunt Analytics

Get analytics for your products on Product Hunt.

Returns:
• Total products, votes, comments, reviews
• Number of featured products
• Per-product metrics including vote counts and ratings

Works with read-only access (no whitelisting required).

Input parameters:

- `limit` (number): Maximum products to fetch (default 20)
- `username` (string): Product Hunt username (optional, defaults to connected account)

### `bulk_schedule` (~253 tokens)

Bulk Schedule Posts

Schedule multiple posts at once from CSV content.

USE THIS WHEN:
• User has a spreadsheet or list of posts to schedule
• Planning a content calendar for a month
• Migrating content from another tool

CSV FORMAT (required columns):
• platform: linkedin, instagram, x, tiktok, threads
• scheduled_time: ISO 8601 format (e.g., 2024-02-15T10:00:00Z)
• text: Post content/caption

OPTIONAL COLUMNS:
• media_url: Image or video URL
• first_comment: First comment to add (Instagram/LinkedIn)
• hashtags: Additional hashtags to append

PROCESS:
1\. First call with validate_only: true to check for errors
2\. Review validation report with user
3\. Call again with validate_only: false to execute import

Input parameters:

- `csv_content` (string, required): CSV content as a string (include header row)
- `filename` (string): Optional filename for tracking (default: upload.csv)
- `skip_errors` (boolean): If true, skip rows with errors and schedule valid rows only
- `validate_only` (boolean): If true, only validate without scheduling. Default: true for safety.

### `preview_content` (~117 tokens)

Preview Content

Generate a visual preview of how content will appear on each platform.

USE THIS WHEN:
• Before publishing to see how posts will look
• To validate content against platform requirements
• To check character counts, hashtag limits, and media requirements

Returns an HTML preview mockup for each platform with validation results:
• Character count vs limit
• Hashtag count (Instagram has 30 max)
• Media requirement check
• Platform-specific warnings and errors

Input parameters:

- `content` (object, required)
- `platforms` (array, required): Platforms to generate previews for

Output parameters:

- `errorMessage` (string)
- `errors` (array)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `platforms` (array)
- `valid` (boolean)
- `warnings` (array)

### `connect_x` (~18 tokens)

Connect X

Get the OAuth URL to connect your X account.

### `connect_linkedin` (~20 tokens)

Connect LinkedIn

Get the OAuth URL to connect your LinkedIn account.

### `connect_linkedin-page` (~22 tokens)

Connect LinkedIn Page

Get the OAuth URL to connect your LinkedIn Page account.

### `connect_facebook` (~19 tokens)

Connect Facebook

Get the OAuth URL to connect your Facebook account.

### `connect_instagram` (~19 tokens)

Connect Instagram

Get the OAuth URL to connect your Instagram account.

### `connect_threads` (~18 tokens)

Connect Threads

Get the OAuth URL to connect your Threads account.

### `connect_bluesky` (~26 tokens)

Connect Bluesky

Get the credential setup schema to connect Bluesky using API key or token credentials.

### `connect_mastodon` (~21 tokens)

Connect Mastodon

Get the OAuth URL to connect your Mastodon account.

### `connect_nostr` (~32 tokens)

Connect Nostr

Get the custom connection setup instructions for Nostr. Note: This is an unofficial connector and may change without notice.

### `connect_youtube` (~20 tokens)

Connect YouTube

Get the OAuth URL to connect your YouTube account.

### `connect_tiktok` (~20 tokens)

Connect TikTok

Get the OAuth URL to connect your TikTok account.

### `connect_lemmy` (~26 tokens)

Connect Lemmy

Get the credential setup schema to connect Lemmy using API key or token credentials.

### `connect_discord` (~18 tokens)

Connect Discord

Get the webhook setup schema to connect Discord.

### `connect_slack` (~18 tokens)

Connect Slack

Get the webhook setup schema to connect Slack.

### `connect_telegram` (~24 tokens)

Connect Telegram

Get the credential setup schema to connect Telegram using API key or token credentials.

### `connect_pinterest` (~19 tokens)

Connect Pinterest

Get the OAuth URL to connect your Pinterest account.

### `connect_dribbble` (~22 tokens)

Connect Dribbble

Get the OAuth URL to connect your Dribbble account.

### `connect_devto` (~25 tokens)

Connect DEV.to

Get the credential setup schema to connect DEV.to using API key or token credentials.

### `connect_hashnode` (~25 tokens)

Connect Hashnode

Get the credential setup schema to connect Hashnode using API key or token credentials.

### `connect_gmb` (~21 tokens)

Connect Google My Business

Get the OAuth URL to connect your Google My Business account.

### `connect_whop` (~38 tokens)

Connect Whop

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.

### `connect_producthunt` (~20 tokens)

Connect Product Hunt

Get the OAuth URL to connect your Product Hunt account.

### `list_library` (~106 tokens)

List Content Library

List saved content from your library. Returns drafts, templates, and evergreen content.

Input parameters:

- `category` (string): Filter by category
- `limit` (number): Maximum items to return (default 20, max 100)
- `search` (string): Search in title and text
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `type` (string): Filter by content type

### `get_library_item` (~60 tokens)

Get Library Item

Get a specific content library item by ID.

Input parameters:

- `id` (string, required): The content library item ID
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `save_to_library` (~170 tokens)

Save to Library

Save content to your library as a draft, template, or evergreen content for reuse.

Input parameters:

- `category` (string): Category for organization
- `evergreenEnabled` (boolean): Enable evergreen auto-republishing
- `evergreenIntervalDays` (number): Days between evergreen republishes
- `mediaUrl` (string): Media URL (image or video)
- `tags` (array): Tags for organization
- `targetPlatforms` (array): Which platforms this content is designed for
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `text` (string, required): The content text/caption
- `title` (string, required): Title for the saved content
- `type` (string): Content type (default: draft)

### `update_library_item` (~136 tokens)

Update Library Item

Update an existing content library item.

Input parameters:

- `category` (string): Category
- `evergreenEnabled` (boolean): Enable evergreen
- `evergreenIntervalDays` (number): Republish interval in days
- `id` (string, required): The content library item ID
- `mediaUrl` (string): Media URL
- `tags` (array): Tags
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `text` (string): New content text
- `title` (string): New title
- `type` (string): Content type

### `delete_library_item` (~59 tokens)

Delete Library Item

Delete a content library item.

Input parameters:

- `id` (string, required): The content library item ID to delete
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `publish_from_library` (~76 tokens)

Publish from Library

Publish content directly from your library to one or more platforms.

Input parameters:

- `id` (string, required): The content library item ID to publish
- `platforms` (array, required): Platforms to publish to
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `trigger_scheduled_post` (~66 tokens)

Trigger Scheduled Post

Manually trigger a scheduled post to publish immediately.

Input parameters:

- `scheduleId` (string, required): The ID of the scheduled post to trigger
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

Output parameters:

- `errorMessage` (string)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `results` (array)
- `success` (boolean)
- `successfulPlatforms` (number)
- `totalPlatforms` (number)

### `list_dead_letter` (~94 tokens)

List Dead Letter Posts

List posts that failed all retry attempts and were moved to the dead letter queue. Review and decide to requeue or discard them.

Input parameters:

- `limit` (number): Maximum items to return (default 50)
- `status` (string): Filter by status (default: dead)
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `requeue_dead_letter` (~79 tokens)

Requeue Dead Letter Post

Requeue a dead letter post for another publishing attempt. Creates a new scheduled post from the dead letter entry.

Input parameters:

- `deadLetterId` (string, required): The dead letter post ID to requeue
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `list_brand_voices` (~64 tokens)

List Brand Voices

List all brand voice profiles. Brand voices guide AI content generation with tone, personality, writing rules, and example posts.

Input parameters:

- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `create_brand_voice` (~269 tokens)

Create Brand Voice

Create a brand voice profile to guide AI content generation.

Configurable fields:
• tone: Overall tone (professional, casual, energetic, witty, etc.)
• personality: Brand personality description
• writingStyle: Writing style guidelines
• doRules: Array of things the brand voice SHOULD do
• dontRules: Array of things the brand voice should NEVER do
• examplePosts: Example posts in this brand voice
• approvedHashtags: Preferred hashtags to prioritize
• bannedWords: Words to never use in content
• keyPhrases: Key phrases to incorporate naturally

Input parameters:

- `approvedHashtags` (array): Preferred hashtags
- `bannedWords` (array): Words to never use
- `doRules` (array): Things the brand voice SHOULD do
- `dontRules` (array): Things the brand voice should NEVER do
- `examplePosts` (array): Example posts in this voice
- `isDefault` (boolean): Set as the default brand voice
- `keyPhrases` (array): Key phrases to incorporate
- `name` (string, required): Name for this brand voice profile
- `personality` (string): Brand personality description
- `tone` (string): Overall tone (e.g., professional, casual, energetic)
- `writingStyle` (string): Writing style guidelines

### `set_default_brand_voice` (~49 tokens)

Set Default Brand Voice

Set a brand voice profile as the default. The default brand voice is automatically used by all AI content generation tools.

Input parameters:

- `id` (string, required): The brand voice profile ID to set as default

### `list_pending_approvals` (~28 tokens)

List Pending Approvals

List all scheduled posts that are pending approval. These posts won't be published until approved.

### `approve_post` (~84 tokens)

Approve Post

Approve a scheduled post that is pending approval. Once approved, it will be published at the scheduled time.

Input parameters:

- `comment` (string): Optional approval comment
- `postId` (string, required): The scheduled post ID to approve
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `reject_post` (~78 tokens)

Reject Post

Reject a scheduled post that is pending approval. The post will not be published.

Input parameters:

- `postId` (string, required): The scheduled post ID to reject
- `reason` (string, required): Reason for rejection
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `list_inbox` (~77 tokens)

List Social Inbox

List comment threads on your published posts.

Returns threads from your social inbox, showing comments and replies from followers on your posts across all platforms.

Input parameters:

- `limit` (number): Max threads to return (default 20)
- `platform` (string): Filter by platform (optional)
- `status` (string): Filter by thread status (optional)

### `reply_to_comment` (~73 tokens)

Reply to Comment

Reply to a comment on one of your published posts.

Supported platforms: X (reply tweets), Threads, Instagram, Facebook, YouTube.
Not supported: LinkedIn, Pinterest, TikTok.

Input parameters:

- `text` (string, required): Your reply text
- `threadId` (string, required): The inbox thread ID to reply to

### `get_best_times` (~78 tokens)

Get Best Times to Post

Get the optimal posting times for a platform based on your historical engagement data.

Returns top time slots ranked by engagement score. Falls back to industry defaults when insufficient personal data exists.

Input parameters:

- `limit` (number): Number of time slots to return (default 5, max 20)
- `platform` (string, required): Platform to get best times for

### `score_content` (~163 tokens)

Score Content Quality

Score content quality on a 0-100 scale before publishing.

Evaluates 5 factors (20 points each):
1\. Text length optimization for target platforms
2\. Hashtag count optimization
3\. Posting time alignment with best engagement windows
4\. Media presence (images/videos)
5\. Content patterns (CTA, hooks, formatting, emoji)

Returns overall score, per-factor breakdown, and improvement suggestions.

Input parameters:

- `mediaUrl` (string): Primary media URL (optional)
- `mediaUrls` (array): Multiple media URLs for carousel (optional)
- `platforms` (array, required): Target platforms to score against
- `scheduledTime` (string): Scheduled publish time in ISO 8601 (optional, improves time score)
- `text` (string, required): The post text content

### `get_audit_log` (~146 tokens)

Get Audit Log

Retrieve audit log entries for your account.

Shows a timestamped trail of all actions performed: publishes, schedules, account connections, content library changes, etc.

Filter by action type, resource type, or date range.

Input parameters:

- `action` (string): Filter by action (e.g. 'post.published', 'account.connected')
- `end_date` (string): End date (YYYY-MM-DD)
- `limit` (number): Max entries to return (default 50, max 200)
- `resource_type` (string): Filter by resource type (e.g. 'post', 'account', 'keyword')
- `start_date` (string): Start date (YYYY-MM-DD)

### `generate_ai_media` (~129 tokens)

Generate AI Media

Generate AI images or videos using approved media providers.

Supported providers:
\- heygen-mcp: HeyGen Direct API or MCP video/avatar generation
\- codex-oauth-image: Codex OAuth image generation for gpt-image-2

Returns a job ID that can be polled for status.

Input parameters:

- `media_type` (string): Type of media to generate (default: video)
- `parameters` (object): Provider-specific parameters (e.g. duration, resolution, style, aspectRatio)
- `prompt` (string, required): Creative prompt for generation
- `provider` (string, required): AI media provider

### `check_ai_media_status` (~53 tokens)

Check AI Media Status

Check the status of an AI media generation job.

Returns current status (pending, processing, completed, failed) and result URL when complete.

Input parameters:

- `job_id` (string, required): The AI media job ID to check

### `generate_content` (~176 tokens)

Generate AI Content

Generate AI-powered platform-optimized content without publishing.

Uses AI to create platform-specific text, hashtags, and titles from a prompt or media URL.
Respects brand voice profiles if configured.

Returns generated content variants for each target platform. Use publish_content to publish the generated content, or publish_ai to generate and publish in one step.

Input parameters:

- `contentOverrides` (object): Manual overrides for generated content
- `generation` (object): Generation parameters for tone, style, and CTA
- `hashtags` (string): Hashtag mode
- `mediaUrl` (string): Media URL to analyze for content generation
- `platforms` (array, required): Target platforms to generate content for
- `prompt` (string): Creative prompt or topic for content generation
- `strictAi` (boolean): If true, fail instead of using fallback templates when AI is unavailable

### `publish_ai` (~150 tokens)

AI Generate & Publish

Generate AI content and publish it in a single step.

Combines generate_content + publish_content into one call.
First generates platform-optimized content using AI, then publishes to the specified platforms.

Same platform requirements as publish_content apply.

Input parameters:

- `contentOverrides` (object)
- `generation` (object)
- `hashtags` (string)
- `mediaType` (string): Media type hint
- `mediaUrl` (string): Media URL for the post
- `mediaUrls` (array): Multiple media URLs for carousel
- `platforms` (array, required): Target platforms to generate content for and publish to
- `prompt` (string): Creative prompt for AI content generation
- `strictAi` (boolean)

### `create_library_item` (~146 tokens)

Create Library Item

Save content to your library as a draft, template, or evergreen content for reuse. Alias for save_to_library.

Input parameters:

- `category` (string): Category for organization
- `evergreenEnabled` (boolean): Enable evergreen auto-republishing
- `evergreenIntervalDays` (number): Days between evergreen republishes
- `mediaUrl` (string): Media URL (image or video)
- `tags` (array): Tags for organization
- `targetPlatforms` (array): Which platforms this content is designed for
- `text` (string, required): The content text/caption
- `title` (string, required): Title for the saved content
- `type` (string): Content type (default: draft)

### `draft_reply` (~79 tokens)

Draft Reply

Generate an AI-powered reply draft for a social mention. Returns a draft with tone and safety flags.

Input parameters:

- `max_length` (number): Maximum reply length in characters (default: 280)
- `mention_id` (string, required): The ID of the mention to reply to (required)
- `tone` (string): Reply tone: friendly, professional, casual

### `summarize_mentions` (~86 tokens)

Summarize Mentions

Cluster and summarize recent social mentions by theme and sentiment using AI.

Input parameters:

- `keyword_id` (string): Filter to mentions matching a specific keyword
- `limit` (number): Max mentions to analyze (default: 30, max: 50)
- `platform` (string): Filter to a specific platform
- `since` (string): ISO date string — only include mentions after this date

### `generate_post_bundle` (~90 tokens)

Generate Post Bundle

Generate multi-variant AI content with quality scoring for multiple platforms. Returns the best variant plus alternatives.

Input parameters:

- `generation` (object): Generation parameters (tone, style, CTA)
- `platforms` (array, required): Target platforms (required)
- `prompt` (string, required): Content topic or instructions (required)
- `variant_count` (number): Number of variants to generate (1-5, default: 3)

### `critique_post` (~74 tokens)

Critique Post

Score and critique post content with AI-powered suggestions. Returns a quality score (0-100), breakdown, and improvement tips.

Input parameters:

- `mediaUrl` (string): Optional media URL for media score
- `platforms` (array, required): Target platforms for scoring context (required)
- `text` (string, required): Post text to critique (required)

### `connect_platform` (~46 tokens)

Connect Platform

Connect a platform dynamically by platform ID. Returns OAuth URL, webhook setup details, or credential form contract depending on the platform auth method.

Input parameters:

- `platform` (string, required): Platform ID to connect

Output parameters:

- `alreadyConnected` (boolean)
- `authUrl` (string)
- `connected` (boolean)
- `errorMessage` (string)
- `followUpSuggestions` (array)
- `isError` (boolean)
- `note` (string)
- `platform` (string)
- `setup` (object)
- `username` (string)

### `get_platform_settings_schema` (~51 tokens)

Get Platform Settings Schema

Get the JSON schema contract for content.platformSettings.<platformId>, including platform-specific publish options, validation-only gates, and supported per-platform content overrides.

Input parameters:

- `platform` (string, required): Platform ID to inspect

### `list_connectors` (~87 tokens)

List Available Connectors

List all available connectors in the SendIt platform.

Returns connectors organized by category: organic, paid_media, automation, workspace.
Each connector includes its ID, name, status, auth strategy, and capabilities.

Use this to discover what integrations are available before connecting.

Input parameters:

- `category` (string): Filter by connector category (optional)
- `status` (string): Filter by availability status (optional)

### `get_connector_capabilities` (~57 tokens)

Get Connector Capabilities

Get detailed capabilities and operations for a specific connector.

Returns supported operations, auth requirements, rate limits, and constraints.

Input parameters:

- `connectorId` (string, required): Connector ID (e.g., 'linkedin', 'meta_ads', 'slack')

### `connect_connector` (~112 tokens)

Connect a Connector

Initiate authentication flow for a connector.

For OAuth2 connectors, returns an authorization URL.
For API key connectors, stores the provided key.
For webhook connectors, registers the webhook URL.

Input parameters:

- `apiKey` (string): API key (for api_key auth strategy connectors)
- `botToken` (string): Bot token (for bot_token auth strategy connectors like Telegram, Discord)
- `connectorId` (string, required): Connector ID to connect
- `webhookUrl` (string): Webhook URL (for webhook auth strategy connectors)

### `disconnect_connector` (~43 tokens)

Disconnect a Connector

Disconnect and revoke credentials for a connector.

Input parameters:

- `connectorId` (string, required): Connector ID to disconnect
- `credentialId` (string): Specific credential ID to revoke (optional)

### `list_connected_connectors` (~43 tokens)

List Connected Connectors

List all currently connected connectors with their status and health.
Includes both legacy platform connections and new connector connections.

Input parameters:

- `category` (string): Filter by category (optional)

### `get_connector_health` (~30 tokens)

Get Connector Health

Get health status and SLO metrics for a connector.

Input parameters:

- `connectorId` (string, required): Connector ID

### `execute_connector_operation` (~103 tokens)

Execute Connector Operation

Execute a specific operation on a connected connector.

Use get_connector_capabilities to discover available operations.
Operations include read/write actions specific to each connector.

Input parameters:

- `connectorId` (string, required): Connector ID
- `data` (object): Operation-specific input data
- `idempotencyKey` (string): Idempotency key to prevent duplicate operations (optional)
- `operation` (string, required): Operation name (e.g., 'publish', 'read_posts', 'campaigns.list')

### `list_ad_accounts` (~60 tokens)

List Ad Accounts

List all connected advertising accounts across platforms.
Returns ad accounts from Meta Ads, Google Ads, LinkedIn Ads, TikTok Ads, etc.

Input parameters:

- `platform` (string): Filter by ad platform (e.g., 'meta_ads', 'google_ads_search')

### `create_ad_campaign` (~155 tokens)

Create Ad Campaign

Create a new advertising campaign on a connected ad platform.

Supports campaign creation across Meta Ads, Google Ads, LinkedIn Ads, TikTok Ads, Pinterest Ads, and all other connected ad platforms.

The AI Campaign Builder agent can help design optimal campaign structures.

Input parameters:

- `adAccountId` (string, required): Ad account ID
- `budgetAmount` (number, required): Budget amount in account currency
- `budgetType` (string, required): Budget type
- `endDate` (string): Campaign end date (optional)
- `name` (string, required): Campaign name
- `objective` (string, required): Campaign objective
- `startDate` (string): Campaign start date (ISO 8601)
- `targeting` (object): Targeting configuration (platform-specific)

### `list_ad_campaigns` (~44 tokens)

List Ad Campaigns

List campaigns for an ad account with status and performance summary.

Input parameters:

- `adAccountId` (string, required): Ad account ID
- `status` (string): Filter by status

### `update_ad_campaign` (~73 tokens)

Update Ad Campaign

Update campaign settings (name, budget, dates, status).

Input parameters:

- `budgetAmount` (number): Updated budget amount
- `campaignId` (string, required): Campaign ID
- `endDate` (string): Updated end date
- `name` (string): New campaign name
- `status` (string): Change campaign status

### `create_ad_creative` (~137 tokens)

Create Ad Creative

Create an ad creative (image, video, carousel, or text ad).

The Creative Asset agent can help generate ad visuals and copy.

Input parameters:

- `adSetId` (string): Ad set ID (optional)
- `body` (string, required): Ad body text
- `callToAction` (string): Call to action button text
- `campaignId` (string, required): Campaign ID
- `creativeType` (string, required): Creative type
- `headline` (string, required): Ad headline
- `landingUrl` (string): Landing page URL
- `mediaUrls` (array): Media URLs for the creative
- `name` (string): Creative name

### `get_ad_performance` (~132 tokens)

Get Ad Performance

Get performance metrics for campaigns, ad sets, or creatives.

Returns impressions, clicks, spend, conversions, CTR, CPC, CPM, ROAS, and custom metrics.
Supports date range filtering and breakdown by day.

Input parameters:

- `breakdown` (string): Breakdown dimension
- `endDate` (string): End date (YYYY-MM-DD)
- `entityId` (string, required): Entity ID
- `entityType` (string, required): Entity type to get metrics for
- `metrics` (array): Specific metrics to retrieve (optional, returns all by default)
- `startDate` (string): Start date (YYYY-MM-DD)

### `get_unified_ad_report` (~81 tokens)

Get Unified Ad Report

Get a cross-platform advertising performance report.

Aggregates metrics across all connected ad platforms into a single view.
Useful for comparing performance across Meta, Google, LinkedIn, TikTok, etc.

Input parameters:

- `endDate` (string, required): End date
- `groupBy` (string): Group results by dimension
- `startDate` (string, required): Start date

### `repurpose_url` (~188 tokens)

Repurpose URL Content

Takes a URL (article, YouTube video, or podcast) and repurposes its content into platform-optimized posts.

Supports:
• Web articles — extracts text content
• YouTube videos — extracts transcript/captions
• Podcast RSS feeds — extracts episode descriptions and show notes

Returns platform-specific formatted output (X threads, Instagram carousel slides, Medium articles, etc.) with a quality score (0-100) for each variant.

Input parameters:

- `brand_voice_id` (string): Optional brand voice profile ID to apply
- `target_platforms` (array, required): Target platforms to generate content for (e.g., ['x', 'linkedin', 'instagram'])
- `tone` (string): Optional tone override (e.g., 'professional', 'casual', 'witty')
- `url` (string, required): Source URL to repurpose (article, YouTube video, or podcast RSS feed)

### `list_agents` (~160 tokens)

List AI Agents

List all available AI agents and their capabilities.

SendIt includes 12 specialized agents:
• Strategy Planner - Content strategy from audience/trend analysis
• Content Ideation - Topic ideas from trends and calendar gaps
• Multi-Format Composer - Platform-optimized content from a brief
• Creative Asset - AI image/video generation orchestration
• Variant Repurposer - Repurpose content for different platforms
• Calendar Optimizer - Optimal posting time suggestions
• Listening Analyst - Social mention and sentiment analysis
• Inbox Reply - Contextual reply drafts with brand voice
• Campaign Builder - Ad campaign structure recommendations
• Budget Optimizer - Spend pacing and budget reallocation
• Experimentation - A/B test design and analysis
• Executive Insights - Executive summary reports

### `invoke_agent` (~80 tokens)

Invoke AI Agent

Invoke a specific AI agent with given inputs.

The agent will execute within policy constraints and return structured output.
All agent runs are logged for audit and traceability.

Input parameters:

- `agentId` (string, required): Agent to invoke
- `context` (object): Additional context (brand voice ID, date range, etc.)
- `input` (object, required): Agent-specific input parameters

### `get_agent_run` (~31 tokens)

Get Agent Run Details

Get the details and output of a specific agent run.

Input parameters:

- `runId` (string, required): Agent run ID

### `list_agent_runs` (~58 tokens)

List Agent Runs

List recent agent runs with status and summary.

Input parameters:

- `agentId` (string): Filter by agent (optional)
- `limit` (number): Maximum results to return (default 20)
- `status` (string): Filter by status (optional)

### `get_agent_policies` (~34 tokens)

Get Agent Policies

Get the active policies/guardrails for an agent.

Input parameters:

- `agentId` (string, required): Agent to get policies for

### `update_agent_policy` (~120 tokens)

Update Agent Policy

Create or update a policy/guardrail for an agent.

Policy types:
• brand_safety - Content must align with brand guidelines
• platform_compliance - Must follow platform ad policies
• approval_gate - Require human approval before execution
• budget_limit - Cap spending or resource usage
• content_filter - Filter certain topics or language

Input parameters:

- `active` (boolean): Whether policy is active
- `agentId` (string, required): Agent to set policy for
- `policyType` (string, required): Policy type
- `rules` (array, required): Policy rules

### `list_workflows` (~48 tokens)

List Workflows

List all automation workflows with their status and trigger info.

Input parameters:

- `active` (boolean): Filter by active/inactive (optional)
- `triggerType` (string): Filter by trigger type (optional)

### `create_workflow` (~233 tokens)

Create Workflow

Create a new automation workflow.

Workflows consist of a trigger and a sequence of steps.

Trigger types:
• manual - Run on demand
• schedule - Cron-based schedule
• event - Triggered by SendIt events (post published, mention detected, etc.)
• webhook - Triggered by external webhook
• connector_event - Triggered by connector-specific events

Step types:
• connector_action - Execute a connector operation
• connector_operation - Alias of connector_action
• agent_invoke - Run an AI agent
• condition - Conditional control step (skip subsequent steps)
• delay - Wait for a duration
• http_request - Outbound HTTP request
• transform - Transform data between steps
• notify - Send notification (email, Slack, etc.)

Input parameters:

- `active` (boolean): Activate workflow immediately (default: false)
- `description` (string): Workflow description
- `name` (string, required): Workflow name
- `steps` (array, required): Workflow steps in execution order
- `triggerConfig` (object, required): Trigger configuration (cron expression, event type, etc.)
- `triggerType` (string, required): Trigger type

### `update_workflow` (~48 tokens)

Update Workflow

Update a workflow's configuration or status.

Input parameters:

- `active` (boolean)
- `name` (string)
- `steps` (array)
- `workflowId` (string, required): Workflow ID

### `delete_workflow` (~24 tokens)

Delete Workflow

Delete a workflow permanently.

Input parameters:

- `workflowId` (string, required): Workflow ID

### `trigger_workflow` (~44 tokens)

Trigger Workflow

Manually trigger a workflow run.

Input parameters:

- `inputData` (object): Input data to pass to the workflow run
- `workflowId` (string, required): Workflow ID to trigger

### `list_workflow_runs` (~47 tokens)

List Workflow Runs

List recent runs for a workflow.

Input parameters:

- `limit` (number): Max results (default 20)
- `status` (string)
- `workflowId` (string, required): Workflow ID

### `get_workflow_run` (~33 tokens)

Get Workflow Run Details

Get detailed step-by-step execution log for a workflow run.

Input parameters:

- `runId` (string, required): Workflow run ID

### `get_unified_analytics` (~124 tokens)

Get Unified Analytics

Get cross-platform analytics combining organic and paid performance.

Aggregates metrics across all connected platforms into a single view.
Supports time-series breakdowns and platform comparison.

Input parameters:

- `breakdown` (string): Breakdown dimension
- `endDate` (string, required): End date (YYYY-MM-DD)
- `includeOrganic` (boolean): Include organic metrics (default true)
- `includePaid` (boolean): Include paid metrics (default true)
- `platforms` (array): Filter to specific platforms (optional, all if omitted)
- `startDate` (string, required): Start date (YYYY-MM-DD)

### `get_attribution_report` (~131 tokens)

Get Attribution Report

Generate an attribution report showing how channels contribute to conversions.

Models:
• first_touch - All credit to first interaction
• last_touch - All credit to last interaction
• linear - Equal credit across all touchpoints
• time_decay - More credit to recent touchpoints
• position_based - 40% first, 40% last, 20% middle
• data_driven - ML-based attribution

Input parameters:

- `conversionType` (string): Filter by conversion type (optional)
- `endDate` (string, required)
- `model` (string, required): Attribution model
- `startDate` (string, required)

### `get_anomaly_alerts` (~72 tokens)

Get Anomaly Alerts

Get recent anomaly alerts detected across metrics.

Includes sudden drops/spikes in engagement, unusual spend patterns, and content performance outliers.

Input parameters:

- `dismissed` (boolean): Include dismissed alerts
- `limit` (number): Max results (default 20)
- `severity` (string): Filter by severity (optional)

### `get_benchmark_comparison` (~68 tokens)

Get Benchmark Comparison

Compare your performance against industry benchmarks.

Returns how your engagement rates, growth, and content performance compare to similar accounts in your industry.

Input parameters:

- `industry` (string): Industry vertical for comparison
- `metric` (string, required): Metric to compare
- `platform` (string, required): Platform to benchmark

### `get_post_analytics` (~97 tokens)

Get Post Analytics

Fetch drilldown analytics for one published post, including per-snapshot metrics and campaign context.

Input parameters:

- `id` (string): Compatibility alias for postId.
- `postId` (string): Published post ID to inspect.
- `publishedPostId` (string): Compatibility alias for postId.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `list_analytics_reports` (~53 tokens)

List Analytics Reports

List saved analytics report definitions for the current personal or team scope.

Input parameters:

- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `run_analytics_report` (~80 tokens)

Run Analytics Report

Execute one saved analytics report immediately and return the generated run plus aggregated analytics data.

Input parameters:

- `id` (string): Compatibility alias for reportId.
- `reportId` (string): Saved analytics report ID.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `create_scheduled_report` (~89 tokens)

Create Scheduled Report

Create a recurring analytics report that's generated and delivered automatically.

Input parameters:

- `deliveryMethod` (string): How to deliver the report
- `deliveryTarget` (string): Email address, Slack channel, or webhook URL
- `name` (string, required): Report name
- `platforms` (array): Platforms to include
- `reportType` (string, required): Report type
- `schedule` (string, required): Report frequency

### `list_conversations` (~109 tokens)

List Conversations

List unified inbox conversations across all connected channels.

Aggregates comments, mentions, DMs, and messages from all organic and workspace connectors into a single inbox view.

Input parameters:

- `assignedTo` (string): Filter by assignee
- `connectorId` (string): Filter by connector/platform
- `limit` (number): Max results (default 20)
- `priority` (string): Filter by priority
- `sentiment` (string): Filter by sentiment
- `status` (string): Filter by conversation status

### `get_conversation` (~27 tokens)

Get Conversation

Get full conversation thread with all messages.

Input parameters:

- `conversationId` (string, required): Conversation ID

### `reply_to_conversation` (~148 tokens)

Reply to Conversation

Send a reply in a conversation.

The reply is sent through the original channel (e.g., Instagram comment, X reply, Facebook comment, etc.).

Replies require conversation reply routing metadata (credential + operation). Provide "routing" once and it will be stored on the conversation for future replies.

Use the Inbox Reply agent to get AI-drafted replies with brand voice.

Input parameters:

- `content` (string, required): Reply text
- `conversationId` (string, required): Conversation ID
- `mediaUrls` (array): Media to attach (optional)
- `routing` (object): Optional: set conversation reply routing (persisted on conversations.metadata.replyRouting). Use this when the conversation doesn't yet have reply routing configured.

### `update_conversation` (~73 tokens)

Update Conversation

Update conversation status, priority, assignment, or tags.

Input parameters:

- `assignedTo` (string): Assign to team member ID
- `conversationId` (string, required): Conversation ID
- `priority` (string)
- `sentiment` (string)
- `status` (string)
- `tags` (array): Set tags

### `get_inbox_summary` (~45 tokens)

Get Inbox Summary

Get a summary of the unified inbox: total conversations, unread count, sentiment breakdown, and response time metrics.

Input parameters:

- `timeRange` (string): Time range for summary metrics

### `escalate_to_support` (~82 tokens)

Escalate to Support

Escalate a social conversation to a connected support platform (Zendesk, Intercom, etc.).

Creates a support ticket from the conversation context.

Input parameters:

- `conversationId` (string, required): Conversation to escalate
- `note` (string): Internal note for the support team
- `priority` (string)
- `targetConnector` (string, required): Support platform to escalate to

### `autopilot_set_goal` (~152 tokens)

Set Autopilot Goal

Set a social media goal for the AI autopilot to work toward.

The autopilot will use AI agents to plan content, generate posts, and schedule them.
Example goals: 'Grow LinkedIn followers by 20%', 'Post 5x/week on Instagram about AI'.

Input parameters:

- `durationWeeks` (number): How many weeks to run the autopilot (1-52, default 4)
- `goalText` (string, required): The social media goal to achieve
- `platforms` (array, required): Target platforms (e.g. ['twitter', 'linkedin', 'instagram'])
- `targetMetrics` (object): Target metrics (e.g. { followers: 1000, engagement_rate: 0.05 })

### `autopilot_generate_plan` (~95 tokens)

Generate Autopilot Plan

Generate a weekly content plan for an autopilot goal.

Chains 5 AI agents: Strategy Planner -> Content Ideation -> Calendar Optimizer -> Multi-Format Composer -> Variant Repurposer.
Returns a plan with individual post items for review.

Input parameters:

- `goalId` (string, required): The autopilot goal ID to generate a plan for
- `weekNumber` (number): Specific week number to generate (optional, auto-increments)

### `autopilot_approve_plan` (~103 tokens)

Approve Autopilot Plan

Approve all pending items in an autopilot plan, or approve/reject individual items.

After approval, use autopilot_execute_plan to schedule the approved posts.

Input parameters:

- `action` (string): Action for individual item (default: approve)
- `feedback` (string): Feedback when rejecting an item
- `itemId` (string): Individual item ID to approve or reject
- `planId` (string): Plan ID to approve (approves all pending items)

### `autopilot_execute_plan` (~46 tokens)

Execute Autopilot Plan

Schedule all approved posts in an autopilot plan.

Posts are spaced out over time and scheduled via the standard publishing pipeline.

Input parameters:

- `planId` (string, required): Plan ID to execute

### `autopilot_get_progress` (~43 tokens)

Get Autopilot Progress

Get progress metrics for an autopilot goal — weeks planned, posts approved, scheduled, published.

Input parameters:

- `goalId` (string, required): Goal ID to check progress for

### `autopilot_list_goals` (~21 tokens)

List Autopilot Goals

List all autopilot goals for the current user.

### `list_projects` (~66 tokens)

List Projects

List imported product/codebase projects for social strategy and content generation.

Input parameters:

- `limit` (number)
- `search` (string)
- `status` (string)
- `team_id` (string): Optional team ID or slug. Ignored when using a team-scoped API key.

### `create_project` (~81 tokens)

Create Project

Create a Projects workspace for a product, app, or codebase.

Input parameters:

- `category` (string)
- `description` (string)
- `name` (string, required)
- `sources` (array)
- `tags` (array)
- `team_id` (string): Optional team ID or slug. Ignored when using a team-scoped API key.

### `import_project_source` (~67 tokens)

Import Project Source

Import GitHub, app-store, website, file, or media source context into a project.

Input parameters:

- `projectId` (string, required)
- `sources` (array, required)
- `team_id` (string): Optional team ID or slug. Ignored when using a team-scoped API key.

### `analyze_project` (~57 tokens)

Analyze Project

Analyze a project for audience, positioning, differentiators, content pillars, and risks.

Input parameters:

- `projectId` (string, required)
- `team_id` (string): Optional team ID or slug. Ignored when using a team-scoped API key.

### `get_project_analysis` (~54 tokens)

Get Project Analysis

Fetch stored project analysis, strategy, recent generations, and activity.

Input parameters:

- `projectId` (string, required)
- `team_id` (string): Optional team ID or slug. Ignored when using a team-scoped API key.

### `generate_project_strategy` (~56 tokens)

Generate Project Strategy

Generate project-local brand voice, positioning, audience, and social content strategy.

Input parameters:

- `projectId` (string, required)
- `team_id` (string): Optional team ID or slug. Ignored when using a team-scoped API key.

### `request_project_content` (~120 tokens)

Request Project Content

Generate UGC, slideshow, remix, caption, or calendar content from project intelligence.

Input parameters:

- `consentConfirmed` (boolean): Required when using uploaded creator or likeness-like media.
- `contentType` (string)
- `count` (number)
- `goal` (string)
- `platforms` (array)
- `projectId` (string, required)
- `prompt` (string)
- `saveToLibrary` (boolean)
- `team_id` (string): Optional team ID or slug. Ignored when using a team-scoped API key.

### `save_project_content_to_library` (~85 tokens)

Save Project Content To Library

Generate project content and save the outputs into the reusable content library.

Input parameters:

- `contentType` (string)
- `count` (number)
- `platforms` (array)
- `projectId` (string, required)
- `prompt` (string)
- `team_id` (string): Optional team ID or slug. Ignored when using a team-scoped API key.

### `schedule_content_advanced` (~297 tokens)

Schedule Content Advanced

Schedule content with explicit target accounts, queue placement, recurrence, platform overrides, media library attachments, and score gating.

Input parameters:

- `bypassToken` (string): Optional bypass token returned from a previous score gate warning.
- `content` (object, required)
- `mediaAttachments` (array): Optional media library assets to link to the scheduled post.
- `platformOverrides` (object): Optional per-platform overrides keyed by platform ID. Use this for platform-specific text, title, description, or publish settings.
- `recurrence` (object): Optional structured recurrence definition.
- `recurrenceEndDate` (string): Optional ISO 8601 date-time to stop the recurring series.
- `recurrenceRule` (string): Optional RRULE string for advanced recurring schedules.
- `scheduleMode` (string): Scheduling strategy. Use 'queue' to place the post into the next available queue slot.
- `scheduledAt` (string): ISO 8601 time for exact scheduling. Required unless scheduleMode is 'queue'.
- `scoreGate` (number): Optional minimum content score threshold. If unmet, the tool can return a bypass token instead of scheduling.
- `targetAccounts` (array, required): Connected account IDs to schedule to. These determine the target platforms.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `timezone` (string): Optional IANA timezone for queue resolution and recurrence.

### `get_scheduled_post` (~92 tokens)

Get Scheduled Post

Fetch one scheduled post with approval, recurrence, retry, and published-link metadata.

Input parameters:

- `id` (string): Compatibility alias for postId.
- `postId` (string): Scheduled post ID.
- `scheduleId` (string): Compatibility alias for postId.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `edit_scheduled_post` (~265 tokens)

Edit Scheduled Post

Edit a pending scheduled post. Supports text, media, platform, timing, approval-scope, and publish-now updates.

Input parameters:

- `applyScope` (string): Whether to apply the edit to only this post or this and future occurrences.
- `firstComment` (string): Optional replacement Instagram first comment.
- `id` (string): Compatibility alias for postId.
- `mediaUrl` (string): Replacement public HTTPS media URL, or an empty value to remove media.
- `mediaUrls` (array): Replacement public HTTPS media URLs.
- `pinterestBoardId` (string): Optional replacement Pinterest board ID.
- `platforms` (array): Optional replacement platform list.
- `postId` (string): Scheduled post ID.
- `publishNow` (boolean): If true, publish immediately after applying the edit.
- `scheduleId` (string): Compatibility alias for postId.
- `scheduledAt` (string): Compatibility alias for scheduledTime.
- `scheduledTime` (string): Updated ISO 8601 scheduled publish time.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `text` (string): Updated post text.
- `timezone` (string): Optional IANA timezone for the updated schedule.

### `retry_scheduled_post` (~223 tokens)

Retry Scheduled Post

Retry a failed scheduled post, optionally editing the content, narrowing to failed platforms, rescheduling, or publishing immediately.

Input parameters:

- `firstComment` (string): Optional replacement Instagram first comment.
- `id` (string): Compatibility alias for postId.
- `mediaUrl` (string): Replacement public HTTPS media URL for the retry.
- `mediaUrls` (array): Replacement public HTTPS media URLs for the retry.
- `pinterestBoardId` (string): Optional replacement Pinterest board ID.
- `platforms` (array): Optional subset of failed platforms to retry.
- `postId` (string): Scheduled post ID.
- `publishNow` (boolean): Publish the retry immediately instead of scheduling it.
- `scheduleId` (string): Compatibility alias for postId.
- `scheduledAt` (string): New ISO 8601 retry time. Required unless publishNow is true.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `text` (string): Replacement post text for the retry.

### `duplicate_scheduled_post` (~120 tokens)

Duplicate Scheduled Post

Create a new scheduled post by duplicating an existing scheduled post. If no time is supplied, SendIt shifts it forward automatically.

Input parameters:

- `id` (string): Compatibility alias for postId.
- `postId` (string): Scheduled post ID.
- `scheduleId` (string): Compatibility alias for postId.
- `scheduledAt` (string): Optional ISO 8601 time for the duplicated post.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `suggest_next_schedule_time` (~158 tokens)

Suggest Next Schedule Time

Suggest the next recommended publish time using best-times insights or configured queue slots without creating a post.

Input parameters:

- `after` (string): Optional lower bound. Suggestions should be strictly after this time.
- `mediaType` (string): Optional content media type hint for best-time recommendations.
- `mode` (string): Use 'best_time' for analytics-based suggestions or 'queue' for queue-slot suggestions.
- `platform` (string): Single platform to optimize for.
- `platforms` (array): Optional platform set to optimize across.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `timezone` (string): Optional IANA timezone for the returned recommendation.

### `suggest_queue_slots` (~110 tokens)

Suggest Queue Slots

Suggest reusable queue slots derived from best-time insights for one or more platforms.

Input parameters:

- `platforms` (array): Optional platform list. If omitted, suggestions may be generated for all supported platforms.
- `slotsPerPlatform` (number): How many suggested slots to return per platform.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `timezone` (string): Optional IANA timezone for the suggested local queue times.

### `schedule_multilang_content` (~163 tokens)

Schedule Multilang Content

Schedule the same post in multiple languages, linking all variants into one translation group.

Input parameters:

- `mediaType` (string): Optional shared media type hint.
- `mediaUrl` (string): Optional shared public HTTPS media URL.
- `mediaUrls` (array): Optional shared public HTTPS media URLs.
- `scheduledAt` (string, required): Future ISO 8601 publish time for every language version.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `timezone` (string): Optional IANA timezone stored with the scheduled posts.
- `title` (string): Optional shared title for supported platforms.
- `versions` (array, required): Language-specific post variants. Maximum 11 versions per request.

### `list_calendar_events` (~159 tokens)

List Calendar Events

List scheduled and published calendar events with optional date-range, status, platform, and pagination filters.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response.
- `end` (string): Optional range end. ISO 8601 date or date-time.
- `limit` (number): Maximum number of results to return.
- `platforms` (array): Optional platform filter.
- `start` (string): Optional range start. ISO 8601 date or date-time.
- `status` (string): Optional event status filter.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `upcoming` (boolean): If true, return only upcoming events.

### `update_calendar_event` (~161 tokens)

Update Calendar Event

Update one calendar event by rescheduling it, changing status, reassigning it, or storing metadata.

Input parameters:

- `assigneeId` (string): Optional assignee user ID.
- `eventId` (string): Calendar event ID or backing scheduled post ID.
- `id` (string): Compatibility alias for eventId.
- `metadata` (object): Optional event metadata patch.
- `postId` (string): Compatibility alias when the calendar event maps directly to a scheduled post.
- `scheduledAt` (string): Updated ISO 8601 schedule time for the event.
- `status` (string): Updated event status.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `bulk_update_calendar_events` (~197 tokens)

Bulk Update Calendar Events

Apply one bulk action to many calendar events at once, including shifts, explicit reschedules, queue moves, cancellations, or assignments.

Input parameters:

- `action` (string, required): Bulk action to apply.
- `applyScope` (string): Whether to affect only the selected IDs or their recurrence groups.
- `assigneeId` (string): Required for the 'assign' action.
- `deltaMinutes` (number): Compatibility shift amount in minutes.
- `ids` (array, required): Calendar event IDs or scheduled post IDs to update.
- `scheduledAt` (string): Replacement ISO 8601 time for the 'set_time' action.
- `scheduledTime` (string): Compatibility alias for scheduledAt.
- `shift` (object)
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `timezone` (string): Optional IANA timezone for queue-based moves.

### `list_recurring_series` (~78 tokens)

List Recurring Series

List recurring scheduled-post series and their recurrence metadata.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response.
- `limit` (number): Maximum number of results to return.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `update_recurring_series` (~113 tokens)

Update Recurring Series

Update the recurrence rule or end date for future occurrences in a recurring series.

Input parameters:

- `id` (string): Compatibility alias for seriesId.
- `recurrenceEndDate` (string): Replacement ISO 8601 end date for the series.
- `recurrenceRule` (string): Replacement RRULE string.
- `seriesId` (string): Recurring series parent scheduled post ID.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `cancel_recurring_series` (~79 tokens)

Cancel Recurring Series

Cancel a recurring series and stop future pending occurrences from publishing.

Input parameters:

- `id` (string): Compatibility alias for seriesId.
- `seriesId` (string): Recurring series parent scheduled post ID.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `get_calendar_gaps` (~96 tokens)

Get Calendar Gaps

Detect open days in the publishing calendar and return gap metadata for planning.

Input parameters:

- `end` (string, required): Range end date in YYYY-MM-DD format.
- `platforms` (array): Optional platform subset to inspect.
- `start` (string, required): Range start date in YYYY-MM-DD format.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

### `get_calendar_recommendations` (~80 tokens)

Get Calendar Recommendations

Return top recommended recurring posting slots from historical performance data.

Input parameters:

- `platforms` (array): Optional platform subset to optimize for.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.
- `timezone` (string): Optional IANA timezone for the recommendation labels.

### `get_approval_comments` (~71 tokens)

Get Approval Comments

List approval comments for one scheduled post in team approval scope.

Input parameters:

- `postId` (string): Scheduled post ID to load comments for.
- `post_id` (string): Compatibility alias for postId.
- `team_id` (string, required): Team ID is required because approval comments are only available in team scope.

### `list_media_assets` (~159 tokens)

List Media Assets

List media library assets with filtering by collection, type, tags, search, and pagination.

Input parameters:

- `collection` (string): Optional collection name filter.
- `cursor` (string): Opaque pagination cursor from a previous response.
- `kind` (string): Optional broad media kind filter.
- `limit` (number): Maximum number of results to return.
- `mimeType` (string): Optional exact MIME type filter such as image/png or video/mp4.
- `search` (string): Optional filename search query.
- `tags` (array): Optional tag filter. Assets matching any supplied tag may be returned.
- `team_id` (string): Team ID to operate in team scope. Get available teams with list_teams. If omitted, uses personal scope.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/shree-git-sendit/sendit#diagnostics

## Score history

- 2026-08-03: 78
- 2026-08-02: 78
- 2026-08-01: 77
- 2026-07-31: 77
- 2026-07-30: 71
- 2026-07-29: 71
- 2026-07-28: 71
- 2026-07-27: 70
- 2026-07-26: 69

## Links

- Remote endpoint: https://sendit.infiniteappsai.com/mcp
- Repository: https://github.com/Shree-git/sendit
- Changelog RSS feed: https://verifymcp.io/servers/shree-git-sendit/sendit/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/shree-git-sendit/sendit/changelog.json
- HTML version of this page: https://verifymcp.io/servers/shree-git-sendit/sendit
