PostSider
OfficialAllows AI agents to manage Blogger content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Bluesky content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage dev.to content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Discord content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Dribbble content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Facebook content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Farcaster content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Ghost content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Google Business Profile content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Hashnode content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Instagram content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Lemmy content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Listmonk content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Mastodon content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Medium content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Notion content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Pinterest content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Slack content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Telegram content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Threads content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage TikTok content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Twitch content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage WordPress content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Write.as content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage YouTube content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
@postsider/mcp
MCP (Model Context Protocol) server that gives AI agents selected access to a
PostSider instance through its public API. Works with Claude Code, Claude
Desktop, Codex, Cursor, and any MCP-compatible client. Talks to cloud
(api.postsider.com) or a self-hosted instance, authenticated with an
organization API key.
PostSider is a shared operational calendar: the agent prepares and schedules work, and a human reviews what actually goes live.
Install
1. Create an API key
In PostSider, open Settings -> API and generate an organization API key.
2. Connect your client
Claude Code:
claude mcp add postsider -e POSTSIDER_API_KEY=your_api_key -- npx -y @postsider/mcpClaude Desktop or any generic MCP client:
{
"mcpServers": {
"postsider": {
"command": "npx",
"args": ["-y", "@postsider/mcp"],
"env": {
"POSTSIDER_API_KEY": "your_api_key"
}
}
}
}3. Verify with a read-only prompt
Ask your agent, and confirm it answers without changing anything:
List my connected PostSider channels. Do not create or modify anything.Then:
Show my PostSider calendar for the next 14 days. Do not create or modify anything.4. Only then prepare a draft
Create one draft only for the selected channel. Show me the exact content first. Do not publish it.From source
pnpm --filter @postsider/mcp buildThen point your client at the built entrypoint:
{
"mcpServers": {
"postsider": {
"command": "node",
"args": ["/absolute/path/to/apps/mcp/dist/index.js"],
"env": {
"POSTSIDER_API_KEY": "your_api_key",
"POSTSIDER_API_URL": "https://api.postsider.com"
}
}
}
}Claude Code plugin
The package directory is also a Claude Code plugin: .claude-plugin/plugin.json
declares the API key as a secret user setting, .mcp.json starts this server at
the pinned released version, and skills/ contains focused workflows for calendar
review, content publishing, approvals, analytics, and agency operations. The
repository root is a plugin marketplace, so the plugin installs from the
repository directly:
Skill budget is full (5/5). The remote server advertises the skills it bundles through OpenAI's skills extension, which supports at most 5. All five slots are taken, so adding a new skill requires retiring or merging an existing one (
loadSkillCatalogfails closed above 5).
claude plugin marketplace add lumizone/postsider
claude plugin install postsider@postsiderInstallation stores the key outside the plugin: pass it at install time with
--config api_key=your_api_key, or set it afterwards with
/plugin configure postsider@postsider inside Claude Code. The key is never
written into the plugin directory.
Related MCP server: postforme-mcp-pro
What the agent can do
37 tools (38 on the local stdio server), all prefixed postsider_.
Read
Tool | Action |
| List connected social channels (ids, names, platforms). Call this first to get channel ids. |
| Org-wide overview: clients, channels, queued, drafts, published, errors, pending approvals. |
| The same report scoped to one customer. |
| List channel groups. |
| Browse the media library (paged, searchable) to reuse files already uploaded. |
| Platform rules, max length and required |
| A channel's recurring posting slots and timezone. |
| Best upcoming times to post on a channel, avoiding booked slots. |
| Saved hashtag groups, caption templates and UTM presets. |
| Next free queue slot for a channel, in UTC. |
| List posts in a date range, filterable by |
| Full post details, including the publish error if any. |
| Per-channel validation problems, so they can be fixed before publishing. |
| Analytics for a single post. |
| Account-level analytics for a channel. |
| Recent notifications: publish failures, channels needing reconnection. |
| Whether publishing is active or paused for the organization. |
| Approval status of a draft, including a reviewer note when rejected. |
Write
Tool | Action | Risk |
| Create a post as a draft, a scheduled post, or an immediate publish across channels. | Creates content and can publish |
| Edit an existing post in place: text, media, date, settings, first comment. Not for published or pending-approval posts. | Changes content, re-arms a scheduled post |
| Move a post between | Reversible |
| Send a draft into the human approval queue. | Reversible |
| Import media into the library from a public HTTPS URL. | Creates media |
| Upload an image or MP4 you hold as bytes (base64: 25 MB on the local server, 2.5 MB over the remote connection). No public URL needed. | Creates media |
| Local stdio server only. Upload an image or video (jpg, png, gif, webp, avif, bmp, tiff, mp4, mov, webm, mkv; up to 500 MB) from a file path on your own machine. Other file types are refused before being read. | Creates media |
| Get the sign-in link to connect or reconnect a social account (the user approves it on the platform). Needs | Starts a connection |
| Switch a channel on or off. Needs | Reversible |
| Disconnect a channel; unpublished posts become drafts. Needs | Destructive |
| Replace a channel's posting slots ( | Replaces settings |
| Assign a channel to a client by name. Needs | Reversible |
| Create or update a hashtag group, caption template or UTM preset. | Creates content |
| Delete a library item. | Destructive |
| Copy a post as a new draft, optionally onto another channel. | Creates a draft |
| AI check of draft text for up to 3 platforms (uses the monthly AI allowance). | Uses AI quota |
| AI rewrites of a text in a chosen tone (uses the monthly AI allowance). | Uses AI quota |
| Delete a media file from the library and storage. | Destructive |
| Permanently delete a post and every other channel version of it (one group). Read the post first. | Destructive |
| Emergency stop for the whole organization. Resuming is human-only. | Destructive |
Access scopes (remote server)
Scope | Allows |
| Every read tool. |
| Posts, media, library, duplication and AI checks. |
| Connecting, enabling, disabling, re-timing, re-assigning and disconnecting channels. Granted separately so an agent that may only schedule posts cannot reconfigure the workspace. Connections made before this scope existed need to be reconnected to get it. |
Billing, team and roles, API keys, MFA, account deletion and resuming a paused workspace are deliberately not available to agents; they stay in the dashboard.
Every tool declares readOnlyHint, destructiveHint, idempotentHint and
openWorldHint explicitly, so a client can tell a read from a kill switch.
Configuration
Variable | Required | Default | Description |
| yes | - | Organization API key (Settings -> API) |
| no |
| Instance base URL |
POSTSIDER_API_URL must be HTTPS. Plain HTTP is accepted only on loopback
(localhost, 127.0.0.1, [::1]) for local development.
For a self-hosted instance, point POSTSIDER_API_URL at where the public API is
served. Behind the bundled nginx the API lives under /api, so use your domain
plus /api, e.g. https://social.example.com/api. The server appends
/public/v1 to whatever you set.
Safety
The API key is read from the environment and sent only to the configured PostSider API URL. It is never printed, logged, or included in an error.
Credentials embedded in
POSTSIDER_API_URLare rejected.Redirects are refused rather than followed: a redirect would move an authenticated request off the configured origin, so the client fails with an actionable message instead.
Requests time out after 30 seconds, and a failing response body is read up to 8 KB before being reported.
Tool arguments are validated locally, before any network call: ids must be non-empty, dates must be real ISO 8601 dates (
2026-02-30is refused, not sent to the API), post statusdraftorschedule, and media imports require a public HTTPS URL.A missing API key exits 1 with an explanatory message on stderr. stdout carries protocol frames only.
Development
pnpm --filter @postsider/mcp typecheck
pnpm --filter @postsider/mcp typecheck:tests
pnpm --filter @postsider/mcp test
pnpm --filter @postsider/mcp build
pnpm --filter @postsider/mcp version:gate
pnpm --filter @postsider/mcp validate:registry
pnpm --filter @postsider/mcp smoke:tarball
claude plugin validate --strict apps/mcpDesign
This server is a thin wrapper over selected /public/v1 REST API endpoints,
authenticated with the raw API key. It has no dependency on the backend and
pulls in only @modelcontextprotocol/sdk and zod, so it stays lean and easy to
maintain. All tool registrations live in a single factory, so the stdio
transport today and any future transport share one agent-facing surface.
Available Tools
19 toolspostsider_create_postCreate / schedule / publish a postA
Create a post across one or more channels. type: "schedule" books it for date; "now" publishes immediately; "draft" saves without publishing. Get channel ids from postsider_list_channels and a free slot from postsider_find_slot. Attach media via postsider_upload_media_from_url first, then pass the returned media objects as images.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Required publish date, ISO 8601 UTC (e.g. 2026-07-01T10:00:00Z). For "now" use the current time; drafts still require a date in the current API contract. | |
| tags | No | Optional tags. | |
| type | No | draft = save only; schedule = book for `date`; now = publish immediately. | schedule |
| posts | Yes | One entry per channel to publish to. | |
| shortLink | No | Whether to shorten links in the content. | |
| idempotencyKey | No | Stable key for safe retries. Reusing it with the same request returns the original result without creating duplicates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the bar is lower. The description usefully adds the cross-tool ordering constraint that media must be uploaded first and the returned objects passed as `images`, plus the note that drafts still require a date under the current API contract. It does not mention failure modes, partial-channel failures, or what a successful call yields.
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, zero filler, and the payload description is front-loaded ahead of the prerequisite workflow. Every sentence carries either scope, enum semantics, or a dependency the agent must satisfy.
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 six-parameter create tool with no output schema, the description covers the prerequisites, the publish-mode fork, and the media flow, which is most of what an agent needs. The remaining gap is that it never says what the call returns (post ids, status) even though there is no output schema to carry that information.
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%, so the baseline is 3, but the description adds provenance meaning the schema cannot express: channel ids originate from postsider_list_channels, dates/slots from postsider_find_slot, and image objects from postsider_upload_media_from_url. That is genuine value beyond the field-level descriptions.
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 first sentence names a specific verb and resource ('Create a post across one or more channels') and the second disambiguates the `type` enum values, which is the main behavioral fork of the tool. This clearly separates it from siblings like postsider_update_post_status and postsider_delete_post, which operate on posts that already exist.
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 routes the agent through the correct prerequisites by name: get channel ids from postsider_list_channels, get a slot from postsider_find_slot, and upload media via postsider_upload_media_from_url before passing the returned objects. What is missing is an explicit exclusion (e.g. use postsider_update_post_status or postsider_get_post instead when editing an existing post), so the agent must infer the create-vs-edit boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_delete_postDelete a postADestructiveIdempotent
Permanently delete a post and every other channel version of it. The id may be any post in a group: PostSider stores a multi-channel post as one group, and a single id deletes the whole group. Read the post first (postsider_get_post) and confirm the full set of channel versions with the user before calling this.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | Post id to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so safety classification is covered. The description goes beyond them by disclosing blast radius (one id wipes every channel version in the group) and recommending user confirmation, which annotations cannot express. It does not add anything on reversibility beyond 'permanently', which the destructive hint already implies.
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 tight sentences, zero filler. The destructive scope is front-loaded, followed by the id semantics and then the safety prerequisite, which is the correct ordering for an irreversible operation.
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 one-parameter destructive tool with no output schema, the definition covers what an agent needs: destructive scope, id resolution rule, and a pre-call verification step. Annotations carry the remaining safety and idempotency signals.
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 well-described parameter, so the baseline is 3. The description adds real meaning the schema lacks: any post id in a group is acceptable and resolves to deletion of the whole group, which changes how an agent chooses which id to pass.
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?
States a specific verb and resource ('Permanently delete a post') and immediately clarifies the scope: a single id deletes an entire multi-channel group. This is materially more precise than the title and lets an agent distinguish it from siblings like postsider_pause_publishing or postsider_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?
It gives a clear prerequisite workflow - read the post first via postsider_get_post and confirm the channel versions with the user before calling. It names a sibling tool explicitly. It stops short of stating when NOT to use this (e.g., when pausing or status updates would suffice), which the sibling set suggests is relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_find_slotFind next free time slotARead-onlyIdempotent
Return the next free scheduling date-time (UTC) for a channel, based on its configured posting queue. Use the returned value as the date for postsider_create_post when scheduling into the queue.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | Channel (integration) id, from postsider_list_channels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds useful context beyond that (value is UTC and derived from the configured posting queue), but does not disclose edge behavior such as what is returned when no slot is available or the queue is unconfigured.
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, no filler, and the core purpose is front-loaded ahead of the consumption directive. Every sentence earns its place by either defining the return value or telling the agent how to use it.
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 one-parameter, read-only tool with no output schema, the description covers both what is returned (the next free scheduling date-time in UTC) and how to consume it, while annotations carry the safety profile. Nothing an agent needs to invoke it correctly is 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?
Single parameter with 100% schema description coverage, so the schema already documents channelId and even points to postsider_list_channels as its source. The description only restates the channel scoping, adding no syntax or format detail beyond the schema, which matches the baseline-3 rule for high coverage.
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?
States a specific verb (Return) and resource (the next free scheduling date-time in UTC) for a channel's posting queue. An agent can distinguish this from read siblings like postsider_list_channels or postsider_get_publishing_state because it returns a computed scheduling value rather than a listing.
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 to use the returned value as the `date` for postsider_create_post when scheduling into the queue, which is a strong workflow directive tying it to the correct sibling. It stops short of naming when NOT to use it or alternative slot sources, so it does not quite reach full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_agency_overviewGet agency overviewARead-onlyIdempotent
Get an organization-wide operational overview for an agency: clients, channels, queued posts, drafts, published posts, errors, recent errors and pending approvals. Useful for morning checks and client reporting.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window for recent errors, in days. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds aggregation context (it pulls many resource types at once) and ties "recent errors" to the days window, but says nothing about permissions, cost, or freshness of the data.
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, purpose first and usage second, with no filler. The long enumeration of included sections is justified because no output schema exists to describe the return payload.
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?
With no output schema, the description carries the burden of describing return content and does so by listing the aggregated sections, which is what makes this tool callable with confidence. It stops short of explaining the aggregation scope (all clients vs. filtered) or ordering, but nothing essential is 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?
With a single parameter at 100% schema description coverage, the schema already explains that 'days' is the window for recent errors. The description mentions "recent errors" but adds no format, default, or boundary detail beyond what the schema provides, so the 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?
States a specific verb (Get) and resource (organization-wide operational overview for an agency) and enumerates the payload sections: clients, channels, queued posts, drafts, published posts, errors and pending approvals. It is clearly distinct from narrow siblings like get_customer_report or get_channel_analytics, though it never names an alternative explicitly.
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?
"Useful for morning checks and client reporting" gives two concrete usage scenarios, so the agent can infer intent. However, there are no when-not conditions and no routing guidance versus sibling tools such as get_customer_report, leaving the choice of tool largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_approval_statusGet a post's approval statusARead-onlyIdempotent
Check whether a post submitted via postsider_request_approval has been approved, rejected (with the reviewer's note, if any), or is still pending. Returns status "NONE" if the post was never sent for approval.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | Post id to check. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's job is to add context — which it does by disclosing the returned state vocabulary, including that a rejected status may carry the reviewer's note and that 'NONE' means approval was never requested. This resolves the main ambiguity for an agent. It does not discuss auth, rate limits, or latency, which are minor for a single-id read.
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 the core action and result states, with the edge case ('NONE') placed last. No filler or restated boilerplate.
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?
This is a simple one-parameter read with no output schema, so the description must carry the return-value burden — and it does, spelling out the possible statuses and the never-submitted case. Nothing an agent needs in order to call it correctly is 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 description coverage is 100%, so postId is already documented. The description adds a small amount of meaning by implying the post should be one routed through the approval flow, but it gives no format or syntax guidance beyond the schema's blanket baseline.
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 names a specific verb ('Check') and resource ('a post's approval status') and enumerates the possible outcomes (approved, rejected with reviewer note, pending, NONE). It explicitly ties the tool to the sibling postsider_request_approval, so an agent can distinguish it from adjacent post tools like postsider_get_post or postsider_get_publishing_state.
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 clearly places the tool in context: use it on a post that was submitted via postsider_request_approval, and it explains what a 'NONE' result means. It does not name an alternative tool or state exclusions, but the implied usage is unambiguous for this narrow lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_channel_analyticsGet channel analyticsARead-onlyIdempotent
Get account-level analytics for a connected channel (where the provider supports it).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Provider-specific date/range parameter, if required. | |
| channelId | Yes | Channel (integration) id, from postsider_list_channels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds one genuinely useful behavioral fact beyond that — availability varies by provider — but says nothing about what is returned, rate limits, or auth requirements, and there is no output schema to fall back on.
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?
A single front-loaded sentence with the resource first and the caveat trailing. No filler, no restatement of the title, and the provider caveat 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?
For a simple two-parameter read with no output schema, the description omits what analytics are actually returned (metrics, granularity, date defaults), which the agent cannot recover from structured fields. The core call mechanics are clear enough, but the return contract is unstated.
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 only two parameters, so the schema already documents that channelId comes from postsider_list_channels and that date is provider-specific. The description adds nothing beyond 'for a connected channel', so the 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?
States a specific verb and resource (get account-level analytics for a connected channel) and scopes it as 'account-level', which implicitly separates it from the post-level sibling postsider_get_post_analytics. It stops short of naming that sibling explicitly, so an agent still has to infer the boundary between the two analytics 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 parenthetical '(where the provider supports it)' signals a precondition and implies usage is provider-dependent, which is real guidance. However, it never names an alternative tool, states when-not to use it, or explains what to do when the provider does not support it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_customer_reportGet customer reportARead-onlyIdempotent
Get a customer-scoped agency report with channels, queued, draft, published, error and pending approval counts.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window for recent errors, in days. | |
| customerId | Yes | Customer id from postsider_list_groups. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the bar is lower. The description adds genuinely useful context that the annotations cannot: the report is scoped to a single customer and returns categorized counts, which is the only disclosure of return content since no output schema exists.
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?
A single sentence with zero filler, front-loading the verb, scope and returned dimensions. Nothing repeats the title or name and every clause carries 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?
With no output schema, the description usefully enumerates the report's count categories, and annotations cover the mutation/safety dimension. It is slightly thin on the relationship to sibling reporting tools and on whether counts are affected by any filters beyond 'days', but nothing an agent needs to invoke it correctly is 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 description coverage is 100% — both 'days' (window for recent errors, max 365) and 'customerId' (from postsider_list_groups) are fully documented in the schema. The description adds no parameter-level syntax or format detail, so the 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?
States a specific verb and resource ('Get a customer-scoped agency report') and enumerates what the report contains (channel, queued, draft, published, error, pending approval counts). The 'customer-scoped' framing implicitly distinguishes it from postsider_get_agency_overview, but the sibling is never named, so the differentiation is left to inference.
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 the use case (pull per-customer counts for a report) through the field list, but never states when to prefer this over postsider_get_agency_overview or postsider_get_publishing_state, nor any prerequisites. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_notificationsGet notificationsARead-onlyIdempotent
List recent notifications for the organization (e.g. publish failures, channels needing reconnection).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is covered. The description adds useful substance by enumerating what notifications contain, but says nothing about recency window, result limits, read/unread state, or whether notifications are consumed on read.
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?
A single front-loaded sentence with the core purpose first and examples in parentheses. No filler, no redundancy, nothing that fails to earn 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?
For a zero-parameter, read-only list tool with no output schema and no required inputs, the description supplies the purpose plus representative content. It is nearly complete; only the recency/volume semantics of "recent" are left unspecified.
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 tool takes zero parameters, so there is nothing parametric for the description to clarify; baseline 4 applies. The description correctly does not invent parameters or imply filtering options that do not exist.
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?
States a specific verb and resource ("List recent notifications for the organization") and grounds it with concrete examples (publish failures, channels needing reconnection). It does not explicitly differentiate itself from siblings that may also surface alerts (get_agency_overview, get_customer_report), so it falls short of a 5.
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?
Usage is implied by "recent notifications" and the examples suggest it is the alert/status surface, but there is no explicit when-to-use, when-not-to-use, or named alternative among the numerous sibling tools. An agent can infer intent but gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_postGet post detailsARead-onlyIdempotent
Get the full organization-scoped post group, including current state, scheduled time, media, channel and publish error. Use this to inspect the result of an asynchronous create or publish operation.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | Post id returned by postsider_create_post. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile needs no restating. The description adds genuinely new behavioral context: the async create/publish workflow this read supports and the fact that publish errors surface in the response, implying polling semantics.
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 the resource and return contents, then the usage trigger. No filler and no restatement of the title.
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?
With no output schema, the description usefully enumerates the returned fields, and annotations cover the safety profile. The only gap is not clarifying its boundary against overlapping siblings like get_publishing_state and get_post_missing_fields.
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% and the schema already says postId is 'returned by postsider_create_post.' The description adds no additional syntax, format, or sourcing detail for the single required parameter, 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?
States a specific verb (Get) and resource (organization-scoped post group) and enumerates exactly what is returned: current state, scheduled time, media, channel, publish error. This differentiates it from analytics/missing-fields siblings by content, though it does not explicitly name the near-neighbors such as postsider_get_publishing_state.
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?
Gives an explicit trigger phrase: 'Use this to inspect the result of an asynchronous create or publish operation.' That clearly routes an agent here after create/publish, but no alternatives or exclusions are named for related read tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_post_analyticsGet post analyticsARead-onlyIdempotent
Get performance analytics for a single post over the last N days (where the provider supports it).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back window in days (default 7). | |
| postId | Yes | Post id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety behavior needs no restating. The description does add one genuinely useful behavioral fact beyond the annotations: the tool is provider-dependent ('where the provider supports it'). It says nothing about rate limits or what the returned metrics contain.
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?
A single, front-loaded sentence with zero filler; the resource, scope, and the provider caveat are all packed in without padding.
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?
There is no output schema, so the description could have indicated what 'performance analytics' actually returns (impressions, engagement, etc.); it does not. Annotations and full schema coverage carry most of the burden, but for an analytics tool the return-content gap keeps this at minimum viable.
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 only two parameters, both documented in the schema (including the default of 7 and the exclusive minimum for 'days'), so the baseline is 3. The phrase 'last N days' loosely restates the 'days' parameter but adds no format or boundary detail 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 states a specific verb and resource ('Get performance analytics for a single post') and scopes it by a look-back window, which clearly distinguishes it from the channel-wide sibling 'postsider_get_channel_analytics'. It stops just short of naming that sibling explicitly, so sibling differentiation is only implied by the word 'single 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?
Usage is implied rather than stated: an agent can infer this is the per-post counterpart to channel analytics, and the caveat 'where the provider supports it' signals a conditional availability. There is no explicit when-to-use/when-not-to-use guidance and no alternative tool is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_post_missing_fieldsCheck post for missing fieldsARead-onlyIdempotent
Return per-channel validation problems / missing required fields for a post, so they can be fixed before publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | Post id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the per-channel granularity of the result set, which is genuine value, but says nothing about return format, ordering, or whether validation is live versus cached.
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?
One sentence, front-loaded with the action and resource, with the purpose clause last. Nothing is wasted and nothing needs to be cut.
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?
There is no output schema, so the description carries the burden of signalling return content, and it does so reasonably ('per-channel validation problems / missing required fields'). For a one-parameter read tool this is nearly sufficient, though it does not describe the shape or severity semantics of the problems returned.
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 a single postId parameter already documented in the schema. The description adds no syntax, format, or scoping detail about postId, so the schema does all the work — baseline 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 states a specific verb and resource: it returns per-channel validation problems and missing required fields for a post. That is clearly distinct from a plain postsider_get_post, though it never names or contrasts with any sibling tool.
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 trailing clause 'so they can be fixed before publishing' implies the pre-publish validation workflow, which is useful context. However, there is no explicit when-to-use vs alternatives (e.g., get_post, get_publishing_state) and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_get_publishing_stateGet publishing stateARead-onlyIdempotent
Check whether publishing is active or paused for this organization. Useful before scheduling (a paused org rejects new posts with publishing_paused), and to confirm a kill switch is on.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds genuinely new behavioral context: a paused org rejects new posts with the error code publishing_paused. It doesn't describe the exact response shape beyond 'active or paused', but the error-code disclosure is real added value.
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 tight sentences, front-loaded with the core question and then the motivating use cases. Nothing is wasted.
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 exists, so the description must carry return semantics; 'active or paused' conveys the essential value but not the exact field/format an agent would receive. For a zero-param read tool, this is nearly 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?
Zero parameters, so the baseline is 4. The phrase 'for this organization' usefully clarifies that the org scope is implicit rather than passed in.
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?
States a specific verb+resource: 'Check whether publishing is active or paused for this organization.' It is unmistakably distinct from the sibling pause_publishing and get_post_* 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?
Gives concrete usage context (check before scheduling, confirm a kill switch is on) and cites the failure mode publishing_paused. It does not explicitly name pause_publishing as the mutation counterpart or state when *not* to bother calling, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_list_channelsList channelsARead-onlyIdempotent
List the social channels (integrations) connected to this PostSider organization. Returns each channel id, name and platform. Call this first to get the channel ids needed by postsider_create_post.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only the org-scoping detail and the returned field set; it says nothing about pagination, empty results, or rate limits, so it is modestly additive rather than rich.
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 sentences, no filler, with the primary purpose front-loaded and the usage pointer second. Every clause carries 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?
With zero parameters and no output schema, the description fully compensates by naming the returned fields (id, name, platform) and the ordering constraint relative to postsider_create_post. An agent has everything needed to call it correctly.
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 tool takes zero parameters, which is the baseline-4 case. The description correctly implies no filtering arguments are needed, though there is no parameter nuance to explain.
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?
States a specific verb and resource ('List the social channels (integrations)') and further pins down the scope ('connected to this PostSider organization') plus the returned fields (id, name, platform). It is clearly distinguishable from neighboring list/analytic tools like postsider_list_groups and postsider_get_channel_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?
Explicitly routes the agent: 'Call this first to get the channel ids needed by postsider_create_post,' which names the downstream dependency and the reason to invoke it. It lacks any when-not guidance or alternatives among the other list tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_list_groupsList channel groupsARead-onlyIdempotent
List configured channel groups. In PostSider a group is a customer, so an id returned here is the customerId expected by postsider_get_customer_report and by the customer filter of postsider_list_posts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds value beyond them by disclosing the return semantics — that the ids returned are usable as customerId elsewhere — which matters because there is no output schema. Pagination or result-size behavior is still undisclosed.
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, both front-loaded and earning their place: the first gives the action, the second gives the semantic mapping and the downstream routing. No filler or repetition of the title.
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 zero-parameter, read-only list tool with no output schema, the definition covers what it returns, what the identifiers mean, and where to use them next. Nothing an agent needs in order to call it correctly is 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?
The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to compensate for. Schema coverage is 100% and the empty object schema is unambiguous.
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?
States a specific verb and resource ("List configured channel groups") and immediately disambiguates a domain term that would otherwise confuse the agent: a group is a customer in PostSider. This distinguishes it from siblings like postsider_list_channels and postsider_list_posts without opening any schema.
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 names the concrete consumers of the returned ids (postsider_get_customer_report and the customer filter of postsider_list_posts), which effectively tells the agent why and when to call this first. It does not state exclusions or when-not-to-use, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_list_postsList postsARead-onlyIdempotent
List posts scheduled or published within a date range (UTC). Useful for reviewing the content calendar before scheduling more.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | Range end, ISO 8601 (e.g. 2026-06-30T23:59:59Z). | |
| customer | No | Optional customer id to filter by. | |
| startDate | Yes | Range start, ISO 8601 (e.g. 2026-06-01T00:00:00Z). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, covering the safety and mutability profile. The description adds the UTC timezone constraint and the status scope ('scheduled or published'), which is useful context beyond annotations. However, it does not disclose pagination, result ordering, or limits; with annotations covering safety, a 3 is appropriate.
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 zero waste. The core scope (date range, statuses) is front-loaded, followed by the usage hint.
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 a simple 3-parameter read-only list tool with no output schema and full schema coverage, the description covers purpose, scope, and a usage hint. It could be improved by noting pagination or return format, but for this complexity level it 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%, so all parameters are documented in the schema. The description confirms the date range and UTC basis but adds no syntax or format details beyond what the schema provides. Baseline 3 when schema does the heavy lifting.
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?
States a specific verb+resource: lists posts, constrained to scheduled or published status within a date range. This is clear. However, it does not differentiate from siblings like postsider_get_post or postsider_find_slot beyond the implicit list-vs-single distinction; a more explicit contrast would earn a 5.
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?
Offers implicit usage guidance: 'Useful for reviewing the content calendar before scheduling more.' This suggests a context but does not say when to use it versus alternatives, nor does it name siblings or state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_pause_publishingPause all publishingADestructiveIdempotent
Immediately halt ALL publishing for this organization (kill switch): no now or schedule posts can be created, and queued posts are parked to HELD instead of going out. Use when something is wrong, for example a PR crisis, a post on the wrong channel, or a runaway automation loop. Resume is human-only (owner, dashboard); this cannot be undone via the API.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason, recorded in the audit trail and shown to the team. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint=true, idempotentHint=true), which already flag the operation as a risky write. The description discloses the exact blast radius — no `now`/`schedule` posts can be created and queued posts are parked to HELD rather than sent — plus the irreversible, API-unresolvable resume path.
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 tight sentences, front-loaded with the highest-stakes information (immediate halt, kill switch) before triggers and the irreversibility caveat. No redundant restatement of the name or title.
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 destructive, org-wide switch with no output schema, the description covers scope, side effects, triggers, and recovery constraints well. It does not say what the call returns or whether a confirmation/response object indicates the paused state, which is the only remaining gap.
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% and the single optional `reason` parameter is fully documented in the schema as recorded in the audit trail. The description adds nothing about the parameter, so the 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?
States a specific verb and resource ('Immediately halt ALL publishing for this organization') plus the kill-switch scope, which cleanly distinguishes it from the read-only sibling postsider_get_publishing_state. An agent can identify the operation without opening the schema.
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?
Gives concrete trigger conditions ('when something is wrong, for example a PR crisis, a post on the wrong channel, or a runaway automation loop') and a clear when-not for recovery ('Resume is human-only (owner, dashboard); this cannot be undone via the API'). It stops short of naming the sibling to inspect state first (postsider_get_publishing_state), so it is clear context rather than fully explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_request_approvalSend a draft for approvalAIdempotent
Push a draft post into the human approval queue for review, instead of publishing or scheduling it directly. The post must already exist as a draft (see postsider_create_post with type "draft"). Approval is optional in PostSider, and most posts can also be scheduled directly without ever going through this.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | Draft post id to submit for approval. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the description doesn't need to re-state them. It does add useful behavioral context: this routes a post into a human review workflow rather than publishing it, and requires an existing draft. It stops short of saying what happens to the post's status or whether the request can be withdrawn.
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 carrying information: the action, the prerequisite, and the optionality of the whole flow. No filler, and the core purpose 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 single-parameter mutation with full schema coverage and no output schema, the description supplies the workflow context an agent needs: draft precondition, queue destination, and that this path is optional. Minor gaps remain around permissions/authorization and what happens to the draft's status after submission.
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% and the single postId parameter is already documented as 'Draft post id to submit for approval.' The description reinforces that the post must already be a draft, which adds a mild constraint beyond the schema, but no format or id-source detail. Baseline 3 is appropriate when the schema does the heavy lifting.
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?
Specific verb and resource: pushes a draft post into the human approval queue. It explicitly contrasts the action with the alternatives (publishing or scheduling directly), so an agent can distinguish it from siblings like postsider_update_post_status or postsider_create_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?
States the prerequisite (post must already exist as a draft, with a pointer to postsider_create_post with type "draft") and names the alternatives it replaces. It also flags that approval is optional and most posts can be scheduled directly, giving the agent a clear when-not-to-use signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_update_post_statusUpdate post statusBIdempotent
Change the status of an existing post (e.g. move between draft and queue).
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | Post id. | |
| status | Yes | New status value: draft or schedule. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety and repeatability profile is carried structurally. The description adds only that the post must already exist; it says nothing about permissions, validation failures, or what happens when an invalid transition is attempted.
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?
One short sentence with the action front-loaded and no filler, which is appropriate for a simple setter. The parenthetical example is the only questionable use of space given it uses the wrong enum label.
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 two-parameter mutation with rich annotations and no output schema, the description is minimally adequate: the agent knows what it changes and on what. It omits any mention of valid transitions, error behavior, or prerequisites, and the queue/schedule mismatch leaves a gap the schema alone must resolve.
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 both parameters documented, including the enum, so the schema is authoritative and the baseline is 3. The description's 'queue' wording actually conflicts with the schema's 'schedule' value, so it adds no reliable meaning beyond the schema and slightly muddies it.
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?
States a specific verb (change status) and resource (an existing post), and the parenthetical clarifies it is a state transition rather than a content edit, which separates it from create_post/delete_post/get_post. However, the example term 'queue' does not match the actual enum values (draft/schedule), introducing a small ambiguity about what states exist.
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 gives no when-to-use guidance and names no alternatives, even though siblings like request_approval, pause_publishing, and get_publishing_state are plausible confusions. The agent must infer from the tool name alone that this is the setter for post status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postsider_upload_media_from_urlUpload media from URLA
Download an image or video from a public URL and store it in the PostSider media library. Returns a media object; pass it (or its array) as images to postsider_create_post.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public HTTPS URL of the image or video to import. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write (readOnlyHint=false), external reach (openWorldHint=true) and non-idempotency. The description adds meaningful context beyond them: the source must be a public URL, and the result is a persisted media object in the library that can be chained into post creation. It omits size/type limits and duplicate-on-repeat behavior, so not a 5.
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 tight sentences: purpose first, downstream chaining second. No filler, no restating the tool name.
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?
With no output schema, the description correctly summarizes the return value (a media object) and how to use it, which is what an agent needs for this single-parameter import. Minor gaps on limits and repeat-call behavior keep it from a 5.
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?
Only one parameter and schema coverage is 100%, and the schema already documents it as a 'Public HTTPS URL of the image or video to import.' The description repeats the 'public URL' idea without adding syntax, size, or format guidance, so it meets the baseline but adds no new meaning.
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?
States a specific verb (download/store) and resource (image or video media into the PostSider media library) and clearly separates this import action from sibling tools like postsider_create_post or the list/get tools. An agent knows this is a URL-to-library ingest, not a post creation.
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?
Gives forward-looking usage context by naming the downstream step: pass the returned media object (or array) as `images` to postsider_create_post. It does not state when not to use it (e.g., local file upload path) or the public-URL-only restriction as an exclusion, but the triggering condition is clear.
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.
19 tool updates
v0.1.1- First observed
postsider_create_post - First observed
postsider_delete_post - First observed
postsider_find_slot - First observed
postsider_get_agency_overview - First observed
postsider_get_approval_status - First observed
postsider_get_channel_analytics - First observed
postsider_get_customer_report - First observed
postsider_get_notifications - First observed
postsider_get_post - First observed
postsider_get_post_analytics - First observed
postsider_get_post_missing_fields - First observed
postsider_get_publishing_state - First observed
postsider_list_channels - First observed
postsider_list_groups - First observed
postsider_list_posts - First observed
postsider_pause_publishing - First observed
postsider_request_approval - First observed
postsider_update_post_status - First observed
postsider_upload_media_from_url
TDQS
Scored across 19 tools
Most tools target a clearly distinct resource+action (channels, groups, posts, analytics, approvals, publishing state). The only real overlap is postsider_get_customer_report vs postsider_get_agency_overview, which both return operational rollups and differ mainly in scope (customer vs organization). The per-channel/per-post analytics and post/get_post/missing_fields tools are adequately distinguished by their descriptions.
Every tool uses the same postsider_ prefix plus a consistent snake_case verb_noun pattern (list_channels, get_post, create_post, delete_post, get_agency_overview). Verbs are used predictably and no conventions are mixed. This makes the surface easy to scan and predict.
19 tools is on the heavier side of the ideal 3-15 range, but the domain (channels, groups, posts, scheduling, analytics, approvals, publishing controls, media) is broad enough to justify most of them. A few reporting/analytics tools could plausibly be consolidated, so it is slightly over-scoped rather than bloated.
The post lifecycle is well covered: discover channels/slots, create (schedule/now/draft), inspect, validate missing fields, update status, submit/check approval, and delete. Gaps are minor: no way to edit post content (only status), no media-library management beyond upload, and no channel connect/disconnect (resume publishing is intentionally human-only).
Maintenance
Related MCP Connectors
Official TimeToPost MCP server for social post drafting, scheduling, publishing and approval queues.
- PostHeroOAuthai.posthero
PostHero MCP server — schedule and publish social media posts from any MCP-compatible AI tool
Publish and schedule content across supported platforms, with publishing state and per-platform adaptation. Built by AutomateLab. Product and documentation: https://automatelab.tech/products/mcp/content-distribution-mcp/
Hosted MCP for Instagram, Facebook, X, LinkedIn, Pinterest, and Ghost. OAuth 2.1, 38 tools.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for Publer social media management API, enabling AI assistants to schedule posts, upload media, pull analytics, and manage accounts across 15+ social networks.1529 npm21MIT
- AlicenseAqualityCmaintenanceMCP server for the Post for Me API, enabling publishing, scheduling, editing, deleting, and analyzing social media posts across 9 platforms from any MCP client.2724 npm1MIT
- AlicenseAqualityBmaintenanceMCP server to manage social media accounts from AI assistants, enabling post creation, scheduling, publishing, and media uploads across multiple platforms.1314 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for managing social media posts across multiple platforms using the Postiz API. Supports creating, updating, deleting posts, and generating videos.25 npm3MIT