Skip to main content
Glama
opentweetio

OpenTweet MCP Server

Official
by opentweetio

OpenTweet MCP Server

npm version License: MIT

Post, schedule, and thread on X (Twitter) from Claude, Cursor, ChatGPT, Windsurf, or any MCP client. 30 tools covering tweets, threads, scheduling, an evergreen queue, analytics, AI media generation, and multi-account management.

No X developer account, no OAuth app setup, no pay-per-call API billing. OpenTweet owns the X connection; your agent gets simple tools.

Nothing to install. Point your MCP client at the hosted Streamable HTTP endpoint:

https://mcp.opentweet.io/mcp

Claude Code, one command:

claude mcp add --transport http opentweet \
  https://mcp.opentweet.io/mcp \
  --header "Authorization: Bearer ot_your_api_key"

Or any MCP client config (Claude, Cursor, Windsurf, ChatGPT connectors):

{
  "mcpServers": {
    "opentweet": {
      "type": "streamable-http",
      "url": "https://mcp.opentweet.io/mcp",
      "headers": { "Authorization": "Bearer ot_your_api_key" }
    }
  }
}

Get your API key (prefix ot_) at opentweet.io/developer. Connect your X account once in the dashboard; the key covers everything else.

Related MCP server: Spectre

Other install options

Claude Desktop extension (one click)

Download the .mcpb extension from opentweet.io/claude-desktop and double-click it. Your API key is stored in the OS keychain.

Local via npm

npx -y @opentweet/mcp-server install   # interactive installer, detects your client

Or add manually:

{
  "mcpServers": {
    "opentweet": {
      "command": "npx",
      "args": ["-y", "@opentweet/mcp-server"],
      "env": { "OPENTWEET_API_KEY": "ot_your_api_key" }
    }
  }
}

Config file locations:

  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)

  • Cursor: ~/.cursor/mcp.json

  • Windsurf: ~/.codeium/windsurf/mcp_config.json

The 30 tools

Tweets and threads create_tweet, create_thread, list_tweets, get_tweet, update_tweet, delete_tweet, publish_tweet, schedule_tweet, batch_schedule (up to 50 at once), repurpose_tweet

Media and AI generation upload_media, generate_image, generate_video

Analytics and insights get_analytics, get_top_posts, get_profile_growth, get_best_times, analyze_best_times, get_content_gaps, search_inspiration

Account get_account, list_accounts (multi-account: pass x_account_id to any tool)

Evergreen queue get_evergreen_settings, update_evergreen_settings, list_evergreen_posts, get_evergreen_post, add_to_evergreen, update_evergreen_post, remove_from_evergreen, get_evergreen_history

Plus MCP resources (account status, scheduled queue) and built-in prompts.

Example prompts

  • "Write 3 tweets about TypeScript tips and schedule them across this week at my best posting times."

  • "Turn this blog post into a thread and schedule it for tomorrow 9am."

  • "What were my top 5 tweets this month? Add the best one to my evergreen queue."

  • "Check my posting streak and content gaps, then draft tweets to fill them."

How it compares

X's official MCP server (XMCP) exposes the raw X API and can post, but it requires an X developer account, OAuth app credentials, and pay-per-use API billing, and it has no scheduling. OpenTweet is the managed publishing layer: flat pricing from $11.99/month, scheduling, threads, evergreen recycling, and analytics included. Full comparison: opentweet.io/mcp/post-to-x.

License

MIT

Available Tools

30 tools
opentweet_add_to_evergreenA
Destructive

Add a post to the evergreen queue pool. Either add an existing post by ID or create a new evergreen post with text content.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoText for a new evergreen post (if not using post_id)
post_idNoID of an existing post to add to the evergreen pool
categoryNoCategory for the new post (default: "General")
is_threadNoWhether this is a thread
media_urlsNoMedia URLs for the post
x_account_idNoTarget X account ID (for multi-account users)
cooldown_daysNoCustom cooldown days for this post (overrides default)
thread_tweetsNoThread tweets (if is_thread is true)

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate destructiveness (destructiveHint=true). The description does not add behavioral context beyond the basic action. It doesn't mention side effects, permissions, or what happens to the pool, which is acceptable given annotations cover the destructiveness hint.

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, no redundancy, front-loaded with the main action. Every word earns its place.

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

Completeness3/5

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

The description is adequate for a tool with full schema descriptions, but it focuses only on 'text' for new posts, omitting other parameters like category, media, etc. Given 8 parameters and no output schema, a slightly more comprehensive overview would improve completeness.

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 100%, so baseline is 3. The description adds value by clarifying the mutual exclusivity of 'post_id' and 'text' ('either ... or'), which is not enforced in the schema. This helps the agent understand the correct usage pattern.

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 clearly states the tool's purpose: adding a post to the evergreen queue pool. It distinguishes two modes (add existing by ID or create new with text), which sets it apart from sibling tools like opentweet_create_tweet or opentweet_remove_from_evergreen.

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

Usage Guidelines3/5

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

The description implies the two usage scenarios but does not explicitly guide when to use this tool over alternatives. No mention of preconditions or when not to use it, leaving the agent to infer from the sibling names.

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

opentweet_analyze_best_timesA
Idempotent

Trigger a fresh analysis of the user's best posting times by pulling their last ~100 tweets from X (with engagement metrics) and computing an engagement-weighted heatmap. Uses owned-read X API calls (cheap under 2026 X pricing). Cooldown: once per 24 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
x_account_idNoAnalyze a specific connected X account (for multi-account users)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare idempotentHint=true and destructiveHint=false. The description adds valuable behavioral details: it pulls last ~100 tweets, computes a heatmap, has a 24-hour cooldown, and uses cheap API calls. No contradictions with annotations.

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 sentences, each serving a clear purpose: first states the action, second details the method and cost, third specifies the cooldown. No extraneous words.

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 the single parameter, no output schema, and rich annotations, the description covers the tool's purpose, constraints (cooldown, API cost), and behavior. It lacks an explicit description of the output format (e.g., 'returns a heatmap object'), but this is not critical for a computation trigger 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?

