Skip to main content
Glama

Server Details

Draft, schedule and publish social posts to nine platforms from any AI agent.

Ownership verified

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
0.5% over 62 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 31 tools

Disambiguation4/5

Most tools map cleanly to a resource+action, and the descriptions go out of their way to separate the risky pairs (get_internal_comments vs get_platform_comments, review_post vs validate_post_content, schedule_post vs update_schedule). The weak spot is media handling, where upload_media, file_manager, store_files, list_files and read_file form a five-tool cluster with three overlapping upload paths, one of which (store_files) is explicitly declared off-limits to the model.

Naming Consistency4/5

The set is overwhelmingly consistent snake_case verb_noun (create_post, get_posts, update_schedule, remove_tag, restore_post). Deviations are few but real: file_manager is a bare noun with no verb, and store_files is an internal widget endpoint rather than a caller-facing operation. restore_post/restore_posts and update_post vs convert_post_content stay within the convention.

Tool Count2/5

At 31 tools the surface is well past the point where an agent can hold it all in view, and several entries do not earn a slot: store_files is an internal widget endpoint, restore_posts duplicates restore_post, and get_accounts/get_teams/get_team_info largely mirror MCP resources. The domain is genuinely broad (multi-platform posts, scheduling, comments, media, teams), but a tighter surface folding restores, media, and resource mirrors would be more usable.

Completeness4/5

Lifecycle coverage is strong: create/read/update/publish/schedule/unschedule/trash/restore for posts, plus tags, validation, review, comments and file handling. Notable gaps remain: deletion is limited to DRAFT posts, media cannot be deleted at all (called out in two descriptions), and there is no analytics tool despite analytics being cited as a reason to keep one post_id across platforms.

Available Tools

31 tools
add_tagAdd a tagA
Idempotent
Inspect

Attach a tag to an existing post. create_post also accepts tags=[...] at creation time; this tool is for a post that already exists. Idempotent per (post_id, tag). Requires WRITE-level access on the account.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-destructive, idempotent and closed-world, but the description adds granularity the annotation cannot: idempotency is scoped to (post_id, tag), and a WRITE-level account permission is required. It stops short of saying what happens when the tag name does not already exist under the account (created implicitly vs. error), which is the one behavior an agent might trip on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero waste: action first, routing rule second, constraints last. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the safety profile, the description supplies auth requirements, idempotency scope and sibling routing. Only the success/failure behavior for an unknown tag name is missing, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Reported schema coverage is 0% at the top level, but the nested schema does describe tag, color enum and post_id. The description adds no parameter-level meaning of its own — notably it leaves the 'account_id must match the post's account_id' constraint and any tag-creation semantics to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Attach a tag to an existing post') and immediately contrasts with create_post, so the agent can tell it apart from the siblings that also deal with tags (create_post, remove_tag) 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative path ('create_post also accepts tags=[...] at creation time') and the condition that selects this tool ('for a post that already exists'). That is a complete when/when-not rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connect_accountConnect a social accountA
Idempotent
Inspect

Connect a social account to Postey, or re-authorise one whose credential has expired. Returns a link for the user to open in their browser; no credential is returned to the caller. When the platform needs connecting or reconnecting, the call fails with a URL-elicitation error (-32042) whose data carries the link. After the user finishes in the browser, a repeat call confirms the connection; repeat calls are safe. Credentials are per account, not per platform: one account's X can be RECONNECTION_REQUIRED while another's is fine, so account_id selects the account being fixed. Without account_id the call answers the fleet-wide question and, when accounts disagree, returns needs_reauth[] and healthy[] instead of a link, because the target account is ambiguous. Each blocker in postey://setup carries the account_id for this tool in its action.arguments.

NameRequiredDescriptionDefault
platformYes
account_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavior beyond annotations: it explains that no credential is returned, that the call can fail with URL-elicitation error -32042, that repeat calls are safe, and that credentials are per account rather than per platform. These details materially help an agent handle the OAuth-like flow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the remaining sentences each add operational detail about errors, reauthorisation, account ambiguity, and setup blockers. The length is justified by the complexity of the connection flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the existing output schema, the description covers the critical edge cases an agent must know: the browser link return path, the -32042 error, repeat-call safety, per-account credential scope, and ambiguous-account behavior. It is complete for a two-parameter, open-world connection tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description richly explains account_id: it selects the account being fixed, and omitting it triggers fleet-wide behavior with needs_reauth[] and healthy[] when accounts disagree. The platform parameter is less explicitly described, though its enum values make its meaning clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: connect a social account or re-authorise an expired credential. It clearly distinguishes this from simple account listing by explaining the link-returning and reauthorisation flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: connect or reconnect, omit account_id for a fleet-wide check, and provide account_id when resolving a specific account. It also explains the ambiguous-account fallback behavior, leaving little inference needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_post_contentConvert post contentA
DestructiveIdempotent
Inspect

Adapt an existing post's content from one platform to one or more others, in place on the same post_id (updates the contents for each target). It is for explicit requests to auto-adapt content (e.g. 'convert this to LinkedIn', 'adapt for Bluesky'). Automatic adaptation can lose intentional formatting; hand-written per-platform content goes through update_post. Prerequisites: source_platform already exists on the post, and target_platforms does not contain it. validate_post_content checks each target afterwards. Synced platforms: synced_platforms=[...] (a subset of target_platforms) locks those platforms and keeps them mirrored from source_platform going forward, instead of a one-time conversion. It is only valid when source_platform is the post's primary platform (socials[0]), and applies when the user asks for platforms to stay mirrored.

NameRequiredDescriptionDefault
requestYesRequest containing `post_id`, `source_platform`, `target_platforms`, and optional `synced_platforms`.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, but the description goes well beyond that: it warns that automatic adaptation can lose intentional formatting, that the mutation is in place on the same post_id, and that synced_platforms creates an ongoing mirror rather than a one-time copy (only valid when source is socials[0]). These are consequences an agent could not infer from the annotation flags alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the update_post alternative are front-loaded, and the prerequisite/validation information is dense and useful. The final two sentences re-explain synced_platforms almost identically to the schema description, which is mild duplication, but nothing else is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single nested-request parameter, an output schema, and rich annotations, the description covers everything an agent needs: preconditions, the difference between one-time conversion and ongoing mirroring, the formatting-loss risk, and the natural follow-up call. Nothing material is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the nested request object documents post_id, source_platform, target_platforms and synced_platforms thoroughly, including the mirroring rule and the 'must not include the source' constraint. The description largely restates the synced_platforms semantics rather than adding new parameter-level detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Adapt an existing post's content from one platform to one or more others') plus the crucial scoping detail that the update happens in place on the same post_id. It explicitly contrasts itself with update_post for hand-written per-platform content, so an agent can distinguish it from the sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the exact trigger ('explicit requests to auto-adapt content, e.g. convert this to LinkedIn'), the alternative route (hand-written content goes through update_post), the follow-up tool (validate_post_content), and the preconditions on source/target platforms. The synced_platforms paragraph further states when mirroring applies versus a one-time conversion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_postCreate a draft postAInspect

