postiz-mcp
This server provides a full-featured MCP interface to the Postiz social media management platform, with built-in safety gating for writes, deletes, and rate limiting.
Read Operations (always available)
List integrations – retrieve all connected social channels (X, LinkedIn, Bluesky, etc.) and their status
Verify connectivity – check that the API key and connection to Postiz are valid
Find next posting slot – get the next available publish time for a given integration
List posts – browse scheduled, queued, and published posts within a date range
Get missing content – recover platform-side content for posts with a missing
releaseIdGet integration settings – fetch live runtime config, rules, content length limits, and available tools per integration
List notifications – surface posting failures, re-auth prompts, etc.
Get analytics – follower/impression/engagement stats for channels or individual posts
List AI video voices – browse the voice catalog for video generation
Get provider settings schemas – look up provider-specific
settingsstructures (X, LinkedIn, Reddit, etc.)
Write Operations (require POSTIZ_ENABLE_WRITE=true)
Create posts – schedule, draft, or immediately publish single posts or multi-part threads to one or more channels, with per-post media and delays
Connect integrations – generate OAuth URLs to add or re-authenticate social channels
Invoke integration tools – call platform-specific actions (e.g., Reddit subreddit search, YouTube playlist lookup)
Update post status – toggle a post between DRAFT and QUEUE
Update post release ID – reattach a Postiz post to its platform-side release after a missing-content event
Upload media – upload files from a local path, base64-encoded content, or a public URL
Generate AI video – trigger video generation via configured integrations (may incur credit costs)
Delete Operations (require POSTIZ_ENABLE_WRITE=true + POSTIZ_ENABLE_DELETE=true + confirm: true)
Delete post – remove a post by ID, cascading to the entire cross-post group
Delete post group – remove all posts in a cross-post group in one call
Delete integration – disconnect a social channel and cascade-delete all its scheduled posts
Additional safeguards: a built-in local rate-limit guard prevents exceeding Postiz's API hourly request limit, and Cloudflare Access service tokens are supported for instances behind CF Access.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@postiz-mcplist my connected social channels"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Canonical Postiz client for any MCP-compatible client. Full coverage of the Postiz public API (integrations, posts, uploads, analytics, video) with env-gated writes, confirm-required deletes, and a built-in rate-limit guard.
Ships as a stdio MCP server and a first-class OpenClaw native plugin from the same package.
Point it at your Postiz and your agent gets 22 typed, schema-validated tools. Reads are always on; writes stay off until you set POSTIZ_ENABLE_WRITE=true. The fatal line above is the server refusing to start without config, not a crash.
Why
If you self-host Postiz and want Claude / Codex / OpenClaw / Hermes / any MCP client to interact with it, this gives you a typed, tested, single-purpose tool surface instead of hand-rolled HTTP calls in every workflow.
Related MCP server: postforme-mcp-pro
See also
gitroomhq/postiz-agent is the official Postiz CLI from Nevo David. It's the right pick if you're a Postiz Cloud subscriber wanting OAuth-flow auth, or if you only need a Bash-callable surface in Claude Code.
This package (postiz-mcp) is the right pick if you:
Self-host Postiz and want to skip running an OAuth broker
Use an MCP-native client (Claude Desktop, OpenClaw, Hermes, Codex CLI) and want typed tool schemas instead of bash-shelling
Want defense-in-depth gating (writes off by default, deletes require
enableDelete+confirm: true)Want a local rate-limit guard that refuses to send when your hourly budget is exhausted
Need Cloudflare Access service-token support
Warnings before you wire this up
Postiz writes are public side effects. A successful
postiz_create_postwithtype: "now"(or a near-term schedule) lands on real social accounts. Once published, posts can be deleted from Postiz but the platform-side post stays live - Postiz cannot recall it.The Postiz public API is rate-limited at 30 requests/hour by default. This server tracks the limit locally and refuses to send when the budget is exhausted. Override with
POSTIZ_RATE_LIMIT_PER_HOURif your Postiz instance is configured higher.Writes and deletes are gated off by default. Reads always work. To enable writes you must explicitly set
POSTIZ_ENABLE_WRITE=true. To enable deletes you must additionally setPOSTIZ_ENABLE_DELETE=trueAND passconfirm: truein the tool call.
Tools
Reads (always on)
postiz_list_integrations- list connected channelspostiz_check_integration- verify API keypostiz_find_next_slot- next free posting slot for a channelpostiz_list_posts- posts in a date windowpostiz_get_missing_content- recover platform content for a Postiz post with a missingreleaseIdpostiz_get_integration_settings- live runtime config for ONE connected integration: rules, maxLength (verified-aware), settings DTO, available platform-specific tools. Use before postiz_create_post when content length matters.postiz_list_notifications- Postiz UI notificationspostiz_get_platform_analytics- followers / impressions / engagementpostiz_get_post_analytics- likes / comments / sharespostiz_list_voices- AI video voice catalogpostiz_get_provider_settings_schema- per-providersettingsschema (X, LinkedIn, Reddit, etc.) bundled at build time
Writes (require POSTIZ_ENABLE_WRITE=true)
postiz_create_post- schedule / publish-now / draftpostiz_connect_integration- generate OAuth URL for a new channelpostiz_invoke_integration_tool- call a per-platform tool method on an integration (e.g. Reddit subreddit search, YouTube playlist lookup) via POST /api/public/v1/integration-trigger/{id}. Discover validmethodNamevalues viapostiz_get_integration_settings(id).toolsfirst.postiz_update_post_status- toggle DRAFT ↔ QUEUEpostiz_update_post_release_id- reattach a Postiz post to its platform-side releasepostiz_upload_file- multipart upload from local file or base64postiz_upload_from_url- server-side fetchpostiz_generate_video- AI video generation
Deletes (require POSTIZ_ENABLE_WRITE=true + POSTIZ_ENABLE_DELETE=true + confirm: true)
postiz_delete_post- cascades to whole grouppostiz_delete_post_group- delete every post in a cross-post grouppostiz_delete_integration- disconnect channel + all its scheduled posts
Install
npm install -g postiz-mcpOr from source:
git clone https://github.com/solomonneas/postiz-mcp.git
cd postiz-mcp
npm install
npm run buildConfiguration
Set these environment variables in your MCP client config:
Variable | Required | Default | Description |
| yes | - | Base URL, e.g. |
| yes | - | API key from Postiz Settings → Public API |
| no |
| Set |
| no |
| Set |
| no |
| HTTP timeout (ms) |
| no |
| Local guard ceiling. The server still trusts response headers when present. |
| no | - | Cloudflare Access service token client id (only needed if Postiz is behind CF Access) |
| no | - | Cloudflare Access service token secret |
Getting an API key
Log into Postiz as an admin
Settings → Public API → Generate API Key
Copy the value (starts with
pos_or is a raw UUID depending on your Postiz version)
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"postiz": {
"command": "postiz-mcp",
"env": {
"POSTIZ_URL": "http://localhost:5000",
"POSTIZ_API_KEY": "your-api-key-here",
"POSTIZ_ENABLE_WRITE": "true",
"POSTIZ_ENABLE_DELETE": "false"
}
}
}
}Claude Code
claude mcp add postiz \
--env POSTIZ_URL=http://localhost:5000 \
--env POSTIZ_API_KEY=your-api-key-here \
--env POSTIZ_ENABLE_WRITE=true \
-- postiz-mcpAdd --scope user to make it available from any directory instead of only the current project.
OpenClaw
postiz-mcp is also an OpenClaw native plugin. From a source checkout:
openclaw plugin add /absolute/path/to/postiz-mcp \
--config '{
"baseUrl": "http://localhost:5000",
"apiKeyEnv": "POSTIZ_API_KEY",
"enableWrite": true,
"enableDelete": false
}'Then export the API key and restart the gateway:
export POSTIZ_API_KEY=your-api-key-here
systemctl --user restart openclaw-gateway
openclaw plugin list # confirm "postiz" is enabledYou can also run it as a regular MCP server under OpenClaw:
openclaw mcp set postiz '{
"command": "postiz-mcp",
"env": {
"POSTIZ_URL": "http://localhost:5000",
"POSTIZ_API_KEY": "your-api-key-here",
"POSTIZ_ENABLE_WRITE": "true"
}
}'Hermes Agent
Hermes Agent reads MCP config from ~/.hermes/config.yaml under mcp_servers. Add an entry:
mcp_servers:
postiz:
command: "postiz-mcp"
env:
POSTIZ_URL: "http://localhost:5000"
POSTIZ_API_KEY: "your-api-key-here"
POSTIZ_ENABLE_WRITE: "true"Or from a source checkout:
mcp_servers:
postiz:
command: "node"
args: ["/absolute/path/to/postiz-mcp/dist/mcp-server.js"]
env:
POSTIZ_URL: "http://localhost:5000"
POSTIZ_API_KEY: "your-api-key-here"
POSTIZ_ENABLE_WRITE: "true"Then reload MCP from inside a Hermes session:
/reload-mcpCodex CLI
Codex CLI registers MCP servers via codex mcp add:
codex mcp add postiz \
--env POSTIZ_URL=http://localhost:5000 \
--env POSTIZ_API_KEY=your-api-key-here \
--env POSTIZ_ENABLE_WRITE=true \
-- postiz-mcpOr from a source checkout:
codex mcp add postiz \
--env POSTIZ_URL=http://localhost:5000 \
--env POSTIZ_API_KEY=your-api-key-here \
--env POSTIZ_ENABLE_WRITE=true \
-- node /absolute/path/to/postiz-mcp/dist/mcp-server.jsCodex writes the entry to ~/.codex/config.toml under [mcp_servers.postiz]. Verify with:
codex mcp listPostiz behind Cloudflare Access
If your Postiz is exposed via Cloudflare Tunnel + Access (e.g. https://postiz.example.com), generate a service token in the Cloudflare Zero Trust dashboard and add the env vars:
export POSTIZ_CF_ACCESS_CLIENT_ID=your-cf-id.access
export POSTIZ_CF_ACCESS_CLIENT_SECRET=your-cf-secretThe MCP server forwards them as CF-Access-Client-Id / CF-Access-Client-Secret on every request. If you forget them, you'll get a clear PostizCfAccessChallengeError instead of a confusing HTML response.
Example prompts
"List the integrations on my Postiz."
"Schedule a Bluesky post for tomorrow 9am: 'Just shipped postiz-mcp.'"
"What's the next available LinkedIn slot? Schedule this 4-tweet thread for that time on X with replies set to verified-only."
"What posted last week and how did the X post on Tuesday do?"
"Show me the X provider settings schema so I can construct a thread payload."
Thread mode (multi-post threads with per-post media + delay)
postiz_create_post's posts[].value[] array is a sequence - every entry posts to the same integration in order, with optional per-entry image[] and delay (minutes between posts). Use this for X threads, LinkedIn carousel-style follow-ups, etc.
{
"type": "schedule",
"date": "2026-05-15T09:00:00.000Z",
"posts": [
{
"integrationId": "integration-uuid-here",
"value": [
{
"content": "Launching our new feature today.",
"image": [{ "id": "abc", "path": "<path returned by postiz_upload_file>" }]
},
{
"content": "Here's what's new under the hood:",
"delay": 5
},
{
"content": "Try it and let us know what breaks.",
"delay": 5
}
]
}
]
}Each value[] after the first uses delay (minutes) to space posts out. image[] is optional per entry and uses paths returned by postiz_upload_file / postiz_upload_from_url - raw filesystem paths and external URLs are rejected.
Provider settings schemas
postiz_get_provider_settings_schema returns the bundled per-provider settings reference (parsed from docs.postiz.com/public-api/providers/{slug}.md). Use it before postiz_create_post when you need provider-specific fields like X's who_can_reply_post or LinkedIn's audience.
The schemas are refreshed monthly by a GitHub Actions workflow that opens a PR if Postiz updated any provider doc. To refresh manually:
npm run refresh-schemasDevelopment
npm install
npm run typecheck
npm test
npm run buildLicense
MIT
Available Tools
20 toolspostiz_check_integrationA
Verify the configured Postiz API key is valid and reaches the configured baseUrl. Useful as a first call before any other tool — if this returns ok, every other tool can authenticate against the same instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description fully carries the burden. It discloses the verification behavior and its implication for other tools. However, it does not specify what 'ok' means (e.g., return value or status), which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no wasted words. Every sentence provides essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers purpose and usage well but lacks specifics on the response format (e.g., what constitutes 'ok'). Still fairly complete for a simple health check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (100% coverage by default). The description adds context about the tool's purpose, which is sufficient for a parameterless tool. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: verifying API key validity and baseUrl reachability. It also distinguishes itself from siblings by positioning it as a first-call health check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using this tool first, before others, and explains the condition for continued authentication. This is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_connect_integrationA
Generate the OAuth authorization URL for connecting a new social channel. Returns a url the user must open in a browser to finish the flow — Postiz redirects back to its own callback. This tool does NOT run a callback server. Requires enableWrite.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes | Provider slug (e.g. 'x', 'linkedin'). | |
| refresh | No | Re-auth an existing integration. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It explains that the tool returns a URL and does not run a callback server, but it does not disclose potential side effects, such as whether a pending integration is created, or what happens if the URL is used multiple times. This is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that convey the core purpose, the return type, a key behavioral note, and a requirement. No extraneous information is included, and the most critical points are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two simple parameters and no output schema, the description covers the essential aspects: what the tool does, what it returns, a notable limitation (no callback server), and a permission requirement. It lacks details on the expected response structure beyond the url, but this is minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions, achieving 100% coverage. The description adds minimal extra value by mentioning the default for 'refresh' (false) and the meaning of 'provider' (slug). Since the schema already provides the parameter semantics, the description does not significantly enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an OAuth authorization URL for connecting a new social channel, using the verb 'Generate' and resource 'OAuth authorization URL'. It distinguishes itself from sibling tools like 'postiz_check_integration' and 'postiz_list_integrations' by specifying its unique role in initiating the OAuth flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that the tool requires enableWrite and that it does not run a callback server, providing implicit guidance on when to use it. However, it does not explicitly compare to alternative tools or state when not to use it, leaving some room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_create_postA
Create, schedule, or immediately publish one or more posts via POST /api/posts. PUBLIC SIDE EFFECT: with type='now' or a near-term schedule, this lands on real social accounts. Use postiz_get_provider_settings_schema first to construct valid settings blocks. Requires enableWrite.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | draft / schedule / now. PUBLIC SIDE EFFECT for schedule + now. | |
| date | Yes | ISO-8601 timestamp. | |
| posts | Yes | One entry per integration to post on. | |
| shortLink | No | ||
| tags | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses the public side effect for 'now' and near-term schedule, the dependency on provider settings schema, and the 'enableWrite' permission requirement. This is comprehensive for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences exactly: action, side-effect warning, prerequisite. Every sentence adds value; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet description does not mention expected return value (e.g., post ID) or pagination. For a creation tool, this gap may hinder the agent from handling the response. Purpose and side effects are clear, but return details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% (type, date, posts described in schema). Description adds the side-effect warning for type and the prerequisite for settings, but does not explain shortLink or tags parameters, which remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool creates, schedules, or publishes posts, specifying the HTTP endpoint and the public side effect for 'now' or near-term schedule. This distinctly separates it from siblings like delete or update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description advises using postiz_get_provider_settings_schema first to construct valid settings and mentions the 'enableWrite' requirement. It implies caution with type='now' but lacks explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_delete_integrationA
Disconnect a connected social channel. Cascades — Postiz also deletes every scheduled post for that integration. Requires enableWrite + enableDelete + confirm=true. Returns ok:false / not_found on 404 (already disconnected).
| Name | Required | Description | Default |
|---|---|---|---|
| integrationId | Yes | ||
| confirm | Yes | Must be true. Cascades — scheduled posts removed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses cascading side effects, required permissions, and error behavior (ok:false / not_found). Missing explicit mention of irreversibility, but cascading implies destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then critical requirements and return behavior. No wasted words; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and partial param descriptions, the tool description covers main behavioral aspects: side effects, auth, error handling. Minor gaps, e.g., exact format of ok:false response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only confirm has a description). The description adds context for both params, especially confirm's requirement and the return status. More detail on integrationId format would improve clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Disconnect a connected social channel.' It also notes the cascading deletion of scheduled posts, distinguishing it from siblings like postiz_connect_integration (add) and postiz_list_integrations (read).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies prerequisites: 'Requires enableWrite + enableDelete + confirm=true.' It also describes a return condition for 404. While it does not explicitly state when to avoid use, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_delete_postA
Delete a Postiz post by id. CASCADES — every post in the same group is removed. Already-published platform posts remain live. Requires enableWrite + enableDelete + confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | ||
| confirm | Yes | Must be true. Cascades to whole group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses cascading deletion of the entire group, that published platform posts remain live, and the required permissions. This is excellent transparency for a delete operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero wasted words. It front-loads the core action and immediately follows with critical behavioral details, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers prerequisites, cascading, and side effects. It could optionally note the success response, but for a delete tool, the information provided is sufficient for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (confirm has a description, postId does not). The description compensates by explaining that confirm=true causes cascading to the whole group, adding meaning beyond the schema. For 2 parameters, this is strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete a Postiz post by id'), specifies cascading behavior, and distinguishes from sibling tools like postiz_delete_post_group. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions the required flags (enableWrite, enableDelete, confirm=true), providing clear prerequisites. While it doesn't explicitly state when not to use the tool or list alternatives, the cascading warning effectively guides usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_delete_post_groupA
Delete every post in a group (cross-post unit) via DELETE /api/posts/group/{group}. Use when you want to retract a whole cross-post in one call. Requires enableWrite + enableDelete + confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | ||
| confirm | Yes | Must be true. Removes every post in the group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses key behaviors: the HTTP method, the API path, required permissions (enableWrite, enableDelete), and the mandatory confirm=true for deletion. This adequately informs the agent of the tool's safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences cover purpose, usage, permissions, and requirements. No unnecessary words. Key information is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete endpoint with no output schema, the description covers all essential aspects: what it does, when to use it, required permissions, and the mandatory confirm flag. It lacks mention of response format or error handling, which is acceptable for a simple deletion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only confirm has a description). The description adds context for 'group' as a cross-post unit, but does not elaborate on its format or how to obtain it. The confirm parameter is already well-documented in the schema, so the description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Delete every post in a group (cross-post unit)'. It specifies the HTTP method and endpoint, and distinguishes from sibling tool postiz_delete_post by emphasizing it deletes a whole cross-post group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use: 'Use when you want to retract a whole cross-post in one call.' It does not explicitly state when not to use, but the sibling list provides an alternative for single posts, so the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_find_next_slotA
Return the next available posting time for a given integration. The slot respects the org's configured posting schedule, so this is the right answer to use as date in postiz_create_post when you don't have a specific time in mind.
| Name | Required | Description | Default |
|---|---|---|---|
| integrationId | Yes | Integration id from postiz_list_integrations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly indicates a read-only operation (returns a time slot) and respects the schedule. However, it does not disclose potential error conditions (e.g., no available slot) or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous information. First sentence states the core function, second provides usage guidance. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description adequately covers purpose and usage. It could mention the return type (e.g., timestamp), but the current text is sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the sole parameter (integrationId) with a description. The description does not add extra meaning beyond that, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the next available posting time for a given integration, and explicitly links it to usage in postiz_create_post. This distinguishes it from siblings like postiz_create_post or postiz_list_integrations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool: when you don't have a specific time in mind, and to use the result as `date` in postiz_create_post. It also mentions that the slot respects the org's posting schedule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_generate_videoA
Generate an AI video via POST /api/video/generate. COST IMPLICATION: video generation may bill against the configured Postiz video integration's credit pool. Requires enableWrite. Body shape is provider-specific — see Postiz video docs.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Free-form payload as expected by Postiz video integrations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses cost implications and the need for write permission. It does not mention asynchronous behavior, rate limits, or success/error responses, leaving gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences covering purpose, cost, permissions, and body shape. Every sentence provides essential information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the minimal input schema and lack of output schema, the description covers cost and permission but omits output format, synchronous/asynchronous behavior, and error handling. External documentation is referenced but the description itself is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'body' is described in the schema as 'Free-form payload as expected by Postiz video integrations'. The description reinforces this as provider-specific and points to external docs, but adds little new semantic value beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate an AI video via POST /api/video/generate', specifying the verb (generate) and resource (AI video). This distinguishes it from sibling tools like postiz_create_post (social post) and postiz_upload_file (file upload).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions cost implication and permission requirement (enableWrite), and advises consulting Postiz docs for provider-specific body shape. However, it does not explicitly state when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_get_missing_contentA
Fetch recent platform-side content for a post whose Postiz releaseId is marked missing. Pair with postiz_update_post_release_id to reattach.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | Post id whose releaseId is marked missing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but 'fetch' implies read-only. Description adds temporal context ('recent') but doesn't detail response format or confirm no side effects. Adequate for a simple fetch tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given single parameter, no output schema, and clear purpose, description is complete. Provides enough context for correct usage and pairing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers parameter with description. Tool description adds workflow context (why fetch due to missing releaseId). Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Fetch', resource 'platform-side content', and condition 'whose releaseId is marked missing'. Differentiates from sibling by mentioning pairing with postiz_update_post_release_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (post with missing releaseId) and provides pairing guidance with postiz_update_post_release_id. No exclusions needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_get_platform_analyticsA
Get follower / impression / engagement analytics for a connected channel via GET /api/analytics/platform. Available metrics depend on what the platform exposes to Postiz.
| Name | Required | Description | Default |
|---|---|---|---|
| integrationId | Yes | Integration id. | |
| date | No | Lookback in days. Postiz default applies when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a GET request implying read-only behavior, but does not disclose other traits such as authentication requirements, rate limits, error conditions, or data freshness. The description is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no wasted words, and front-loads the core purpose. Every sentence provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks details about the return format, pagination, or error scenarios. Given the absence of an output schema, the description should compensate by describing the response structure, but it does not. It is adequate for a simple analytics retrieval but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds context that the 'integrationId' refers to a connected channel and that 'date' is a lookback in days with a default. It also explains that metric availability depends on the platform, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves follower/impression/engagement analytics for a connected channel via a specific HTTP endpoint. It uses a specific verb ('Get') and resource ('follower/impression/engagement analytics'), distinguishing it from sibling tools like get_post_analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that available metrics depend on the platform, implying limitations, but does not explicitly state when to use this tool versus alternatives or when not to use it. No comparison to sibling tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_get_post_analyticsA
Get per-post engagement metrics (likes, comments, shares) via GET /api/analytics/post. Returns whatever the source platform exposes — different shape per provider.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | Post id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the return shape varies by provider, which is important for handling responses. However, it does not mention read-only behavior, auth requirements, rate limits, or error conditions, leaving gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and includes essential nuance about variable output. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately covers purpose and output variability. It could be improved by noting errors or examples, but it is sufficiently complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 'postId' described as 'Post id.' The description does not add further context about the parameter beyond the endpoint path, so it adds minimal value over the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves per-post engagement metrics (likes, comments, shares) and specifies the API endpoint. It differentiates from sibling tools like postiz_get_platform_analytics (which is platform-level) and postiz_list_posts (listing posts) by focusing on individual post analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for per-post analytics but lacks explicit guidance on when to use this tool versus alternatives (e.g., postiz_get_platform_analytics). No exclusions or prerequisites are mentioned, leaving decision-making to the agent without comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_get_provider_settings_schemaA
Look up the settings block schema for a Postiz provider (X, LinkedIn, Reddit, etc.) — bundled at build time from docs.postiz.com. Returns a default-settings template, the provider's __type value, and (by default) the full markdown reference. Call this before postiz_create_post when you need provider-specific fields.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes | Provider slug or __type (e.g. 'x', 'linkedin'). | |
| includeMarkdown | No | Include full markdown reference. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses the return structure (default-settings template, __type, markdown reference) and implies read-only behavior via 'look up'. It adds value but could explicitly state that no side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The first states purpose and source; the second summarizes returns and usage. Every word earns its place, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only 2 parameters and no output schema, the description adequately covers purpose, usage hint, and return structure. It lacks detail on the format of the settings block, but the reference to a 'template' and markdown is sufficient for an AI to understand the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes both parameters (provider string, includeMarkdown boolean). The description adds context by specifying the allowed provider values ('slug or __type') and the default behavior of includeMarkdown (true). This enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('look up') and clearly identifies the resource ('settings block schema for a Postiz provider'). It also states the bundled source and outlines the return values, making the purpose unambiguous and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises calling this before postiz_create_post when provider-specific fields are needed. This provides clear usage context, though it does not specify when not to use it or mention any alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_list_integrationsA
List every connected social-media channel for the org behind the configured Postiz API key. Returns id, name, providerIdentifier (the value used as __type in post settings), profile, and disabled state. Use this BEFORE postiz_create_post to get the integration id you need to target.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return fields and purpose, but does not discuss authentication requirements, rate limits, or any side effects. Since it's a read-only listing, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each adding essential information: what the tool does and how it fits into a larger task. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no parameters and no output schema, the description covers the necessary information: purpose, returned fields, and integration point. Could be improved by mentioning error cases or auth context, but it's sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With no parameters, the baseline is 4. The description adds value by explaining what the tool returns and its role in the workflow, which goes beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists connected social-media channels, returns specific fields, and provides a use case (before postiz_create_post). It distinguishes from siblings by giving a workflow hint, though it doesn't explicitly differentiate from postiz_check_integration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using this tool before postiz_create_post to obtain the integration ID. However, it does not mention when not to use it or alternatives like postiz_check_integration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_list_notificationsA
List notifications, sorted most-recent first. Useful for surfacing posting failures, OAuth re-auth prompts, and new-feature notices Postiz shows in its UI.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page (default 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions sorting but does not disclose pagination behavior (page parameter implies pagination but is not described). The example notification types give some context, but more detail on what the response contains would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. All information is front-loaded and relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is reasonably complete. It covers purpose, sorting, and usage examples. Could potentially mention that it fetches paginated results, but current context is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (page parameter). The description adds no additional meaning beyond what the schema already provides (only 'default 1'). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'notifications' with sorting order 'most-recent first'. It is distinct from sibling tools like postiz_list_integrations and postiz_list_posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete use cases: 'surfacing posting failures, OAuth re-auth prompts, and new-feature notices'. This helps the agent know when to invoke it, though it does not explicitly mention when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_list_postsA
List posts in a date range via GET /api/posts. Returns scheduled, queued, and published posts with their integration, content, state, and any platform release URL.
| Name | Required | Description | Default |
|---|---|---|---|
| startDate | No | ISO-8601 start of window. | |
| endDate | No | ISO-8601 end of window. | |
| display | No | Convenience window when start/end omitted. Default 'week'. | |
| customer | No | Optional customer id (multi-tenant). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It identifies the HTTP method (GET) and return content, but omits details like pagination, rate limits, or potential side effects. This is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. Every part adds value: the action, endpoint, post types, and key response attributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of output schema and annotations, the description covers the main response fields and post types. However, it lacks guidance on the interplay between startDate/endDate and the display parameter, and does not mention sorting or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameters are fully described in the schema, so the baseline is 3. The description adds little beyond stating the date range focus; no additional semantics or usage nuances are provided for startDate, endDate, display, or customer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List posts'), the resource ('via GET /api/posts'), and the scope ('in a date range'). It also enumerates the types of posts returned and key response fields, distinguishing it from sibling tools like create_post or delete_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use for retrieving posts within a date range. However, it does not explicitly state when to avoid using it or mention alternatives, such as the sibling tool for missing content. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_list_voicesA
List available AI voices for video generation via GET /api/video/function?functionName=voices. Required input for postiz_generate_video — pick a voice id from the returned catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| integrationId | No | Optional integration id to scope the catalog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses it is a GET request and returns a catalog, but lacks details on pagination, authentication, or other behavioral traits beyond the basic list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the API endpoint and purpose, with no wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description implies a return catalog with voice ids, which is adequate for a simple list tool. It could explicitly describe the return structure but is sufficient for the agent to understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single optional parameter. The description adds minimal extra meaning beyond the schema definition, only restating the parameter's purpose indirectly. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists available AI voices for video generation via a specific endpoint, distinguishing it from sibling tools like postiz_generate_video by positioning it as a prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states this is 'Required input for postiz_generate_video' and instructs the agent to pick a voice id, providing clear context for when to use it, though it does not mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_update_post_release_idA
Update the releaseId (and optionally releaseURL) of a Postiz post via PATCH /api/posts/{id}/release-id. Use to reconcile a Postiz post with the actual platform-side release after a missing-content event. Requires enableWrite.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | ||
| releaseId | Yes | ||
| releaseURL | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the HTTP method and the 'enableWrite' requirement, but lacks detail on side effects, idempotency, or error responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states action with endpoint, second gives use case and requirement. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the use case but lacks information about return values or error handling. Given the simple update nature and no output schema, it is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds that releaseURL is optional, but does not explain formats or postId semantics. Baseline compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates the releaseId and optionally releaseURL of a Postiz post, with a specific endpoint given. This distinguishes it from sibling update tools like postiz_update_post_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific use case: reconciling a post after a missing-content event. However, it does not explicitly mention when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_update_post_statusA
Transition a Postiz post between DRAFT and QUEUE via PATCH /api/posts/{id}/status. Moving DRAFT→QUEUE re-enters the schedule using the post's existing publishDate. Requires enableWrite.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | ||
| state | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the HTTP method (PATCH), effect of state change (re-enters schedule), and a requirement ('Requires enableWrite'). However, lacks details on idempotency, error cases, or what happens if the post is already in the target state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and method, then key behavioral detail. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given lack of output schema and simple parameters, the description covers the main action and effect. Missing edge cases like preconditions or error handling, but largely complete for a straightforward status transition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate, but it only mentions 'postId' implicitly via '{id}' and 'state' via enum values. No added meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Transition', the resource 'Postiz post', and the specific states 'DRAFT and QUEUE'. Distinguishes from sibling tools like postiz_create_post or postiz_delete_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for status transitions only, but no explicit guidance on when not to use or alternatives. The note about DRAFT→QUEUE re-entering schedule provides some context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_upload_fileA
Upload a media file (image, video) to Postiz storage via POST /api/uploads/file. Returns { id, path } that you can pass into postiz_create_post value[].image[]. Requires enableWrite.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | No | Absolute path to a local file. | |
| base64 | No | Base64-encoded contents. | |
| fileName | No | File name for multipart upload. | |
| mimeType | No | Content-Type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It mentions that the tool requires 'enableWrite' and returns an object with id and path. However, it does not disclose potential side effects, rate limits, file size constraints, or destructive behavior. The description adds some behavioral context but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that express the main action, return value, and integration with another tool. Every sentence adds unique value without redundancy. It is front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 parameters, no output schema, no annotations), the description covers the essential purpose, return format, and workflow integration. It lacks details on parameter combinations or error handling, but the ties to postiz_create_post provide useful context. It is fairly complete for a straightforward upload tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (filePath, base64, fileName, mimeType) have descriptions in the schema. The tool description does not add any additional meaning or usage context for the parameters beyond what the schema provides, meeting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Upload a media file (image, video) to Postiz storage'. It specifies the HTTP method and endpoint, and explains the return value and how to use it with postiz_create_post. This effectively distinguishes it from sibling tools like postiz_upload_from_url by focusing on file/Base64 upload versus URL upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives like postiz_upload_from_url. It mentions a prerequisite ('Requires enableWrite') but lacks context on when this tool is preferred or when to avoid it. No exclusion criteria or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postiz_upload_from_urlA
Upload a media file from a public URL via POST /api/uploads/url. Postiz fetches the URL server-side, so this works for sources the MCP host can't reach. Returns { id, path } usable in postiz_create_post value[].image[]. Requires enableWrite.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public URL Postiz should fetch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses the HTTP method, endpoint, server-side fetch nature, return format, and a prerequisite, which is transparent for a simple upload tool. Lacks error or rate limit info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding value. Front-loaded with the core action and endpoint. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description fully covers purpose, mechanism, return value, and prerequisite, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes the only parameter (url) as 'Public URL Postiz should fetch.' The description adds minimal context about reachability, but schema coverage is 100%, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it uploads a media file from a public URL, explains the server-side fetch, and specifies the return format and usage in another tool, distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implicit guidance by noting 'works for sources the MCP host can't reach' and mentions 'Requires enableWrite', but does not explicitly state when not to use or contrast with alternatives like postiz_upload_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
20 tool updates
v0.1.0- First observed
postiz_check_integration - First observed
postiz_connect_integration - First observed
postiz_create_post - First observed
postiz_delete_integration - First observed
postiz_delete_post - First observed
postiz_delete_post_group - First observed
postiz_find_next_slot - First observed
postiz_generate_video - First observed
postiz_get_missing_content - First observed
postiz_get_platform_analytics - First observed
postiz_get_post_analytics - First observed
postiz_get_provider_settings_schema - First observed
postiz_list_integrations - First observed
postiz_list_notifications - First observed
postiz_list_posts - First observed
postiz_list_voices - First observed
postiz_update_post_release_id - First observed
postiz_update_post_status - First observed
postiz_upload_file - First observed
postiz_upload_from_url
TDQS
Each tool targets a unique action and resource type. For example, postiz_create_post, postiz_delete_post, and postiz_list_posts are clearly distinct. Even overlapping actions like postiz_delete_post and postiz_delete_post_group are differentiated by scope (single vs. group). Descriptions clarify boundaries effectively.
All tools follow a consistent 'postiz_verb_noun' pattern with underscore separation. Verbs like check, connect, create, delete, find, generate, get, list, update, and upload are used uniformly. There is no mixing of camelCase or other conventions.
With 20 tools, the set is slightly above the typical 'well-scoped' range (3-15) but still reasonable given the breadth of Postiz's functionality (post management, analytics, AI video, integrations, file uploads). Each tool serves a distinct purpose.
The tools cover the main lifecycle: integration management, post CRUD, analytics, file uploads, and AI video generation. Minor gaps include no direct 'get post by ID' (though list_posts can retrieve it) and no interaction management (comments, etc.), but core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create, schedule, and publish social posts, manage accounts, and read analytics as MCP tools.
Create, schedule, and publish social posts through the hosted SocialSpool MCP connector.
Publish, schedule, and manage social media posts across major platforms via the Postproxy API.
Manage social publishing workflows through OpenPost
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with the Postiz social media management platform through MCP tools. Supports creating and managing posts, retrieving integrations, and accessing account information through multiple transport protocols.2-
- AlicenseAqualityDmaintenanceMCP server for the Post for Me API, enabling publishing, scheduling, editing, deleting, and analyzing social media posts across 9 platforms from any MCP client.27471MIT

Postoria MCP Serverofficial
AlicenseAqualityAmaintenanceEnables MCP-compatible clients to create, schedule, queue, inspect, and delete Postoria posts through the Postoria Public API.14141MIT- AlicenseNot gradedqualityCmaintenanceMCP server for managing social media posts across multiple platforms using the Postiz API. Supports creating, updating, deleting posts, and generating videos.602MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/solomonneas/postiz-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server