MCP Server
Ampost provides a Model Context Protocol (MCP) server that lets AI agents and LLMs interact with social media platforms directly. The MCP server exposes tools for creating posts, managing accounts, publishing drafts, and scheduling content.
Endpoint
/mcpThe MCP endpoint is available at the root /mcp path, not under /api. Use your API key as a Bearer token for authentication.
Ampost uses the Streamable HTTP transport on this single endpoint. Clients initialize with POST /mcp, then continue the same session on GET, POST, and DELETErequests by sending the returned Mcp-Session-Id header.
Available Tools
posts_createCreate a draft or scheduled post for one or more platforms.
posts_listRetrieve posts with optional filtering by status and platform.
posts_getFetch a single post by its unique identifier.
posts_updateUpdate a draft or scheduled post's content, platforms, or schedule.
posts_deleteDiscard a draft, scheduled, queued, partial, or failed post.
posts_publishPublish a draft or scheduled post immediately.
posts_retryRetry failed platform publishes for a partial or failed post.
accounts_listList connected social media accounts, optionally filtered by platform.
accounts_getFetch details for a specific connected account.
platform_sets_listList all platform sets with connection counts.
platform_sets_createCreate a new platform set to organize connected accounts.
platform_sets_renameRename an existing platform set.
platform_sets_deleteDelete a platform set (revokes all connections in the set).
Authentication
The MCP endpoint uses the same Bearer token authentication as the REST API. Pass your API key in the Authorization header. Ampost keys are scope-free, so tool access is determined by the public MCP surface and your plan limits rather than key-level permissions.
{
"mcpServers": {
"ampost": {
"url": "https://api.ampost.io/mcp",
"headers": {
"Authorization": "Bearer amp_live_YOUR_KEY"
}
}
}
}Use the hosted API domain configuration above. Ampost does not require a local npm-based MCP wrapper command, and dashboard or OAuth flows remain on https://ampost.io.
Post Creation
posts_create takes platform names plus a required platformSetId. Supported platforms are instagram, facebook, twitter, linkedin, tiktok, youtube, threads. The tool resolves the active connection for each requested platform from the selected platform set, so you do not pass connection IDs in the create payload. Use accounts_list to inspect which active connections are available inside a set, and use platformOverrides to set per-platform text, LinkedIn member-post settings, creator controls, or YouTube video settings.
TikTok and YouTube require explicit media descriptors. LinkedIn also requires explicit descriptors for video and is safest when all LinkedIn media is sent that way. When you target tiktok, youtube, or LinkedIn video, send media through a media array with url, type, mimeType, sizeBytes, and video durationSeconds when relevant. Bare mediaUrls are kept only for legacy simple cases and are rejected for TikTok, YouTube, and LinkedIn video.
TikTok posts are immediate only in the current product surface. Do not send a future scheduledFor value with tiktok, and do not use text-only payloads because TikTok requires photo or video media.
TikTok visibility is also app-state sensitive. MCP clients should inspect accounts_list or accounts_get for the current creator privacy options and treat private-only visibility as a valid launch posture when the connected TikTok app is still in audit or Direct Post review.
LinkedIn is also immediate only in the current product surface. MCP clients should treat LinkedIn as member-profile publishing only: no organization/Page posting, no scheduling, and no promise of analytics, comments, or read APIs beyond the stored account metadata returned by accounts_list.
{
"text": "TikTok launch clip",
"platforms": ["tiktok"],
"scheduledFor": null,
"media": [
{
"url": "https://cdn.example.com/launch.mp4",
"type": "video",
"mimeType": "video/mp4",
"sizeBytes": 18432000,
"fileName": "launch.mp4",
"width": 1080,
"height": 1920,
"durationSeconds": 24
}
],
"platformOverrides": {
"tiktok": {
"settings": {
"privacyLevel": "SELF_ONLY",
"disableComment": true,
"brandContentToggle": true
}
}
},
"platformSetId": "set_uuid"
}YouTube Publishing
YouTube through MCP is a video-only workflow. Send exactly one explicit video object, then pass YouTube-specific metadata under platformOverrides.youtube.settings. A title is required through either text or settings.title.
Launch-state caveat: if Ampost is still using an unverified or unaudited Google project, requested public or unlisted visibility may be forced back to private. MCP clients should treat YouTube visibility as audit-sensitive and poll post status until the final platform state is known.
{
"text": "Fallback title",
"platforms": ["youtube"],
"scheduledFor": null,
"media": [
{
"url": "https://cdn.example.com/product-demo.mp4",
"type": "video",
"mimeType": "video/mp4",
"sizeBytes": 18432000,
"fileName": "product-demo.mp4",
"width": 1920,
"height": 1080,
"durationSeconds": 45,
"thumbnailUrl": "https://cdn.example.com/product-demo-thumb.jpg"
}
],
"platformOverrides": {
"youtube": {
"settings": {
"title": "Explicit YouTube title",
"description": "Launch walkthrough",
"tags": ["launch", "demo"],
"categoryId": "28",
"privacyStatus": "private",
"notifySubscribers": false,
"selfDeclaredMadeForKids": false,
"containsSyntheticMedia": true
}
}
},
"platformSetId": "set_uuid"
}Optional publishAt goes in platformOverrides.youtube.settings. It must be a future ISO 8601 datetime, requires privacyStatus: "private", and cannot be combined with Ampost-level scheduledFor.
LinkedIn Publishing
LinkedIn MCP posts can be text-only, image, article, or single-video posts. Put LinkedIn-specific text overrides in platformOverrides.linkedin.text and LinkedIn-specific settings in platformOverrides.linkedin.settings. Supported settings include visibility, isReshareDisabledByAuthor, articleTitle, articleDescription, and videoTitle. Organization posting, analytics, and comment-management APIs remain outside the current launch surface.
Explicit media descriptors are recommended for all LinkedIn media and required for LinkedIn video. Bare mediaUrls remain available only for legacy image-only payloads and are rejected for video-like URLs.
{
"text": "Shipping the new LinkedIn contract today.",
"platforms": ["linkedin"],
"scheduledFor": null,
"platformOverrides": {
"linkedin": {
"settings": {
"visibility": "PUBLIC",
"isReshareDisabledByAuthor": true
}
}
},
"platformSetId": "set_uuid"
}{
"text": "LinkedIn image post",
"platforms": ["linkedin"],
"scheduledFor": null,
"media": [
{
"url": "https://cdn.example.com/product-shot.png",
"type": "image",
"mimeType": "image/png",
"sizeBytes": 248120,
"fileName": "product-shot.png",
"width": 1600,
"height": 900,
"altText": "Product dashboard with the LinkedIn publish flow open."
}
],
"platformOverrides": {
"linkedin": {
"settings": {
"visibility": "CONNECTIONS"
}
}
},
"platformSetId": "set_uuid"
}{
"text": "LinkedIn demo clip",
"platforms": ["linkedin"],
"scheduledFor": null,
"media": [
{
"url": "https://cdn.example.com/demo.mp4",
"type": "video",
"mimeType": "video/mp4",
"sizeBytes": 18432000,
"fileName": "demo.mp4",
"width": 1920,
"height": 1080,
"durationSeconds": 38,
"thumbnailUrl": "https://cdn.example.com/demo-thumb.jpg"
}
],
"platformOverrides": {
"linkedin": {
"settings": {
"visibility": "PUBLIC",
"videoTitle": "Ampost LinkedIn demo"
}
}
},
"platformSetId": "set_uuid"
}{
"text": "This will be rejected",
"platforms": ["linkedin"],
"mediaUrls": ["https://cdn.example.com/demo.mp4"],
"platformSetId": "set_uuid"
}The invalid example fails validation because LinkedIn video posts must use explicit media metadata.
Placement
Control how content appears on Instagram and Facebook using the platformOverrides parameter in posts_create. Pass placement in the settings object:
{
"platformOverrides": {
"instagram": {
"settings": { "placement": "reel" }
},
"facebook": {
"settings": { "placement": "feed" }
}
}
}Instagram placements: feed, story, reel, carousel. Facebook placements: feed, story, reel. Placement is validated against the media configuration (e.g. carousel requires 2+ images, reel requires exactly one video).
Platform Sets
Group connected accounts into named sets for organized multi-account management. Use platform_sets_list to view your sets, platform_sets_create to create new ones (max 20), platform_sets_rename to rename, and platform_sets_delete to delete a non-default set (revoking all active connections within it). The default set cannot be deleted.
Pass platformSetId in posts_create or posts_update to scope a post to a specific set. Filter posts with posts_list and accounts with accounts_list by platformSetId.
{
"platform_sets_create": { "name": "Client A" },
"accounts_list": { "platformSetId": "set_uuid" },
"posts_list": { "platformSetId": "set_uuid", "platform": "threads" }
}accounts_list and accounts_get include scopes, platform set membership, token health, and non-secret platform metadata. For TikTok this lets agents inspect creator privacy options and max video duration before attempting a publish. For YouTube, account metadata includes stored channel identifiers plus channel-title and subscriber-count snapshots captured during connect.
Post Update
posts_update modifies a draft or scheduled post. You can update text, platforms, schedule, media, platformOverrides, and platformSetId. If you change the set or platforms, Ampost re-resolves the active connections from that selected platform set.
For TikTok updates, keep using explicit media objects so Ampost can validate media type, duration, and creator restrictions before publish. Apply the same rule to YouTube updates, since bare mediaUrls are rejected there as well.
Continue browsing
Related docs and product pages
These pages connect the MCP tool surface back to the REST API, product capabilities, and the original launch context.