Create a new DRAFT post. account_id comes from postey://accounts, which lists every account the caller can access, and is the account the user confirmed for this post, including when only one account exists. postey://platforms/{platform}/rules lists each platform's required, optional and forbidden content fields. One create_post call covers every platform for a topic: platform and contents for the first platform, additional_platforms=[{platform, contents}, ...] for the rest. All of them share one post_id, which cross-platform grouping, scheduling and analytics rely on. Separate create_post calls for the same topic create separate post_ids that cannot be grouped, scheduled or managed together. Example: create_post(platform=X, contents=[...], additional_platforms=[{platform: LINKEDIN, contents: [...]}, {platform: INSTAGRAM, contents: [...]}]). convert_post_content is for explicit requests to auto-adapt content, not for multi-platform creation. The compose-post prompt covers each target platform, and content has to fit the platform's hard limit (validate_post_content checks it). tags=[...] attaches tags inline, without separate add_tag calls. postey://accounts/{account_id}/tags lists existing tags; reusing an existing name with its exact casing attaches that tag.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so safety framing is partially covered; the description still adds real context by stating the result is a DRAFT (not published) and that all platforms share one post_id that grouping, scheduling and analytics depend on. The ungroupable-post_id warning is a genuine consequence the annotations cannot express. It stops short of covering retry/idempotency behavior, which is only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and state, then layers the multi-platform rule, the anti-pattern, the sibling alternatives and the tag hint. Dense but readable; the shared-post_id point is made twice (grouping benefit, then splitting penalty), which is defensible emphasis but costs a little tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deeply nested, multi-platform creation tool with an output schema, it covers everything the agent needs to call correctly: account selection, platform field rules via postey://platforms, content limits via validate_post_content/max-length enforcement, multi-platform batching, tags and sibling alternatives. Return values are covered by the output schema, so no gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single top-level 'request' param carries no schema description (0% reported coverage), but the description compensates by explaining account_id provenance and confirmation, the additional_platforms pairing and uniqueness constraint, and inline tag get-or-create with exact casing. It also provides a concrete call example, which the schema cannot.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb, resource and state ('Create a new DRAFT post'), immediately distinguishing it from publish_draft and update_post. It also explicitly positions it against convert_post_content, add_tag and validate_post_content, so the agent can tell it apart from siblings 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing rules: use convert_post_content only for auto-adaptation, not multi-platform creation; pass tags inline instead of calling add_tag; read account_id from postey://accounts rather than guessing. It also gives the positive condition (one call per topic across platforms) and the negative consequence of splitting into separate calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_draftDelete a draftA
DestructiveIdempotent
Inspect

Delete a DRAFT post, either to the trash or permanently. Only posts currently in DRAFT status can be deleted here; published or scheduled posts cannot. The mode is the user's choice and needs their confirmation: trashing leaves the post recoverable for 30 days via restore_post(post_id), but it still counts toward the account's draft limit until it is permanently deleted or the trash window expires; permanent deletion is irreversible but frees that limit slot immediately. Either way the post leaves every listing immediately and its schedules are purged. mode='trash' or mode='permanent' acts immediately without an interactive prompt, which is the reliable way to reach permanent deletion on clients that don't support interactive confirmation.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far beyond the destructive/idempotent annotations, it explains that trashing stays recoverable for 30 days but still consumes a draft-limit slot, that permanent deletion is irreversible yet frees the slot immediately, that all listings and schedules are purged, and that omitting mode on a client without interactive support causes a refusal rather than a default. This is exactly the behavioral context an agent needs before an irreversible call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action scope, then consequences, then the mode mechanics in a logical progression. The mode paragraph is dense with semicolons and clauses, but every sentence carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and destructive annotations already present, the description fills the remaining gaps: eligibility, reversibility window, side effects on schedules and listings, and the interactive-confirmation failure mode. Nothing an agent needs to avoid a wrong or destructive call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to mode beyond the schema description by tying each value to consequences (trash vs permanent) and clarifying that passing it acts immediately without a prompt. The post_id URL/share-link resolution is left entirely to the schema, but the schema already covers it well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Delete a DRAFT post') and immediately narrows the scope to posts in DRAFT status, which separates it from siblings like publish_draft, unschedule_post, or update_post. An agent can pick this tool 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the eligibility condition explicitly (only DRAFT posts; published or scheduled cannot be deleted here) and points to restore_post as the recovery path after trashing. It does not name the tool to use instead for published or scheduled posts, which leaves one routing gap for an agent holding the wrong post status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

file_managerUpload a fileAInspect

Upload a local file (image or video) to Postey's CDN and get back a cdn_url for a post's media. The file goes straight to the CDN; the assistant receives only the URL, never the file contents. It is for files on the user's machine; upload_media handles files that already have a public URL. The returned cdn_url is the media URL as given; a URL built from an id, filename or path points at no stored object.

It does not upload anything by itself: it returns a widget that the client renders and the user drops a file into. A client that cannot render MCP Apps UI uploads nothing, and no error says so; upload_media with source_type='url' or 'base64' works on those clients.

Media uploaded through Postey's MCP surface cannot currently be deleted.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
viewNoThe rendered widget; presentation only.
stateYes
$prefabNoPrefab envelope version.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that the call returns a widget rather than uploading, that the assistant never sees file contents, that non-UI clients fail silently with no error, and that uploaded media cannot be deleted. The silent-failure warning is exactly the kind of trait an agent cannot infer from readOnlyHint/destructiveHint/openWorldHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and outcome, and every sentence carries operational weight (sibling disambiguation, silent failure, immutability). Slightly dense — the sentence about 'a URL built from an id, filename or path points at no stored object' is the one line whose referent is hard to pin down without the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the failure mode that matters most (no upload on non-UI clients, silently), the lifecycle constraint (cannot be deleted), and the data-flow guarantee (URL only, not contents). Since an output schema exists, the description is not obliged to document return values, and the remaining gap is closed by that schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4; the schema (additionalProperties: false, empty properties) matches the description's claim that nothing is passed in. The description could have made explicit that all interaction happens in the rendered widget, but no parameter meaning is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Upload a local file ... to Postey's CDN') and states the concrete outcome (a cdn_url for a post's media). It explicitly distinguishes itself from the sibling upload_media by input type (local file vs. existing public URL), so an agent can route between them without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (upload_media) and the exact conditions that select it: clients that cannot render MCP Apps UI, and source_type='url' or 'base64'. It also states the positive condition — files on the user's machine — with no ambiguity left.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_accountsList connected accountsA
Read-onlyIdempotent
Inspect