Schema coverage is 100% for the single parameter x_account_id, with a description in the schema. The tool description does not add new semantic information beyond the schema's 'Analyze a specific connected X account (for multi-account users)'. Baseline of 3 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?

The description clearly states the tool triggers a fresh analysis of best posting times by pulling last ~100 tweets and computing an engagement-weighted heatmap. It uses a specific verb-resource combination and distinguishes itself from the sibling 'opentweet_get_best_times' by emphasizing the 'trigger fresh analysis' action.

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 provides context on when to use this tool: 'Uses owned-read X API calls (cheap under 2026 X pricing). Cooldown: once per 24 hours.' This implies it's cost-effective but rate-limited. However, it does not explicitly state when not to use it or suggest alternatives like opentweet_get_best_times for cached results.

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

opentweet_batch_scheduleB
DestructiveIdempotent

Schedule multiple tweets at once. Each tweet must already exist as a draft. Provide an array of post IDs with their scheduled dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
schedulesYesArray of {post_id, scheduled_date} pairs (max 50)
community_idNoOptional X Community ID to post to
x_account_idNoTarget X account ID (for multi-account users)
share_with_followersNoShare community posts with followers too

TDQS

B3.4/5.0
Behavior2/5

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

Despite annotations including destructiveHint: true, the description does not clarify what destructive means (e.g., overwriting existing schedules) or explain idempotency. It adds no context beyond the annotations.

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, no wasted words, front-loaded with the core action and constraints.

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

Completeness2/5

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

No output schema and no mention of return values or behavior for a batch operation. Also fails to cover all parameters (community_id, x_account_id, share_with_followers are omitted).

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%, so the description adds little beyond repeating the schema. It mentions the array of post IDs and dates but does not elaborate on the three other parameters.

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 clearly states the verb 'schedule' and the resource 'multiple tweets' with a precondition that they must be drafts, distinguishing it from siblings like opentweet_schedule_tweet (single) and opentweet_publish_tweet (immediate).

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

Usage Guidelines3/5

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

The description gives a clear precondition (tweets must be drafts) but does not provide explicit when-to-use vs. alternatives such as opentweet_schedule_tweet for single scheduling.

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

opentweet_create_threadA
Destructive

Create a Twitter/X thread (multiple connected tweets posted as a chain).

ParametersJSON Schema
NameRequiredDescriptionDefault
tweetsYesArray of tweet texts in order (max 280 chars per tweet for free X accounts, up to 25,000 for Premium+)
categoryNoCategory/topic tag
publish_nowNoSet to true to publish immediately
auto_retweetNoEnable auto-retweet after posting
x_account_idNoTarget X account ID (for multi-account users). Omit to use primary account.
scheduled_dateNoISO 8601 date-time to schedule. Omit to save as draft.
auto_retweet_offset_minutesNoMinutes to wait before auto-retweeting (e.g. 60, 120, 240). Defaults to 60.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true indicating mutation. Description adds minimal extra context (chain, multiple tweets) but does not disclose details like rate limits, required authentication, or side effects beyond creation. With existing annotations, this is acceptable but not rich.

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?

Single sentence, no filler, front-loaded with verb and resource. Every word earns its place.

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

Completeness3/5

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

No output schema, so description could mention return values or confirmation. It lacks info on error cases or success response. For a creation tool with 7 parameters, it is minimally adequate but not complete.

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%, so baseline is 3. Description does not add any meaning beyond what the schema already provides for each parameter; it repeats only the name and type implicitly via context.

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?

Description clearly states the tool creates a Twitter/X thread, specifying it is multiple connected tweets as a chain. This distinguishes it from sibling tools like opentweet_create_tweet which creates a single tweet.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The description implies it's for threads, but does not say 'use for multiple tweets' or 'do not use for single tweets'. lacks exclusion criteria.

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

opentweet_create_tweetC
Destructive

Create a tweet. Can save as draft, schedule for a specific time, or publish immediately to X.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesTweet text content (max 280 characters for free X accounts, up to 25,000 for Premium+)
categoryNoCategory/topic tag (e.g. "Tech", "Marketing"). Defaults to "General"
media_urlsNoArray of media URLs (upload first with opentweet_upload_media)
publish_nowNoSet to true to publish immediately to X instead of saving as draft
auto_retweetNoEnable auto-retweet after posting. The tweet will be retweeted automatically after the specified offset.
x_account_idNoTarget X account ID (for multi-account users). Omit to use primary account.
scheduled_dateNoISO 8601 date-time to schedule the tweet (e.g. "2026-03-15T09:00:00Z"). Omit to save as draft.
auto_retweet_offset_minutesNoMinutes to wait before auto-retweeting (e.g. 60, 120, 240, 480, 1440). Defaults to 60.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate destructive (creation) and non-idempotent behavior, which the description matches. It adds the three posting modes but does not disclose additional traits like irreversibility or editing possibilities.

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 description is a single sentence, which is concise but lacks important details. It earns its place but is too minimal for the tool's complexity.

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

Completeness2/5

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

Given 8 parameters and many sibling tools, the description is sparse. It does not explain parameter interplay, error conditions, or return values. No output schema is present, so the description should provide more context.

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% with individual parameter descriptions. The tool description provides a high-level summary of modes but adds minimal new meaning beyond 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?

The description clearly states the action ('Create a tweet') and the three modes (draft, schedule, publish immediately). However, it does not differentiate from sibling tools like opentweet_publish_tweet or opentweet_schedule_tweet, which could overlap.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings such as opentweet_publish_tweet or opentweet_schedule_tweet. The description omits explicit when-to-use and when-not-to-use instructions.

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

opentweet_delete_tweetA
DestructiveIdempotent

Permanently delete a tweet. This cannot be undone. If the tweet was published to X, it will also be deleted from X by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe tweet/post ID to delete
delete_from_xNoWhether to also delete the tweet from X/Twitter if it was published. Defaults to true.

