PostWire
Writes a native post per network from one idea and publishes it: TikTok, Instagram, YouTube & more
| Endpoint | https://postwire.io/api/mcp (streamable-http) |
|---|---|
| Registry version | 0.4.0 |
| Now | 26 tools · grade D (51) · pin ts_ee74dd90dab05607a374497f5e372207 · protocol 2025-06-18 |
| First / last listed | 2026-10-28 04:27 UTC / 2026-10-28 04:27 UTC |
| Grade over time | 2026-10-28: D (51), 26 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: list_platforms my_account generate_posts post_to_social schedule_post list_scheduled_posts cancel_scheduled_post get_post_status create_connect_link plan_week bulk_schedule create_recurring_post list_brands create_brand create_client_link list_clients invite_teammate client_report create_upload_link make_video_from_text check_video_quality get_uploaded_file get_upgrade_link get_x_credits get_post_performance replicate_top_post
list_platforms | Lists the social platforms and destinations PostWire can publish to and, for each, whether it connects with OAuth or with credentials (fields, plus optional_fields), and kind "article" for the blogs (WordPress, Dev.to, Hashnode), where a post is an article with a title. Does not need a PostWire account. params: none |
my_account | Shows the signed-in PostWire account: plan, usage against each plan limit (posts this month, brands, AI drafts today, networks per post, scheduled posts waiting), brands, and which social accounts are connected, each with its brand and the handle, display name and picture the network reports for it. When a limit is at least 80 % used, the result includes the plan that raises it, its monthly price params: none |
generate_posts | Writes one draft per platform from a single idea, adapted to each network's rules (character limit, hashtags, title and tags for YouTube, hook-first caption for TikTok and Reels, link placement for LinkedIn, Slack formatting, plain text for Nostr). For the blogs (wordpress, devto, hashnode) the draft is a full article: title (<= 70 characters), summary (120-160 characters), a Markdown body with H2 params: prompt*, platforms*, media_url, brand_voice |
post_to_social | Publishes a post immediately and publicly to the listed platforms through the social accounts connected to the user's PostWire account. A published post cannot be withdrawn from PostWire. Accepts one text for all platforms or a separate per_platform draft for each. YouTube requires video_url; TikTok requires video_url or photos (photo_url or media); Instagram requires a photo or video, and two or params: platforms*, text, per_platform, title, video_url, photo_url, media, privacy, brand_id, upload_method, idempotency_key |
schedule_post | Queues a post to be published at a future time (run_at, ISO 8601 with timezone, up to 365 days ahead), or in the brand's next free queue slot (run_at "next_slot": the earliest weekly slot all its platforms share that no other waiting post of the brand uses; the result gives the time chosen) through the connected accounts. Takes the same content fields as publishing now. Every platform must already params: run_at*, timezone, platforms*, text, per_platform, title, privacy, video_url, photo_url, media, brand_id, upload_method, label |
list_scheduled_posts | Lists the account's scheduled posts (queued, held, pending_approval = waiting for a person to approve it, publishing, processing = sent and Instagram is still processing the video, done, failed, rejected = not approved, or canceled) with their id, time, platforms and status. Optional from/to limit the time range. params: from, to |
cancel_scheduled_post | Cancels a queued or held post, or withdraws one waiting for approval, so it is never published (a withdrawn post's approval links stop working). Only works before it starts publishing. Takes the id of the scheduled post. params: id* |
get_post_status | Returns the status and link of a published post, by platform and the post id returned when it was published, plus `verification`: PostWire's own independent read-back of the post from the network (state live / processing / accepted / not_public / gone / failed / unverifiable, with what the network answered and when), separate from the API response the publish got. PostWire re-reads every post 10 m params: platform, id*, brand_id |
create_connect_link | Creates a one-hour link the user opens in a browser to connect social accounts (TikTok, Instagram, YouTube, Facebook Pages, LinkedIn, Bluesky…) to their PostWire account: the page shows each network as a button, signs in to it on the network's own page, and then offers the next one, so several networks can be connected from one link. Nothing is connected until the user completes it on the page. Wi params: platform, brand_id |
plan_week | Writes one post per day for 1 to 7 days from a single topic, each day from a different angle and each platform in its own native format, and queues them to be published publicly at the given hour on each day starting tomorrow, through the connected accounts. Text only: platforms that require a video or photo (TikTok, YouTube, Instagram) are refused. Every platform must already be connected. The wh params: topic*, platforms*, days, hour, timezone, brand_voice, brand_id |
bulk_schedule | Checks, and on request schedules, many posts at once: a CSV file's text (csv) or a list of rows (rows), each row one post with the columns date ("2026-10-12 09:00" in the row's or the upload's timezone, an ISO time with offset, or "next_slot"), networks ("linkedin, x"), text, optional text_<network> (each network its own text), media_urls (https links; video: or document: prefix), alt_text, first_ params: csv, rows, timezone, brand_id, dry_run, fit_long_text, date_format, allow_duplicate |
create_recurring_post | Sets up a post that repeats on a schedule: daily, weekly on some weekdays, or monthly on some days of the month (31 falls on the last day of shorter months; -1 = the last day), every N days, weeks or months, at 1-4 times a day in a timezone (daylight saving handled), from a start date until an end date or for a number of times. variants (a list of texts) are used in turn, so the same text does not params: platforms*, text, variants, rule*, guard_days, photo_url, video_url, label, brand_id |
list_brands | Lists the account's brands (one business each) with the social accounts connected to each: platform, the handle, display name, picture and profile link the network reports, when it was connected, and whether posts to it need only text, a video, or a photo or video. Also returns the plan's brand limit. params: none |
create_brand | Creates a new, empty brand (a separate business with its own connected social accounts) on the PostWire account and returns its id. The plan limits the number of brands; at the limit nothing is created and the response names the plan that includes more brands, its monthly price and a checkout link. params: name* |
create_client_link | For agencies and freelancers posting for clients: one brand per client. Creates a private page for one brand, good for 30 days, that the client opens without a PostWire account to connect that brand's own social accounts (each network is signed in on its own page, so no password is shared with the agency), approve or ask for changes on the brand's posts waiting for approval (Pro and above; on Star params: brand_id, brand_name |
list_clients | Lists the account's brands (one per client) with, for each: the social accounts connected to it, its active client links (url, expiry, how many times opened and when last), and how many of its posts wait for approval. Also says whether the plan includes client links and how many brands have no social account connected yet. params: none |
invite_teammate | Invites a person by email to work in this PostWire workspace with a role: admin (Everything except billing and ownership: members, brands, connections, approval rules, keys); editor (Writes, schedules and publishes posts, within each brand's approval rules); contributor (Drafts and schedules posts; every one waits for approval before it goes out); approver (Only the approvals inbox: sees the previ params: email*, role, brand_ids |
client_report | Returns one brand's report for last month (or the month given): what was published on each network, the numbers each network returned, clicks on tracked links and approvals, and client_link: the client's private page opened on its Last month tab, when the brand has an active client link. Pro and above brand it for the client; on Free and Starter it is a preview under PostWire's mark and its note n params: brand_id, brand_name, month |
create_upload_link | Creates a single-use link, valid for 24 hours, to a PostWire page where the user picks one photo or video from any device (JPG, PNG, WebP, GIF, MP4, MOV or WebM, up to 1 GB; big videos upload in parts automatically). The file stays in the account's PostWire media storage while a scheduled post needs it, is deleted the day after that post is published, and 7 days after upload if no post uses it (2 params: none |
make_video_from_text | Makes a short vertical video from the words of a post, for networks that take only video (YouTube) or video or photos (TikTok): an MP4 of 1080x1920, 8 to 12 seconds, H.264 with AAC sound. The first line appears as a large heading and up to two more sentences appear one after another over a softly moving plain background, with royalty-free background music or silence; an optional footer line (for e params: text*, style, music, footer |
check_video_quality | Reads the header of a video file at a public https URL (an upload's media_url works) and says what TikTok will do with it: codec and profile, width x height, fps, average bitrate (kbps), duration, HDR/10-bit, audio codec, and a verdict — keeps_quality (TikTok leaves it looking the same), recompressed (TikTok visibly re-encodes it: HEVC/AV1, HDR or 10-bit, above 1080x1920, above 30 fps, above 16 Mb params: url* |
get_uploaded_file | Returns the status of a file uploaded through a PostWire upload link, by upload_id: "waiting" until the file has arrived, then "done" with its media_url (an https URL valid for 6 hours, renewed when the post goes out, that works as video_url or photo_url), kind (photo or video), size and content type. params: upload_id* |
get_upgrade_link | Returns PostWire's paid plans with their monthly price and what each includes (posts a month, brands, AI drafts a day, networks per post, scheduled posts at a time), the account's current plan, and a checkout link for one plan (the next plan up when none is given). The link opens a Stripe payment page in the browser and nothing is charged unless the user pays there; for an account that already has params: plan, interval |
get_x_credits | Shows what posting to X (Twitter) costs this account and what it has left. X is a pay-per-use add-on of the paid plans (Starter, Pro, Agency, Scale; not Free, not during a trial): 1 X credit = 1 plain X post, a post with a link uses 10, each image or video adds 1. Returns mode (paid, free, trial or internal), the plan's monthly X credits, used and left, top-up credits, X posts today against the da params: text, images, video, thread, reply |
get_post_performance | Returns what the account's own numbers say works, over the last 90 days, computed from the numbers each network reports (no estimates): the published posts ranked against the median of the same social account on the same network, each with its network, brand, link, excerpt, metric (views where the network reports them, otherwise likes + reposts + replies), value, that median, n (posts in the media params: brand_id, platform, timezone |
replicate_top_post | Writes new drafts, one per platform, that reuse the structure, opening type, length, format and tone of one of the account's published posts, on a new topic or a new angle; the reference post's sentences are not reused. Nothing is published or scheduled. Takes the id of a published post of the account (the ids that the account's post performance results list). Counts toward the account's daily AI params: post_id*, platforms, topic, brand_voice |
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.