Every social account the caller can access, with its connected platforms. Returns the same data as the resource postey://accounts, for clients that cannot read MCP resources. When several accounts exist, which one to use is the user's choice.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: the resource-equivalence behavior and the fact that the tool will not pick an account for you when multiple exist, plus 'caller can access' implies permission scoping.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: what is returned, why this tool exists alongside the resource, and how to handle multiple accounts. Nothing is redundant with the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape need not be explained, and the description covers the resource equivalence and selection caveat. It stops just short of noting whether results are account-scoped by auth context or ordered, but nothing essential for calling it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The description correctly signals a no-argument call by describing a full enumeration with no filtering options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (every social account the caller can access) plus its connected platforms, which is exactly what distinguishes it from connect_account or get_team_info. An agent knows this is a read-only enumeration of accounts, not a mutation or a team lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use it: clients that cannot read MCP resources, since it mirrors postey://accounts. It also pre-empts a likely failure mode by stating that when several accounts exist, choosing one is the user's call rather than the tool's. No explicit when-not or named sibling alternative, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_internal_commentsList internal commentsA
Read-onlyIdempotent
Inspect

Postey's internal team/collaboration comments attached to a post for a platform: notes visible only inside Postey, never published to the social platform. Works for a post in any status (draft, scheduled or published). Useful as context before a virality review or when the user asks what the team said. Requires both post_id and platform (e.g. post_id=123, platform='LINKEDIN'); comments are stored per platform, so a call without platform fails. These are not audience comments from the platform itself; get_platform_comments returns those (e.g. LinkedIn commenters). THREADS, TIKTOK, PINTEREST have no audience-comment provider at all, and this tool is not a fallback for them: it answers a different question. Returns the same data as the resource postey://posts/{post_id}/comments/{platform}, for clients that cannot read MCP resources.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses the hard failure mode ('a call without platform fails'), the cross-status scope (draft/scheduled/published), and that the same data is exposed via the postey://posts/{post_id}/comments/{platform} resource. It stops short of describing result ordering, volume, or pagination behavior, and the output schema carries the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the definition and what it is not, which is the right order. However, the THREADS/TIKTOK/PINTEREST caveat is restated in the description and again in the platform parameter schema, and the resource-equivalence sentence is a trailing footnote rather than core guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with rich annotations and an output schema, the description covers identity, scope, prerequisites, failure mode, sibling disambiguation, and a resource alternative. Nothing needed 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds real meaning beyond the schema: a concrete example (post_id=123, platform='LINKEDIN'), the joint-requirement rule, and the reason all nine platform enum values are accepted here without implying audience-comment support. The rationale duplicates some of the platform field's own schema text, so it is additive but partly redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('internal team/collaboration comments attached to a post for a platform') and immediately bounds it as notes visible only inside Postey, never published. It explicitly distinguishes itself from the sibling get_platform_comments, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives positive triggers ('context before a virality review or when the user asks what the team said'), a negative case ('these are not audience comments'), and an explicit non-fallback rule for THREADS/TIKTOK/PINTEREST where no audience-comment provider exists. Both the when and the when-not are named alongside the alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_platform_commentsList platform commentsA
Idempotent
Inspect