TDQS

A4.2/5.0
Behavior4/5

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

Beyond annotations (destructiveHint, idempotentHint), the description adds that the deletion is permanent, cannot be undone, and automatically syncs with X (Twitter). This provides useful behavioral 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?

Two concise sentences with no unnecessary words. Key information is front-loaded: action, then irreversibility, then cross-platform effect.

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 the tool's simplicity, annotations, and full schema coverage, the description is sufficient. It covers permanence and cross-platform deletion. No output schema, but not needed for this operation.

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 100%, so baseline is 3. The description adds value by stating that delete_from_x defaults to true, which is not in the parameter description, guiding agent behavior.

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 clearly states the action: 'Permanently delete a tweet.' It uses a specific verb and resource, and is easily distinguishable from sibling tools like create_tweet or update_tweet.

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

Usage Guidelines3/5

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

The purpose is clear, but the description does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives. Usage is implied by the verb 'delete'.

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

opentweet_generate_imageA

Generate an AI image from a text prompt using Grok Imagine (xAI). Returns a permanent URL ready to use in tweets via media_urls. Requires XAI_API_KEY to be configured on the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDescription of the image to generate
resolutionNoImage resolution. Default: 1k
aspect_ratioNoImage aspect ratio. Default: 1:1

TDQS

A4/5.0
Behavior3/5

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

Annotations (openWorldHint, idempotentHint, destructiveHint) are present but vague. The description adds that generation uses Grok Imagine and returns a permanent URL, but doesn't disclose potential side effects like cost, rate limits, or failure modes. Consistent with annotations, but could provide more detail.

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 clearly convey the action, output, and prerequisite. No wasted words, every sentence earns its place.

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 simple 3-parameter tool with no output schema, the description covers input, output, and prerequisite. Missing minor details like default values for optional parameters or rate limits, but is adequate for an agent to use the 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?

Schema coverage is 100% with descriptions for all three parameters. The description adds no extra meaning beyond what the schema provides, so baseline of 3 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?

The description clearly states it generates an AI image from a text prompt using Grok Imagine and returns a permanent URL for tweets. This distinguishes it from sibling tools like opentweet_upload_media (uploads existing media) and opentweet_generate_video (generates video).

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 mentions the prerequisite (XAI_API_KEY) and that the URL is ready for tweets via media_urls, providing clear context. However, it does not explicitly state when to use this tool over alternatives, though the differentiation is implicit.

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

opentweet_generate_videoA

Generate an AI video from a text prompt using Grok Imagine (xAI). Video generation is async — this tool starts the job AND polls until complete (up to 5 minutes). Returns the final video URL ready to use in tweets. Requires XAI_API_KEY to be configured on the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDescription of the video to generate
durationNoDuration in seconds (5-10). Default: 5
resolutionNoVideo resolution. Default: 480p
aspect_ratioNoVideo aspect ratio. Default: 16:9

TDQS

A4.2/5.0
Behavior4/5

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

Annotations include openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds transparency by detailing the async polling process, maximum wait time, and the requirement for an API key, which go beyond the annotations.

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 two concise sentences. The first sentence states the purpose; the second covers behavior, output, and prerequisites. No wasted words, and critical information is front-loaded.

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 4 parameters, no output schema, and annotations, the description covers purpose, async behavior, return value, and key requirement. It is fairly complete but could mention failure scenarios or timeout handling.

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% with descriptions for all parameters. The description mostly restates schema information (e.g., duration range, resolution defaults) without adding significant new meaning beyond 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?

The description clearly states the tool's purpose: generating an AI video from a text prompt using Grok Imagine. It specifies the verb 'generate' and the resource 'video', distinguishing it from sibling tools like opentweet_generate_image.

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 explains the async behavior, polling mechanism, and required API key. It tells when to use (for video generation) but does not explicitly mention when not to use or provide alternative tools, though the async note guides appropriate usage.

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

opentweet_get_accountA
Read-only

Get your OpenTweet account status including subscription plan, daily posting limits, post counts, and connected X accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No 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=true, so the description doesn't need to restate read-only nature. It adds value by specifying the exact data returned (subscription plan, limits, counts, connected accounts), which goes beyond annotations. No contradictions.

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?

Single sentence that is front-loaded with the action ('Get') and specific details. Every word adds value, no fluff.

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 no parameters, no output schema, and minimal annotations, the description fully covers what the tool does and what it returns. No missing critical information for an agent to decide to use 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 input schema has zero parameters, so schema description coverage is 100%. Per guidelines, baseline is 4 for 0 parameters. The description does not need to explain parameters.

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 clearly states the tool retrieves account status including subscription plan, daily posting limits, post counts, and connected X accounts. It uses a specific verb ('Get') and distinct resource (account status), differentiating it from sibling tools like opentweet_get_tweet or opentweet_get_best_times.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives or when not to use it. The description does not mention context, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.

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

opentweet_get_analyticsB
Read-only

Get your posting analytics including stats, streaks, trends, category breakdown, and recent activity. Use type parameter to get specific analytics.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoType of analytics: "overview" (default, posting stats + streaks + trends), "tweets" (per-tweet engagement), "best_times" (optimal posting hours/days)
periodNoTime period for tweet analytics (e.g. "7d", "30d", "90d"). Only for type="tweets".
sort_byNoSort tweet analytics by metric (e.g. "impressions", "engagement_rate"). Only for type="tweets".
x_account_idNoFilter analytics by X account ID (for multi-account users)

TDQS

B3.4/5.0
Behavior3/5

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

The description is consistent with the readOnlyHint annotation, stating it retrieves analytics. No contradictions. However, it adds minimal behavioral context beyond what annotations already provide, such as no disclosure of rate limits or account requirements.

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 concise at two sentences, front-loading the main purpose and a usage hint. No unnecessary words.

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

Completeness3/5

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

