AutoPoster AI
Multi-platform social media post creation, scheduling, and publishing.
我該用這個嗎
品質與安全性
發現項目(1)
- LOW在 autoposter_get_media_upload_url 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"autoposter": {
"url": "https://agent.autoposter.ai/mcp"
}
}
}遠端端點
https://agent.autoposter.ai/mcpstreamable-http它能做什麼
工具清單
工具(14)
🟢autoposter_list_accounts
Lists all connected social media accounts (X, LinkedIn, Instagram, TikTok, YouTube, Threads, Bluesky, Pinterest, Facebook) in the current Autoposter workspace.
輸入結構描述
{
"type": "object",
"properties": {}
}輸出結構描述
{
"type": "object",
"properties": {
"timezone": {
"type": "string",
"description": "Default timezone for the workspace."
},
"accounts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Account ID."
},
"platform": {
"type": "string",
"description": "Platform name (e.g. twitter, linkedin, instagram)."
},
"name": {
"type": "string",
"description": "Account display name."
},
"username": {
"type": "string",
"description": "Account username or handle."
}
},
"required": [
"id",
"platform",
"name"
]
},
"description": "List of active connected accounts in the workspace."
}
},
"required": [
"accounts"
]
}🟢autoposter_get_rules
Returns platform publishing constraints including character limits, media format requirements, and guidelines.
輸入結構描述
{
"type": "object",
"properties": {}
}輸出結構描述
{
"type": "object",
"properties": {
"captionLimits": {
"type": "object",
"description": "Character limits per platform."
},
"mediaRequirements": {
"type": "object",
"description": "Platform media requirements and constraints."
},
"automatedSafeguards": {
"type": "object",
"description": "Automated media and caption processing safeguards."
},
"postFormats": {
"type": "object",
"description": "Supported post format variants per platform (post, reel, story, shorts)."
},
"guidelines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Publishing guidelines and tips."
}
},
"required": [
"captionLimits",
"mediaRequirements",
"guidelines"
]
}🟡autoposter_upload_media(file, url, name)
Uploads an image or video to Auto Poster media library. Accepts files generated in ChatGPT (e.g. DALL-E images in /mnt/data/), uploaded files, or public image URLs. Direct chat download limit is 100MB. For larger videos or files (>100MB), tell the user to provide a direct public file URL or use autoposter_get_media_upload_url for direct S3 upload up to 5GB. If the image exists only in the chat or on the user's device and cannot be sent here, use autoposter_create_upload_link instead.
輸入結構描述
{
"type": "object",
"properties": {
"file": {
"$ref": "#/$defs/MediaFile",
"description": "File object provided by ChatGPT for AI-generated images or uploaded files."
},
"url": {
"type": "string",
"description": "Optional public image or video URL or data URI to upload into media library."
},
"name": {
"type": "string",
"description": "Optional display name or title for the media file."
}
},
"$defs": {
"MediaFile": {
"type": "object",
"properties": {
"download_url": {
"type": "string"
},
"file_id": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": false
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"mediaId": {
"type": "string",
"description": "ID of the newly uploaded media item."
},
"url": {
"type": "string",
"description": "Public URL of the media file."
},
"mediaUrl": {
"type": "string",
"description": "Public URL of the media file to pass in posts."
},
"type": {
"type": "string",
"description": "Media type ('image' or 'video')."
},
"name": {
"type": "string",
"description": "Display name or file name."
},
"message": {
"type": "string",
"description": "Upload status message."
},
"usage": {
"type": "string",
"description": "Guidance on using the media item in posts."
}
},
"required": [
"mediaId",
"url"
]
}🟡autoposter_get_media_upload_url(fileName, contentType)
Only for clients that can perform an HTTP PUT or multipart POST (not chat-only clients such as Gemini): if you cannot make that request yourself, use autoposter_create_upload_link instead. Generates a presigned S3 upload URL for direct, high-speed upload of videos or images up to 5GB without size limits or timeouts. Returns direct PUT url, POST upload fields, and public CDN URL.
輸入結構描述
{
"type": "object",
"properties": {
"fileName": {
"type": "string",
"description": "Name of the file including extension (e.g. 'promo_video.mp4', 'photo.jpg')."
},
"contentType": {
"type": "string",
"description": "MIME type of the media (e.g. 'video/mp4', 'image/jpeg', 'image/png')."
}
},
"required": [
"fileName",
"contentType"
]
}輸出結構描述
{
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Whether the upload URL was successfully created."
},
"key": {
"type": "string",
"description": "S3 object key for the media file."
},
"cdnUrl": {
"type": "string",
"description": "Public CDN URL after upload."
},
"directPutUrl": {
"type": "string",
"description": "Presigned S3 PUT URL for direct upload."
},
"uploadPost": {
"type": "object",
"description": "Presigned POST fields if using multipart upload."
},
"instructions": {
"type": "string",
"description": "Instructions for completing the direct upload."
}
},
"required": [
"success",
"key",
"cdnUrl",
"directPutUrl"
]
}🟡autoposter_create_upload_link
Creates a short-lived link where the user can upload images from their device into the Auto Poster media library. Use this when the user wants to attach an image that exists only in the chat or on their device (no public URL) and your client cannot send file contents. Give the link to the user, wait until they say the upload is done, then call autoposter_list_media (newest first) and attach the image with mediaIds in autoposter_draft_post or autoposter_schedule_post.
輸入結構描述
{
"type": "object",
"properties": {}
}輸出結構描述
{
"type": "object",
"properties": {
"uploadUrl": {
"type": "string",
"description": "Link to give to the user."
},
"expiresInMinutes": {
"type": "number",
"description": "Minutes until the link expires."
},
"maxFileSizeMb": {
"type": "number",
"description": "Maximum size per image in MB."
},
"instructions": {
"type": "string",
"description": "What to tell the user and what to do next."
}
},
"required": [
"uploadUrl",
"expiresInMinutes",
"instructions"
]
}🟡autoposter_draft_post(accountIds, content, platformContent, mediaUrls, mediaIds, ...)
Creates a draft post for human review. If API key lacks direct publish, post is saved as pending_approval and notifications are sent to workspace approvers. Accepts mediaUrls (public URLs) or files (AI-generated images or uploaded files from chat up to 100MB). For large video files over 100MB, tell the user to provide a direct public file URL or use autoposter_get_media_upload_url.
輸入結構描述
{
"type": "object",
"properties": {
"accountIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of account IDs from autoposter_list_accounts."
},
"content": {
"type": "string",
"description": "Base text content of the post."
},
"platformContent": {
"type": "object",
"description": "Optional platform-specific content overrides (e.g. twitter, linkedin)."
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional public image or video URLs to attach (e.g. from autoposter_upload_media)."
},
"mediaIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of existing media IDs from workspace media library (from autoposter_list_media)."
},
"files": {
"type": "array",
"items": {
"$ref": "#/$defs/MediaFile"
},
"description": "Optional files generated in chat or uploaded by user to attach to the post."
},
"postType": {
"type": "string",
"enum": [
"post",
"reel",
"story",
"shorts"
],
"description": "Optional target format where applicable: 'post' (default feed post/carousel), 'reel' (Instagram or Facebook Reel; requires video), 'story' (Instagram or Facebook 24h Story; requires image or video), or 'shorts' (YouTube Shorts; vertical video under 60s). Ignored on platforms without format variants."
}
},
"required": [
"accountIds",
"content"
],
"$defs": {
"MediaFile": {
"type": "object",
"properties": {
"download_url": {
"type": "string"
},
"file_id": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": false
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Status message indicating draft creation."
},
"draftPosts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Draft post ID."
},
"platform": {
"type": "string",
"description": "Target social media platform."
},
"status": {
"type": "string",
"description": "Current post status (drafts or pending_approval)."
},
"postType": {
"type": "string",
"description": "Target format ('post', 'reel', 'story', or 'shorts')."
},
"accountName": {
"type": "string",
"description": "Target account name."
},
"scheduledAt": {
"type": "string",
"description": "Scheduled timestamp if any."
}
},
"required": [
"id",
"platform",
"status"
]
},
"description": "List of created draft posts per account."
},
"instructions": {
"type": "string",
"description": "Instructions for approving or viewing the draft."
}
},
"required": [
"message",
"draftPosts"
]
}🟡autoposter_schedule_post(accountIds, content, scheduledAt, timezone, platformContent, ...)
Schedules a post for a future date/time. Automatically converts local time using workspace/user timezone into UTC. Accepts mediaUrls (public URLs) or files (AI-generated images or uploaded files from chat up to 100MB). For large video files over 100MB, tell the user to provide a direct public file URL or use autoposter_get_media_upload_url.
輸入結構描述
{
"type": "object",
"properties": {
"accountIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of account IDs from autoposter_list_accounts."
},
"content": {
"type": "string",
"description": "Base text content of the post."
},
"scheduledAt": {
"type": "string",
"description": "Scheduled ISO timestamp or local datetime string, e.g. '2026-10-05T14:00:00'."
},
"timezone": {
"type": "string",
"description": "Optional IANA timezone (e.g. 'America/New_York'). If omitted, defaults to workspace or user timezone."
},
"platformContent": {
"type": "object",
"description": "Optional platform-specific content overrides (e.g. twitter, linkedin)."
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional public image or video URLs to attach (e.g. from autoposter_upload_media)."
},
"mediaIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of existing media IDs from workspace media library (from autoposter_list_media)."
},
"files": {
"type": "array",
"items": {
"$ref": "#/$defs/MediaFile"
},
"description": "Optional files generated in chat or uploaded by user to attach to the post."
},
"postType": {
"type": "string",
"enum": [
"post",
"reel",
"story",
"shorts"
],
"description": "Optional target format where applicable: 'post' (default feed post/carousel), 'reel' (Instagram or Facebook Reel; requires video), 'story' (Instagram or Facebook 24h Story; requires image or video), or 'shorts' (YouTube Shorts; vertical video under 60s). Ignored on platforms without format variants."
}
},
"required": [
"accountIds",
"content",
"scheduledAt"
],
"$defs": {
"MediaFile": {
"type": "object",
"properties": {
"download_url": {
"type": "string"
},
"file_id": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": false
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Whether the post was successfully scheduled."
},
"status": {
"type": "string",
"description": "Status of the scheduled post ('scheduled' or 'pending_approval')."
},
"scheduledAt": {
"type": "string",
"description": "Scheduled time in UTC."
},
"timezone": {
"type": "string",
"description": "Timezone applied."
},
"message": {
"type": "string",
"description": "Status message."
},
"scheduledPosts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Post ID."
},
"platform": {
"type": "string",
"description": "Target platform."
},
"status": {
"type": "string",
"description": "Post status."
},
"postType": {
"type": "string",
"description": "Target format ('post', 'reel', 'story', or 'shorts')."
},
"accountName": {
"type": "string",
"description": "Target account name."
},
"scheduledAt": {
"type": "string",
"description": "Scheduled timestamp."
}
},
"required": [
"id",
"platform",
"status",
"scheduledAt"
]
},
"description": "List of scheduled posts per target account."
}
},
"required": [
"success",
"status",
"scheduledAt",
"scheduledPosts"
]
}🟡autoposter_publish_draft(postId)
Approves and immediately publishes an existing draft or pending post. Requires an API key with direct publish permission.
輸入結構描述
{
"type": "object",
"properties": {
"postId": {
"type": "string",
"description": "The post ID returned by autoposter_draft_post."
}
},
"required": [
"postId"
]
}輸出結構描述
{
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Whether the draft was approved and queued/published."
},
"status": {
"type": "string",
"description": "Target status ('queued' or 'scheduled')."
},
"message": {
"type": "string",
"description": "Status message or confirmation."
}
},
"required": [
"success",
"status"
]
}🟢autoposter_get_post_status(postId)
Checks delivery status of a post and returns live platform links/receipts once published.
輸入結構描述
{
"type": "object",
"properties": {
"postId": {
"type": "string",
"description": "The post ID to query."
}
},
"required": [
"postId"
]
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Post ID."
},
"state": {
"type": "string",
"description": "Current status: drafts, pending_approval, queued, posted, or failed."
},
"postedAt": {
"type": "string",
"description": "ISO timestamp when the post was published."
},
"postLink": {
"type": "string",
"description": "Live URL link to the published post on the platform."
},
"errorMessage": {
"type": "string",
"description": "Error message if post failed."
}
},
"required": [
"id",
"state"
]
}🟢autoposter_get_post(postId)
Retrieves a single post by ID including its state (drafts, pending_approval, queued, posted) and live link receipts.
輸入結構描述
{
"type": "object",
"properties": {
"postId": {
"type": "string",
"description": "The post ID to fetch."
}
},
"required": [
"postId"
]
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Post ID."
},
"state": {
"type": "string",
"description": "Current post state."
},
"postedAt": {
"type": "string",
"description": "ISO timestamp when post was published."
},
"postLink": {
"type": "string",
"description": "Live platform URL link if posted."
},
"errorMessage": {
"type": "string",
"description": "Failure error message if any."
}
},
"required": [
"id",
"state"
]
}🔴autoposter_delete_post(postId)
Deletes or cancels a draft, scheduled, or pending post by ID.
輸入結構描述
{
"type": "object",
"properties": {
"postId": {
"type": "string",
"description": "The post ID to delete or cancel."
}
},
"required": [
"postId"
]
}輸出結構描述
{
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Whether the post was deleted successfully."
},
"message": {
"type": "string",
"description": "Confirmation message."
},
"postId": {
"type": "string",
"description": "Deleted post ID."
}
},
"required": [
"success",
"postId"
]
}🟢autoposter_list_posts(state, limit, search)
Lists posts in the workspace. Supports filtering by state ('drafts', 'scheduled', 'queued', 'posted', 'failed', 'pending_approval'), caption text search, and limit.
輸入結構描述
{
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"drafts",
"draft",
"scheduled",
"queued",
"posted",
"failed",
"pending_approval"
],
"description": "Optional filter by post state."
},
"limit": {
"type": "number",
"description": "Maximum number of posts to return (default 20, max 50)."
},
"search": {
"type": "string",
"description": "Optional keyword to search in post captions."
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "Number of posts returned."
},
"posts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Post ID."
},
"accountId": {
"type": "string",
"description": "Target account ID."
},
"text": {
"type": "string",
"description": "Post caption or content."
},
"state": {
"type": "string",
"description": "Current post state."
},
"scheduledAt": {
"type": "string",
"description": "Scheduled time if scheduled."
},
"postedAt": {
"type": "string",
"description": "Publish time if posted."
},
"postLink": {
"type": "string",
"description": "Live link receipt if posted."
},
"errorMessage": {
"type": "string",
"description": "Failure reason if failed."
},
"createdAt": {
"type": "string",
"description": "Creation ISO timestamp."
}
},
"required": [
"id",
"state"
]
},
"description": "List of matching posts."
}
},
"required": [
"count",
"posts"
]
}🟢autoposter_list_media(type, limit)
Lists media files (images and videos) stored in the workspace media library with public CDN URLs.
輸入結構描述
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"image",
"video"
],
"description": "Optional filter by media type ('image' or 'video')."
},
"limit": {
"type": "number",
"description": "Maximum number of media items to return (default 20, max 50)."
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "Number of media items returned."
},
"media": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Media ID."
},
"name": {
"type": "string",
"description": "File name or title."
},
"type": {
"type": "string",
"description": "Media type ('image' or 'video')."
},
"url": {
"type": "string",
"description": "Public URL of media file."
},
"thumbnailUrl": {
"type": "string",
"description": "Thumbnail image URL if available."
}
},
"required": [
"id",
"name",
"type",
"url"
]
},
"description": "List of media items in workspace."
}
},
"required": [
"count",
"media"
]
}🟢get_profile
Return the profile represented by this request's authenticated credentials. The opaque id is unique within this app and remains unchanged across token refresh, reconnection, and display-metadata changes.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"pattern": "\\S",
"description": "Opaque profile identifier, unique within this app and unchanged across token refresh, reconnection, and display-metadata changes. Never reassigned to another profile."
},
"name": {
"type": "string",
"description": "Display name for the authenticated profile."
},
"nickname": {
"type": "string",
"description": "A useful label that helps users distinguish connected profiles."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}社群
證據