List real comments left by other people on the published social platform post (e.g. LinkedIn commenters), captured in the manual-reply status-check table (manual_reply_comments). LINKEDIN, X, YOUTUBE, INSTAGRAM, BLUESKY, FACEBOOK only. THREADS, TIKTOK, PINTEREST have no audience-comment provider; get_internal_comments is not a fallback for them, since it returns private team notes. If no watch exists, this creates an active manual-reply watch and starts background polling on the external platform; existing watches are reused. Returns the comment_id that reply_comment needs. Postey's internal team comments come from get_internal_comments.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations say readOnlyHint=false on a 'List' tool, which would otherwise look contradictory; the description resolves this by disclosing the side effect precisely: 'If no watch exists, this creates an active manual-reply watch and starts background polling… existing watches are reused' — which also justifies the idempotentHint. It further discloses which platforms yield nothing and why, a behavioral fact not present in any structured field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: purpose, then platform constraints, then side effects, then the disambiguation. The supported-platform list is repeated almost verbatim in the schema's `platform` description, which is mild redundancy, but every sentence carries a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a hidden write/polling side effect and a nested request object, the description covers the critical behavioral risk and the output contract, and an output schema exists so return shape needn't be spelled out. The remaining gap is that the `request` envelope itself is never explained, though all its children are documented in schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The top-level `request` wrapper has no description (reported coverage 0%), and the description adds no guidance on page/size/status semantics or on the interaction between `status` and the manual-reply workflow. The nested properties are self-documenting in the schema, so a baseline 3 is right; the only added value is the mention of the returned comment_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List real comments left by other people on the published social platform post') and immediately scopes it to a concrete data source (manual_reply_comments). It explicitly disambiguates from the sibling get_internal_comments at the end ('Postey's internal team comments come from get_internal_comments').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use coverage per platform (served vs. refused) and pre-empts the most likely wrong move: 'get_internal_comments is not a fallback for them, since it returns private team notes.' It also points forward to the downstream tool ('Returns the comment_id that reply_comment needs').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_post_contentGet post contentA
Read-onlyIdempotent
Inspect

Full text and media of one post on one platform, looked up by post_id. Returns the same data as the resource postey://posts/{post_id}/content/{platform}, for clients that cannot read MCP resources.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription
dataYes
errorNoAlways null on this tool; present because the envelope is shared.
successYesTrue — failures are raised as MCP tool errors, not returned.
error_codeNoAlways null on this tool; present because the envelope is shared.
retrieved_atNoUTC timestamp the envelope was built.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: the data is scoped to a single post on a single platform and is functionally identical to a named MCP resource, which tells the agent this is a pure read with no side effects or cross-post aggregation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero filler: the first states exactly what is returned and how it is keyed, the second states the fallback condition. Front-loaded and appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations carry the safety semantics. The only meaningful gap is the unmentioned post_type parameter and the nested 'request' wrapper, which the schema documents but the description does not surface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description reinforces that lookup is keyed on post_id and scoped to one platform, which adds meaning for two of the three nested fields. However, it says nothing about post_type (FEED/REEL/STORY selection) or the fact that params are wrapped in a 'request' object, so it does not compensate for the reported low schema description coverage at the top level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource ('full text and media of one post on one platform') and the lookup key ('by post_id'). It also names the exact equivalent resource URI, so an agent understands precisely what data it will get and how it maps to the MCP-resource counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative (the postey://posts/{post_id}/content/{platform} resource) and the condition that selects this tool: 'for clients that cannot read MCP resources.' That is a genuine when-to-use rule, though it offers no guidance relative to content-related siblings such as convert_post_content or validate_post_content.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_postsList postsA
Read-onlyIdempotent
Inspect

List post summaries for one account and one platform, filtered by status (DRAFT, SCHEDULED, PUBLISHED). Suited to requests about 'my posts' or 'drafts', or to picking a post. Returns no post text; postey://posts/{post_id}/content/{platform} has that. Requires platform and account_id (from postey://accounts). One call covers one platform, so a cross-platform question takes one call per platform. Default size=10, max=100.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety needs no restating. The description adds genuine behavioral facts beyond them: results exclude post text, pagination defaults to size=10 with max=100, and the platform constraint is per-call. Return shape is not described, but an output schema exists, so that gap is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five tight sentences, front-loaded with what the tool returns, then the exclusion, then the prerequisites and call-cardinality constraint. Every sentence carries information an agent needs to call it correctly; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the non-obvious pieces for a filtered list tool: required scope, where account_id comes from, that post text is elsewhere, per-platform call cardinality, and page-size limits. The output schema relieves the description of explaining return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning the schema cannot: account_id must come from postey://accounts and should never be guessed, and platform is required per call. However it omits the tag_id and page filters entirely, and its status list (DRAFT, SCHEDULED, PUBLISHED) is missing PUBLISHING, which the schema enum includes — an agent reading only the description would not know that state exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List post summaries') plus the mandatory scope: one account and one platform, filtered by status. The status values are named, so an agent can distinguish this from get_post_content or get_platform_comments 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggers ('my posts', 'drafts', picking a post) and an explicit alternative for the case this tool does not serve ('postey://posts/{post_id}/content/{platform} has that'). It also warns that a cross-platform question requires one call per platform, which heads off a common mis-call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_review_statusGet review statusA
Read-onlyIdempotent
Inspect

Collect the result of a review_post run, by job_id (preferred) or post_id (fallback when the job_id is lost; resolves to the most recent review_post job for that post). Exactly one of job_id or post_id is accepted. review_post starts a full AI pass that takes 60-120 seconds and returns a job_id immediately rather than holding the call open. status is one of: running (not finished; a later call returns the result), done (result carries the comments that were written), error (the run failed and the reason says why), lost (the worker was replaced mid-run, most likely by a deploy; a new review_post is needed). Read-only: polling costs nothing and never runs a second AI pass. Calling review_post again for the same post while a job is running runs a second paid pass and writes a second set of comments.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent, but the description adds what they cannot: the 60-120s async pass with an immediate job_id, the four status values and what each means operationally, why 'lost' happens (worker replaced by a deploy) and the required recovery, and that polling is free while re-running review_post is a paid duplicate write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and nearly every sentence carries distinct information. The final sentence about double-running review_post is really usage guidance that duplicates the expense theme already implied earlier, so it is slightly redundant within the passage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still summarizes status semantics — exactly the part an agent must branch on. Combined with timing, cost, and failure recovery, nothing needed to invoke or retry correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is reported as 0% for the nested request object, so the description has to carry meaning — and it does: preferred vs fallback semantics for job_id/post_id, mutual exclusivity ('exactly one ... is accepted'), and what post_id resolves to (most recent job for that post). Gains a small deduction only because the type/shape detail lives in the schema, not the prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Collect the result of a review_post run') and immediately binds it to the sibling pair (review_post starts, get_review_status collects). No sibling ambiguity remains after the first two sentences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit precedence rules: job_id preferred, post_id fallback when the handle is lost, exactly one accepted. It also names the failure mode to avoid ('calling review_post again for the same post while a job is running runs a second paid pass'), which is a genuine when-not-to-use instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scheduleGet the scheduleA
Read-onlyIdempotent
Inspect

Retrieve the current schedule for a SCHEDULED post: which platforms are scheduled and when (UTC), plus any existing post actions and Auto-DM rules per platform, reported read-only. Returns NOT_FOUND if the post has no active schedule. get_posts(status=SCHEDULED) lists all scheduled posts.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the bar is lower. The description adds useful behavioral context by naming the returned schedule components and the NOT_FOUND condition, though it does not cover auth or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and scope, then adds error behavior and the sibling alternative. Every sentence contributes useful information without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 existing annotations and an output schema, this description is complete: it covers what is retrieved, the scheduled status constraint, the NOT_FOUND case, and how to list all scheduled posts instead.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single post_id parameter is reinforced by the requirement that the post be SCHEDULED and by pointing to get_posts(status=SCHEDULED) as the source of the ID. Given low schema description coverage, this is meaningful compensation, though it does not elaborate on the nested request wrapper.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: retrieve the current schedule for a SCHEDULED post. It also details what is returned (platforms, UTC times, post actions, Auto-DM rules) and distinguishes the tool from get_posts(status=SCHEDULED).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the tool is for a single SCHEDULED post and points to get_posts(status=SCHEDULED) for listing all scheduled posts, plus notes NOT_FOUND when no active schedule exists. It does not explicitly route modification cases to update_schedule or unschedule_post, so it falls short of fully explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_team_infoGet team detailsA
Read-onlyIdempotent
Inspect

Full team details, including every member's resolved display name, email and access level. Translates the created_by / published_by UUIDs on posts into names. Returns the same data as the resource postey://teams/{team_id}, for clients that cannot read MCP resources. The response carries real member email addresses. They are there to identify teammates inside this team (attributing a post, or checking who holds which access level), not for repeating to the user unprompted or for contacting anyone.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing that the response contains real member email addresses and by setting an explicit handling expectation for that sensitive data. It also notes the UUID-to-name translation behavior and the equivalence to the postey://teams resource, which is exactly the kind of context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and scope are front-loaded in the first sentence, followed by the translation behavior and resource equivalence. The final two sentences on email handling are slightly verbose but earn their place by covering a real privacy concern.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and the annotations already cover safety. What remains — what the tool does, why it exists versus the resource, and the sensitivity of the returned data — is fully addressed for a one-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required team_id is already described inline in the schema ('Numeric team_id from postey://teams'), and the description only indirectly reinforces its origin by referencing postey://teams/{team_id}. It adds no format, validation, or sourcing detail beyond what the schema provides, so a baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Full team details') and enumerates exactly what is returned: every member's resolved display name, email, and access level. It also clarifies a distinct secondary function (translating created_by/published_by UUIDs into names), which separates it from the list-oriented sibling get_teams.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to prefer this tool over the MCP resource (clients that cannot read resources) and gives context on when member emails are appropriate to use. It stops short of naming a sibling tool alternative or exclusion, so it is clear but not fully comparative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_teamsList teamsA
Read-onlyIdempotent
Inspect

Every team the caller owns or belongs to, with team_id, team_name, accounts and the caller's permission level. Returns the same data as the resource postey://teams, for clients that cannot read MCP resources.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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=false, so safety is covered. The description adds useful context the annotations do not: the result set is scoped to teams the caller owns or belongs to, and the data mirrors the postey://teams resource. Pagination or result-size limits are not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the scope and contents, followed by the resource-equivalence note. Nothing is redundant with the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and rich annotations, the description only needs to establish scope and the resource fallback, which it does. The only gap is whether the result list is bounded or paginated for callers with many teams.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly spends no space on parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource and scope: 'Every team the caller owns or belongs to,' plus the fields returned (team_id, team_name, accounts, permission level). It implicitly separates itself from the sibling get_team_info by making clear this is a list of all teams, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear condition for use: for clients that cannot read MCP resources, use this instead of postey://teams. That is a real routing rule with a named alternative, but it does not address when to prefer this over get_team_info or get_accounts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_filesList uploaded filesA
Read-onlyIdempotent
Inspect

List the files uploaded through the file_manager widget, with their cdn_url, name, size and content type. A file the user already dropped appears here; uploading it again creates a second copy with a different URL.

It does not list media uploaded with upload_media. Only the file_manager widget writes to this index, so an empty list does not mean nothing was uploaded, and a cdn_url that upload_media returned cannot be recovered here.

Scoped to the calling credential, not to one conversation, and kept for 24 hours after the last upload. It never lists another user's files.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the description needn't restate safety. It goes well beyond them by disclosing the 24-hour retention window, credential-level (not conversation-level) scoping, and the duplicate-on-reupload behavior — the kind of context an agent cannot infer from structured fields. The 'empty list does not mean nothing was uploaded' caveat is a genuinely useful false-negative warning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and returned fields, then the exclusions, then scoping — a logical order with no filler sentences. It is slightly longer than needed because 'scoped to the calling credential' and 'never lists another user's files' restate the same isolation guarantee.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return-value shape is handled structurally, and the description still contextualizes the fields it mentions. Retention, scope, source-of-write, and the upload_media boundary together cover everything needed to call this correctly or decide against it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so parameter semantics are moot and the baseline of 4 applies. The description correctly spends no words re-explaining inputs and instead uses the space for scoping and retention semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list files uploaded through the file_manager widget) and enumerates the returned fields (cdn_url, name, size, content type), so the agent knows exactly what comes back. It also names the sibling it is distinct from (upload_media), removing ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says it does not list media uploaded with upload_media and that a cdn_url returned by upload_media cannot be recovered here — a clear when-not-to-use rule tied to a named alternative. It also notes that re-uploading creates a duplicate rather than updating, which tells the agent not to expect dedup behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_draftPublish a draftA
Destructive
Inspect

Immediately publish a DRAFT post to selected platforms. Publication is irreversible and publicly visible on the real social networks, so it needs the user's explicit confirmation in the current turn. Rejects non-DRAFT posts; get_posts(status=DRAFT) lists drafts.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint/openWorldHint annotations by stating the effect is irreversible and publicly visible on real networks, and adds a hard procedural requirement — explicit user confirmation in the current turn — that the annotations cannot express. It also discloses the rejection behavior for non-DRAFT posts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: action first, consequences and confirmation requirement second, lookup alternative last. No filler, and the most decision-relevant fact (irreversibility) is placed early.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be explained, and the description covers safety, preconditions, and the confirmation gate. The one gap is retry/idempotency behavior, which matters for an irreversible action but is left entirely to the schema's idempotency_key field.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage on the top-level parameter is 0%, but the nested request properties are extensively self-documented (post_id, platforms, idempotency_key binding rules, natural_posting). The description only echoes 'selected platforms'; it adds nothing about retry keys or platform-subset constraints, so the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Immediately publish a DRAFT post to selected platforms') and distinguishes itself from read-side siblings by naming get_posts(status=DRAFT) as the listing tool. An agent can tell exactly what this does 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition (post must be DRAFT, non-DRAFT is rejected) and routes to the correct sibling for finding drafts. It does not mention how this relates to schedule_post or review_post, which an agent choosing among publishing paths might also consider.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fileRead file metadataA
Read-onlyIdempotent
Inspect

Return the metadata for one uploaded file by id: its cdn_url, name, size and content type. Recovers the cdn_url for a file listed by list_files. Returns metadata only, never the file's bytes.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavior: it returns metadata only and 'never the file's bytes', preventing an agent from expecting a download. It doesn't cover error behavior for a missing/invalid id, which keeps it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: what is returned, when to use it, and the critical 'metadata only' caveat. The most important constraint is front-loaded in the returned-field list and reinforced at the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return value documentation is not strictly required, yet the description still enumerates the key fields. The one real gap is the id-versus-name ambiguity, which matters for a tool whose only parameter is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry all parameter meaning—and it introduces a mismatch: the sole required parameter is named 'name' in the schema, while the description says the file is looked up 'by id'. An agent cannot tell whether to pass a file name or a file id, or what format either takes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return the metadata') and resource ('one uploaded file by id'), names the exact fields returned (cdn_url, name, size, content type), and explicitly distinguishes itself from list_files. An agent can tell what this does 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete use case—'Recovers the cdn_url for a file listed by list_files'—which tells the agent when to reach for this tool and which sibling precedes it. It stops short of stating exclusions (e.g., that it should not be used to fetch file bytes versus download_media), so it's clear context rather than full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_tagRemove a tagA
Idempotent
Inspect

Detach a tag from an existing post by tag_id. The tag itself is not deleted; only its association with this post is removed. Idempotent: detaching a tag that exists but is not attached to this post is a no-op and returns success. A tag_id that does not exist, or that belongs to a different account, is an error, so 'removed' always means the tag is now off the post. Requires WRITE-level access on the account.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations: discloses that only the association is removed, that a no-op returns success (concretizing idempotentHint), that a nonexistent or cross-account tag_id is an error, and that WRITE-level access is required. This is exactly the mutation-safety context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, each carrying a distinct fact (scope, non-destruction, idempotency, error/auth semantics). The key constraint is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a mutation tool with annotations, a fully described nested schema, and an output schema, the description covers everything else an agent needs: what is and isn't destroyed, success semantics for no-ops, error cases, and permission requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The nested schema already documents tag_id, post_id, and account_id, and the description adds meaning beyond that by stating the cross-account error condition and that the tag entity survives. It does not clarify the request wrapper or the relationship between account_id and post ownership in more detail, so not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb plus resource: 'Detach a tag from an existing post by tag_id', immediately distinguishing it from add_tag and from any tag-deletion tool by clarifying the tag itself is not deleted. An agent knows exactly what this operation does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear conditions for use (you have a post and a tag_id association to break) and explicitly frames the no-op case, so the agent knows what happens when the association is already absent. It never names add_tag as the inverse alternative, so routing guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_commentReply to a platform commentA
Destructive
Inspect

Post a reply to a real audience comment captured in the manual-reply status-check table (manual_reply_comments). LINKEDIN, X, YOUTUBE, INSTAGRAM, BLUESKY, FACEBOOK for now. Publishes the reply directly on the platform and marks the comment 'replied'. Requires the comment_id from get_platform_comments; each comment can be replied to once. Postey's internal team comments come from get_internal_comments.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is known; the description adds real value by stating that the reply is published directly on the platform and the comment is marked 'replied', making the irreversible external effect and the one-shot limit concrete. It doesn't discuss failure modes or per-platform constraints, and leaves idempotency handling entirely to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with what the tool does and the effect it has, then prerequisites and platform scope. No filler; slight crowding of platform list and routing note in the middle, but nothing that would be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world write tool, the description covers the effect, the one-reply-per-comment limit, the prerequisite lookup tool, and platform scope, and an output schema exists so return values need no explanation. Missing only edge-case behavior (failure handling, text limits), which is minor given the annotation and schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Top-level schema coverage is 0% (only a single nested 'request' object with no description), so the description carries more burden; it does explain where comment_id comes from and that it is single-use. However, reply_text semantics (per-platform length or formatting limits) are not elaborated, and the idempotency_key is only documented in the schema, not in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Post a reply to a real audience comment") and pins the exact object it operates on (the manual-reply status-check table, manual_reply_comments). It also separates itself from get_internal_comments, which surfaces a different class of comment, so an agent can distinguish it from siblings 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a prerequisite (comment_id must come from get_platform_comments), a hard constraint (each comment can be replied to once), a supported-platform list, and a routing hint that internal team comments belong to get_internal_comments. That is explicit when-to-use, when-not-to-use, and the alternative source.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_postRestore a deleted postAInspect

Bring a post back from the trash. A post reported as in the trash still has its content intact, so restoring it recovers the original post instead of creating a replacement. Works for 30 days after deletion; after that the post cannot be recovered. A post that was SCHEDULED or PUBLISHING comes back as a DRAFT, because deleting it purged its schedules.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses the 30-day recovery window, that content is preserved rather than regenerated, and the state transition to DRAFT for scheduled/publishing posts (with the reason: schedules were purged). This is exactly the side-effect context the annotations (readOnlyHint=false, destructiveHint=false) do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the core action, then escalation to behavior, then limits, then the state-transition edge case. No filler and no repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the recovery window plus state-transition behavior cover the main risks. Gaps: no mention of permissions/auth requirements, what error a second restore of the same post yields (relevant given idempotentHint=false), and no routing to the batch sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and the schema itself documents post_id thoroughly ('Numeric post_id of a post currently in the trash...'). The description adds no format, source, or validation details about post_id beyond the implicit 'a post', so it neither compensates for the reported coverage gap nor adds new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Bring a post back from the trash') and clarifies a semantic point agents would otherwise get wrong: it recovers the original object rather than creating a replacement. It does not, however, distinguish itself from the sibling 'restore_posts', leaving the singular/plural split for the agent to infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: only valid within 30 days of deletion, and it explains the resulting state for SCHEDULED/PUBLISHING posts. Missing is an explicit exclusion pointing to 'restore_posts' for batch restores or 'get_posts' to locate a trashed post_id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_postsRestore deleted postsAInspect

Restore several trashed posts at once. postey://accounts/{account_id}/trash lists what is in the trash and how many days each post has left. Each post comes back as a DRAFT. Works for 30 days after deletion; after that a post cannot be recovered. Partial success is normal: the result names what was restored and, per post, why anything else was not. restore_post handles a single post.

NameRequiredDescriptionDefault
requestYesBulk restore. Partial success by design — see `restore_posts`.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond annotations: states posts return as DRAFT, the 30-day recovery limit, that partial success is normal, and that the result reports per-post reasons for failures. These are non-obvious behaviors for a mutation tool that annotations (which only flag readOnly=false, idempotent=false) do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what the tool does, then layers constraints, failure semantics, and the sibling alternative in tight sentences. No filler; every sentence carries a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values needn't be spelled out; the description still summarizes the result shape (names restored posts and per-post failure reasons). For a nested-parameter mutation tool, this is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, and the description reinforces the key parameter semantics by tying post_ids to the trash resource and noting the 50-item cap matches one page. This adds source-of-truth guidance beyond the schema without contradicting it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (restore) and resource (several trashed posts), plus scope ('at once') that separates it from the singular restore_post sibling. An agent can tell the two apart from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative explicitly ('restore_post handles a single post') and gives the operative condition (bulk restore, 30-day window). Points to postey://accounts/{account_id}/trash as the source of valid IDs, so the agent knows the prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

review_postRequest a post reviewAInspect

Analyse a post for virality and add Postey's internal team comments (visible only inside Postey, never published to the platform) with specific improvement suggestions. Works on a post in any status: draft, scheduled or published. Returns a job_id immediately and runs the AI pass in the background, because the pass takes 60–120 seconds, longer than most clients wait. get_review_status(job_id) returns the result; it is read-only and costs nothing. A second call for the same post while a job is running runs a second AI pass, writes a second set of comments and is charged again. Requires COMMENT-level access on the account.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavior beyond annotations: comments are internal-only, the call returns a job_id immediately, the AI pass takes 60–120 seconds in the background, duplicate in-flight calls cost extra, and COMMENT-level access is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, and each sentence adds operational detail: status coverage, async return, result retrieval, duplicate-call cost, and access requirement. There is no empty filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the async mutation, output schema, and access requirement, the description gives an agent everything needed to call it correctly: when to call, what it returns, how to retrieve the result, and the main cost/retry hazard.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description clarifies that the target is a post and that the call returns a job_id, but it does not explain the platform choice or the idempotency_key. The nested schema does document those fields, so this is adequate but not enriched much beyond structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: analyse a post for virality and add internal team comments with improvement suggestions. It also distinguishes the async workflow from the sibling status tool by naming get_review_status(job_id).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says the tool works on drafts, scheduled, or published posts, explains that get_review_status is the read-only way to fetch results, and warns against duplicate concurrent calls because they run another AI pass and are charged again.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

schedule_postSchedule a postA
Destructive
Inspect

Schedule a DRAFT post for automatic publication. Each platform can have its own scheduled_at timestamp, so publishing can be staggered across platforms. Once the scheduled time arrives, publication is irreversible and publicly visible, so scheduling needs the user's explicit confirmation. scheduled_at is a UTC timestamp at least 10 minutes in the future, measured from server now (retrieved_at on any response) and computed after the user confirms. A relative request ("now", "in 5 minutes") needs at least 15 minutes of margin; an absolute confirmed time is sent exactly as confirmed. A confirmed time that has passed is rejected rather than moved, and a replacement time is the user's choice.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructive=true and openWorld=true, and the description goes well beyond them: publication is irreversible and publicly visible, confirmation must be explicit, and rejection behavior for stale times is spelled out. It also anchors time computation to server now (retrieved_at), which is genuinely non-obvious operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, then each subsequent sentence adds a distinct rule (staggering, irreversibility, confirmation, time arithmetic, rejection). No sentence merely restates the name, title, or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with an output schema, the description covers the risky parts: confirmation, irreversibility, and timestamp computation. It leaves open whether platform_schedules replaces or merges with existing entries and what happens if some platforms fail while others publish.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Top-level coverage is 0%, but the description compensates with semantics the nested schema does not state: scheduled_at is UTC, ≥10 minutes ahead, measured from server now, and computed post-confirmation. It adds nothing about natural_posting or timezone, though those properties are already richly documented inline in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource+precondition: "Schedule a DRAFT post for automatic publication," which implicitly rules out non-DRAFT posts and distinguishes it from publish_draft. It never names sibling tools such as update_schedule or unschedule_post, so the create-vs-modify boundary 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives strong operative rules: scheduling requires the user's explicit confirmation, the timestamp must be computed after that confirmation, relative phrasings need a 15-minute margin, and a past time is rejected rather than moved. It stops short of routing the agent to alternatives (update_schedule for an existing schedule, unschedule_post to cancel), which is the main missing piece.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_filesStore widget-uploaded filesAInspect

Internal endpoint for the file_manager widget. Not for direct model use: the widget POSTs the bytes the user dropped into it here, base64-encoded, and this stores them on Postey's CDN under the caller's storage quota.

To upload media, call file_manager (opens the drop widget) or upload_media (for media already at a public URL, or a base64 payload). Calling this directly bypasses the widget that is supposed to produce its argument.

NameRequiredDescriptionDefault
filesYesThe files dropped into the widget.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false, so the safety profile is covered. The description adds real value beyond that: uploads consume the caller's storage quota, bytes land on a CDN, and the call bypasses the widget that normally supplies the argument. It stops short of describing failure modes or quota exhaustion behavior, so a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The do-not-use warning and the mechanism are front-loaded in the first sentence, and the follow-up sentence routes the agent to the correct tools. No filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need no explanation, annotations cover the safety profile, and params are fully documented in schema. The description supplies the one thing structured data cannot: this is an internal endpoint the agent should route around.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the nested items document data, name, size, and type with fallback behavior for blank names. The description only restates that the payload is base64-encoded, which the schema already declares via contentEncoding, so it adds little beyond baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('stores them on Postey's CDN under the caller's storage quota') and immediately frames the tool as an internal widget endpoint, which separates it cleanly from file_manager and upload_media.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Not for direct model use', then names both alternatives and the conditions that select them (file_manager for the drop widget, upload_media for public URL or base64). It also warns that calling it directly bypasses the widget that produces its argument.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unschedule_postUnschedule a postA
DestructiveIdempotent
Inspect

Cancel the schedule for one or more platforms on a SCHEDULED post; the post reverts to DRAFT when all platforms are removed. Also deletes any post actions (auto-retweet, etc.) for the unscheduled platforms. This cannot be undone, so it needs the user's explicit confirmation. Only SCHEDULED posts can be unscheduled; get_schedule shows the currently scheduled platforms. Passing every scheduled platform removes them all at once.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond its annotations, it discloses that removing all platforms reverts the post to DRAFT, that post actions like auto-retweet are deleted, that the action is not reversible, and that it needs the user's explicit confirmation. This is exactly the operational context an agent needs before causing destruction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the destructive action, then side-effects, then prerequisites, then edge-case behavior. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The annotations declare a destructive, idempotent, closed-world mutation, the output schema covers return values, and the description supplies the missing pieces: side effects, reverting behavior, and the confirmation requirement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents both nested parameters, and the description adds meaning by noting that passing every scheduled platform removes them all at once, and that only SCHEDULED posts can be unscheduled. It does not say whether an empty array is rejected or what the response looks like, but the core semantics are reinforced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The definition uses a specific verb+resource pair ('Cancel the schedule ... on a SCHEDULED post') and names the fields affected (platforms). It also tells the agent apart from the read-oriented siblings 'get_schedule' and 'update_schedule' by explicitly stating what happens to the post.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The definition gives clear preconditions: only SCHEDULED posts can be unscheduled, explicit user confirmation is needed, and it names 'get_schedule' as the tool that shows currently scheduled platforms. It does not explicitly say when to prefer it over 'update_schedule', which is an alternate mutation of the same resource.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_postUpdate a postA
Destructive
Inspect

Overwrite an existing post's contents. get_post_content shows the current content for the user to confirm changes against. Updating applies to DRAFT and SCHEDULED posts; updating a PUBLISHED post does not re-publish it. Partial updates are safe: only the fields sent change. A field omitted on a content item is carried over from the existing post. This covers media_urls, post_type and every platform config (the youtube_* fields except youtube_title, tiktok_privacy_status, cover_url, graduation_strategy, share_to_feed, and the pinterest_* fields except pinterest_title). Updating text alone does not strip media or reset configs, and the whole post does not need re-sending. A config changes only when its new value is passed explicitly. media_urls=[] on a content item removes its media. YOUTUBE is the one exception: youtube_title is required, so an update keeps exactly one content item and includes contents[0].youtube_title on every call. contents[0].text is the video description and is left out unless a description is intended; contents[0].media_urls holds the uploaded video. post_type does not apply to YOUTUBE. PINTEREST works the same way: pinterest_title is required, so an update keeps exactly one content item and includes contents[0].pinterest_title on every call. contents[0].text (the Pin description), pinterest_board_id, pinterest_link and pinterest_alt_text are optional and carried over if omitted. post_type does not apply to PINTEREST. Tags: update_tags takes specs ({tag, color, account_id}), not tag_ids. A spec whose name already exists resolves to that tag rather than creating a duplicate, and postey://accounts/{account_id}/tags lists existing tags with their exact casing.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by explaining that partial updates are safe, omitted fields are carried over, text-only updates do not strip media, media_urls=[] clears media, and a PUBLISHED post is not re-published. It also discloses the two structural exceptions (YOUTUBE and PINTEREST require exactly one content item with a mandatory title), which is precisely the kind of behavior an agent would otherwise get wrong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The safety/overwrite semantics are front-loaded and earn their place, but the middle section degenerates into a long enumeration of individual platform config field names that reads as a schema dump and is hard to scan. The PINTEREST paragraph also largely restates the YOUTUBE pattern instead of compressing it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given nested objects, nine platforms, and destructive semantics, the description covers the risky cases (partial update, media removal, single-item YouTube/Pinterest) well, and the output schema covers returns. It omits tags_to_remove behavior and says nothing about what happens when an update targets an ineligible state, but the core is covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning not present in the schema: which fields are carried over vs. reset, that update_tags takes specs rather than tag_ids, that an existing tag name resolves instead of duplicating, and that contents[0].text means the video/Pin description on YOUTUBE/PINTEREST. These are semantic rules that materially change how the nested params must be filled.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Overwrite an existing post's contents') and explicitly contrasts read vs write by naming get_post_content. It does not distinguish itself from create_post, publish_draft, or schedule_post, which are the closest write-side siblings an agent could confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage context: applies to DRAFT and SCHEDULED posts, does not re-publish PUBLISHED ones, and points to get_post_content for confirming current state before writing. No explicit 'do not use this when...' routing to create_post or publish_draft, so the routing is implied rather than complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_scheduleUpdate a scheduleA
Destructive
Inspect

Update the scheduled time and/or platform set for a SCHEDULED post. Unscheduling a platform here keeps its Auto-DM rule. Once the scheduled time arrives, publication is irreversible and publicly visible, so a change needs the user's explicit confirmation. scheduled_at is a UTC timestamp at least 10 minutes in the future, measured from server now (retrieved_at on any response) and computed after the user confirms. A relative request ("now", "in 5 minutes") needs at least 15 minutes of margin; an absolute confirmed time is sent exactly as confirmed. A confirmed time that has passed is rejected rather than moved, and a replacement time is the user's choice. Platforms in the new list but not currently scheduled are added; platforms currently scheduled but absent from the new list are removed. platform_schedules must be non-empty; unschedule_post cancels all platforms. get_schedule shows the current state.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds materially new behavior: publication is irreversible and public once the time arrives, Auto-DM rules survive unscheduling, platforms are added/removed by list diffing, and a passed confirmed time is rejected rather than silently moved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core action and the confirmation requirement come first, followed by timing rules and then platform-set semantics. A few sentences (the relative-vs-absolute margin rule) are layered and require a second read, but none are filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given destructive writes, nested platform entries and an available output schema, the description covers the preconditions, timing constraints, rejection behavior and platform diffing an agent needs. Return values can be left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The nested schema already documents scheduled_at and timezone well, so the description's added value is operational: the UTC basis (server now via retrieved_at), the 10-minute floor, the 15-minute margin for relative requests, and exact sending of confirmed absolute times. It does not cover natural_posting or timezone behavior, leaving some schema-documented fields without narrative.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update the scheduled time and/or platform set for a SCHEDULED post') and scopes it to posts already in SCHEDULED status. It is clearly separable from schedule_post, unschedule_post and get_schedule, which it names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use unschedule_post to cancel all platforms, get_schedule to inspect current state, and a non-empty platform_schedules is mandatory here. It also states the precondition of explicit user confirmation and that a replacement time is the user's choice, not the tool's.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_mediaUpload mediaAInspect