Given no output schema, the description provides a useful but not exhaustive list of included analytics. It could better explain what each type returns, especially 'overview' and 'best_times' details.

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%, so parameters are well-documented in the schema. The description adds slight value by emphasizing the 'type' parameter, but overall does not significantly improve parameter understanding.

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 clearly states the tool retrieves posting analytics including specific categories like stats, streaks, trends. However, it does not explicitly differentiate from sibling tools like opentweet_get_best_times, which may overlap significantly.

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

Usage Guidelines3/5

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

The description implies usage for obtaining overview, tweets, or best_times analytics via the type parameter, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it.

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

opentweet_get_best_timesA
Read-only

Get the best times to post on X based on the user's actual published tweets weighted by engagement (likes, retweets, replies, bookmarks, impressions). Returns a 7×24 day-of-week × hour heatmap, the top 5 windows, and AI-generated insights. If no analysis exists yet, falls back to a frequency-only summary and prompts the user to run analyze.

ParametersJSON Schema
NameRequiredDescriptionDefault
x_account_idNoFilter to a specific connected X account (for multi-account users)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true, and description details the return data (heatmap, top windows, insights) and the fallback behavior, providing complete behavioral transparency without contradiction.

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 concise sentences, front-loaded with the main purpose, and no unnecessary words. Every sentence adds value.

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 only one optional parameter and strong annotations, the description covers all needed context: what it returns, fallback behavior, and the prerequisite relationship with opentweet_analyze_best_times.

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 has 100% coverage with a clear description for the only optional parameter. Description does not add value beyond the schema, so baseline 3 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?

Description uses specific verb 'Get' and resource 'best times to post', and clearly distinguishes from sibling opentweet_analyze_best_times by focusing on retrieval rather than analysis.

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 when to use (to get best times) and what happens if no analysis exists (falls back to frequency summary and prompts to run analyze). This guides the agent to first use the analyze tool when needed.

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

opentweet_get_content_gapsA
Read-only

Returns the user's content gaps: topics they engage with as a reader on X (likes) but rarely post about themselves, plus AI-generated post hook suggestions for those gaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
x_account_idNoFilter by X account ID (multi-account users)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds behavioral context by specifying that the output includes AI-generated suggestions, which is not in the annotations. No contradiction with annotations.

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 a single sentence that efficiently conveys the tool's purpose and output. No filler words or redundant 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?

Given the tool's simplicity (1 optional parameter, no output schema, read-only annotations), the description fully explains what the tool returns (content gaps with suggestions). No missing information for effective use.

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% (single parameter x_account_id described in schema). The description does not add extra meaning beyond the schema, so baseline 3 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?

The description clearly states the tool returns 'content gaps' defined as topics a user engages with (likes) but rarely posts about, plus AI-generated suggestions. It uses a specific verb ('Returns') and resource, and the concept is distinct from sibling tools.

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

Usage Guidelines3/5

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

The description implies the tool is for finding posting ideas based on reading habits, but it does not explicitly state when to use it versus alternatives (e.g., opentweet_search_inspiration) or when not to use it. No exclusions or context for selection are provided.

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

opentweet_get_evergreen_historyA
Read-only

View the publishing history of evergreen posts. Shows clones that were automatically created and posted from the evergreen pool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
limitNoResults per page (default 20, max 100)
source_idNoFilter by source evergreen post ID to see history for a specific post
x_account_idNoFilter by X account ID (for multi-account users)

TDQS

A3.9/5.0
Behavior4/5

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

The annotation readOnlyHint: true already ensures safe read-only operation. The description adds value by explaining that the history consists of 'clones that were automatically created and posted', providing behavioral context beyond the annotation.

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 extremely concise with two sentences, front-loading the core purpose. No unnecessary information.

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

Completeness3/5

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

The description explains the main purpose but omits details about the output format or what specific fields are returned. Given the simple tool with no output schema, some additional context on the returned data would improve completeness.

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% with clear parameter descriptions. The tool description does not add any additional meaning to the parameters, so the baseline of 3 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?

The description clearly states the verb 'View' and the resource 'publishing history of evergreen posts', specifying that it shows 'clones that were automatically created and posted'. This distinguishes it from sibling tools like opentweet_list_evergreen_posts.

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

Usage Guidelines3/5

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

The description implies usage for viewing history of evergreen posts but does not explicitly state when to use this tool versus alternatives like list_evergreen_posts. No exclusions or when-not-to-use guidance is given.

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

opentweet_get_evergreen_postA
Read-only

Get full details of a specific evergreen post including its recent publishing history.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe evergreen post ID

TDQS

A4.1/5.0
Behavior4/5

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

The annotation already declares the tool as read-only. The description adds value by specifying that it returns 'full details' and 'recent publishing history', which is not covered by the annotation. No contradictions.

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 a single 12-word sentence that is front-loaded and contains no extraneous information. Every word is necessary and earns its place.

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 simple read tool with one parameter and no output schema, the description adequately states what is returned (full details + publishing history). Combined with the annotation, the tool is fully understandable.

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 schema covers the single parameter 'id' with a description ('The evergreen post ID'), achieving 100% coverage. The description does not add further semantics, so baseline 3 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?

The description clearly states the action ('Get full details'), the resource ('specific evergreen post'), and adds a distinguishing feature ('including its recent publishing history'). This differentiates it from siblings like list or history-only tools.

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

Usage Guidelines3/5

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

The description implies usage for retrieving full details of a specific post but does not explicitly mention when not to use it or compare to similar sibling tools. The context from sibling names helps, but the description itself lacks direct guidance.

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

opentweet_get_evergreen_settingsA
Read-only

