MCP Tool Reference
The Foxli Model Context Protocol server exposes 13 tools covering workspace discovery, channel enumeration, post creation, approval submissions, emergency actions, and analytics queries.
list_workspaces
Lists all Foxli workspaces the authenticated user belongs to, including active membership roles and connected channel counts.
cursorstringOptional pagination cursor from a previous page of results.
{}
list_channels
Returns the connected social channels for a workspace, including platform type, handle, and connection status.
workspace_idstringTarget workspace identifier. Required if user belongs to more than one workspace.
{
"workspace_id": "ws_bloom"
}
get_platform_rules
Returns validation rules, character limits, media caps, and platform quirks for the 7 supported social platforms.
platformstringOptional filter for a specific platform: x, linkedin, instagram, facebook, threads, youtube, pinterest.
{
"platform": "instagram"
}
list_posts
Retrieves a list of posts filtered by status, channel, or date in a workspace.
workspace_idstringTarget workspace ID.
statusenumFilter by post lifecycle: draft, queued, scheduled, published, failed, pending_approval.
channel_idstringFilter posts associated with a specific channel.
limitnumberMax records to return (1–50, default 20).
{
"workspace_id": "ws_bloom",
"status": "scheduled"
}
get_post
Fetches full metadata for a single post, including per-channel publishing states, provider post URLs, and error details if failed.
post_idstringREQUIREDUnique identifier of the post.
workspace_idstringTarget workspace ID.
{
"post_id": "post_9a1f",
"workspace_id": "ws_bloom"
}
create_post
Creates a new social post as a draft, adds it to the workspace publishing queue, or schedules it for a future timestamp. Direct publishing (“now”) is disallowed in create_post to prevent accidental live broadcasts.
channel_idsstring[]REQUIREDArray of channel IDs to publish this post to.
modeenumREQUIREDdraftqueueschedulecontentstringPrimary post body text.
scheduled_atISO-8601 UTCRequired when mode is schedule. Must be in the future (at least +2 minutes, max 1 year).
media_urlsstring[]Public image or video URLs to download and attach.
channel_overridesobjectCustom content or media per channel ID (e.g. shorter copy for X, YouTube title).
first_commentstringFirst comment text (Instagram and LinkedIn only).
{
"workspace_id": "ws_bloom",
"channel_ids": ["ch_ig_01", "ch_li_02"],
"content": "Our weekend special menu is here ✨",
"mode": "schedule",
"scheduled_at": "2026-11-08T04:30:00Z",
"media_urls": ["https://images.unsplash.com/photo-coldbrew.jpg"]
}
update_post
Updates content, scheduled time, media attachments, or channel overrides for an existing draft, queued, or scheduled post.
post_idstringREQUIREDTarget post ID.
contentstringUpdated text content.
scheduled_atISO-8601 UTCReschedule post to a new timestamp.
{
"post_id": "post_7c3b",
"workspace_id": "ws_bloom",
"scheduled_at": "2026-11-08T06:30:00Z"
}
submit_for_approval
Transitions a draft post into the pending approval workflow (Team plan or client workspace). Dispatches notifications to workspace approvers.
post_idstringREQUIREDDraft post ID to submit.
notestringOptional message or context for the reviewer.
{
"post_id": "post_7c3b",
"workspace_id": "ws_bloom",
"note": "Ready for client sign-off on weekend campaign copy."
}
publish_post_now
Immediately dispatches an existing post to target social networks. Because this action is irreversible, the server strictly mandates explicit human agreement via confirm: true.
post_idstringREQUIREDThe post to publish immediately.
confirmbooleanREQUIREDMust be true. The agent MUST ask the user in chat and obtain explicit consent before passing this flag.
{
"post_id": "post_7c3b",
"workspace_id": "ws_bloom",
"confirm": true
}
delete_post
Permanently deletes a draft, queued, or scheduled post. Requires explicit user consent via confirm: true.
post_idstringREQUIREDPost to delete.
confirmbooleanREQUIREDMust be true following user sign-off.
{
"post_id": "post_7c3b",
"workspace_id": "ws_bloom",
"confirm": true
}
import_media
Asynchronously imports media from a public URL, verifies format and size limits, and returns an internal media object for reuse across posts.
urlstringREQUIREDPublic HTTP/HTTPS media link (images up to 10 MB, videos up to 100 MB).
workspace_idstringTarget workspace ID.
{
"workspace_id": "ws_bloom",
"url": "https://images.unsplash.com/photo-coldbrew.jpg"
}
get_analytics_overview
Fetches aggregate performance metrics (impressions, reach, engagements, follower change) and daily time series for a date range.
start_datestring (YYYY-MM-DD)REQUIREDStart of the analytics reporting window.
end_datestring (YYYY-MM-DD)REQUIREDEnd of the analytics reporting window.
channel_idstringOptional channel filter (omitting queries workspace-wide aggregate).
{
"workspace_id": "ws_bloom",
"start_date": "2026-10-01",
"end_date": "2026-10-31"
}
get_account
Queries account details, subscription tier (Creator, Team), today's API/MCP rate limit budget, and remaining calls.
None required.
{}
Errors & Status Codes
When a tool invocation fails, the MCP server returns a standard error object with a typed error code and actionable guidance:
workspace_requiredAccount belongs to multiple workspaces. Supply workspace_id parameter.confirm_requiredThe action is irreversible (publish_post_now or delete_post). Seek explicit user agreement in chat, then retry with confirm: true.validation_failedContent exceeds platform limit or lacks mandatory fields (e.g. YouTube title, Instagram media, Pinterest board).plan_requiredMCP integration requires a Creator or Team subscription. Inform user to upgrade at https://web.foxli.app/settings/billing.role_not_authorizedUser's workspace role is read-only (viewer, analyst, client) and cannot perform write operations.insufficient_scopeThe supplied API key or OAuth token lacks the required scope (e.g. posts:write).rate_limitedExceeded 120 requests/minute or 10,000 requests/day. Wait for the duration specified in Retry-After.