Upload media (image, video, GIF, PDF) and return CDN URLs for contents[].media_urls in create_post / update_post. Media is uploaded before the post that references it is created.

The returned cdn_url is the media URL, used exactly as returned. A media URL assembled from media_id, a filename or a path points at no stored object, and the post is created without its media.

Source types: • 'url' — media already hosted at a public CDN URL (not a social-media page URL). Downloads server-side. Up to 250 MB. Works everywhere and is the best fit on the hosted server. Larger files go through the file_manager upload widget or PosteySkills. • 'base64' — small files (under 5 MB recommended, 20 MB decoded hard cap). Works everywhere. • 'local_path' — local CLI only. Uploads a file from the local machine via the PosteySkills CLI (chunked upload above 50 MB, per-platform validation). Requires PosteySkills installed locally (npx skills add posteyai/skills) and works with the credential already in use, OAuth or API key. Not available on the hosted server, which cannot see the local filesystem.

When running locally with PosteySkills, local_path is the fastest option for on-disk files (any size, no encoding). Subject to plan storage quota.

Media uploaded here cannot currently be deleted through this server; there is no delete tool on the MCP surface.

list_files reads the file_manager widget's own index and does not show upload_media uploads, so the cdn_url this returns cannot be recovered there.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavioral traits: uploads cannot be deleted through this server, list_files does not show upload_media results, the cdn_url must be used exactly as returned, and local_path requires PosteySkills plus either OAuth or API-key auth. It also describes size limits, chunked uploads, per-platform validation, and storage quota constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and workflow, then organized by source type in scannable bullets. It is somewhat repetitive because source-type details appear both in the bullet list and in the source_type parameter discussion, but the length is justified by the tool's multiple upload modes and environment constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of three source modes, local vs hosted execution, auth requirements, size limits, and the lack of a delete path, the description is thorough. An output schema exists, so return values need not be re-explained, and the description still covers the critical integration context for create_post/update_post.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning beyond the schema by explaining the tradeoffs and constraints of the source_type enum values, including environment availability and size caps. It does not cover every nested parameter (e.g., content_type and enable_conversion are left to the schema), but its parameter guidance is otherwise strong.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Upload media') and immediately clarifies the workflow: it returns CDN URLs consumed by create_post/update_post and must happen before the post is created. It also distinguishes this tool from file_manager and list_files by explaining that upload_media outputs are not visible in the file manager index.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit source-type selection guidance: 'url' is preferred on the hosted server, 'base64' is for small files, and 'local_path' is local CLI only with PosteySkills installed. It also names concrete alternatives for larger files ('file_manager upload widget or PosteySkills') and states when each mode is not available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_post_contentValidate post contentA
Read-onlyIdempotent
Inspect

