Skip to content
Connect an agent

Workflows

publish_to_platforms

Post to platforms by name. Posts one text, with images or video from URLs, to every active account on the platforms named: finds the accounts, checks each platform's text limit and media rule, imports the media, and schedules one post, now, at publishAt, or at the first platform's best time (bestTime). Platforms it cannot post to are listed in skipped with the reason. Calling it again with the same arguments does not post twice.

TL;DR

QuestionAnswer
What does it do?Posts one text, with images or video from URLs, to every active account on the platforms named: finds the accounts, checks each platform's text limit and media rule, imports the media, and schedules one post, now, at publishAt, or at the first platform's best time (bestTime). Platforms it cannot post to are listed in skipped with the reason. Calling it again with the same arguments does not post twice.
Does it change anything?Changes something.
Which tools does it call?list_accounts, list_platforms, import_media, suggest_posting_times, schedule_post
What if a step is refused?The workflow stops there and answers with that step's refusal, named, with its reason and next step.
Which server?https://mcp.flung.dev/mcp-oauth (sign in) or https://mcp.flung.dev/mcp (API key).

Steps

StepToolWhat it does
1list_accountsList connected accounts
2list_platformsList platforms and their limits
3import_mediaAdd an image or video from a URL
4suggest_posting_timesSuggest when to post
5schedule_postSchedule a post

Arguments

ArgumentTypeRequiredDescription
contentstringyesThe text. at least 1 character; at most 10000 characters.
platforms("x" | "instagram" | "facebook" | "threads" | "linkedin" | "tiktok" | "youtube" | "pinterest" | "bluesky" | "mastodon" | "discord" | "farcaster")[]yesWhere to post: every active account on each.
mediaUrlsstring[]noPublic https images or a video, in order.
publishAtstringnoISO 8601 with offset; omit for now. pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$.
bestTimebooleannoPost at the next best time for the first platform's audience, instead of publishAt.
timeZonestringnoThe audience's IANA time zone for bestTime, such as Europe/London. at most 64 characters.

Example call

json
{  "name": "publish_to_platforms",  "arguments": {    "content": "We are live. #launch",    "platforms": [      "linkedin",      "x",      "bluesky"    ],    "mediaUrls": [      "https://example.com/launch.jpg"    ],    "bestTime": true,    "timeZone": "Australia/Brisbane"  }}

Things a person might say

  • "Post "We are live" with this image to LinkedIn, X and Bluesky at the best time."
  • "Share our launch everywhere we are connected, now."

Annotations

HintValue
readOnlyHintfalse
destructiveHintfalse
idempotentHintfalse
openWorldHinttrue

See also

DocWhy
MCP toolsEvery workflow and tool
Connect an AI agentInstall the server in your client