Get your evergreen queue settings and pool statistics. Shows whether the queue is enabled, posting frequency, cooldown, and pool size limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
x_account_idNoFilter by X account ID (for multi-account users)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the read-only behavior is clear. The description adds valuable context by listing the specific data returned (queue enabled, frequency, cooldown, pool size limits), enhancing transparency beyond the annotation.

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 extremely concise, consisting of just two sentences. The first states the tool's overall purpose, and the second lists the specific outputs. Every sentence serves a clear function with no wasted words.

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 the simple input (one optional parameter) and lack of output schema, the description adequately explains what the tool does and what it returns. It covers the key points, though it might benefit from mentioning the response format or that there is no output 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 only parameter (x_account_id) has a description in the schema (100% coverage), and the tool description does not add any additional semantic information. According to guidelines, baseline is 3 when schema coverage is high.

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 clearly states the verb 'Get' and the resource 'evergreen queue settings and pool statistics'. It specifies the exact information returned (enabled, frequency, cooldown, pool size limits), distinguishing it from sibling tools like opentweet_list_evergreen_posts and opentweet_update_evergreen_settings.

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

Usage Guidelines3/5

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

The description implies the tool is for viewing settings and statistics, but it does not explicitly state when to use it versus alternatives, nor does it mention prerequisites or context. It provides minimal guidance on usage scenarios.

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

opentweet_get_profile_growthA
Read-only

Get the user's X profile growth: follower deltas (7/30/90 days), 7d engagement totals, and avg engagement rate. Replaces X Premium+ analytics for OpenTweet users.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays of history (default 90)
x_account_idNoFilter by X account ID (multi-account users)

TDQS

A3.8/5.0
Behavior3/5

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

The description adds context about the metrics returned, which complements the readOnlyHint annotation. However, it does not disclose other behaviors like rate limits, data freshness, or required permissions. Annotations already cover read safety, so the description provides moderate added value.

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

Conciseness5/5

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

Two sentences that front-load the core purpose and output details. Every word is informative with no redundancy or fluff.

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?

The description provides a good summary of the return data (follower deltas, engagement totals, engagement rate) but does not specify engagement metric types (e.g., likes, retweets). Given no output schema, a slightly more detailed breakdown would improve completeness.

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 input schema has 100% parameter description coverage (days and x_account_id are described). The description itself adds no additional semantic meaning for the parameters, so it meets the baseline for full schema coverage.

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 clearly states the tool retrieves user profile growth data including specific metrics (follower deltas, engagement totals, engagement rate). It distinguishes from siblings by claiming it replaces X Premium+ analytics.

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

Usage Guidelines3/5

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

The description does not explicitly compare with sibling tools like opentweet_get_analytics or opentweet_get_account. It only mentions replacing X Premium+ analytics, which implies a use case but lacks when-to-use vs when-not-to guidance.

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

opentweet_get_top_postsA
Read-only

Get your top-performing tweets ranked by engagement (or other metric). Returns the user's actual best-performing posts with metrics, useful for repurposing or studying what works.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoRestrict to last N days (0 or omit = all time)
sortNoSort field (default: engagement)
limitNoNumber of posts to return (default 10, max 50)
x_account_idNoFilter by X account ID (multi-account users)
min_impressionsNoFilter out posts below this impression count

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description adds value by explaining the return includes 'actual best-performing posts with metrics' and the purpose ('studying what works'). However, it does not detail authentication or rate limits, which are standard assumptions.

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 concise sentences front-load the core function and ranking, followed by a useful purpose statement. No redundant or extraneous 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 simple filtered read operation with 5 well-described parameters and a readOnlyHint annotation, the description conveys purpose, return type (best posts with metrics), and use case. However, it could specify the exact metrics returned (e.g., likes, retweets) since there is no output 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?

Schema description coverage is 100%, so all parameters are already documented. The description adds no additional meaning beyond what the schema provides, such as that the 'sort' parameter aligns with 'ranked by engagement (or other metric)'.

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 clearly states it retrieves 'top-performing tweets ranked by engagement (or other metric)', using specific verb 'Get' and resource 'top posts'. It differentiates from siblings like 'list_tweets' by emphasizing ranking and performance.

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

Usage Guidelines3/5

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

The description mentions the tool is 'useful for repurposing or studying what works', implying when to use it, but does not explicitly state when not to use it or list alternatives. No exclusions or comparisons to sibling tools like 'opentweet_list_tweets'.

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

opentweet_get_tweetA
Read-only

Get full details of a specific tweet by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe tweet/post ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description's consistency with that is fine. However, it does not disclose any additional behavioral traits such as rate limits, authentication requirements, or what constitutes 'full details' beyond 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.

Conciseness5/5

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

The description is a single concise sentence with no unnecessary words. Every part is informative and front-loaded.

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

Completeness3/5

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

Given the simple nature of a retrieval tool with one parameter and no output schema, the description is adequate but vague. 'Full details' is not elaborated, and there is no mention of return values or error conditions.

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 schema provides 100% coverage for the single required parameter 'id' with a description. The tool description does not add any extra meaning beyond what the schema already states, so baseline 3 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?

The description clearly states the action (get), the resource (full details of a specific tweet), and the means (by ID). It effectively distinguishes from siblings like opentweet_list_tweets (listing) and opentweet_create_tweet (creation).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For instance, it does not explain when to prefer this over opentweet_list_tweets for retrieving a single tweet, nor does it mention any prerequisites or context.

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

opentweet_list_accountsA
Read-only

List your connected X/Twitter accounts. Use the returned account IDs with x_account_id parameter in other tools to target a specific account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true. Description adds that it returns account IDs but no additional behavioral traits beyond what annotations provide.

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 purpose, no wasted words.

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?

Simple tool, no input schema. Description hints at output (account IDs) but could explicitly mention other returned fields. Adequate for low complexity.

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?

No parameters, so schema coverage is 100%. Description adds no parameter info but mentions output usage, which is fine.

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?

Clearly states it lists connected X/Twitter accounts, distinguishing from sibling opentweet_get_account which likely gets a single account.

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: to obtain account IDs for other tools. Lacks explicit when-not-to-use or alternatives, but context is clear.

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

opentweet_list_evergreen_postsA
Read-only