Dry-run content against a platform's hard limit, counting rules, threading requirements, banned words and media constraints. Returns warnings without mutating state. Useful before create_post / update_post for any non-trivial content. account_id is required for X/Twitter, where it resolves the premium character limit, and optional for every other platform. Issues come in two kinds, tagged in detailed_issues: hard_limit issues make the post unpublishable as written; style issues only make it read off-style. valid is false if either kind is present.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description still adds real value: it spells out the two issue categories (hard_limit vs style) and the exact semantics of `valid` being false when either is present. That is behavior an agent could not infer from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the operation and its scope, then the routing advice, then the issuing semantics. No filler and no restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers what is validated, that state is not mutated, when to call it, the account_id dependency, and how to interpret the two issue kinds. With an output schema present, the description does not need to enumerate return fields and correctly doesn't.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The top-level schema has a single `request` object, but its nested properties carry extensive per-field descriptions, so the schema does most of the work. The description's only parameter-level contribution is reiterating that account_id is required for X to resolve the premium limit — which the schema already states — so it adds little beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (dry-run validate) and resource (post content) plus the exact rule families checked: hard limits, counting rules, threading, banned words, media constraints. An agent can distinguish this from create_post/update_post immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: "Useful before create_post / update_post for any non-trivial content" names the sibling alternatives and the condition that selects this tool. It does not state when to skip validation (e.g. trivial single-line posts), which is the only gap.

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.

  1. 31 tool updates
    • First observedadd_tag
    • First observedconnect_account
    • First observedconvert_post_content
    • First observedcreate_post
    • First observeddelete_draft
    • First observedfile_manager
    • First observedget_accounts
    • First observedget_internal_comments
    • First observedget_platform_comments
    • First observedget_post_content
    • First observedget_posts
    • First observedget_review_status
    • First observedget_schedule
    • First observedget_team_info
    • First observedget_teams
    • First observedlist_files
    • First observedpublish_draft
    • First observedread_file
    • First observedremove_tag
    • First observedreply_comment
    • First observedresolve_share_link
    • First observedrestore_post
    • First observedrestore_posts
    • First observedreview_post
    • First observedschedule_post
    • First observedstore_files
    • First observedunschedule_post
    • First observedupdate_post
    • First observedupdate_schedule
    • First observedupload_media
    • First observedvalidate_post_content

Publisher details

Operator
Postey · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Connecting is free; sign in with a Postey account through OAuth, or use an X-API-Key header (keys available on every plan). The free plan caps drafts at 5 per social set and publishing at 15 posts per platform per 30 days, and scheduling needs a paid plan. Every post goes to the user's own connected social accounts. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Social media scheduling and publishing for AI agents. 17 validation-first tools to post to X, LinkedIn, Instagram, TikTok, YouTube, Reddit, Discord, Telegram, and more through one connected workspace.
    175 npm
    103
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Gives AI agents the ability to schedule and publish social media posts to Instagram, TikTok, YouTube, X, LinkedIn, Facebook, Pinterest, Threads, and Bluesky. Create, schedule, and bulk-plan posts with per-platform captions, then check per-platform results and retry failures.
    12
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Official MCP server for PostEverywhere (posteverywhere.ai/social-media-scheduler). Let Claude, ChatGPT, Cursor or any MCP client schedule and publish posts to 13 platforms: Instagram, TikTok, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Telegram, Discord, WordPress and Google Business Profile. 40 tools: best-time scheduling, threads, cross-posting, campaigns, analytics.
    33
    546 npm
    6
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources