MCP tools reference
These are the tools Postwase's MCP server offers, generated from the same list the server uses. read tools work on read-only connections; write tools need write access. Arguments ending in ? are optional.
Projects
| Tool | What it does | Access |
|---|---|---|
list_projectsno arguments | List the user's Postwase projects (brands, shops, clients) with their id, time zone, the user's role and connected networks. Start here. | read |
list_channelsproject_id | List the social accounts connected to a project (Facebook Page, Instagram, YouTube, TikTok, X, Pinterest, Threads, Bluesky, Reddit). Use these ids in create_post. | read |
get_posting_rulesnetworks | Character limits, hashtag limits, media requirements and required options for the given networks. Check before writing captions. | read |
Media
| Tool | What it does | Access |
|---|---|---|
upload_media_from_urlproject_id, url, filename? | Download an image or video from a public https link into the project's media library. Returns a media id; poll get_media until status is "ready" before posting. | write |
upload_mediaproject_id, filename, mime_type, data_base64 | Upload an image or short video you have as base64 (for example an image attached in the chat), up to 15 MB. Returns a media id; poll get_media until ready. | write |
create_upload_linkproject_id, filename, mime_type, size_bytes | Get a one-hour link the user (or a script) can PUT a large file to, for videos too big to send inline. Call complete_upload afterwards. | write |
complete_uploadproject_id, media_id | Tell Postwase a file sent to an upload link has arrived, so it starts preparing it. | write |
get_mediaproject_id, media_id | Status (uploaded → processing → ready, or failed with a reason), size and duration of one media item. | read |
list_mediaproject_id, limit? | Recent images and videos in the project's media library, newest first. | read |
Posts
| Tool | What it does | Access |
|---|---|---|
validate_postproject_id, text, channels, media_ids? | Check a post against every chosen network's rules without saving it. Returns valid, or the problems to fix. | read |
create_postproject_id, text, channels, media_ids?, when, scheduled_at? | Create a post for one or more channels: save as draft, schedule at a time, add to the posting queue, or publish now. Confirm text, channels and time with the user before scheduling or publishing. | write |
update_postproject_id, post_id, text, channels, media_ids?, when, scheduled_at? | Replace the text, media, channels or timing of a draft or of a scheduled post that hasn't started publishing. | write changes existing posts |
reschedule_postproject_id, post_id, scheduled_at | Move a scheduled post to another time, keeping everything else. | write |
list_postsproject_id, status?, from?, to?, limit? | Recent posts with their status per channel (and links once published), optionally filtered by status or time range. | read |
get_postproject_id, post_id | Everything about one post: text, media, channels with options, status and schedule. | read |
cancel_postproject_id, post_id | Stop a scheduled post on every channel that hasn't published yet. Already-published channels are not deleted. | write changes existing posts |
duplicate_postproject_id, post_id | Copy a post (text, media, channels) into a new draft. | write |
Planning
| Tool | What it does | Access |
|---|---|---|
get_posting_scheduleproject_id | The project's weekly posting times and the next free slot that when="queue" would use. | read |
get_analyticsproject_id, days? | Views, likes, comments and shares of posts published in the last N days: totals, per network, per day and top posts. | read |
Search
| Tool | What it does | Access |
|---|---|---|
searchquery | Search the text of posts across all projects. Returns ids to use with fetch. | read |
fetchid | Full text and status of a post found with search. | read |
create_post in detail
when is one of draft, schedule (with scheduled_at), queue (next free slot of the project's posting schedule) or now. scheduled_at takes an ISO time with offset, or a local time like 2026-11-02T09:00 read in the project's time zone. Each entry of channels can carry its own text and network options:
arguments
{
"project_id": "…",
"text": "Our autumn menu is here 🍂 #coffee",
"media_ids": ["…"],
"when": "schedule",
"scheduled_at": "2026-11-02T09:00",
"channels": [
{ "channel_id": "… facebook …" },
{ "channel_id": "… tiktok …", "options": { "privacyLevel": "PUBLIC_TO_EVERYONE" } },
{ "channel_id": "… youtube …", "options": { "title": "Autumn menu in 30 seconds" } },
{ "channel_id": "… reddit …", "options": { "subreddit": "coffee", "title": "Our autumn menu" } }
]
}| Network | Required options |
|---|---|
| YouTube | title (max 100 characters); a video is required |
| TikTok | privacyLevel: PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR or SELF_ONLY; media required |
subreddit and title | |
| Instagram, Pinterest | none, but media is required |
Prompts
plan_week: Draft a week of posts around a theme, as drafts to review.repurpose_video: Import a video and write a caption per network.
Resources
postwase://rules: the posting rules of every network as JSON, for apps that load resources into context.