List posts in your evergreen pool. Shows all source posts that will be automatically reposted on rotation.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
limitNoResults per page (default 20, max 100)
pausedNoFilter by paused status
x_account_idNoFilter by X account ID (for multi-account users)

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, confirming a safe read operation. The description adds behavioral context by clarifying that the list contains 'source posts that will be automatically reposted on rotation', which goes beyond the annotation. No disclosure of pagination or rate limits, but the core behavioral trait is well-covered.

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 main action, zero wasted words. Every sentence earns its place, providing purpose and behavioral detail.

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

Completeness2/5

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

No output schema exists, so the description should compensate by explaining return value structure. It only states 'Shows all source posts' without detailing fields or pagination. Given parameter complexity (4 params) and no output schema, this is insufficient for complete understanding.

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% for all 4 parameters (page, limit, paused, x_account_id), each with adequate descriptions. The tool description adds no additional parameter meaning, so baseline 3 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?

The description clearly states 'List posts in your evergreen pool' with an explanatory follow-up ('Shows all source posts that will be automatically reposted on rotation'). It uses a specific verb ('List') and resource ('evergreen pool'), distinguishing it from siblings like opentweet_list_tweets (general listing) and opentweet_get_evergreen_post (single post).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs. alternatives like opentweet_list_tweets or opentweet_get_evergreen_post. While the purpose implies usage for viewing the evergreen pool, it does not provide exclusions or context for when the sibling tools might be more appropriate.

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

opentweet_list_tweetsA
Read-only

List your tweets with optional filtering by status. Returns paginated results.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
limitNoResults per page (default 20, max 100)
statusNoFilter by status: "scheduled" (upcoming), "posted" (published), "draft" (unscheduled), "failed" (errors)
x_account_idNoFilter by X account ID (for multi-account users)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description does not need to state safety. The description adds 'Returns paginated results', which is a behavioral trait beyond the schema. No contradictions.

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 short sentences, no fluff, information is front-loaded. Every word adds value.

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

Completeness3/5

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

The description covers purpose and pagination but does not mention response structure, ordering, or how pagination works (e.g., page/limit parameters). For a list tool with no output schema, this is a moderate 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?

Schema coverage is 100% and each parameter has its own description. The tool description only adds 'optional filtering by status', which echoes the status parameter. Baseline 3 is appropriate as no additional parameter context is provided.

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 clearly states 'List your tweets' with optional filtering, specifying the verb and resource. It shows the tool's purpose for retrieving a list of tweets, which is distinct from sibling tools like opentweet_get_tweet or opentweet_list_evergreen_posts.

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives (e.g., opentweet_get_tweet for a single tweet), nor does it mention prerequisites or context for filtering.

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

opentweet_publish_tweetA
Destructive

Publish an existing draft or scheduled tweet immediately to X/Twitter. Requires an active subscription and X account connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe tweet/post ID to publish now

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true. The description adds prerequisite context (subscription, account connection) but does not elaborate on side effects beyond the annotation.

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, no wasted words, front-loaded with action and constraints.

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 simple one-parameter tool with destructive annotation, the description sufficiently covers the core action and prerequisites. Minor lack of detail on post-publish state, but overall complete.

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% with one parameter 'id'. The description repeats the schema's description ('The tweet/post ID to publish now') without adding new semantics beyond confirming immediate action.

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 clearly states 'Publish an existing draft or scheduled tweet immediately to X/Twitter', using a specific verb and resource. It distinguishes the tool from siblings like opentweet_create_tweet and opentweet_schedule_tweet.

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 lists prerequisites ('Requires an active subscription and X account connection') and implies use for existing drafts/scheduled tweets. However, it does not explicitly state when not to use or suggest alternatives.

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

opentweet_remove_from_evergreenA
DestructiveIdempotent

Remove a post from the evergreen pool. The post is converted back to a regular draft, not deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe evergreen post ID to remove from pool

TDQS

A4/5.0
Behavior4/5

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

Annotations provide idempotent and destructive hints. The description adds behavioral context by stating the post is 'converted back to a regular draft, not deleted,' which clarifies the exact state change and avoids misunderstanding. No contradiction with annotations.

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 two short sentences with no unnecessary words. It front-loads the action and explains the crucial nuance about not deleting, making it highly efficient.

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 the simplicity of the tool (one parameter, no output schema), the description is sufficient. It explains the input and the effect, leaving no ambiguity. A slightly higher score might be warranted but is limited by the lack of any return value information.

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 parameter 'id' is already described in the input schema as 'The evergreen post ID to remove from pool.' The tool description does not add further semantics, but schema coverage is 100%, meeting 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?

The description clearly states the action: 'Remove a post from the evergreen pool.' It uses a specific verb and resource, and distinguishes from deletion by noting the post is converted back to a regular draft. This differentiates it from sibling tools like opentweet_delete_tweet.

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

Usage Guidelines3/5

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

The description explains the effect but does not explicitly state when to use this tool versus alternatives. It implies the use case (removing from evergreen) but lacks guidance on when not to use it or a comparison with similar tools.

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

opentweet_repurpose_tweetA
Destructive

Repurpose an existing tweet with AI, transforming it into your own voice. Saves the result as a draft by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoDesired tone (e.g. "professional", "casual", "witty", "bold")
tweet_textYesThe original tweet text to repurpose
instructionsNoAdditional instructions for the AI (e.g. "make it more technical")
tweet_authorNoOriginal tweet author (e.g. "@naval")
x_account_idNoX account ID for multi-account users
save_as_draftNoSave repurposed tweet as a draft (default: true)

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint: true (state change) and idempotentHint: false. The description adds context by stating it saves as a draft by default, which is a key behavioral trait. However, it does not disclose that output may vary due to AI or that the original tweet remains unchanged.

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 extremely concise: two sentences that cover the core action, transformation, and default behavior. Every sentence adds value without any wasted words.

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 the tool's simplicity and high parameter coverage, the description covers the main functionality and default behavior. However, it does not mention what the return value or confirmation looks like after saving as draft, 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?

