Blotato
Blotato is the AI social media automation tool with a native API and MCP.
От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноМожет изменять данные
Что умеет
- Blotato Get User: Get the current authenticated Blotato user profile. Returns the user's name, email, subscription status, and connected account summary. Use this to verify the API key is valid and th
- Blotato List Accounts: List all social media accounts connected to the user's Blotato workspace. Returns each account's id, platform, display name, username, subaccounts (Facebook Pages, LinkedIn Comp
- Blotato List Pinterest Boards: List the boards owned by a connected Pinterest account. Each entry has an id and name. Use the id as the boardId required by blotato_create_post when publishing to Pinte
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Blotato is the AI social media automation tool with a native API and MCP. This MCP server lets AI agents like Claude create, schedule, and publish posts directly. Blotato replaces eight tools: AI writing, repurposing, scheduling, cross-posting, image and video generation, prompts, and a viral post database. Turn one YouTube video into 10+ native posts for TikTok, Instagram, LinkedIn, X, YouTube, Threads, Facebook, Pinterest, and Bluesky. Also available as a REST API with n8n and Make nodes. 20 accounts from $29/mo, 7-day free trial. Docs: https://help.blotato.com/api/llm
Список инструментов сервера (28)
Технические названия из tools/list. Нужны только разработчикам.
| blotato_get_user | Get the current authenticated Blotato user profile. Returns the user's name, email, subscription status, and connected account summary. Use this to verify the API key is valid and the subscription is active before performing other operations. |
| blotato_list_accounts | List all social media accounts connected to the user's Blotato workspace. Returns each account's id, platform, display name, username, subaccounts (Facebook Pages, LinkedIn Company Pages, YouTube Playlists), and the platform-specific required fields needed when creating a post. You MUST call this before blotato_create_post to get the correct accountId and understand what each platform requires. For example, Facebook requires a pageId (returned as a subaccount), TikTok requires privacyLevel and several boolean flags, Pinterest requires a boardId, and YouTube requires a title and privacyStatus. Supports: Twitter, Facebook, Instagram, LinkedIn, TikTok, Pinterest, Threads, Bluesky, and YouTube. Optionally filter by platform to narrow results. |
| blotato_list_pinterest_boards | List the boards owned by a connected Pinterest account. Each entry has an id and name. Use the id as the boardId required by blotato_create_post when publishing to Pinterest. Call blotato_list_accounts first to get the Pinterest accountId, then pass it here. |
| blotato_list_comments | List comments that were left on the user's published posts, ordered by creation time (most recent first). Comments may have been left by the user's audience or by the user themselves. If a comment's isAuthor flag is true, the comment was authored by the user; if false, the comment was received from a contact. Supports cursor-based pagination and optional filters by platform, account, and published post. Pass the returned cursor back as the cursor argument to fetch the next page. When the response omits a cursor, you have reached the end of the list. Comments support one level of threading: a comment whose parentCommentId is set is a reply to that comment. Pass parentCommentId to list the direct replies to a single comment. Each comment has a status: posted, queued, processing, failed, or deleted. |
| blotato_get_comment | Get a single comment by its Blotato ID. The comment may have been left by the user's audience on one of their posts, or by the user themselves. If a comment's isAuthor flag is true, the comment was authored by the user; if false, the comment was received from a contact. The comment includes a status (posted, queued, processing, failed, or deleted) and, when failed, an errorMessage. |
| blotato_post_comment | Post a comment on one of the user's published posts (Instagram and Facebook), or a threaded reply to an existing comment on that post when parentCommentId is provided. IMPORTANT: postId is the Blotato id of a published post. Get it from blotato_list_posts (items whose state.type is "published") or from the postId field of a blotato_list_comments result. The comment is queued and posted asynchronously; it is returned immediately with status "queued". Use blotato_get_comment to check whether it became "posted" or "failed". |
| blotato_get_credits | Get the authenticated Blotato account's remaining credits, the account email the API key belongs to, and current credit purchase pricing (price per 1,000 credits and the min/max purchase quantity). Always confirm the account email with the user before purchasing credits, since credits are non-transferable between accounts. |
| blotato_buy_credits | Create a Stripe Checkout link to buy credits for the authenticated Blotato account (quantity between 1000 and 10000). This does NOT charge anything by itself: it returns a checkoutUrl the account owner must open in a browser and complete. Purchased credits always land on this account. Before calling, confirm the account email with the user via blotato_get_credits, since credits are non-transferable between accounts. |
| blotato_create_presigned_upload_url | Create a presigned URL for uploading a local file. Use this tool ONLY when: - The user provides a local file (not a public URL) - You need to upload that file before creating a post Workflow: 1. Call this tool to get: - presignedUrl (for uploading) - publicUrl (for later use) 2. Upload the file to presignedUrl using an HTTP PUT request. - Use curl or any available HTTP client in the environment - The request body MUST be the raw file bytes - Do NOT send JSON or multipart/form data Example: curl -X PUT "<presignedUrl>" --data-binary "@<local_file_path>" 3. After upload succeeds, use publicUrl when calling blotato_create_post (mediaUrls field) Important: - Do NOT try to send the file directly to blotato_create_post - Do NOT use this tool for publicly accessible URLs - The upload step is REQUIRED before the local file can be used |
| blotato_list_conversations | List the user's direct-message conversations across connected social accounts, ordered by most recent activity. Supports cursor-based pagination and optional filters by platform and account. Pass the returned cursor back as the cursor argument to fetch the next page. When the response omits a cursor, you have reached the end of the list. Each conversation includes its participants. To reply, get the other party's id from a message in the thread (blotato_list_messages) — an incoming message's senderId or an outgoing message's recipientId — and pass it as recipientId to blotato_send_message. |
| blotato_get_conversation | Get a single direct-message conversation by id, including participant metadata. Get the conversationId from blotato_list_conversations. |
| blotato_list_messages | List the user's direct messages, ordered by creation time (most recent first). Pass conversationId to list all messages in a given conversation. Supports cursor-based pagination and optional filters by platform and account. Pass the returned cursor back as the cursor argument to fetch the next page. When the response omits a cursor, you have reached the end of the list. Each message includes a direction ("incoming" = received from the other party, "outgoing" = sent by the account) and a status (queued, processing, sent, delivered, or failed) with an errorMessage when failed. To reply with blotato_send_message, use the other party's id as recipientId: an incoming message's senderId, or an outgoing message's recipientId. |
| blotato_get_message | Get a single direct message by its Blotato ID. The message may be an inbound message received from a contact, or an outbound message the user sent through Blotato. The message includes a direction ("incoming" = received from the other party, "outgoing" = sent by the account) and a status (queued, processing, sent, delivered, or failed) with an errorMessage when failed. |
| blotato_send_message | Send a direct message to a recipient on Facebook or Instagram. IMPORTANT: Call blotato_list_accounts first to get the accountId (and, for Facebook, the pageId from the account's subaccounts). The platform must match the account's platform. MESSAGING WINDOWS (enforced on all Facebook and Instagram messages — a violation is rejected and the message ends up "failed"): - Standard DM (default): May only be sent within 24 hours of the recipient's most recent message to this account. If the recipient has not messaged within the last 24 hours, the send fails. Check the latest inbound message time with blotato_list_messages before sending. - Private reply to a comment: If the recipient commented on one of the account's own posts, you may send a SINGLE private reply to that comment within 7 days of the comment — even with no prior direct message. To send it, pass the comment's Blotato ID as commentId (from blotato_list_comments). DETERMINING recipientId: - Replying in a DM thread (blotato_list_messages): read the message's direction. When direction is "incoming", use the message's senderId. When direction is "outgoing", use the message's recipientId. - Replying to a comment (blotato_list_comments): if isAuthor is false, use the comment's authorId. Returns the queued message immediately with status "queued"; it is delivered asynchronously. Use blotato_get_message to check delivery status. |
| blotato_create_post | Create and publish a social media post to any connected platform. Supports Twitter, Facebook, Instagram, LinkedIn, TikTok, Pinterest, Threads, Bluesky, and YouTube. Posts can be published immediately, scheduled for a specific time (ISO 8601), or queued to the next available slot. For immediate posts, polls internally until the post is published or fails (up to 20s). If still processing after 20s, returns the postSubmissionId — use blotato_get_post_status to poll for completion. For scheduled posts and next-free-slot posts, returns immediately with the postSubmissionId — no polling needed. IMPORTANT: Call blotato_list_accounts first to get the accountId and platform-specific required fields. The platform field must match the account's platform (e.g. "twitter" for a Twitter account). mediaUrls accepts an array of publicly accessible URLs (images, videos). Use [] for text-only posts. For Instagram and LinkedIn carousels, pass multiple image URLs. additionalPosts is an optional array for creating threads on Twitter, Bluesky, and Threads. Each item has { text, mediaUrls }. The main text/mediaUrls become the first post, and additionalPosts become subsequent posts in the thread. Platform-specific fields (pass alongside accountId, platform, text): Twitter: no extra fields needed. Supports threads via additionalPosts. Bluesky: no extra fields needed. Supports threads via additionalPosts. Threads: optional replyControl (everyone|accounts_you_follow|mentioned_only). Supports threads via additionalPosts. Facebook: requires pageId (from blotato_list_accounts subaccounts). Optional: mediaType (reel|story), link for link previews, firstComment (posted as the first comment after publishing; not for stories). LinkedIn: optional pageId for company pages (from blotato_list_accounts subaccounts). Omit pageId to post to personal profile. Instagram: optional mediaType (reel|story), collaborators (array of usernames without @), altText, coverImageUrl, shareToFeed, audioName, firstComment (posted as the first comment after publishing; not for stories), trial ({ graduationStrategy: MANUAL|SS_PERFORMANCE} — trial reels shown only to non-followers). TikTok: requires privacyLevel (SELF_ONLY|PUBLIC_TO_EVERYONE|MUTUAL_FOLLOW_FRIENDS|FOLLOWER_OF_CREATOR), disabledComments (bool), disabledDuet (bool), disabledStitch (bool), isBrandedContent (bool), isYourBrand (bool), isAiGenerated (bool). Optional: title, autoAddMusic, isDraft, imageCoverIndex, videoCoverTimestamp. Pinterest: requires boardId. How to get it: https://help.blotato.com/api/accounts#pinterest. Optional: title, altText, link. YouTube: requires title, privacyStatus (public|private|unlisted), shouldNotifySubscribers (bool). Optional: isMadeForKids, containsSyntheticMedia, thumbnailUrl, playlistIds (max 5). |
| blotato_get_post_status | Check the publishing status of a previously created post. Use this if blotato_create_post timed out and returned an in-progress status. Statuses: in-progress → published | scheduled | failed. When status is "published", the response includes the live publicUrl of the post. When "scheduled", includes the scheduledTime as a UTC ISO8601 string. When "failed", includes an errorMessage. Most failures are permanent — retrying the same submission is not recommended. Wait at least 10 seconds between polls. |
| blotato_list_posts | List the user's posts (scheduled, published, and failed) within a time window, ordered by post time (most recent first). Supports cursor-based pagination and optional filters by status and platform. Pass the returned cursor back as the cursor argument to fetch the next page. When the response omits a cursor, you have reached the end of the list. Each item has a state field with a type of "scheduled", "published" (includes postUrl), or "failed" (includes errorMessage). |
| blotato_list_schedules | List all scheduled posts for the current user. Returns posts scheduled in the future, ordered by scheduled time (ascending). Supports cursor-based pagination. Each schedule includes the draft content, scheduled time (ISO 8601 UTC), and the target account information (platform, name, username). Use the returned cursor (if present) to fetch the next page of results. |
| blotato_get_schedule | Get a single scheduled post by its ID. Returns the full schedule details including the draft content, scheduled time, and account information. Use this to inspect a specific schedule before updating or deleting it. |
| blotato_update_schedule | Update a scheduled post. You can change the post content, the scheduled time, or both. At least one field must be provided. The scheduled time must be a valid ISO 8601 date string and must be in the future. When the scheduled time is changed, the post is re-queued for publishing at the new time. To update the post content, provide the same fields as blotato_create_post: accountId, platform, text, mediaUrls, and any platform-specific fields. All draft fields are optional — only provided fields will be updated. IMPORTANT: Call blotato_list_schedules first to get the schedule ID. Call blotato_list_accounts to get the accountId and platform-specific required fields. The platform field must match the account's platform (e.g. "twitter" for a Twitter account). mediaUrls accepts an array of publicly accessible URLs (images, videos). Use [] for text-only posts. For Instagram and LinkedIn carousels, pass multiple image URLs. additionalPosts is an optional array for creating threads on Twitter, Bluesky, and Threads. Each item has { text, mediaUrls }. The main text/mediaUrls become the first post, and additionalPosts become subsequent posts in the thread. Platform-specific fields (pass alongside accountId, platform, text): Twitter: no extra fields needed. Supports threads via additionalPosts. Bluesky: no extra fields needed. Supports threads via additionalPosts. Threads: optional replyControl (everyone|accounts_you_follow|mentioned_only). Supports threads via additionalPosts. Facebook: requires pageId (from blotato_list_accounts subaccounts). Optional: mediaType (reel|video), link for link previews, firstComment (posted as the first comment after publishing; not for stories; useful for links). LinkedIn: optional pageId for company pages (from blotato_list_accounts subaccounts). Omit pageId to post to personal profile. Instagram: optional mediaType (reel|story), collaborators (array of usernames without @), altText, coverImageUrl, shareToFeed, audioName, firstComment (posted as the first comment after publishing; not for stories; useful for links). TikTok: requires privacyLevel (SELF_ONLY|PUBLIC_TO_EVERYONE|MUTUAL_FOLLOW_FRIENDS|FOLLOWER_OF_CREATOR), disabledComments (bool), disabledDuet (bool), disabledStitch (bool), isBrandedContent (bool), isYourBrand (bool), isAiGenerated (bool). Optional: title, autoAddMusic, isDraft, imageCoverIndex, videoCoverTimestamp. Pinterest: requires boardId. How to get it: https://help.blotato.com/api/accounts#pinterest. Optional: title, altText, link. YouTube: requires title, privacyStatus (public|private|unlisted), shouldNotifySubscribers (bool). Optional: isMadeForKids, containsSyntheticMedia. |
| blotato_delete_schedule | Delete a scheduled post by its ID. The associated publishing job is also cancelled. This action cannot be undone. IMPORTANT: Call blotato_list_schedules first to get the schedule ID. |
| blotato_create_source | Extract and summarize content from a URL or text input. Blotato Sources support extracting transcripts from YouTube videos and TikToks, scraping articles and web pages, parsing PDFs, transcribing audio files (mp3, wav, m4a, ogg, flac, aac), processing raw text, and running AI-powered research queries via Perplexity. Polls internally until extraction completes (up to 20s). If still processing after 20s (e.g. a very long YouTube video), returns the source ID — use blotato_get_source_status to poll for completion. Source types: - text: raw text (pass in "text" field) - article: web article URL (e.g. a blog post or news article) - youtube: YouTube video URL (extracts transcript) - twitter: tweet URL (extracts tweet content) - tiktok: TikTok video URL (extracts transcript) - perplexity-query: a question to research via AI (pass in "text" field, e.g. "What are the top social media trends in 2025?") - audio: audio file URL (transcribes mp3, wav, m4a, ogg, flac, aac) - pdf: PDF file URL (extracts document text) Use customInstructions to guide extraction, e.g. "focus on key takeaways", "extract only the recipe steps", or "summarize in 5 detailed bullet points for an instagram carousel". Returns { id, status, title, content, referenceUrl } on success. |
| blotato_get_source_status | Check the status of a source extraction. Use this if blotato_create_source timed out and returned an in-progress status. Statuses: queued → processing → completed | failed. When status is "completed", the response includes the extracted title, content text, and referenceUrl. When "failed", includes an error message. Wait at least 10 seconds between polls. |
| blotato_list_visual_templates | List available Blotato visual templates for generating images, infographics, carousels, slideshows, and AI videos. Templates are organized into categories: slideshows (quote cards, tweet cards, tutorial carousels), AI videos (narrated stories, avatar videos), infographics (news, education, urban themes), and video editing (clip compilation with titles and captions). Each template returns its id, title, description, and available inputs (e.g., topic, style, colors, number of slides). Use the template id with blotato_create_visual to generate content. Browse visual templates at my.blotato.com/videos/new to preview them. Full template parameter reference at help.blotato.com/api/create-video/visuals. |
| blotato_create_visual | Generate an image, infographic, carousel, slideshow, or AI video from a Blotato visual template. The visual creation pipeline processes your request through script generation, media generation, and final export. For best results on your first attempt, pass a descriptive "prompt" and leave "inputs" as {}. The AI will automatically fill in the template inputs based on your prompt. Example: { templateId: "77f65d2b-...", inputs: {}, prompt: "5 motivational quotes about entrepreneurship", render: true }. Once you're familiar with a template's available inputs (from blotato_list_visual_templates), you can pass specific "inputs" for fine-grained control over colors, fonts, number of slides, etc. The response includes a creation ID and initial status. Visual generation can take 30s–5min depending on complexity. Use blotato_get_visual_status to poll for completion. When done, the response includes mediaUrl (video) and/or imageUrls (slides/images) that can be passed directly to blotato_create_post's mediaUrls field. |
| blotato_get_visual_status | Check the creation status of a Blotato visual. Use this after blotato_create_visual to track progress and retrieve the final media URLs. Statuses: queueing → generating-script → script-ready → generating-media → media-ready → exporting → done | creation-from-template-failed | insufficient-credits | draft. Optionally will return an error message if the visual generation failed due to insufficient credits or other reasons. When status is "done", the response includes mediaUrl (for videos) and/or imageUrls (for slideshows and carousels) that can be passed directly to blotato_create_post's mediaUrls field. Visual generation typically takes 30s–5min depending on template complexity. Wait at least 15 seconds between polls — do NOT poll more frequently than that. |
| blotato_list_top_posts | List the user's top performing published posts, ranked by a chosen engagement metric over a time range. Use this to answer questions like "what were my best posts last month" or "which posts got the most views". Each item includes the post content, public URL, platform, publish time, media URLs, the latest analytics snapshot, and the full snapshot history. Analytics are refreshed periodically in the background, so recent posts may have no metrics yet. Analytics are currently collected for Twitter/X, Instagram, Facebook, Threads, and Bluesky. Other platforms return no metrics yet. - Metrics are returned as strings (counts can exceed normal number precision). - lastError on a post, when present, explains why analytics could not be fetched for it. |
| blotato_get_post_analytics | Get analytics for a single published post, including the latest metrics and the full snapshot history. This does not trigger a re-fetch; it returns the most recent analytics collected in the background. Use blotato_list_posts or blotato_list_top_posts to find the published post id first. Metrics are returned as strings. When a post has not been synced yet, metrics is null and lastError may explain why. |