MCP tools
The MCP server tools one by one: what they do, which ones write, and in which order to call them.
Tools
| Tool | What it does | Writes? |
|---|---|---|
| get_workspace_context | The exact time in UTC, the user's timezone and the workspace name. | no |
| list_workspaces | Lists the user's workspaces and marks the one the connection works on. | no |
| switch_workspace | Points the connection at another workspace. Every tool works there afterwards. | yes |
| list_integrations | The connected channels with id, @handle and state. | no |
| list_groups | The customer groups. | no |
| get_integration_schema | A channel's rules and the character limit resolved for the account. | no |
| get_channel_options | Platform specific choices for a channel. | yes |
| preview_post | Shows what would go out, per channel. Writes nothing. | no |
| list_posts | The calendar, in UTC and local time, with channel names. | no |
| delete_post | Deletes one unpublished post (one channel), or the whole group with allChannels: true. Refuses one that is already live. | yes |
| create_post | Draft, schedule, or publish now. | yes |
| upload_media_from_url | An image or video into the media library from a URL or a data URL. | yes |
| create_upload_link | A browser link where the user drops a file from their own computer. Lives for two hours. | yes |
| list_upload_link_files | What arrived through the upload link, with a URL you can put in a post. | no |
| fotoai_list_models | FotoAI's image and video models with parameters and credit price. | no |
| fotoai_quote | The exact price of a FotoAI generation. Spends nothing. | no |
| fotoai_generate | Generates with the user's FotoAI credits using the approved quote; the result goes into the media library. | yes |
| fotoai_get_generation | A generation's status and, once done, the URLs of the files saved in the media library, ready for a post. | yes |
| get_plans | The four plans with prices in forints, euros, Swiss francs and US dollars, the limits, the trial rule and the current plan. Only when the user asks. | no |
| subscribe | A Stripe Checkout link for the chosen plan. The user opens it and pays with their own wallet. Only on a signed in (OAuth) connection, for the owner. | yes |
| get_subscription | The subscription state and any unpaid checkout. After payment the agent uses it to confirm the plan is live. | no |
| manage_subscription | A link to the Stripe billing portal: plan change, cancellation, invoices, card. Only on an OAuth connection, for the payer. | yes |
| open_posty | Opens the Postemi app: calendar, composer and channels. It is also in the ChatGPT sidebar. | no |
| open_posty_panel | The same app in the side panel of a ChatGPT conversation. Called by the app, not by the model. | no |
| read_settings | The user's settings: timezone and the workspace this connection acts on, with the values to choose from. | no |
| update_settings | Saves the timezone, or moves the connection to another workspace. The ChatGPT plugin settings call it. | yes |
| search_mentions | Channels and upcoming posts for the @ menu of the ChatGPT desktop app. Called by the app, not by the model. | no |
| get_post | One post in full (thread posts or comments, media, settings) for the editor of the Postemi app. Called by the app, not by the model. | no |
| update_post | Changes a scheduled, draft or failed post from the editor of the Postemi app. A published post is refused. Called by the app, not by the model. | yes |
Tools that make changes
Of the 29 tools, 12 make changes. The rest are read-only and cannot do any harm.
create_post can create a draft, schedule a post, or publish immediately. Publishing immediately cannot be undone. If you only want your agent to create drafts, don't rely on the prompt. Give it a key that cannot publish. See the Authentication page.
delete_postonly deletes unpublished posts. If a post is already live, the request is rejected. It deletes one post (one channel); withallChannels: trueit deletes the whole group from every channel.preview_postshows what would be published to each channel without writing anything. It is worth running before scheduling.
Order of operations
- 1get_workspace_contextThe exact time in UTC, your time zone, and the workspace name. Without this, the agent would schedule based on its own assumed time.
- 2list_integrationsThe channels and their IDs. Every subsequent call requires these IDs.
- 3get_integration_schemaThe target channel's rules and the character limit that applies to the account, before the agent writes any copy.
- 4list_postsThe calendar, so the agent doesn't schedule a post for a time that's already taken.
- 5preview_post, then create_postCheck what would be published before creating the post.
Workspaces
A connection acts on one workspace: the one you picked when you connected, or the one the MCP key was created in. If you have several, list_workspaces lists them all and marks the current one.
switch_workspace moves the connection to another one. It applies to the connection, not to a single call: from then on every tool acts there, in every conversation that uses the same connection, until you switch back. You can only switch to a workspace where you are an owner and whose plan includes API access. A connection made with an MCP key cannot switch: the key stays in the workspace it was created in, so create a key in the other workspace instead. Channel ids belong to a workspace, so run list_integrations again after a switch.
Time and time zone
The MCP server uses UTC, and get_workspace_context returns your time zone. list_posts returns both UTC and local time, along with the channel name, so the agent does not have to convert between them.
Dates work the same way here as everywhere else. See the Scheduling page.
Manifest
The tool list is available in the manifest without authentication:
https://posty.hu/.well-known/mcp.json
This is the same list returned by the server. Clients can read it before connecting to find out what the server can do.