Schema coverage is 100%, so parameters are well-documented. The description adds the default draft behavior related to 'save_as_draft', but beyond that it does not provide additional meaning beyond 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?

The tool name and description clearly state the verb 'repurpose' and the resource 'tweet', with AI transformation and default draft-saving. It distinguishes itself from siblings like 'create_tweet' or 'update_tweet' by focusing on repurposing an existing tweet.

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

Usage Guidelines3/5

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

The description lacks explicit guidance on when to use this tool versus alternatives. It does not specify that this is for transforming existing content rather than creating from scratch, nor does it mention when not to use it.

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

opentweet_schedule_tweetA
DestructiveIdempotent

Schedule an existing draft tweet for a specific date and time. The post must be a draft (not already posted or an evergreen source).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe tweet/post ID to schedule
scheduled_dateYesISO 8601 date-time to schedule (e.g. "2026-03-15T09:00:00Z"). Must be in the future.

TDQS

A4/5.0
Behavior3/5

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

Annotations include destructiveHint=true, implying state changes, but the description does not clarify that scheduling removes the draft from drafts or whether the action is reversible. It adds no detail beyond the basic action.

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 concise sentences cover the essential purpose and constraints with zero redundancy. Information is front-loaded and easy to parse.

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 simple scheduling tool, the description covers core behavior (schedule draft) and constraints (must be draft, future date). It does not explain post-scheduling behavior (e.g., automatic posting) or return value, but given no output schema and common expectations, it is reasonably complete.

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%, so both parameters are fully documented. The description restates the draft constraint (related to 'id') and echoes the future-time requirement for 'scheduled_date', providing no additional meaning beyond 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?

The description uses a specific verb ('Schedule') and resource ('existing draft tweet') and clearly states constraints ('must be a draft, not already posted or an evergreen source'). It effectively distinguishes from siblings like opentweet_publish_tweet and opentweet_batch_schedule.

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 specifies when the tool is appropriate (draft tweets only) and excludes evergreen sources and already posted content. It implies usage context but does not explicitly name alternative tools for non-draft posts.

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

opentweet_search_inspirationA
Read-only

Search X/Twitter for high-performing tweets to find content inspiration. Returns tweets with engagement metrics. Use filters to narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage filter (e.g. "en", "es", "fr")
queryYesSearch query (e.g. "SaaS marketing", "from:naval", "#startup")
has_mediaNoOnly return tweets with media attachments
min_likesNoMinimum number of likes (client-side filter)
sort_orderNoSort by relevancy (default) or recency
max_resultsNoNumber of results (10-100, default 20)
min_retweetsNoMinimum number of retweets (client-side filter)

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description adds minimal behavioral context. It mentions engagement metrics but not how 'high-performing' is determined.

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 that are front-loaded with the main action and purpose. Every word earns its place.

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

Completeness3/5

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

Given no output schema and 7 parameters, the description is adequate but could specify what engagement metrics are returned or clarify the 'high-performing' criterion.

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%, so the description does not need to explain parameters in detail. It adds no extra parameter meaning beyond 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?

Clearly states it searches for high-performing tweets to find content inspiration, distinguishing it from other list/search tools by focusing on inspiration and high performance.

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?

Mentions using filters but does not explicitly differentiate from sibling tools like opentweet_list_tweets or opentweet_get_top_posts. Still gives clear context for its use case.

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

opentweet_update_evergreen_postB
DestructiveIdempotent

Update an evergreen post's cooldown period or pause/unpause it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe evergreen post ID
pausedNoPause (true) or unpause (false) this post
cooldown_daysNoCustom cooldown days (1-90), or null to use the global default

TDQS

B3.3/5.0
Behavior1/5

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

Description claims non-destructive updates (cooldown, pause/unpause) but annotations set destructiveHint=true, creating a contradiction. No mention of side effects, authorization, or reversibility.

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?

Single sentence with no wasted words. Clearly front-loads the purpose before listing actions.

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

Completeness3/5

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

For a simple update tool with 3 parameters and no output schema, description is adequate but lacks context on what pause/cooldown changes mean operationally.

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%, so baseline 3. Description echoes schema parameters but adds no new meaning; e.g., does not explain that cooldown_days=null uses global default.

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?

Description clearly states verb (update), resource (evergreen post), and specific actions (cooldown period, pause/unpause). Distinguishes from siblings like opentweet_remove_from_evergreen.

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

Usage Guidelines3/5

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

Description implies use for updating settings of an existing evergreen post but lacks explicit guidance on when to use vs alternatives, e.g., no mention of when to use opentweet_add_to_evergreen instead.

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

opentweet_update_evergreen_settingsA
DestructiveIdempotent

Update evergreen queue settings. Control whether the queue is active, how many posts per day, posting times, and default cooldown period.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledNoEnable or disable the evergreen queue
posting_timesNoArray of posting times in "HH:mm" format (e.g. ["09:00", "17:00"])
posts_per_dayNoNumber of evergreen posts to publish per day (1-10, limited by plan)
default_cooldown_daysNoDefault days to wait before reposting (1-90)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations include idempotentHint=true and destructiveHint=true, already signaling that updates are idempotent and may modify existing state. The description adds basic behavioral context (what settings are controlled) but does not elaborate on side effects, permissions required, or implications of changes (e.g., disabling queue). Bar lowered by annotations leads to a score of 3.

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 a single efficient sentence listing the controllable aspects. It is front-loaded and avoids extraneous words. While concise, it could be slightly more structured with bullet points, but the current form is acceptable.

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

Completeness3/5

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

Given the lack of required parameters and output schema, the description provides adequate context on what the tool modifies. However, it omits details about return values (e.g., success status or updated configuration), prerequisites, and effect timing (immediate vs. queued). This leaves some gaps for a complete understanding.

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%, with each parameter (enabled, posting_times, posts_per_day, default_cooldown_days) having clear descriptions in the input schema. The description reiterates these concepts but adds no new semantic meaning beyond summarizing them. Baseline 3 applies as schema already 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?

