JuzPost
Draft, schedule and publish social posts to X, LinkedIn, Instagram, TikTok, YouTube and more
| Endpoint | https://www.juzpost.com/mcp (streamable-http) |
|---|---|
| Registry version | 1.0.0 |
| Now | 19 tools · grade F (36) · pin ts_514d6d857fb999e00d014de561865e90 · protocol 2025-06-18 |
| First / last listed | 2026-11-06 01:30 UTC / 2026-11-06 01:30 UTC |
| Grade over time | 2026-11-06: F (36), 19 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: get_context list_workspaces switch_workspace list_accounts list_options get_platform_limits list_groups list_posts get_post create_post update_post delete_post schedule_post upload_file upload_media create_upload_url upload_begin upload_part upload_finish
get_context | Reports who this connection is, the one workspace it acts on (use switch_workspace to change it), the plan, billing state, entitlements, quotas, limits and a plain-language list of what is blocked right now. Use this to see what the connection can do, and after an error mentions a plan or quota. Returns user, credential, workspace, plan, billing, entitlements, quotas, limits and blocked[]. The pla params: none |
list_workspaces | Lists every workspace the user belongs to, marks the one this connection acts on, and says what each allows through the connector: none (Free or no plan) or full (Solo, Growth, Pro). Use this when the user names another workspace or a tool reports a plan lock; then switch_workspace moves the connection. Returns workspaces[] (id, name, slug, isOwner, current, plan, access). Does NOT switch, create params: none |
switch_workspace | A connection acts on one workspace at a time. This moves it onto another workspace the user belongs to (id or slug from list_workspaces) for every later call, until switched again, and returns the new context. Use this when the user names a workspace other than the current one; confirm with them before switching. Returns switched and the full get_context shape for the new workspace, which says wha params: workspace* |
list_accounts | Lists the social accounts connected to the workspace, with health, how many posts are queued on each, and the effective limits for that account. Use this to pick the accounts for create_post and schedule_post, or to check whether an account needs reconnecting. Returns accounts[] (id, ref, platform, username, health, scheduledCount, limits, blockedByPlan, and seo for WordPress accounts), nextCursor params: limit, cursor, platform, groupId, sort |
list_options | Lists the choices one account offers for a setting the schedule needs, read live from the platform. Requests: list_board (pinterest, ids go in pinterest.board_id); list_post_type (wordpress, ids go in wordpress.post_type). Use this when the user posts to Pinterest: list the boards, ask which one, and pass its id as board_id. Use list_post_type when the user wants a WordPress post published as some params: account_id*, platform*, req_type* |
get_platform_limits | Returns the full publishing rules for one platform or all of them: caption and title limits and units, media counts, sizes, formats, whether media is required, hashtags, mentions, native scheduling, plus the global file rules. Use this before drafting to answer "will this fit on X / Instagram / TikTok". Returns platforms[] (one object per platform, with effectiveBodyLimit) and global. imageFormats params: platform |
list_groups | Lists channel groups (named sets of accounts) with their member account ids. Use this when the user names a group ("post to my brand accounts") to resolve it to the account ids schedule_post takes. Returns groups[] (id, name, accountIds, accountCount), nextCursor and hasMore. Does NOT create or edit groups. params: limit, cursor, name, sort |
list_posts | Lists posts in the workspace: drafts, scheduled, published and failed. Use this to find drafts to schedule, to review the queue, or to find a post id for get_post, update_post, schedule_post (publish_now on a scheduled post) or delete_post (any status). Returns posts[] (id, status, type, title, content, mediaUrls, scheduledFor), nextCursor and hasMore. Refer to posts by title or caption when talki params: limit, cursor, status, accountId, from, to, sort, order |
get_post | Fetches one post with its per-account rows: status, publish time, published time and any error per account. Use this after schedule_post to confirm what happened, or when the user asks why a post failed. Returns the post (content, media, metadata, socialAccountIds) and targets[] with platform and username. Refer to posts by title or caption and to accounts by platform and username when talking to params: post_id* |
create_post | Creates a draft post with everything the composer saves: caption, title, description, hashtags, media, the accounts it goes to, per-account text (account_overrides, channel_overrides), per-account media and covers, and each platform's settings. Media can be public URLs (downloaded and stored server-side) or media keys from upload_media. Facebook text post with a link: also set platform_settings.fa params: content, title, description, hashtags, type*, media_urls, media_keys, cover_key, idempotency_key, account_ids, account_overrides, channel_overrides, media_by_account, cover_by_account, cover_timestamp_ms, tiktok, pinterest, facebook, bluesky, wordpress |
update_post | Edits a draft or a scheduled post, the same edit the composer makes: caption, title, description, hashtags, type, media keys, cover, accounts, per-account text, media and covers, platform settings, and the time. Only the fields passed change; media_keys: null clears the media. The per-account maps (account_overrides, channel_overrides, media_by_account, cover_by_account, each platform's settings) params: post_id*, content, title, description, hashtags, type, media_keys, cover_key, account_ids, account_overrides, channel_overrides, media_by_account, cover_by_account, cover_timestamp_ms, tiktok, pinterest, facebook, bluesky, wordpress, publish_at, publish_at_overrides |
delete_post | Permanently deletes a post in any status (draft, scheduled, failed or published) from JuzPost, with its per-account rows. A scheduled post's timer is cancelled first, so it never publishes; a published post's analytics in JuzPost go with it. Use this only when the user explicitly asks to delete the post. Returns deleted=true, the post id and what the deleted post was (title, caption, type, media c params: post_id* |
schedule_post | Schedules a post to one or more accounts at publish_at, or publishes immediately with publish_now=true. This publishes to real accounts. Times are ISO 8601 ending in Z or an offset, like 2026-11-03T09:00:00+05:30: use the user's own local time with its offset. workspace.timezone from get_context is the workspace's display zone, not necessarily where the user is; if you are unsure of their timezone params: post_id, content, title, description, hashtags, type, media_urls, media_keys, cover_key, idempotency_key, account_ids, account_overrides, channel_overrides, media_by_account, cover_by_account, cover_timestamp_ms, tiktok, pinterest, facebook, bluesky, wordpress, publish_at, publish_now, publish_at_overrides |
upload_file | Shows an upload card where the user picks images or videos from their device (images up to 20 MB, videos up to 1 GB); the card stores the original files in the workspace. Use this in a chat app that shows cards (Claude.ai, Claude Desktop, Claude mobile) whenever the user attached a file in the chat or wants to add one from their device: you cannot read their attachment, so let them pick it here. W params: none |
upload_media | Stores the original image or video in the workspace from a file the chat app hands over, a public URL (up to 1 GB for a video) or inline base64 (up to 3 MB), checking the real file type and the storage quota. Use this when the user gives you a link to attach to a post, or when the chat app hands you their attachment as `file` (ChatGPT does); then pass the returned media_key to create_post or updat params: file, url, base64, content_type, filename |
create_upload_url | Reserves storage for one file and returns a presigned upload_url (valid 1 day) plus the media_key it will be stored under. Images up to 20 MB, videos up to 1 GB. Use this in Claude Code, a terminal or a script, for a local file or any video: PUT the ORIGINAL file bytes, unmodified, to upload_url with the returned content-type header and exactly `bytes` bytes, then pass media_key to create_post or params: filename*, content_type*, bytes* |
upload_begin | Called only by the JuzPost upload card, never by the model. Reserves storage for one file and starts a multipart upload. Returns media_key, upload_id, part_size and parts. params: filename*, content_type*, bytes* |
upload_part | Called only by the JuzPost upload card, never by the model. Stores one part of a file started with upload_begin: the original bytes as base64, exactly part_size bytes except the last part. Returns part_number and bytes. params: media_key*, upload_id*, part_number*, data* |
upload_finish | Called only by the JuzPost upload card, never by the model. Completes an upload once every part is stored. Returns media_key, bytes and content_type. params: media_key*, upload_id* |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.