| list-posts-tool | List posts for the current workspace, ordered by scheduled date (newest first). Supports filters: status (draft | scheduled | published | failed), search (case-insensitive substring on content), limit (1–100, default 50). |
| get-post-tool | Get a specific post by ID with all its platform entries, media, and labels. |
| create-post-tool | Create a draft post. Accepts content, scheduled_at (ISO 8601), label_ids[], and platforms[] — each entry has social_account_id + content_type. Cross-validates that the content_type matches the account’s platform. |
| update-post-tool | Update a draft: content, scheduled_at, status (draft | scheduled), labels, and which platforms are enabled. Cannot edit a published post. |
| publish-post-tool | Publish a draft — immediately or scheduled for a future time. Requires at least one enabled platform. Marked IsDestructive so the AI confirms with you first. |
| preview-post-tool | Preview how the post will render on each enabled platform — applies platform-specific sanitization (length truncation, etc.) without publishing. |
| attach-media-from-url-tool | Download images or videos from public URLs and attach them to a post. Up to 10 URLs per call. Per-file size caps: 10 MB for images, 1 GB for videos. Allowed types are intersected with the enabled platforms (e.g. video rejected if no enabled platform supports it). |
| request-media-upload-tool | Issue a one-shot signed POST URL so the user can upload a local file to their workspace. No input — workspace is resolved from the MCP session. Returns upload_url, upload_token, expires_at (ISO 8601, 15-minute TTL by default), max_bytes (50 MB default), and field_name. The agent hands the URL to the user (e.g. as a curl -F media=@path/to/file '{upload_url}' command) or to its client. Use when no public URL exists — otherwise prefer attach-media-from-url-tool. |
| attach-media-from-upload-tool | Attach a Media uploaded via request-media-upload-tool to a post. Takes post_id + upload_token. The Media is resolved by the token within the current workspace, then appended to the post. Rejects if the media type isn’t accepted by any enabled platform. |
| delete-post-tool | Delete a post permanently. Marked IsDestructive. |
| get-post-metrics-tool | Fetch engagement metrics (likes, comments, shares, etc.) for a published post across every platform. Returns unsupported entries for platforms that don’t expose post-level metrics. |