The tool name 'opentweet_update_evergreen_settings' and description clearly state it updates evergreen queue settings. Specific verb 'Update' and resource 'evergreen queue settings' with explicit fields (active, posts per day, posting times, cooldown). Distinguishes from sibling tools like 'get_evergreen_settings' and 'add_to_evergreen' by focusing on settings modification.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. It implies usage via 'Control whether the queue is active' but lacks directives like 'for reading settings use get_evergreen_settings'. Sibling tools exist for related actions but no comparative guidance is provided.

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

opentweet_update_tweetA
DestructiveIdempotent

Update an existing tweet. Can change text, category, schedule, or media. Cannot edit already-posted tweets.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe tweet/post ID to update
textNoNew tweet text (max 280 chars for free X accounts, up to 25,000 for Premium+)
categoryNoNew category
is_threadNoConvert to/from thread
media_urlsNoNew media URLs (replaces existing)
community_idNoX Community ID to post to, or null to remove
thread_mediaNoMedia URLs per thread tweet (array of arrays)
thread_tweetsNoUpdated thread tweets (excluding the first tweet which is the main text)
scheduled_dateNoNew schedule date (ISO 8601), or null to unschedule
share_with_followersNoShare community post with followers too

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide destructiveHint and idempotentHint. Description adds value by stating the 'cannot edit already-posted tweets' restriction, which is not in annotations.

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 purpose, no wasted words. Efficiently conveys core function and key limitation.

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 10 parameters with full schema coverage, description adequately summarizes editable fields. Lacks details on thread or community parameters but schema covers them.

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%, so baseline is 3. Description only enumerates fields (text, category, schedule, media) without adding new meaning beyond schema descriptions.

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 'Update an existing tweet' with specific verbs and resources, and explicitly says 'Cannot edit already-posted tweets', distinguishing it from siblings like create, delete, publish.

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?

Provides clear constraint 'Cannot edit already-posted tweets', guiding when not to use. Lacks explicit alternatives but contextually clear given sibling tool names.

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

opentweet_upload_mediaA
Destructive

Upload an image or video file to use in tweets. Returns a URL that can be passed to create_tweet or update_tweet in the media_urls field. Supported formats: JPG, PNG, GIF, WebP (max 5MB), MP4, MOV (max 20MB).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the image or video file on disk

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it discloses supported formats, size limits, and that the tool returns a URL for later use. Annotations indicate destructiveHint=true, but the description does not contradict this; it simply doesn't elaborate on potential side effects, which is acceptable for an upload tool.

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 with no wasted words. The first sentence introduces the tool's purpose and return value; the second lists constraints. Information is front-loaded and easy to parse, making it efficient for an AI agent.

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 simple upload tool with one parameter, no output schema, and adequate annotations, the description covers all essential aspects: what it does, what it returns, and usage constraints. No gaps remain for the agent to make correct choices.

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 schema covers 100% of parameters, so baseline is 3. The description repeats the schema description for file_path ('Absolute path to the image or video file on disk') without adding new meaning. It confirms the parameter type but does not exceed the schema's own 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?

The description clearly states the tool uploads an image or video file for use in tweets, returns a URL for media_urls field, and specifies supported formats and size limits. This distinguishes it from sibling tools like generate_image or generate_video, which create media rather than upload existing files.

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 explicitly tells when to use the tool: before calling create_tweet or update_tweet to include media. It provides clear context but does not explicitly state when not to use it or mention alternatives. However, the instruction is sufficient for an AI agent to understand the prerequisite role.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 30 tool updatesv1.2.0
    • First observedopentweet_add_to_evergreen
    • First observedopentweet_analyze_best_times
    • First observedopentweet_batch_schedule
    • First observedopentweet_create_thread
    • First observedopentweet_create_tweet
    • First observedopentweet_delete_tweet
    • First observedopentweet_generate_image
    • First observedopentweet_generate_video
    • First observedopentweet_get_account
    • First observedopentweet_get_analytics
    • First observedopentweet_get_best_times
    • First observedopentweet_get_content_gaps
    • First observedopentweet_get_evergreen_history
    • First observedopentweet_get_evergreen_post
    • First observedopentweet_get_evergreen_settings
    • First observedopentweet_get_profile_growth
    • First observedopentweet_get_top_posts
    • First observedopentweet_get_tweet
    • First observedopentweet_list_accounts
    • First observedopentweet_list_evergreen_posts
    • First observedopentweet_list_tweets
    • First observedopentweet_publish_tweet
    • First observedopentweet_remove_from_evergreen
    • First observedopentweet_repurpose_tweet
    • First observedopentweet_schedule_tweet
    • First observedopentweet_search_inspiration
    • First observedopentweet_update_evergreen_post
    • First observedopentweet_update_evergreen_settings
    • First observedopentweet_update_tweet
    • First observedopentweet_upload_media

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct function with clear descriptions; potential overlap between get_best_times and analyze_best_times is resolved by descriptions (one fetches existing, the other triggers analysis).

Naming Consistency5/5

All tools follow a consistent 'opentweet_verb_noun' snake_case pattern, making it predictable for an agent to infer purpose from names.

Tool Count4/5

30 tools is above the typical well-scoped range, but each serves a unique purpose in tweet management, scheduling, evergreen content, analytics, media, and AI features. Slightly heavy but still reasonable.

Completeness5/5

The tool set covers full tweet lifecycle (CRUD, scheduling, publishing), evergreen replay, analytics, media upload, AI generation, inspiration search, and profile growth—no obvious gaps for the domain.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to fully automate X/Twitter interactions including searching, posting, engaging, and managing multiple accounts without paid API keys.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables Twitter/X marketing automation, including tweet search, account analysis, trending topics, and optional AI-generated tweets and scheduling.
    6
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides 19+ tools for AI agents to interact with X/Twitter, including search, posting, analysis, and monitoring capabilities.
    15
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/opentweetio/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server