Skip to main content
Every tool is scoped. A connected agent can only call a tool if the scope was granted on the consent screen, and never beyond your team role.

list_accounts

accounts:read
List connected social accounts. Returns each account’s platform and handle.
string
An agency client id (see list_clients). When set, returns that client’s connected accounts instead of the team’s own.

list_clients

clients:read
List the agency clients under this team - each with its id, name, and status. Pass a client id as the clientId argument to publish_post, list_accounts, or list_scheduled_posts to act on that client’s behalf instead of the team’s own accounts. No arguments.

get_platform_capabilities

capabilities:read
Per-platform posting limits, formats, and supported post types.
string
A single platform (for example instagram, youtube, linkedin). Omit to get every platform.

generate_caption

generate:write
Draft a caption in your brand voice.
string
required
What the post is about (1-2000 characters).
string
Target platform, so the draft fits its norms and limits.
string
A tone hint (for example casual, professional).
string
Output language.

get_today_idea

ideas:read
Fetch today’s Muse content idea for the team - the daily, brand-grounded idea Sydium already generated. This is a read: it never generates a new idea or spends tokens. No arguments. Returns the current idea (topic, angle, format, hashtags, whyItFits, and an optional anchor - the one concrete detail to hang the post on), or null when none is in window. Paid plans see today’s idea; free plans see the idea for the current week.

add_media

media:write
Store an image or video in Sydium and return the media URL that publish_post and update_post require. Media must be Sydium-hosted - an external URL passed straight to publish_post is rejected - so call this first. Pass either file (a file attached to the conversation) or url (a direct link to the image or video itself, not a web page containing it). Returns the media URL plus its measured size, dimensions and duration, and acceptedBy / rejectedBy - which platforms will take this file. Supported: jpeg, png, gif, webp, mp4, mov, webm, up to 50MB. HEIC and AVIF (the iPhone photo defaults) are not supported - convert to JPEG first. The media is removed once its post publishes, so a URL cannot be reused for a second post. Call add_media again.
string
A direct, publicly reachable link to an image or video file. Redirects are followed and each destination is re-validated.
object
A file the user attached to the conversation, supplied by the host as { download_url, file_id, mime_type?, file_name? }. Only hosts that support file parameters populate this - see the note below.
string
The post type this media is for (reel, story, carousel, short…). Story and carousel limits are stricter than the platform default, so without it acceptedBy is optimistic. Check rejectedBy before scheduling.
File attachments are ChatGPT-only today. ChatGPT reads the tool’s file parameter declaration and passes attachments through, which is what makes drag-and-drop work - on the web client; ChatGPT mobile currently sends incomplete file references. Claude connectors have no equivalent mechanism, so there url is the only path. If a user wants to post a file from their device and attaching it is not available, ask them for a public link.

publish_post

posts:write
Publish now, or schedule for later, to one or more platforms. Returns an operation id, a rollup status, and per-target results.
string
The post text.
string[]
Up to 35 Sydium-hosted media URLs, as returned by add_media. Arbitrary external URLs are rejected.
string (ISO 8601)
A future timestamp with offset (for example 2026-07-01T09:00:00Z). Omit to publish immediately.
object[]
required
1-10 targets, each { platform, postType?, options? }. postType and options are platform-specific (for example a YouTube short).
string
An agency client id (see list_clients). When set, the post publishes using that client’s connected accounts. Connectivity is checked against the client, not the team.

get_post_status

posts:read
Per-target status of a publish or schedule operation.
string
required
The operation id returned by publish_post.

update_post

posts:write
Edit a scheduled operation: change its caption, media, and/or scheduleAt. Only targets that are still scheduled are updated - a target already publishing or published is left untouched, and the edit never races an in-flight publish. Omitted fields are left unchanged; media: [] clears media. You cannot change which platforms the operation posts to - cancel and re-create for that. Returns the operation’s state after the edit, or a 409 if no target is still scheduled.
string
required
The operation id returned by publish_post.
string
Replacement post text.
string[]
Up to 35 Sydium-hosted media URLs from add_media (same rules as publish_post). Pass [] to remove all media.
string (ISO 8601)
A new future timestamp with offset. The scheduled publish is moved to this time.
string
An agency client id (see list_clients). When set, scopes the edit to that client’s post.

list_scheduled_posts

posts:read
List the team’s upcoming scheduled posts. Each entry is one operation with its target platforms, scheduled time, and caption - so an agent can answer “what’s scheduled this week?” without knowing any ids. The caption is the post’s display text as shown in the app: the video title for YouTube, the caption for caption-first platforms. Published and failed posts are not included.
string (ISO 8601)
Window start. Omit for everything upcoming.
string (ISO 8601)
Window end. Pass from and to together to bound a range, for example the current week.
string
An agency client id (see list_clients). When set, lists only that client’s scheduled posts.

cancel_post

posts:write
Cancel a scheduled operation. Only targets that are still scheduled are cancelled - a target already publishing or published is left untouched. Returns the operation’s state after cancellation.
string
required
The operation id to cancel.

get_analytics

analytics:read
Account analytics as a daily time-series.
string (YYYY-MM-DD)
Start date. Defaults to 30 days ago.
string (YYYY-MM-DD)
End date. Defaults to today.