The server exposes fifteen tools.
| Tool | What it does |
|---|---|
ping-tool |
Health check — confirms the connection is live |
get-session-tool |
Returns the authenticated session's user |
list-spaces-tool |
Lists every workspace you have access to |
list-accounts-tool |
Lists connected social accounts in a space |
list-slots-tool |
Lists the recurring weekly posting slots in a space |
create-slots-tool |
Creates one or more recurring slots |
delete-slot-tool |
Deletes a recurring slot |
list-posts-tool |
Lists posts in a space, with status, account, and date filters |
get-post-tool |
Returns a single post with its account, replies, and media |
create-posts-tool |
Creates posts — draft, scheduled, or published immediately |
request-upload-tool |
Returns a one-time URL the user opens to upload media |
get-upload-tool |
Fetches the media uploaded against a session token |
list-account-analytics-tool |
One analytics summary row per account in a space — the discovery call |
get-account-analytics-tool |
Returns one account's analytics report for a date range |
list-account-posts-tool |
Lists an account's posts in a range, sorted by any metric it reports |
Start with list-spaces-tool. Almost everything else needs a space_id, and most account-level calls need an account_id you get from list-accounts-tool or list-account-analytics-tool.
Creating posts
create-posts-tool takes a space_id and an items array — one entry per account, each carrying its account_id, its social network, and its main.content. A five-account post is one call with five items, grouped into a cluster at creation and published independently from then on.
Timing is decided by two fields:
| Fields | Result |
|---|---|
is_draft: true |
Saved as a draft. Nothing publishes. |
at set |
Scheduled for that moment. |
| Neither | Published immediately. |
atis a Unix timestamp in milliseconds, not an ISO 8601 string.1785312000000, not2026-07-28T09:00:00Z.
Optional per item: children for thread replies, media for attachments, and metadata for platform-specific fields like a Threads topic tag, a TikTok privacy level, or comment and duet permissions.
A comment object on the request schedules a follow-up first comment — content up to 500 characters and delay_minutes between 1 and 10080 (one week). Availability is per platform.
Captions are validated against the target platform's own length limit, so a caption that's fine on one network can be rejected for another in the same call. Creating a non-draft post also counts against the space owner's plan quota; if the whole batch doesn't fit, none of it is created.
Attaching media
Media can't be streamed through the conversation. The flow is:
- Call
request-upload-tool. It returns atoken, aurl, and anexpires_at. - Share the URL with the user. They open it in a browser and drop their files in.
- Call
get-upload-toolwith the token to retrieve what they uploaded. - Pass those media references into
create-posts-tool.
Upload sessions expire one hour after they're created. If the user takes longer, request a new one.
Managing slots
create-slots-tool takes days_of_week — an array of integers from 1 (Monday) to 7 (Sunday) — and a single time in HH:MM. One call creates the same time across several days; call it again for a different time.
Listing posts
list-posts-tool filters by status, account_id, and a from/to range, paginated with page and per_page (default 15, capped at 200).
The post tools take
fromandtoas millisecond timestamps. The analytics tools take them as date strings like2026-07-01. They are not interchangeable.