x-use
x-use is an MCP server for X (Twitter) that enables browser-session-based research, reviewed drafting/publishing, queued engagement, and account/proxy management.
Manage multiple X accounts: list, add, update, activate/deactivate, remove, and inspect health/metrics.
Research X content: search tweets and profiles, fetch individual tweets, and prepare reply context with images.
Draft and publish: stage, review, approve, reject, or execute posts, replies, and LLM-generated content.
Queue and schedule: queue posts and engagements (like/retweet/reply), process queues with pacing/caps, and cancel queued actions.
Run automation: execute legacy batch cycles, keyword-based engagement, and stage reply/post variations.
Manage proxies: list, add, remove, and test proxy pools with masked credentials.
x-use — MCP server for X (Twitter)

Connect your AI client to X research, inbox reads, and reviewed publishing.
x-use is an open-source Python Model Context Protocol (MCP) server and CLI for X (Twitter). Connect Claude, Codex, Cursor or another local MCP client to profile research, inbox management and reviewed publishing. It uses your authenticated browser session, supports multiple accounts and runs locally without official X API credentials.
Quickstart · Documentation · Tool reference · Discussions · Contribute
What can you do with x-use?
Research before replying: search X, inspect a profile, read posts and bounded thread context, and prepare a relevant reply.
Work through your inbox: inspect visible conversations, unread messages, requests and notifications; prepare individual messages and supported conversation actions for review.
Publish with context: stage posts or multi-post threads, inspect the exact text, and approve the draft when it is ready.
Organize outreach locally: maintain leads, opt-outs and campaign drafts with per-account limits and delivery tracking.
Your AI client supplies the reasoning and text. An optional OpenAI-compatible LLM configuration supports server-side generation; ordinary explicit-text MCP workflows do not need that extra key.
Related MCP server: Spectre
Quickstart
Requires Python 3.10+ and Chromium. The CI matrix covers Python 3.10–3.14 on Windows, macOS and Linux.
Version 3.2.0 provides 82 tools for research, inbox management, reviewed publishing and account operations. Upgrade the package and restart your MCP client to load the current tools.
1. Install the server and browser
python -m pip install --upgrade x-use-mcp
python -m patchright install chromium2. Choose a private data directory and initialize
Windows PowerShell:
$env:X_USE_HOME = "$env:LOCALAPPDATA\x-use"
x-use init
x-use doctormacOS / Linux:
export X_USE_HOME="$HOME/.local/share/x-use"
x-use init
x-use doctorThe wizard configures your account and imports your own X session cookies from a local JSON export. Keep cookies and inbox PINs private. Use the same absolute data directory in your client configuration below; shell environment settings alone do not configure a desktop client.
3. Connect your MCP client
Use this stdio configuration in clients that accept an mcpServers object, such as Claude Desktop:
{
"mcpServers": {
"x-use": {
"command": "/absolute/path/to/x-use",
"args": ["mcp"],
"env": {
"X_USE_HOME": "/absolute/path/to/x-use-data"
}
}
}
}Replace both paths. On Windows, use the installed x-use.exe path and forward slashes in JSON, for example C:/Users/you/AppData/Local/x-use for the data directory. Locate the executable with Get-Command x-use in PowerShell or command -v x-use on macOS/Linux.
Claude Code, Codex, Cursor and Windsurf have their own registration locations or commands. Follow the client setup instructions, then reload the client if required. Ask it to call list_accounts before starting browser work.
4. Try a first workflow
With draft mode enabled, ask your client:
Check my account health, research the profile I specify, and summarize its recent visible posts. Prepare one relevant reply draft and show me its ID and exact text. Wait for my approval before publishing.
The flow is get_account_health → get_profile_context → prepare_reply → reply_to_tweet → get_draft. The reply tool stages a draft under the default policy; prepare_reply supplies context. Use approve_draft only when authorized.
More workflow examples cover inbox triage, outreach and threads.
git clone https://github.com/ihuzaifashoukat/x-use.git
cd x-use
python scripts/setup_uv.py --devOn Windows you can use py -3 scripts/setup_uv.py --dev; on macOS/Linux use python3 if needed. Setup installs uv when missing, synchronizes locked dependencies into .venv, installs matching Chromium, creates missing sample configuration and runs diagnostics. Activate the environment or use its executable directly. Then initialize your account.
For assisted installation, use the setup prompt or install the root setup skill:
npx skills add ihuzaifashoukat/x-useThe Claude Code plugin includes the bundled skills and MCP configuration guidance.
Capabilities
Workflow | Representative tools | Details |
Profile and post research |
| Visible profile, post, media and bounded thread evidence |
Inbox and notifications |
| Inbox/request folders, read-state evidence and partial message history |
Publishing and inbox controls (3.1.0) |
| Reviewed changes; supported controls and limitations |
Reviewed publishing |
| Persistent drafts and resumable thread progress |
Individual outreach |
| Message and follow drafts require individual approval |
Leads and campaigns |
| Local records, suppression and bounded batches |
Account readiness (3.1.0) |
| Operational score, evidence and recovery advice, plus explicit proxy connectivity checks |
Scheduling and recovery |
| Durable budgets, explicit recovery and uncertain-outcome tracking |
Version 3.2.0 includes 82 tools, seven prompts, four resource patterns and seven bundled skills. 3.1.0 added runtime diagnostics, campaign previews, bookmarks, reviewed post edits/deletions, engagement reversal and inbox controls to the 70 tools in 3.0.0; 3.2.0 keeps the same tools on the MCP Python SDK v2 line. See publishing and inbox controls for supported layouts and testing limits.
The MCP guide documents every tool, prompt and resource. Validation evidence separates local protocol checks, synthetic browser fixtures and authorized live-account checks.
For a uvx client, use uvx x-use-mcp or pin the release with
uvx x-use-mcp==3.2.0. The x-use-mcp executable starts MCP without arguments;
the existing x-use mcp command remains supported. Clients pinned to 3.0.0
must use uvx --from x-use-mcp==3.0.0 x-use mcp.
How execution works
The current MCP runtime uses async Patchright Chromium with separate account contexts. Your configuration, cookies, drafts, queue and action journals live under X_USE_HOME. AI-client and optional model-provider data handling depends on the client and provider you choose.
The protocol implementation uses the MCP Python SDK v2 line (mcp>=2.3,<3). It negotiates handshake protocol versions 2024-11-05 through 2025-11-25 with existing clients.
Draft mode is enabled by default for ordinary publishing. Messages, follows and thread starts require draft approval. Direct publishing mode, explicit queue processing, opt-in auto-drain and the legacy batch runner have separate execution paths. Review the configuration reference before changing these settings.
The development checkout allows one MCP server process per X_USE_HOME, preventing concurrent servers from using stale draft and queue state. Close the existing connection before opening the same data directory in another client.
Limits to understand
Browser reads are bounded by visible X content. Followers, inboxes and threads are not complete exports; unavailable evidence remains unknown.
Opening conversations or notifications can change their native read state.
Encrypted inboxes may need the account owner's PIN again after a browser-context restart.
Analytics currently reports availability and the observed Premium gate; it does not provide a complete analytics dashboard.
X layout changes, expired sessions, account challenges and platform limits can interrupt work. Local controls do not guarantee protection from account restrictions.
The legacy Selenium batch engine (
x-use run/run_cycle) executes separately from MCP draft review. Community posting is not currently verified in the async runtime.
See browser behavior and recovery and responsible-use guidance.
Frequently asked questions
Does x-use require an X API key?
No. It operates visible X pages through a browser authenticated with your session cookies. It does not require official X API credentials. Optional server-side text generation may require an LLM provider key.
Which MCP clients can use x-use?
Clients that launch local stdio MCP servers can use x-use. Setup examples cover Claude Desktop, Claude Code, Codex, Cursor and Windsurf. Client-specific discovery and reload behavior varies.
Does x-use automatically send every drafted message?
No. Message drafts require individual approval. Other write behavior depends on draft mode, queue execution and the legacy runner; check the configured policy before requesting actions.
Can I manage multiple X accounts?
Yes. Accounts have separate cookies, browser contexts and policy settings, with optional proxy routes. Browser capacity is bounded and depends on your host and configuration.
Can I edit posts or manage my X inbox?
Version 3.1.0 added reviewed edits and deletion of your own posts, bookmarks, unfollowing, and supported conversation request, mute/unmute and deletion actions. X determines edit eligibility. Inbox history is partial, and per-message editing/deletion, attachment sending and group administration are not implemented. See the controls guide for exact arguments and limits.
Is x-use free and open source?
The project is MIT licensed with no project license fee. AI-client subscriptions, optional model providers, proxies and hosting may have their own costs.
Is x-use affiliated with X?
No. x-use is an independent community project. X and Twitter are names used to identify the platform it works with.
Was this project called twitter-automation-ai?
Yes. The project was renamed to x-use during the v2 relaunch. See the changelog for its history.
Documentation and community
Start with the documentation index. It links setup, workflows, tools, configuration, presets, architecture and troubleshooting. X-Use is maintained by Huzaifa Shoukat and welcomes community contributions.
Found a reproducible problem? Report a bug. Have a workflow to share? Start a discussion. Useful first contributions include clearer setup instructions, fictional browser fixtures, platform fixes and example presets.
See CONTRIBUTING, the Code of Conduct and security policy. If x-use helps your work, a GitHub star helps other developers discover it.
Star history
License
MIT.
Available Tools
82 toolsadd_accountA
Add an account to config/accounts.json (validated, backed up,
atomic). cookie_file is a path ON THIS MACHINE to an exported
x.com cookies JSON; it is validated and copied beside the selected
accounts configuration as <account_id>_cookies.json. Cookie values never pass through
the tool call. persona is freeform markdown describing the
account's voice/engagement style (max 4000 chars).
| Name | Required | Description | Default |
|---|---|---|---|
| proxy | No | ||
| persona | No | ||
| is_active | No | ||
| account_id | Yes | ||
| cookie_file | No | ||
| target_keywords | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds genuinely new behavior: the write is validated, backed up, and atomic, and cookie values are never passed through the tool call. It still omits the failure mode on a duplicate account_id, which matters given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the destination file and the validated/backed-up/atomic guarantees in the first clause, then handles the two tricky parameters. Dense but every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return values are covered by the output schema, and the description supplies the mutation semantics and the cookie-handling security model. Remaining gaps are the duplicate-account behavior and the unexplained target_keywords semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for 6 parameters and only documents two (cookie_file, persona). It does cover the non-obvious ones well — cookie_file is clarified as an on-machine path that gets validated and copied to <account_id>_cookies.json, and persona has a 4000-char cap — but account_id, proxy, is_active, and especially target_keywords receive no explanation anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Add an account to config/accounts.json', naming the concrete persisted artifact. It does not differentiate itself from the nearby update_account / set_account_active siblings, so an agent must infer that this is the create path rather than modify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: no statement about prerequisites, what happens if the account_id already exists, or when to prefer this over update_account. The verb 'Add' implies creation, but nothing tells the agent when this tool is the right choice versus its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_campaign_leadsAIdempotent
Add 1-100 local leads from this account to a campaign. Repeated ids are ignored. The whole batch fails if any id belongs to another account. Adding a lead does not make an opted-out or closed lead eligible.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| lead_ids | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply the safety profile (non-read-only, idempotent, non-destructive), and the description adds real behavioral detail beyond them: batch atomicity ('whole batch fails if any id belongs to another account'), dedup behavior for repeated ids, and the caveat that adding a lead does not re-qualify opted-out or closed leads. It stops short of describing permissions or partial-success reporting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler; the batch size constraint leads and each subsequent sentence adds a distinct behavioral rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description covers the key semantic edges (batch size, atomic failure, dedup, eligibility). Missing only auth/permission expectations and any campaign-state side effects, which are minor for this scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden and only partially compensates: it bounds lead_ids to 1-100 and ties ids to 'this account', but says nothing about the account or campaign_id parameters beyond incidental mention.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: adding 1-100 local leads from an account to a campaign. The batch bound and 'local leads' scope make the operation concrete, though it never names or distinguishes itself from close siblings like upsert_lead or list_leads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the batch/atomicity constraints, but there is no explicit guidance on when to use this versus upsert_lead or update_lead_status, and no prerequisites or preconditions (e.g., campaign must exist/is active) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_proxyAIdempotent
Add a proxy URL to a named pool (created if new) in settings.json. Validated, deduped, backed up, atomic. Credentials are masked in the response. Assign it to accounts via update_account(proxy="pool:") or a direct URL.
| Name | Required | Description | Default |
|---|---|---|---|
| pool | Yes | ||
| proxy_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: 'Validated, deduped, backed up, atomic. Credentials are masked in the response.' This complements the idempotentHint and destructiveHint annotations effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: main action first, then key behavioral traits, then usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers creation, validation, idempotency, credential masking, and post-usage. Lacks error handling or edge cases (e.g., duplicate pool name), but output schema likely fills gaps. Good for a focused creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% so description must compensate. It identifies the two parameters ('proxy URL' and 'pool') but lacks detailed format or constraints. Validation is mentioned but not specified. Adequate but not thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Add a proxy URL to a named pool' and specifies the target resource ('settings.json'). It clearly distinguishes from sibling tools like 'remove_proxy' and 'test_proxy' by focusing on addition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on how to assign the added proxy to accounts via 'update_account(proxy="pool:<name>")'. Implicitly contrasts with removal/testing tools, but lacks explicit when-not-to-use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_draftADestructive
Execute a pending draft created by a write tool. Runs the exact same execution path as direct mode (pacing, dedup, metrics). A draft can be approved exactly once; unknown or consumed ids return an error.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false, and openWorld=true. The description adds real value beyond them: the execution path mirrors direct mode with pacing, dedup, and metrics, and consumed/unknown ids raise an error rather than silently no-op. This is meaningful behavioral context, though it doesn't cover auth requirements or downstream side effects like what gets destroyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action. Every clause carries distinct information (execution semantics, idempotency/error behavior) with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with an output schema and full annotation coverage, the description supplies what the structured fields cannot: execution-path parity and one-shot semantics. An agent has enough to invoke it correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single draft_id parameter, so the description must carry the meaning. It loosely implies the id references a draft created by a write tool and that consumed ids error, but never says where to obtain a valid draft_id (e.g., list_drafts). Baseline 3 given one schema-documented param name but no added format or sourcing guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it executes/approves a pending draft, and clarifies the draft originates from a write tool. An agent can distinguish it from list_drafts, get_draft, and reject_draft by name alone. It stops short of explicitly naming the sibling it is not (reject_draft), so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear triggering context (a pending draft produced by a write tool) and the precondition that approval is a one-shot operation. It does not explicitly state when to prefer reject_draft or how to recover from the 'consumed id' error, so no exclusions/alternatives are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bookmark_tweetA
Prepare a bookmark draft for one exact post. Always requires approve_draft.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| tweet_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, idempotentHint=false) already flag this as a non-idempotent mutation. The description adds genuine context beyond them by disclosing that the call only *prepares a draft* and must be completed via approve_draft, i.e. the action is not immediate. It doesn't cover failure or duplicate-draft behavior, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler; the purpose leads and the approval constraint follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be described, and the approval requirement is stated. Still, for a mutation tool with 0% parameter coverage, the description omits what the draft/queue lifecycle does and what 'account' selects, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both required parameters, so the description must compensate. 'One exact post' loosely implies tweet_url takes a single post reference, but 'account' is never explained and no format or constraint guidance is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Prepare a bookmark draft') and narrows scope to 'one exact post', which lets an agent distinguish it from get_bookmarks and remove_bookmark. It stops short of naming a sibling, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Always requires approve_draft' conveys the mandatory follow-up step in the draft/approval workflow, which is real usage context. However, it gives no when-not guidance or explicit alternative routing for the sibling bookmark tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_queued_actionAIdempotent
Cancel a pending or failed queued action. Done, processing, and already-cancelled items cannot transition.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint false, destructiveHint false, idempotentHint true. The description adds behavioral context by specifying state transition constraints, which goes beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, no fluff, front-loaded with the main purpose followed by constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's purpose and constraints. It does not explain response or prerequisites, but given the output schema exists and the tool is simple, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must compensate but does not mention the queue_id parameter. The parameter name is self-explanatory, but no additional semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Cancel' and the resource 'queued action', and specifies the allowed states (pending or failed). It does not explicitly differentiate from siblings like reject_draft, but the state constraints provide implicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides conditions for use (only pending or failed items) and what cannot be cancelled, but it lacks explicit guidance on when to use this tool versus alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_threadAIdempotent
Cancel remaining thread segments locally. Retains confirmed URLs and uncertain evidence; never deletes posts or clears safety uncertainty. An active send must finish before cancellation can be accepted.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only declare readOnly=false, destructive=false, idempotent=true. The description clarifies that despite the 'cancel' verb nothing is destroyed ('never deletes posts'), specifies exactly what survives (confirmed URLs, uncertain evidence), and adds a hard precondition on active sends. This is precisely the non-obvious behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and then layering retention guarantees and the precondition. Little waste, though the final precondition sentence reads slightly awkwardly ('before cancellation can be accepted').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the annotations carry the safety profile; the description fills the remaining gap with retention semantics and preconditions. Adequate for a single-parameter mutation, though the run_id parameter remains entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single run_id parameter is never mentioned in the description, so it adds no meaning for the parameter. However, run_id is a conventional identifier and its role is reasonably inferable from the 'thread' context, keeping this near the minimum-viable baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Cancel remaining thread segments locally.' This clearly distinguishes it from continue_thread and prepare_thread. It stops short of naming a sibling explicitly, but the action and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a precondition ('An active send must finish before cancellation can be accepted'), which is useful usage context, but never states when to prefer this over alternatives like cancel_queued_action or simply letting a run complete. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_sessionBIdempotent
Close one account's browser context; retain the operator's cookie file.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds one genuinely useful behavioral detail—that the operator's cookie file is retained—implying login state persists. It does not clarify auth requirements or what exactly is torn down.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste; the operation and its key side effect are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the safety profile. The description is nearly sufficient, missing only account identifier format and any prerequisite/authorization context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 0% schema coverage, the description must compensate; it only implies the 'account' selects which browser context to close. It does not specify the expected identifier format (id vs handle), leaving a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Close one account's browser context' clearly states what the tool does and scopes it to a single account. It does not explicitly differentiate from related siblings like get_session_status, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_session_status, and no prerequisites or conditions are given. The agent must infer usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_threadA
Resume an approved run only at a known unsubmitted segment after spacing/budget/preflight recovery. Uncertain segments are never resent.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as a non-readonly, non-idempotent write, and the description adds real behavioral value beyond them: it will not resend uncertain segments, addressing the duplicate-send risk implied by idempotentHint=false. It still omits auth/preconditions for a resume operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the resume condition front-loaded and the safety caveat last. Dense jargon ('spacing/budget/preflight') is unexplained, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations cover the safety profile. However, the description never defines what an 'approved run' is or how it relates to approve_draft/get_run_status, leaving an agent to infer the workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% so the description must carry parameter meaning, but it never mentions run_id or its expected form. The single parameter is a conventional identifier, so the loss is limited, but nothing compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (resume) and resource (an approved run), and clarifies the exact resume point ('known unsubmitted segment'). It implicitly separates itself from get_thread_run and cancel_thread by scope, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage condition — resume only 'after spacing/budget/preflight recovery' and only at a known unsubmitted segment. It lacks an explicit when-not or a named alternative, but the trigger context is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignA
Create a local draft campaign. Personalize using {handle}, {name}, {display_name}, or {company}; include a recipient name/handle placeholder. {name} falls back to @handle. Notes cannot be templated. Nothing sends.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| account | Yes | ||
| message_template | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is covered structurally. The description adds genuinely useful context the annotations don't carry: writes are local-only, nothing is dispatched, and notes cannot be templated. It does not mention permissions, dedup behavior, or how repeatedly calling it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause and the four sentences are compact with little filler. Fragments like "Notes cannot be templated" are terse but still earn their place as a real constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is rightly omitted. For a three-required-parameter mutation with no schema descriptions, though, the definition leaves the 'account' and 'name' inputs and any permission/idempotency implications undefined, which is a meaningful gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does explain message_template in depth (accepted tokens, the placeholder requirement, the {name} -> @handle fallback). But 'account' and 'name' are left completely unexplained, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Create a local draft campaign" gives a specific verb and resource, and the trailing "Nothing sends" makes the scope unambiguous (a draft, not a send). It is distinguishable from send_message and prepare_campaign_messages, but it never explicitly names or routes to a sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "local draft" and "Nothing sends" imply this is the non-dispatching entry point, so usage is inferable. However there is no explicit when-to-use statement or comparison against related tools like prepare_campaign_messages, add_campaign_leads, or set_campaign_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_tweetA
Prepare permanent deletion of your own exact post. Supply its current text (empty for media-only). Always requires approve_draft; cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| tweet_url | Yes | ||
| expected_text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are thin (destructiveHint=false, idempotentHint=false) and could mislead, but the description supplies the missing behavior: deletion is permanent, cannot be undone, and is only staged here pending approve_draft. It also discloses the exact-match guard ("supply its current text") and the media-only empty-string convention.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the destructive nature and the approval requirement front-loaded where an agent will read them before acting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers the destructive action, its reversibility, and its approval gate. It is only slightly thin on the parameters with no schema documentation and on what happens when expected_text does not match.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning; it explains expected_text well (current text, empty for media-only) but says nothing about account or tweet_url. Those names are largely self-evident, so it partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Prepare permanent deletion of your own exact post" gives a specific verb (prepare deletion), a precise resource (your own post), and a scope qualifier (exact / own) that separates it from siblings like edit_tweet or unlike_tweet. An agent can identify it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Always requires approve_draft" names the gating sibling and the prerequisite condition for completion, and "your own" excludes posts the account does not own. It does not explicitly contrast with edit_tweet or remove_bookmark, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_post_variationsA
Generate count distinct takes on a topic with the server-side LLM
(persona-aware) and stage each as a post DRAFT. Nothing is posted,
approve one and reject the rest. Requires the 'llm' block in settings.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| topic | Yes | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false), description clarifies that the tool creates drafts but does not post, and mentions persona-aware server-side LLM. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first explains the main action, second clarifies behavioral constraints and requirements. No unnecessary 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, but description does not explain the return value. Additionally, it lacks explanation for the 'account' parameter. Given moderate complexity, more context on parameter usage would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should explain all parameters. It mentions 'count' and 'topic' but does not explain 'account', which is a required parameter. This leaves ambiguity about which account is used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action: generate distinct takes on a topic using server-side LLM and stage as drafts. It specifies the verb (generate), resource (post drafts), and scope (count distinct takes). This distinguishes it from siblings like 'prepare_reply' and 'generate_and_post'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains that nothing is posted and one can approve or reject drafts, and it lists the prerequisite (LLM block in settings). However, it doesn't explicitly state when not to use or compare to alternative tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_tweetA
Prepare a text edit of your own post. Supply its current exact text and replacement; configure self_handles. X must expose Edit post; eligibility/time limits apply. Always requires approval. Media replacement is unsupported.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| account | Yes | ||
| tweet_url | Yes | ||
| expected_text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, destructive=false, idempotent=false) the description adds substantive behavior: approval is always required, edit-post must be exposed by X, eligibility/time limits apply, and media replacement is unsupported. These are exactly the operational facts an agent needs and that the annotation set does not encode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then constraints, in four tight sentences with little waste. The stray 'configure self_handles' clause is the one line that does not earn its place and slightly muddies an otherwise efficient description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover the safety profile. However, for a four-parameter mutation tool with zero schema description coverage, the description leaves account and tweet_url undocumented and references a phantom parameter, so it is not fully complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It only loosely maps 'current exact text' and 'replacement' to expected_text and text, leaves account and tweet_url unexplained, and introduces a non-existent 'self_handles' parameter that matches nothing in the schema, creating confusion rather than clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Prepare a text edit of your own post.' This distinguishes it cleanly from siblings like delete_tweet, post_tweet, queue_post, and reply_to_tweet, and the 'prepare' framing signals it stages an action rather than committing one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides real preconditions: 'X must expose Edit post; eligibility/time limits apply' and 'Always requires approval.' That tells the agent when the tool is usable, but it never names alternative siblings (e.g. delete_tweet or a repost path) for when editing is not eligible, so it stops short of explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engageA
Engage with tweets found via keyword search. actions is a subset
of ["like", "retweet"] (default ["like"]); every candidate passes the
analyzer relevance gate; max_actions is hard-capped by the account's
per-run config caps. In draft mode (default) each planned action
becomes an individually approvable draft and nothing executes.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| actions | No | ||
| keywords | Yes | ||
| max_actions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation (readOnlyHint=false) and non-destructiveness. The description adds that every candidate passes a relevance gate, max_actions is capped per account, and draft mode prevents execution. These details go beyond annotations, though the direct execution mode is only implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, about 60 words, front-loaded with purpose. Every sentence adds essential information without fluff. Well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown) and siblings, the description covers core behavior: actions, draft mode, caps. It does not explain return values or error handling, but these are inferred from the schema. Overall adequate for standard usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description clarifies that actions is a subset of ['like', 'retweet'] with default ['like'] and that max_actions is hard-capped. However, keywords and account are not explained, and the schema lacks enums. The description adds moderate value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool engages with tweets from keyword search using actions like or retweet. It specifies the verb 'engage' and the resource 'tweets found via keyword search', but does not explicitly differentiate from siblings like queue_engagement or reply_to_tweet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions draft mode by default and hard-capped max_actions, implying when to use (mass engagement with approval). However, it does not explicitly state when not to use or provide alternatives, leaving some reliance on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
follow_profileA
Prepare a follow draft for one X profile; approve_draft performs the action.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and non-idempotent, so the safety profile is covered. The description adds the non-obvious fact that this only stages a draft and that approve_draft commits it, which is real behavioral value beyond the annotations. It does not mention that repeat calls create additional drafts or what authorization the account needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, front-loading the action and appending the hand-off to approve_draft. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the two-phase draft/approve model is disclosed. The remaining gap is parameter ambiguity between 'account' and 'profile', which is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both required parameters ('account', 'profile') are bare strings with no titles beyond their names. The description clarifies that 'profile' is the target X profile but says nothing about what 'account' means (which credential/identity acts) or their expected format (handle vs ID). It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource pair ('prepare a follow draft') scoped to 'one X profile', and explicitly states that approve_draft performs the actual action, which cleanly separates it from that sibling. An agent can distinguish it from approve_draft, unfollow_profile, and reply_to_tweet without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the operative context: this is the preparatory step and approve_draft is the commit step, which tells the agent where this fits in the workflow. It stops short of naming when not to use it (e.g., versus unfollow_profile or a direct follow path), so it is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_and_postA
Generate a post about topic with the configured LLM and post it.
In draft mode (default) the generated text is stored in the draft's
payload/preview so a human reviews the actual content before anything
is posted.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations by explaining the draft mechanism: the generated text is stored in a draft's payload/preview for human review before posting. However, it does not disclose whether a non-draft mode exists or other side effects like rate limits or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences. The first sentence clearly states the core functionality, and the second adds the critical draft mode detail. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists (reducing the need to explain return values), the description omits important lifecycle context: it does not mention that the tool creates a draft that requires manual approval via sibling tools like 'approve_draft'. The name 'generate_and_post' is misleading as the default behavior is to only draft.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'topic' parameter by name and context, but does not explain the 'account' parameter. With 0% schema description coverage, the description adds partial value but falls short of fully compensating for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a post on a given topic using an LLM and then posts it, with a default draft mode. This distinguishes it from sibling tools like 'post_tweet' (post without generation) and 'draft_post_variations' (generate drafts without posting).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the default draft mode but does not explicitly state when to use this tool vs. alternatives such as 'post_tweet' or 'draft_post_variations'. There is no guidance on when not to use it or what the non-draft mode (if any) entails.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountARead-only
Show one account's masked config (no cookies, no password, proxy credentials masked) plus cookie-file status. Read-only, never starts a browser.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations: specifies that cookies, password, and proxy credentials are masked, and that no browser is started. Aligns with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, effectively communicates core behavior and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with an output schema and clear annotations, the description adequately covers behavioral traits, output content, and safety. No missing information for its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'account' parameter lacks schema description and the tool description does not specify its format or expected values. With 0% schema description coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it shows one account's masked config and cookie-file status. Distinguishes from siblings like list_accounts and get_account_health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates it is read-only and never starts a browser, conveying safe usage context. However, it does not explicitly contrast with sibling tools or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_analyticsBRead-only
Read the signed-in owner's X analytics availability. Requires X Premium when the observed paywall says so; unsupported layouts return no metrics. Distinct from local action metrics and public post counts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses a real auth requirement (X Premium) and a failure mode (unsupported layouts return no metrics, i.e. empty results). It does not cover rate limits or pagination, but the added behavioral context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler, and the core scoping statement is front-loaded. The jargon ("observed paywall") is slightly opaque but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the auth/layout caveats are covered. The gap is parameter meaning: with 0% schema coverage and one required param of unclear semantics, the definition is not complete enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters, and the description never explains what "account" refers to (the owner handle? a target?) or what "limit" bounds. With the schema contributing nothing, the description needed to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It gives a specific verb and resource ("Read ... X analytics availability"), but "availability" is genuinely ambiguous: it is unclear whether the tool returns metrics or a boolean about whether analytics are available, especially since the same sentence references "no metrics" and "local action metrics." It does differentiate from siblings ("Distinct from local action metrics and public post counts"), which lifts it above a vague statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one conditional prerequisite ("Requires X Premium when the observed paywall says so") and names contrasting sibling outputs, implying when this tool is appropriate. However, it never states an explicit when-to-use trigger or tells the agent which sibling to call instead of this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_healthARead-only
Read-only health snapshot for one account: config presence, cookie-file validity, metrics counters, warm-session state, queue depth, pending drafts, and a transparent local readiness score out of 100. Unknown evidence earns no points; this does not predict X enforcement or establish live authentication. Never starts a browser. A config that fails validation is REPORTED (config.valid=false with the error), not raised, surfacing that is the point of a health check.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true and openWorldHint=false, so the description adds meaningful behavioral context beyond them: it never starts a browser, a config failing validation is REPORTED rather than raised, unknown evidence earns no points, and it does not predict X enforcement or establish live authentication. These are important traits for an agent interpreting the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition front-loads the snapshot contents and then qualifies semantics efficiently. It is somewhat dense (two long sentences plus a fragment about config validation), but every clause adds information and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure is covered elsewhere, and the description appropriately focuses on interpretation caveats. However, with 0% schema coverage on the only parameter, it leaves identifier format unaddressed, and offers no usage routing among the many account-related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single account parameter, so the description must carry the load. It implies the account is the subject of the health check but adds no detail on identifier format (handle vs. ID vs. email). Baseline for the low-coverage single-param case is 3; the description does not fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the snapshot contains (config presence, cookie-file validity, metrics counters, warm-session state, queue depth, pending drafts, readiness score) and states the verb (read-only health snapshot for one account). This clearly distinguishes it from siblings like get_runtime_info, get_account_safety, and get_account_analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description contrasts with X enforcement prediction and live authentication, but never says when an agent should call this versus get_account_safety, get_session_status, or get_runtime_info. There is implied context (diagnosing account readiness) but no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_safetyCRead-only
Read local limits, pause reason, and writes needing outcome reconciliation.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe-read profile is covered. The description adds only that it surfaces pending writes needing reconciliation, a minor operational hint; it says nothing about auth requirements, scope, or failure behavior beyond what annotations and the output schema provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and the returned data lead. It is arguably too terse, using unexplained jargon instead of a short clarifying clause, which marginally undercuts the efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a diagnostic read tool sitting in a dense family of account tools (get_account_health, get_account, pause_account_actions, resolve_action_outcome), the description does not explain the meaning of 'local limits', the relationship to those siblings, or the account identifier. The output schema covers return structure, but the missing routing and term-definition context leave the definition incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the sole parameter 'account' is never mentioned in the description, so its expected format (ID, handle, or name) is undocumented everywhere. With low coverage the description should compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Read') and enumerates the three specific things returned: local limits, pause reason, and writes needing outcome reconciliation. It is more specific than a tautology, but it never distinguishes itself from the close sibling get_account_health, nor defines what 'local limits' or 'account safety' actually mean.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus get_account_health, list_accounts, or get_account. The mention of 'pause reason' and 'writes needing outcome reconciliation' hints at a diagnostic role before pause/resume or resolve_action_outcome workflows, but the agent must infer this entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bookmarksARead-only
Read bounded posts in the default bookmarks feed. Partial results; bookmark folders are not traversed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral value beyond that: it discloses that results are only 'partial' and that bookmark folders are not traversed, which tells the agent not to rely on this for complete bookmark retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and immediately qualified by the partial-results and folder-scope caveats. Zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations carry the safety profile. However, with two undocumented parameters and no explicit usage routing, the description leaves gaps an agent would need to resolve elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does not. 'Bounded' loosely gestures at the limit parameter, but the required 'account' parameter and the meaning/default of 'limit' are never explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (default bookmarks feed) with scope qualifiers ('bounded', 'default feed'). The note that 'bookmark folders are not traversed' helps distinguish it from a full bookmark traversal, though it does not name the specific siblings (bookmark_tweet, remove_bookmark) it relates to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through scope ('default bookmarks feed') but there is no explicit guidance on when to call this versus alternatives like get_home_feed or search_tweets, and no conditions or exclusions are stated. The agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaignCRead-only
Read this account's campaign and a membership page. limit 1-100; members_next_offset identifies the next page of local outcomes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| account | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds a pagination hint plus the limit range '1-100', which is genuinely useful behavioral context. However, it references 'members_next_offset', a field that appears nowhere in the input schema, which muddies rather than clarifies the pagination contract for the consumer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and starts with the verb 'Read', which is good. But the two clauses are run together into a single garbled sentence whose second half ('membership page ... local outcomes') costs more comprehension than it buys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required. Still, for a 4-parameter tool with 0% schema coverage and two required identifiers, the description omits the meaning of the required parameters and mentions an output-looking field ('members_next_offset') that isn't in the schema, so an agent lacks what it needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and only partially discharges it. It documents limit's range (1-100) and implies offset via 'next page', but account and campaign_id — both required — get no explanation at all. The reference to a non-existent 'members_next_offset' further confuses the pagination parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description does give a verb+resource ('Read this account's campaign'), which is enough to place it near siblings like get_campaign_summary and list_campaigns. But the second half ('a membership page') is unexplained and doesn't map onto any visible concept in the tool, leaving the actual scope fuzzy. It neither distinguishes itself from siblings nor states cleanly what object is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use get_campaign versus get_campaign_summary, list_campaigns, or create_campaign. No prerequisites are stated (e.g. that campaign_id must come from list_campaigns). The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaign_summaryBRead-only
Read local membership/delivery counts and opt-out suppression count. These are recorded outcomes; this tool never checks X or sends work.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and closed-world, and the description adds useful context: the data is local/recorded, it does not check X, and it does not send work. This goes beyond the annotations, though it does not cover auth, rate limits, or other operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core operation and followed by an important behavioral boundary. Every sentence adds relevant information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema and annotations are present, so return values and safety profile need not be explained. However, with two required parameters and no parameter semantics in either the schema or description, the definition is incomplete for invocation guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain either required parameter. It does not clarify what 'account' represents or what format 'campaign_id' should take, leaving parameter meaning entirely to the bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Read local membership/delivery counts and opt-out suppression count.' It clearly distinguishes the recorded-outcome nature from tools that check X or send work, though it does not name a specific sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a when-not boundary by saying it never checks X or sends work, which implies use for local recorded outcomes. However, it does not explicitly say when to choose this over siblings like get_campaign, list_campaigns, or get_metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversationCRead-only
Read bounded visible conversation context and observed request/reply state. Cursor stays within the visible window; opening may clear X unread state. Does not accept requests.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | Yes | ||
| conversation_id | Yes | ||
| before_message_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds genuinely useful behavior: the cursor is bounded to the visible window, and opening the conversation may clear unread state. That unread-clearing side effect is real value the annotations don't convey, though return format and pagination behavior remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with little waste and the read purpose front-loaded, but the phrasing 'observed request/reply state' and 'does not accept requests' is terse to the point of ambiguity rather than dense with meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, and annotations cover the safety profile. However, for a 4-parameter tool with 0% schema coverage, the description leaves parameters and selection context unexplained, so it is only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across all four parameters. The description's mention of a 'cursor' loosely gestures at before_message_id, but account, conversation_id, and limit are never explained, and the cursor/window relationship is not clarified beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Read) and resource (conversation context), but the scope-noun 'observed request/reply state' is opaque and the tool is not distinguished from close siblings like get_thread, get_inbox, or search_conversations. An agent can roughly tell it reads a conversation but not how it differs from those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no named alternative. The line 'Does not accept requests' hints at scope but is not a selection criterion, and nothing tells the agent when get_conversation should be preferred over get_thread or search_conversations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversation_controlsCRead-only
Inspect visible request and conversation-menu controls. Opening may mark read; unsupported layouts return an error, never guessed capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| conversation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Opening may mark read,' which is a state mutation, directly conflicting with the readOnlyHint=true annotation asserting the tool does not modify its environment. Although it also discloses genuinely useful behavior (unsupported layouts return an error rather than guessed capabilities), the presence of an annotation contradiction forces a 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the purpose and followed by the caveats, with no filler. Efficiency is good; only the density of undefined jargon keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description does add behavioral caveats (error on unsupported layouts, possible mark-read). But with both required parameters wholly unexplained, the definition is not complete enough for confident invocation. Minimum viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are two required parameters (account, conversation_id) that the description never explains. The only hint is the phrase 'conversation-menu', which loosely maps to conversation_id but leaves 'account' and the identifier formats entirely undocumented. The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a verb ('Inspect') with a resource ('visible request and conversation-menu controls'), giving a workable if jargon-heavy sense of what it does. However, it offers no differentiation from close siblings such as get_conversation or manage_conversation, so an agent cannot easily tell which one to reach for. Adequate but with clear gaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no named alternative, and no prerequisites or preconditions stated. The reader is left to infer the tool's role in the conversation flow entirely from the name. Only mildly implied usage, so a 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_draftARead-only
Show one draft by id. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description repeats the annotation's readOnlyHint as 'Read-only', which is redundant. No additional behavioral traits (e.g., error conditions, rate limiting, or side effects) are disclosed. The annotation already covers safety, so the description adds no extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences. No unnecessary words, and it front-loads the core purpose. Perfectly sized for a simple retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required param, read-only, with output schema), the description adequately covers the basics. It could mention that the draft_id must exist, but the output schema likely provides return field details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for its single parameter (draft_id), and the tool description does not provide any additional meaning, constraints, format, or examples. The description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Show', the resource 'draft', and the identification method 'by id'. This effectively distinguishes it from sibling tools like list_drafts (list all) and approve_draft (modify).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a specific draft id, but it does not explicitly state when to choose this tool over alternatives like list_drafts, approve_draft, or reject_draft, nor does it mention any prerequisites or prohibitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_home_feedBRead-only
Read posts currently visible in the home feed; no engagement actions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered structurally. The description adds the useful constraint that no engagement actions are performed, which prevents the agent from expecting post/like/retweet behavior. It does not add pagination or ordering behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the core action front-loaded and no filler. It is very terse, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained. However, with 0% schema description coverage on two params and no usage routing, the description is only minimally adequate for a tool whose 'account' parameter carries the real invocation risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% – neither 'limit' nor 'account' is documented in the schema or the description. The description gives no meaning for 'account' (which account context?) or the default limit of 20, leaving both parameters to be inferred.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('posts currently visible in the home feed'), so it's clear what the tool returns. It distinguishes itself lightly from engagement tools via 'no engagement actions', but does not name a specific sibling to route the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'no engagement actions' implies the tool is read-oriented and hints the agent should reach for engagement tools elsewhere, but there is no explicit when-to-use context or named alternative among the many sibling read tools (get_profile_posts, search_tweets, get_notifications). Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inboxBRead-only
Read visible inbox/requests/other summaries with all/unread/read filtering. Native Unread selection is verified when available; never opens or accepts a conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| folder | No | inbox | |
| account | Yes | ||
| inbox_filter | No | all | |
| unread_first | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real value beyond that: it discloses a side-effect boundary ('never opens or accepts a conversation') and a verification behavior for Native Unread selection, telling the agent this read does not advance conversation state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core read scope is front-loaded. The second sentence is somewhat cryptic ('Native Unread selection is verified when available') but it is not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the safety profile is annotation-covered. However, for a five-parameter tool with zero schema coverage, the description omits pagination/limit behavior and the account parameter, leaving the definition thin for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full parameter burden, and it only partially delivers. It enumerates the folder values and the all/unread/read filter values, but says nothing about limit, account, or the semantics of unread_first, leaving three of five parameters unexplained anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reading visible inbox/requests/other summaries, with the filtering dimension named. It implicitly distinguishes itself from conversational reads via 'never opens or accepts a conversation,' but never names a sibling tool to route against. Clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is the listing tool for inbox-type folders. The phrase 'never opens or accepts a conversation' establishes a boundary, but there is no explicit guidance on when to pick this over get_conversation, search_conversations, or get_notifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leadBRead-only
Read one local lead belonging to this account, including its notes.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| lead_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the lead is 'local' (account-scoped, not open-world) and that notes are included, but discloses nothing about error behavior, permissions, or how a missing lead is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the resource and scope come first and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so the description does not need to enumerate return values - and it still flags that notes are included. Adequate for a two-param read, though param formats remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden, yet it only alludes to the two params ('this account', 'one lead') without any format or identification guidance (e.g., what a lead_id looks like). It adds marginal meaning over the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (one local lead) with a scope qualifier ('belonging to this account'), and 'one' implicitly contrasts with the sibling list_leads. It stops short of explicitly naming a sibling, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The singular 'one local lead' implies single-record retrieval versus the sibling list_leads, but there is no explicit when-to-use, prerequisite, or alternative named. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metricsARead-only
Read recorded metrics for an account (counters + recent events). Read-only, never starts a browser.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true. Description adds valuable context 'never starts a browser', which is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and a single simple parameter, the description covers the main points: what data is returned and that it's read-only. Could be enhanced by specifying account identifier format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter 'account' with 0% description coverage. Description mentions 'for an account' but does not specify expected format or how to identify the account. Fails to compensate for lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Read', the resource 'recorded metrics for an account', and specifics 'counters + recent events'. Distinguishes from siblings like get_account_health by focusing on metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies safe usage with 'Read-only, never starts a browser', but does not explicitly state when to use vs alternatives like get_account_health or list_accounts. Lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notificationsBRead-only
Read bounded visible X notifications from a verified All or Mentions tab.
Reports observed actors, related posts, type evidence and unread state; absent evidence remains unknown. Visiting this view may mark X notifications read. Results cover only the visible supported UI.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | all | |
| limit | No | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral context beyond the annotations: 'Visiting this view may mark X notifications read', 'absent evidence remains unknown', and 'visible supported UI' scope. However, that first disclosure conflicts with the declared readOnlyHint=true, which asserts the tool does not modify its environment, so the two sources of truth cannot both be right.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and structured with a semicolon-separated clause list for the behavioural notes. No filler, though 'verified' and 'bounded' are used without definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and the description covers scope, evidence uncertainty, and the read-marking side effect. What is missing is the meaning of 'limit' (pagination/offset behaviour) and any indication of what 'bounded' means in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, yet it only gestures at 'All or Mentions tab' (mapping to the view enum) without naming the parameter. The required 'account' parameter and the 'limit' parameter are never explained, leaving most semantics to the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Read ... X notifications') and scopes it to a 'verified All or Mentions tab', so an agent knows exactly what it fetches. It does not, however, distinguish itself from near-neighbours such as get_inbox or get_home_feed, leaving the sibling boundary implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'from a verified All or Mentions tab' and 'Results cover only the visible supported UI' imply prerequisites and scope conditions, and the side-effect warning about marking notifications read is a useful usage caveat. There is no explicit when-to-use guidance, no exclusions, and no named alternative (e.g. get_inbox) to route between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileCRead-only
Read public profile details using visible X page elements.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds a behavioral detail by saying it reads 'using visible X page elements,' implying a UI-scraping or public-page approach, but it does not clarify auth needs, failure modes, or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is structurally efficient, though it is arguably too terse for the amount of missing semantic information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a tool with two required, undocumented parameters and many sibling profile tools, the description is far too thin to tell an agent how to call it correctly or when to choose it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and both required parameters are simply named 'account' and 'profile' with no descriptions. The description does not explain what either parameter should contain or how they differ, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource: 'Read public profile details.' However, it does not distinguish this tool from close siblings such as get_profile_context, get_profile_posts, get_profile_connections, or search_profile, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no named alternatives. The sentence states what the tool does but gives no conditions that would help an agent choose it over the many other profile-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_connectionsBRead-only
Read visible public followers/following. This is not a private address book or complete contact export.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | Yes | ||
| profile | Yes | ||
| relationship | No | following |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds genuinely new behavioral context beyond them: that results are limited to visible public connections and are not a complete contact export, which shapes how an agent should interpret and trust the output. It stops short of covering pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the core action front-loaded and the scope caveat immediately after. Nothing is redundant. It is efficient, though the extreme brevity leaves little room for the parameter and usage detail this tool needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a four-parameter tool with 0% schema description coverage and no named alternatives, the description omits everything an agent needs to set account, profile, relationship, and limit correctly. Adequate only at the level of stating what the call does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters (account, profile, limit, relationship), and the description never mentions any of them. 'Followers/following' loosely hints at the relationship parameter's values, but nothing explains account vs profile, the limit default of 20, or how relationship selects direction. The description does not compensate for the total documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: read visible public followers/following for a profile. The scope qualifier ('public', 'visible') makes the data boundary clear. It does not name or contrast with near siblings like get_profile_context, get_profile_posts, or search_profile, so an agent still has to infer which profile-reading tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The negative framing ('not a private address book or complete contact export') usefully bounds expectations and implies this is for public connection listing only. However, it names no alternative tool and gives no condition for choosing this over the other profile-oriented siblings, leaving usage implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_contextBRead-only
Preferred outreach read: exact profile details and bounded authored posts together. No draft or send.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| profile | Yes | ||
| post_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. 'No draft or send' reinforces that this read triggers no writes, and 'bounded' hints at the post_limit cap, but neither adds much beyond the annotations and no return/rate/permission detail is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses with the key framing ('Preferred outreach read') front-loaded and no filler. It is efficient, though terse to the point of under-specifying required inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the read-only nature is clear. But with six-sibling overlap (get_profile, get_profile_posts, search_profile) and 0% param coverage, the description does not do enough to disambiguate inputs or tool choice for an outreach read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning but does not. 'Profile details' and 'bounded authored posts' faintly gesture at profile and post_limit, yet the required 'account' parameter and the account-vs-profile distinction are never explained, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific read: combining exact profile details with bounded authored posts. This implicitly distinguishes it from siblings like get_profile (details only) and get_profile_posts (posts only) by framing it as the combined 'outreach read'. The verb is implied rather than explicit, but the resource and scope are clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Preferred outreach read' implies the context (outreach preparation) in which this tool should be chosen, and 'No draft or send' sets a boundary against action-taking siblings. However, it never names alternatives such as get_profile or get_profile_posts, nor states an explicit when-not condition, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_postsBRead-only
Read one author's posts, posts-and-replies, or media tab. feed: posts|replies|media. Results are bounded and partial.
| Name | Required | Description | Default |
|---|---|---|---|
| feed | No | posts | |
| limit | No | ||
| account | Yes | ||
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context beyond them: 'Results are bounded and partial,' warning the agent that output is truncated and not comprehensive — important for a scraping-style read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse fragments with the resource stated first, then the parameter values, then the result caveat. No filler, though the telegraphic 'feed: posts|replies|media' style is slightly clipped even for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return-format explanation is not required, and the partial-results caveat covers the main behavioral risk. But with 4 parameters at 0% schema coverage, the undefined 'account'/'profile' identifiers and the bound applied by 'limit' leave the agent under-informed for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema declares no enums, so the description's 'feed: posts|replies|media' is the only place the feed values are documented — real added value. However, 'account', 'profile', and 'limit' remain entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one author's posts') and enumerates the three feed variants it can return. It is distinguishable from get_profile in spirit, but never explicitly names what get_profile or search_profile cover, so the boundary is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over get_profile, get_profile_context, get_profile_connections, or search_profile — all siblings that touch the same author. The feed options hint at use cases but neither exclusions nor prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_run_statusARead-only
Poll run_cycle handles. With run_id omitted, lists every run
started since this server booted. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation: it reveals that omitting run_id returns all runs since boot, and it uses the verb 'poll' indicating non-blocking repeated calls. It also explicitly states 'Read-only' which aligns with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three short statements with no wasted words. It front-loads the verb and resource, then specifies parameter behavior and read-only nature. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and one optional parameter, the description covers the key behavioral aspects: polling mechanism, parameter dependency for listing all vs. specific run, and read-only nature. It does not explain what a 'run_cycle handle' is, but the tool name and context likely make it clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for the run_id parameter. The description compensates by explaining the effect of omitting run_id (lists all runs since boot) and implies that providing it polls a specific handle. This adds crucial meaning beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'poll' and the resource 'run_cycle handles'. It specifies two behaviors: polling a specific run (when run_id given) and listing all runs since boot (when omitted). This distinguishes it from sibling tools like run_cycle (which likely initiates runs) and list_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used to check status of run cycles, but it does not explicitly state when to use it versus alternatives like run_cycle or process_queue. It provides context about omitting run_id but no exclusions or scenarios where another tool would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_runtime_infoARead-only
Inspect server/package versions, tool count and configured execution mode, backend workflow support and effective unlock allowance without starting a browser. Contains no credentials, paths, account identities or raw environment values. Configuration does not prove live X authentication; use get_account_health and a bounded read for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds valuable context beyond that: it explicitly states what is NOT included (credentials, paths, identities, environment values) and warns that the returned configuration does not guarantee live authentication, which is a non-obvious behavioral caveat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what it returns, then a compact list of what it excludes, then a usage caveat. No filler. Slightly dense but each clause carries distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, an output schema exists (so return format needn't be described), and annotations cover safety, the description is nearly complete. It covers scope, exclusions, and a critical caveat about authentication. It could be slightly richer about execution mode semantics, but it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so baseline is 4. The description correctly implies this is a parameterless inspection tool, and no parameter semantics are needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (inspect) and enumerates the exact resources returned: server/package versions, tool count, execution mode, workflow support, unlock allowance. This distinguishes it from siblings like get_account_health and get_session_status, though it doesn't explicitly name those alternatives in the purpose sentence itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage context through the negative constraint: 'without starting a browser' and clarifies the difference from get_account_health ('Configuration does not prove live X authentication; use get_account_health and a bounded read for that'). This is a strong when-not and alternative pointer, though it doesn't exhaustively cover when-not to use it vs other info tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_statusARead-only
Inspect local session lifecycle (cold/starting/ready/busy/closing/ disconnected/closed) without reading cookies or starting a browser. Ready means locally usable transport, not verified live X authentication. Legacy backends may report unknown for a warm session.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description nonetheless adds material behavioral context the annotations cannot convey. The caveat that 'ready' means locally usable transport rather than verified live X authentication, plus the legacy-backend 'unknown' case, is exactly the kind of nuance that prevents misreads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences that each carry distinct content: the state list, the 'ready' clarification, and the legacy-backend caveat. Dense but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the description covers the state semantics and the important 'ready' caveat well. The remaining gap is parameter handling, which the definition leaves entirely to an undocumented schema field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'account' parameter carries no description in the schema. The description never mentions the parameter at all, so it fails to compensate for the low coverage by stating what the account selector does or whether it is optional for the default session.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Inspect) and resource (local session lifecycle), and enumerates the exact states it reports, which is concrete and distinguishable. It does not, however, explicitly differentiate itself from siblings like get_account_health or get_runtime_info, which also report status-like information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing 'without reading cookies or starting a browser' implies the intended lightweight, local-only use case, but there is no explicit when-to-use or when-not-to-use guidance. It never names get_account_health or get_runtime_info as alternatives, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_threadARead-only
Read bounded visible conversation context around one exact X post. Includes ordered posts and media metadata; parent links remain unknown unless the page proves them. Results are partial, not a full archive. include_images attaches at most five photos/video posters with source mappings for YOUR model to analyze; no server LLM or video transcription. Read this before composing contextual replies or reply threads.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | No | ||
| tweet_url | Yes | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing real behavioral traits: parent links are only known 'unless the page proves them,' results are 'partial, not a full archive,' and include_images caps at five photos/video posters with no server-side LLM or video transcription. These are exactly the operational caveats an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by return caveats, the include_images behavior, and a usage hint. All four sentences carry information, though the include_images sentence is dense and could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, yet the description still signals partial results and unknown parent links. The remaining gap is the undocumented limit and account parameters for a four-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 params, so the description must compensate. It explains include_images thoroughly (max five images, source mappings, no transcription) and implies tweet_url, but limit and account are left entirely uninterpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and tightly scoped resource: 'Read bounded visible conversation context around one exact X post.' The scoping words 'bounded visible' and 'around one exact X post' distinguish this from single-post reads like get_tweet and from DM-style get_conversation without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit context for use: 'Read this before composing contextual replies or reply threads.' That tells the agent when the tool is appropriate, but it never names alternatives (get_tweet, search_tweets, continue_thread) or states 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.
get_thread_runCRead-only
Read durable local segment states, exact published URLs and next index.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe-read profile is covered. The description adds that the data is 'durable local' state, consistent with openWorldHint=false, plus hints at what is returned. That is modest added context above the structured fields, but nothing about freshness, size, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with 'Read', with no filler. It is economical, though the telegraphic style mildly reduces readability for an unfamiliar resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so explaining return values is not required, yet the description spends its words on returns ('segment states, exact published URLs and next index') rather than the input meaning or the tool's role among siblings. For a parameterized, specialized read tool, the agent is left unsure what run_id is or when to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is exactly one required parameter, run_id, with 0% schema description coverage, so the description must supply its meaning. It does not mention run_id at all and never explains what identifies a run. Baseline relief for zero params does not apply here, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a read verb and enumerates the returned artifacts (segment states, published URLs, next index), giving a partial sense of purpose. But it never says what a 'thread run' is or how it differs from siblings like get_run_status, get_thread, or continue_thread, leaving the resource ambiguous. Vague rather than specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as get_run_status (current status) or get_thread (content). The agent must guess when this tool applies versus the many thread/run siblings in the list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tweetARead-only
Read-only fetch of one tweet: text, author, public counts, typed media (photos + video posters) and the account's persona. With include_images=true (default) photos also attach as image content so a vision-capable client sees them; the envelope always carries URLs
alt text as the fallback. Nothing is posted; draft mode N/A.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| tweet_url | Yes | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. Description adds details on include_images effect, return content, and explicitly states no posting occurs, adding value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: one short paragraph with front-loaded purpose, followed by important nuance on include_images, and ends with a safety note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main return items and behavior, output schema exists so full return details are documented elsewhere. Lacks error handling details, but acceptable for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. Only include_images is explained; account and tweet_url lack any description, leaving their semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches one tweet and lists returned data: text, author, counts, media, persona. Distinguishes from write tools by noting 'Read-only' and 'Nothing is posted'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for fetching a single tweet, but no explicit when-to-use or alternatives. Does not distinguish from similar read tools like get_metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsARead-only
List configured accounts with secrets stripped (no cookies, no passwords, proxy credentials masked). Read-only, never starts a browser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by detailing secret stripping and that no browser is started, which are important behavioral traits not covered by readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and existence of output schema, the description fully covers necessary context for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline of 4 applies; no additional parameter information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists configured accounts with secrets stripped, distinguishing it from sibling get_account which returns details for 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for viewing all accounts without secrets, but does not explicitly state when to use this tool versus alternatives like get_account or list_proxies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsBRead-only
List this account's local campaigns (without membership details). Status: draft, ready, paused, completed. limit 1-100, with offset.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| status | No | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), and the description goes further by disclosing the pagination bounds (limit 1-100, with offset) and the set of valid campaign statuses. It stops short of explaining what 'local campaigns' scopes to or whether results are sorted/filterable by status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and scope before the field/pagination details. The telegraphic status list and 'limit 1-100, with offset' are efficient, though the fragments read more like notes than prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but with 0% schema coverage the description should do more for a 4-parameter tool: it never defines 'local campaigns' versus membership, nor how status filtering interacts with pagination. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the param burden alone. It supplies the limit range and the four legal status values (draft, ready, paused, completed) — genuinely useful since the schema has no enum — but leaves 'offset' and 'account' semantics unexplained beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) plus resource (this account's local campaigns) and adds a scoping qualifier '(without membership details)' that separates it from the heavier get_campaign family. It does not name a sibling explicitly, but an agent can tell it is the lightweight enumeration tool rather than the detail fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of when to prefer this over get_campaign, get_campaign_summary or list_leads, and no exclusions. Usage must be inferred purely from the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_draftsARead-only
List drafts, newest first. status filters to one of
pending/approved/partial/executed/failed/rejected/uncertain; account filters by
account id; limit caps the response (max 100). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | ||
| account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the trailing 'Read-only' is redundant. However, the description does add real behavior beyond structured data: results are ordered newest-first and the limit is capped at 100, both of which the schema does not express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One densely packed sentence, front-loaded with the verb and resource, then filter semantics in the order a caller encounters them. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Low-complexity read tool with an output schema (so return shape needn't be explained), all three parameters documented, ordering disclosed, and safety covered by annotations. Only gap is behavior when more than 100 drafts exist (truncation vs. paging), which is not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the status parameter has no enum in the schema, so the description carries the full burden — and it does: it enumerates all seven status values, defines account as an account id, and states limit caps the response at 100. This is exactly the compensation a 0%-coverage schema needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource ('List drafts') and adds the default sort order ('newest first'), which no structured field carries. It does not explicitly differentiate from sibling readers like get_draft, but the singular/plural contrast makes the scope inferable. Clear, just not sibling-routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter parameters imply when this tool is useful (narrowing by status or account), but nothing states when to use list_drafts versus get_draft, list_queue, or the draft-mutating siblings. Adequate but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_leadsARead-only
List this account's local leads, optionally filtering by status or exact tag. limit 1-100; offset supports pagination. No browser starts.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| offset | No | ||
| status | No | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds 'No browser starts,' a genuinely useful behavioral trait (fast, no browser session) that is not derivable from the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with purpose then filters then behavior. Every clause carries information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation. For a filtered-list tool the description covers purpose, filtering, pagination bounds, and a behavioral note, leaving it essentially complete; only cross-sibling routing guidance is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load, and it does: limit bounds (1-100), offset for pagination, status filtering, and 'exact tag' (clarifying exact-match rather than substring). It omits nothing critical, though account and default values are not addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (this account's local leads), which lets an agent distinguish it from get_lead (single fetch) and upsert_lead. The 'local' qualifier hints at scope but is not explained, and no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use filters ('optionally filtering by status or exact tag'), giving actionable usage context. However it never states when to prefer this over get_lead for a single lead or how it relates to the lead-management siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proxiesARead-only
List proxy pools (size, masked members, rotation cursor), the global pool strategy, each account's assignment, and the global fallback proxy. Read-only, never starts a browser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only aspect is covered. The description adds 'never starts a browser,' which provides additional safety context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Specific details (size, masked members, rotation cursor) are front-loaded, making the purpose immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, presence of output schema, and annotations covering read-only, the description fully covers the tool's behavior and return value, including the key safety note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. The description adds no parameter info, but that's unnecessary. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and clearly identifies the resource (proxy pools, strategy, assignments, fallback). It distinguishes from sibling tools like add_proxy, remove_proxy, test_proxy by being a comprehensive read-only listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-only nature and comprehensive listing imply usage for viewing proxy configurations, but no explicit guidance on when to use vs alternatives. Sibling tools like add/remove are implicitly for modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_queueARead-only
List queued actions with their full payloads (exactly what will fire), plus per-status counts. limit 1-100; offset pages through local history. Read-only, never starts a browser.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| status | No | ||
| account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, but the description adds meaningful context beyond them: it will never start a browser, and it returns the exact payloads that would fire rather than just summaries. It does not discuss ordering or freshness of the queue data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the core purpose, followed by return shape and paging constraints. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return formatting is covered, and the description still communicates what the results contain (payloads + per-status counts). The only material gap is the undocumented status/account filter semantics for a 4-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden, and it partially does: it documents limit (1-100) and offset (paging through local history). The 'status' and 'account' filters are undocumented in both schema and description, leaving half the parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List queued actions') and adds distinguishing scope: full payloads of what will fire, plus per-status counts. An agent can distinguish this from process_queue or cancel_queued_action without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context ('Read-only, never starts a browser', limit/offset semantics for paging history), which tells the agent when this inspection tool is appropriate. It stops short of naming an alternative sibling (e.g. process_queue) or stating an explicit when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_conversationA
Draft one inbox action: accept a request, mute/unmute notifications, or delete a conversation from your inbox. Delete cannot be undone locally and does not promise deletion for recipients. Always requires approval; only verified visible controls are supported.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| operation | Yes | ||
| conversation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations, disclosing that delete cannot be undone locally, that it does not guarantee deletion for recipients, that approval is always required, and that only verified visible controls are supported. These are exactly the operational facts an agent needs for a mutation-bearing tool. Minor tension with destructiveHint=false, but since the tool only drafts and always requires approval, the annotation is defensible and not contradicted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the action and its variants come first, the risk/approval caveats second. No filler, no repetition, and the most important constraint (irreversible delete, approval required) is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the annotations plus the behavior caveats cover the safety profile well. The remaining gap is parameter meaning under 0% schema coverage, which the description did not close.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full responsibility for the three parameters. It only echoes the operation enum in prose ('accept a request, mute/unmute, delete') and says nothing about what account or conversation_id mean or how they should be supplied, leaving two of three parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Draft one inbox action" states a clear verb+resource and enumerates the concrete operations (accept a request, mute/unmute, delete), so an agent knows exactly what this does versus read siblings like get_conversation or get_conversation_controls. It stops short of a 5 because it names no sibling explicitly and the broad name 'manage_conversation' is only clarified, not contrasted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the enumerated operations and the caveats (approval required, only verified visible controls supported), but there is no explicit when-to-use/when-not guidance and no pointer to the alternative read tool (get_conversation_controls) that an agent might reach for. Adequate context, but the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opt_out_leadBIdempotent
Permanently suppress outreach to this account's lead handle. This blocks prepared campaign deliveries as well as future drafts.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| lead_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation, idempotency, and non-destructiveness, so the bar is lower, and the description adds genuinely useful behavior: the suppression is permanent and it retroactively blocks already-prepared campaign deliveries, not just future drafts. It does not say whether or how the opt-out can be reversed, which is the one notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core effect ('permanently suppress outreach') front-loaded ahead of the consequence detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the annotations cover the safety profile. The description adds permanence and blast radius, which is what an agent needs before a mutation; only reversibility and the relation to other lead-state tools are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both required parameters, and the description contributes only 'this account's lead handle', which loosely binds account and lead_id to the opt-out target. It gives no identifier format, no hint that lead_id must reference an existing lead (see upsert_lead/get_lead), so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('suppress') and resource ('this account's lead handle'), plus the consequence scope ('blocks prepared campaign deliveries as well as future drafts'). An agent can tell this is not the same as update_lead_status or pause_account_actions, though no sibling is named to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no alternative tool is mentioned, despite siblings like pause_account_actions, update_lead_status, and cancel_thread being plausible adjacency. The agent must infer routing on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_account_actionsAIdempotent
Pause browser actions durably until the operator explicitly resumes them.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the write-safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so mutability is already covered. The description adds useful behavioral context that the pause is durable and requires an explicit operator resume, but does not disclose required permissions, scope, or whether other actions are blocked. It adds some value beyond annotations without being rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb, scope, and durability condition; it wastes no words and no critical information is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a one-parameter durable mutation control, the description covers the core effect but omits the resume counterpart by name and the account parameter's expected format, leaving an agent to infer operational details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single 'account' parameter is completely undocumented in the schema and the description is silent on it too. The parameter is likely self-explanatory, but the description does not compensate for the coverage gap with format or source details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Pause), resource (browser actions), scope (durably), and clearly reads as a counterpart to the sibling resume_account_actions. The agent can distinguish this from resume_account_actions without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the pause is durable and persists until the operator explicitly resumes them, which implies context of use. However, it does not explicitly name resume_account_actions as the undo mechanism or state when to pause versus other control tools; the routing is implied by the verb pair rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_tweetA
Post a tweet from an account. media = local file paths; community
= target community id. In draft mode (default) returns a draft for
review and posts nothing; approve_draft(draft_id) executes it.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| media | No | ||
| account | Yes | ||
| community | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint=false) and open-world effects (openWorldHint=true). The description adds the draft mode behavior and the need for approval, which is useful context. However, it does not elaborate on other side effects or requirements, leaving open-world behavior somewhat vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no wasted words. The first sentence covers purpose and parameter clarification; the second explains the critical draft mode behavior. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown) and annotations cover safety, the description provides all essential context: purpose, parameter clarification, draft mode behavior, and cross-reference to approve_draft. No gaps for an agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explicitly defines 'media' as local file paths and 'community' as target community id. The other parameters (text, account) are self-explanatory from the schema. This provides sufficient meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose ('Post a tweet from an account') and explains specific parameters (media, community). It distinguishes from siblings by mentioning draft mode, but does not explicitly differentiate from similar posting tools like generate_and_post or reply_to_tweet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on draft mode: 'In draft mode (default) returns a draft for review and posts nothing; approve_draft(draft_id) executes it.' This tells the user when to use draft vs direct posting, but does not contrast with alternative posting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_campaign_messagesA
Prepare at most 20 personalized private-message drafts for eligible new/qualified leads on an active account. Skip opt-outs and prior pending/delivered members. Preparation marks the campaign ready; review every exact payload and approve each draft individually. No bulk sends, browser, scraping, or LLM call occurs, even when draft_mode is off.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| campaign_id | Yes | ||
| max_messages | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give a coarse profile (non-read-only, non-destructive, non-idempotent), so the description carries real added value: it discloses the skip rules, that running it mutates state by marking the campaign ready, and that no bulk sends, browser, scraping, or LLM calls occur. The write-to-non-idempotent combination is consistent with the annotations and is usefully explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences that front-load what is prepared before the safety caveats, with almost no filler. The single blemish is the trailing 'even when draft_mode is off', which spends words on a parameter that is not in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description covers the mutation, the filtering rules, and the no-side-effect guarantees an agent needs before invoking. The unresolved 'draft_mode' reference and the total lack of parameter semantics are the only meaningful gaps for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, yet it explains nothing about 'account' or 'campaign_id' and only partially touches 'max_messages' via 'at most 20'. Worse, it references a 'draft_mode' switch that does not exist among the three declared parameters, adding confusion rather than clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Prepare ... personalized private-message drafts') plus the target population ('eligible new/qualified leads on an active account'), so an agent knows exactly what is produced. It stops short of naming how it differs from the close siblings preview_campaign_message and prepare_outreach, so it is clear but not sibling-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies eligibility filtering rules ('skip opt-outs and prior pending/delivered members') and a downstream workflow ('review every exact payload and approve each draft individually'), which implies when to reach for it. However it never states when to use this instead of preview_campaign_message or prepare_outreach, and gives no explicit exclusions or prerequisites, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_outreachA
Fetch profile details and up to 10 authored posts, then prepare ONE local DM draft with your exact supplied text. Use get_profile_context to research and write a personalized message first. Context is a bounded visible subset; it is not a complete post history. No server LLM or message send occurs. Review the returned recipient, context and draft, then approve_draft individually; draft_mode does not bypass review. Opt-outs and account activation are rechecked after the browser read.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| profile | Yes | ||
| post_limit | No | ||
| message_text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations label this non-read-only, non-idempotent, non-destructive. The description adds substantial context beyond them: no server LLM is invoked, no message is sent, draft_mode does not bypass review, context is a bounded subset rather than full history, and opt-outs/activation are rechecked after the browser read. These disclosures meaningfully raise the bar on the annotated safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Sentences are clipped but front-loaded and each earns its place, covering scope, caveat, side-effect boundaries, and review flow. It is terse to the point of feeling stitched together, but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, 3-required mutation-class tool with an output schema, the description covers the key non-obvious behavior: bounded context, no send, review requirement, rechecked eligibility. It omits parameter meaning for account/profile, but the critical operational and safety context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full parameter burden. It explicitly defines the semantics of message_text ('your exact supplied text') and mentions a 10-post cap, but account, profile, and the default post_limit of 5 are never explained, leaving half the surface ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description bundles three actions (fetch profile, fetch posts, create draft) at unspecified granularity, making it hard to tell whether this is a research tool or a preparation tool. It doesn't distinguish itself from siblings like get_profile_context, preview_campaign_message, or prepare_reply.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use guidance by naming get_profile_context as the research step to run first, and it states that the user must review then call approve_draft individually. What's missing is when to choose this over the many other prepare_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_replyARead-only
Read-only reply context: the tweet's text AND media (photos attach as image content so your model can see them), plus the account's keywords and persona. YOUR model writes the reply itself, no server-side LLM, nothing posted. Then pass your text to reply_to_tweet(text=...) or queue_engagement(action="reply", text=...).
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| tweet_url | Yes | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint. The description adds value by explaining what data is returned (tweet text, media as image content, account keywords, persona) and confirming no server-side LLM or posting. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first sentence front-loads the purpose, second sentence specifies next steps. Every word earned its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description sufficiently covers the tool's purpose and usage flow. It explains the context provided and the required follow-up actions, making it complete for a preparatory tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 3 parameters with 0% description coverage. The description implies the role of include_images for media attachment but does not explicitly map parameters. With no schema descriptions, the description could add more detail for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for preparing reply context: providing tweet text, media, account keywords, and persona. It distinguishes itself from siblings like reply_to_tweet and queue_engagement by emphasizing it is read-only and no server-side LLM or posting occurs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to use this tool before writing a reply, then pass its output to reply_to_tweet or queue_engagement. It provides clear context on the workflow and no ambiguity about when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_threadA
Stage 1-20 exact text/media posts for review; always creates a draft. Optional reply_to starts a reply thread. Every later post replies to the immediately preceding confirmed new post. No LLM is called.
| Name | Required | Description | Default |
|---|---|---|---|
| posts | Yes | ||
| account | Yes | ||
| reply_to | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false), so the description's added value is real: it discloses that a draft is always created, that no LLM is invoked, and the threading chain rule (each later post replies to the preceding confirmed post). That goes meaningfully beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences with the primary action front-loaded, and each subsequent sentence (reply_to behavior, chaining rule, no-LLM note) earns its place by adding a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations cover safety. The description fills in threading semantics and draft behavior, though the post object format and account parameter remain unspecified, a minor gap for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 3 parameters, so the description carries the burden. It explains reply_to (starts a reply thread) and bounds posts to 1-20 exact text/media, but it never describes the internal structure of the free-form post objects or the account parameter, leaving part of the contract unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (stage) and resource (posts/thread) with clear scope (1-20 exact text/media posts for review). The 'always creates a draft' phrasing implicitly distinguishes it from direct-post siblings like post_tweet, but no sibling is named explicitly, keeping it at a strong 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys the context (staging posts for review, optional reply thread) but never states when to choose this over prepare_reply, prepare_campaign_messages, or queue_post, nor any prerequisites. Usage is implied through the staging semantics rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_campaign_messageARead-only
Preview one campaign member's exact personalized message and local eligibility without creating drafts, reserving a lead, or sending. Includes pause, opt-out and prior-reservation reasons. Eligibility is a snapshot; preparation and approval recheck it. No browser or LLM.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| lead_id | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses concrete behavior: no drafts created, no lead reserved, no message sent, inclusion of pause/opt-out/prior-reservation reasons, snapshot semantics, and that no browser or LLM is invoked. This is unusually rich disclosure of side effects and cost characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the key differentiator (no drafts/reserve/send) in the first sentence, then adds only useful qualifications in three short clauses. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description adds strong behavioral context; the only gap is parameter-level meaning, which is largely mitigated by self-explanatory parameter names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden for three required parameters (account, campaign_id, lead_id); it never explains their meaning, format, or how eligibility is keyed to them. The names are fairly self-evident, but the description adds no semantic value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (preview) and resource (one campaign member's personalized message plus local eligibility), and explicitly scopes it to a single member rather than a batch. This clearly differentiates it from batch siblings like prepare_campaign_messages and prepare_outreach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'without creating drafts, reserving a lead, or sending' clause tells the agent what this tool will NOT do, implicitly routing side-effecting workflows to preparation/approval tools. It also notes that eligibility is a snapshot rechecked later. However, it never names a specific sibling alternative for the mutating path, so the routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_queueA
Drain queued actions with jittered pacing and daily caps. THIS
CALL IS THE APPROVAL GATE for queued work: items execute through the
same pacing/dedup/metrics path as every other write action. With
account omitted, every account with due items drains (each bounded
by max_actions and its own daily caps).
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| max_actions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond what annotations provide. It discloses that items execute through the same pacing/dedup/metrics path as write actions, uses jittered pacing and daily caps, and explains multi-account behavior when account is omitted. This is valuable for the agent to understand the tool's side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is 2-3 sentences, front-loaded with the core purpose ('drain queued actions with jittered pacing and daily caps'), and every sentence provides essential information. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers both parameters, explains the tool's role as the approval gate, details pacing and caps behavior, and handles the multi-account case. The presence of an output schema means return values are already documented. Given the tool's complexity and the richness of siblings, this description is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining both parameters: 'account' (if omitted, processes all accounts with due items) and 'max_actions' (default 5, bounds each account). This adds crucial meaning beyond the parameter names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool drains queued actions with jittered pacing and daily caps, and explicitly identifies itself as 'the approval gate for queued work.' This specific verb+resource description, along with mention of execution path and multi-account behavior, effectively distinguishes it from siblings like list_queue (listing) and cancel_queued_action (cancelling).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to drain queued actions) and provides key context: omitting 'account' processes all accounts with due items, each bounded by max_actions and its own daily caps. However, it does not explicitly state when not to use it or provide alternatives, though sibling tools exist for other queue operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_engagementA
Queue a like, retweet, or reply for paced execution. action is
one of like/retweet/reply. reply requires text ("auto" scrapes the
tweet and generates the reply NOW, so the stored payload is final).
Nothing executes until process_queue is called.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| action | Yes | ||
| account | Yes | ||
| tweet_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (non-readOnly, non-destructive), and the description compensates by disclosing queuing behavior, the 'auto' feature for reply text that scrapes the tweet now, and the requirement to call process_queue for execution. This is sufficient for understanding the tool's safety and behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each adding value. The first states the core purpose, the second explains the action parameter and reply requirement, and the third clarifies execution dependency. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 4-parameter input schema and output schema presence, the description covers the essential behavioral aspects: queuing, deferred execution, and the special reply behavior. It could hint at list_queue or cancel_queued_action for completeness, but the current content is adequate for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds significant meaning: it explains that 'action' must be like/retweet/reply (though no enum in schema), that reply requires 'text', and that 'auto' generates a reply immediately. It clarifies the interplay between action and text, though account and tweet_url are not elaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queues a like, retweet, or reply, specifying the action parameter and that reply requires text. It distinguishes itself from process_queue which executes the queue, and from siblings like engage and reply_to_tweet by emphasizing paced execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool is for queuing actions and that nothing executes until process_queue is called, providing clear guidance on deferred execution. However, it does not explicitly compare with immediate-action siblings like engage or reply_to_tweet, leaving some ambiguity about when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_postA
Schedule a post for paced execution. Pass text verbatim, or a
topic to generate the text NOW with the configured LLM (the stored
payload is final, list_queue shows exactly what will be posted).
not_before is an optional ISO 8601 timestamp. Nothing executes
until process_queue is called (or auto_drain, if enabled).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| media | No | ||
| topic | No | ||
| account | Yes | ||
| community | No | ||
| not_before | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the payload is finalized at queue time (LLM generation is NOW) and that execution requires process_queue, adding value beyond the annotations which only indicate non-read-only and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the primary action front-loaded and all key details included without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and presence of an output schema, the description covers essential behavior but misses details on media and community parameters. Overall, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the text/topic relationship and not_before as ISO 8601, but does not cover media, account (required), or community parameters. With 0% schema coverage, more parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Schedule a post for paced execution' and explains the two modes (verbatim text or LLM-generated topic), distinguishing it from immediate posting tools like post_tweet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use this tool (to schedule a post) and mentions that nothing executes until process_queue is called, but does not explicitly state when not to use it (e.g., for immediate posting).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_draftAIdempotent
Reject a pending draft so it can never be approved. Local status change only, nothing touches X.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-destructive and idempotent behavior. The description adds that it is a 'local status change only, nothing touches X,' clarifying it does not affect external systems. This is consistent with annotations and provides additional insight into the tool's side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and contains no wasted words. It is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter and an output schema, so the description is adequate. It explains the core action and side effects (local, no external impact). However, it could briefly mention that the draft's state changes to rejected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'draft_id', is required but the description provides no additional meaning beyond the schema. With 0% schema description coverage, the description should compensate but does not explain what the parameter represents or how to use it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Reject a pending draft so it can never be approved.' It uses a specific verb ('reject') and resource ('draft'), and distinguishes itself from sibling tools like 'approve_draft'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for usage: 'Local status change only, nothing touches X.' This implies it is safe and non-destructive. However, it does not explicitly state when not to use it or compare it to alternatives like deleting or canceling drafts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_accountADestructiveIdempotent
Remove an account from config/accounts.json. Requires confirm=true. Closes the account's warm session. The backup written during the mutation (config/backups/) is the recovery path; the cookie file is left on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true), the description reveals critical side effects: closes the warm session, writes a backup, and leaves the cookie file on disk. This adds significant 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences with no redundancies. Each sentence serves a distinct purpose: action, prerequisite, and side effects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential behavioral aspects and side effects. It does not mention output or error cases, but an output schema exists (not shown). The idempotency hint from annotations is not addressed, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds important meaning for the 'confirm' parameter (must be true), but does not describe the 'account' parameter beyond its name. Partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove an account') and the specific resource ('from config/accounts.json'), distinguishing it from siblings like add_account, update_account, and set_account_active.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the requirement ('Requires confirm=true'), guiding the agent on how to successfully invoke the tool. However, it does not provide explicit comparisons to alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_bookmarkB
Prepare removal of one bookmark. Always requires approve_draft.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| tweet_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as a non-destructive (destructiveHint=false) but non-read-only, non-idempotent mutation. The word 'Prepare' justifies why a removal tool is non-destructive — it stages rather than executes — and the approval gating adds context beyond the annotations. It still omits what happens to the bookmark pre-approval and whether the staged removal can be inspected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler and the core action front-loaded. Efficient, though arguably terse given the untouched parameter ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the approval workflow is covered. But for a 2-parameter tool with 0% schema coverage, the description leaves both inputs undocumented, which is a real gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both required parameters (account, tweet_url), and the description adds no meaning for either. The agent must guess what 'account' identifies and the expected format of 'tweet_url' from the field names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope ('Prepare removal of one bookmark'), which distinguishes it from sibling bookmark_tweet (adds) and get_bookmarks (reads). However, it never explicitly names those siblings, so the differentiation relies on the agent inferring it from the natural language.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Always requires approve_draft' establishes the mandatory follow-up step, which is genuine workflow guidance. It stops short of telling the agent when to prefer this over alternatives, but the required companion tool gives clear implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_proxyADestructiveIdempotent
Remove a proxy URL from a pool. Requires confirm=true. The response lists accounts still assigned pool:. Emptying a referenced pool is allowed but reported (those accounts fail closed until reassigned).
| Name | Required | Description | Default |
|---|---|---|---|
| pool | Yes | ||
| confirm | No | ||
| proxy_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint=true, idempotentHint=true). It discloses the confirm gate, the response payload ('lists accounts still assigned pool:<name>'), and the downstream failure mode for accounts left in an emptied pool — exactly the consequence detail an agent needs before a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action, then the precondition, then the side effect — a sensible risk-ordered structure. Four short sentences with no filler, though the parenthetical could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the critical risk surface (confirmation, blast radius on accounts) and an output schema exists to carry return details. It omits any mention of required permissions or how to recover reassigned accounts, which matters for a destructive admin operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains confirm (required true) and implies pool semantics via 'pool:<name>', but proxy_url is left entirely undefined and pool format is only partially implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove a proxy URL from a pool'), and the scope qualifier 'from a pool' cleanly separates it from add_proxy, list_proxies, and test_proxy in the sibling set. An agent can pick the right tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a hard precondition ('Requires confirm=true') and describes the consequence of an edge case (emptying a referenced pool is allowed but reported, with accounts failing closed). It stops short of naming alternatives or explicitly stating 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.
reply_to_tweetA
Reply to a tweet. Pass explicit text, or "auto" to generate the
reply with the LLM from the tweet's actual content (a read-only fetch
is performed so the draft shows the real reply text). In draft mode
(default) nothing is posted until approve_draft(draft_id). media accepts
local attachments on the async browser backend. For conversation-wide
context, read get_thread before supplying explicit reply text.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | auto | |
| media | No | ||
| account | Yes | ||
| tweet_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give the generic safety profile (write, non-idempotent, open-world); the description adds valuable behavior: nothing posts until approve_draft, auto performs a read-only fetch, and media only works on the async browser backend. That is genuine context beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then layered constraints and pointers. Five dense sentences with little waste, though the media/backend note and get_thread advice could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, and the description covers the draft/approve lifecycle, auto-generation behavior, and media constraints. The one gap is what `account` selects, which matters for a multi-account posting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description must carry the load, and it explains `text` (explicit vs "auto") and `media` (local attachments on async backend) well. However `account` and `tweet_url` are entirely unexplained, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Reply to a tweet') that an agent can map directly to the action. It clarifies scope (draft-by-default, approval-gated) but never contrasts itself with close siblings like prepare_reply, post_tweet, or queue_post, so differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real branching guidance: pass explicit `text` vs "auto" for LLM generation, notes draft mode is the default and requires approve_draft(draft_id), and points to get_thread for conversation-wide context. It stops short of stating when to prefer this over prepare_reply/queue_post.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_and_stageA
Search each keyword, keep relevant tweets (keyless heuristic), write a reply per tweet with the server-side LLM (persona-aware), and stage one reply DRAFT per tweet. Nothing is posted, review with list_drafts and approve selectively. Requires the 'llm' block in settings.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| keywords | Yes | ||
| max_items | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations: it explains the 'keyless heuristic', 'persona-aware' LLM usage, that replies are staged as drafts, and the requirement for the 'llm' block. Annotations already indicate mutability (readOnlyHint=false), and the description aligns without contradiction. It does not address rate limits or auth, but overall provides good 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences), front-loaded with core actions, and avoids redundancy. Every sentence contributes essential information: search, filter, generate, stage, review instructions, and requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the multi-step workflow, staging behavior, and required configuration. With an output schema present, return values are handled. It could be more explicit about the number of drafts (linked to max_items) and the 'keyless heuristic', but overall provides sufficient context for an agent to understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains 'keywords' and implies 'account' via 'Search each keyword' and 'write a reply per tweet', but 'max_items' is unmentioned. No details on the filtering heuristic or account selection logic. The description adds partial meaning but leaves key parameter semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches keywords, filters tweets, writes replies using LLM, and stages drafts. It distinguishes from siblings like 'reply_to_tweet' (which posts) by emphasizing 'Nothing is posted' and directing to 'list_drafts' for review. The action flow is specific and well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool for bulk research and drafting without posting. It implicitly differentiates from siblings by noting the draft staging and review workflow. However, it lacks explicit 'when not to use' or direct comparisons to similar tools like 'prepare_reply', leaving some ambiguity for agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_action_outcomeAIdempotent
After inspecting X, record succeeded or not_sent for an uncertain action. Repairs associated draft/queue history; queued not_sent work is cancelled and never resent automatically. Incorrect not_sent can cause duplicates.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| action_id | Yes | ||
| observed_outcome | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, so the safety bar is lower. The description still adds genuinely non-obvious behavior: it repairs draft/queue history, cancels queued not_sent work permanently ('never resent automatically'), and warns that wrong not_sent causes duplicates. That is meaningful side-effect disclosure beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler; the trigger condition and the mutation/reset warning are front-loaded. The only blemish is the unexplained 'X' placeholder, which reads like an unfilled template slot rather than deliberate brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered elsewhere. For a low-complexity, three-param mutation tool, the description covers the trigger, the side effects on queue/draft state, the permanence of cancellation, and the risk of misuse. Only the semantics of account/action_id are left uncovered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there is no enum, so the schema contributes nothing about parameter meaning. The description partially compensates by enumerating the observed_outcome domain ('succeeded' or 'not_sent'), which is the most important parameter, but 'account' and 'action_id' remain unexplained in both description and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('record') and resource ('action outcome', with the 'succeeded' or 'not_sent' values) tied to a precondition ('after inspecting... an uncertain action'). It is distinguishable from siblings like cancel_queued_action and process_queue, though it never names them. The 'inspecting X' placeholder is slightly opaque about the source of the observation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the usage context well: use it after externally inspecting an uncertain action's outcome. It also gives a consequence warning ('Incorrect not_sent can cause duplicates'), which is real guidance. However, it never names alternatives (cancel_queued_action, process_queue, list_queue) or states when NOT to use it versus simply re-queuing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_account_actionsAIdempotent
After resolving a challenge, probe the signed-in home page and clear the local pause. Does not reset budgets.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds real value beyond them by disclosing a side effect ('probe the signed-in home page') and a scope limitation ('Does not reset budgets'), which clarifies what is not affected. No contradiction with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the trigger and then the effect and its limit. Every clause carries information; there is no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the annotations cover the safety profile. However, the sole parameter is completely undocumented and the description is terse for a non-read-only operation, leaving the 'account' argument under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required 'account' parameter has no description in either schema or the description text. The definition does not compensate at all for that gap, leaving the agent to infer what value 'account' expects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: resume account actions by probing the signed-in home page and clearing the local pause, which clearly distinguishes it from its sibling pause_account_actions. The 'resume' verb and the subject matter make the tool's function legible without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'After resolving a challenge' is an explicit precondition that tells the agent exactly when to invoke this rather than pause_account_actions. It does not name the sibling as an alternative, but the trigger condition is stated clearly enough to route usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_cycleA
Run the legacy batch automation cycle in the background and return
a run handle immediately (progress goes to the logs, this never
silent-blocks). account limits the run to one account; pipelines
is a comma-separated subset of: competitor_reposts, keyword_replies,
keyword_retweets, likes, content_curation, community_engagement
(mapped onto the account's ActionConfig enable flags for this run
only, config files are never mutated; same names as the CLI's
x-use run --pipeline). Draft mode does not apply to batch cycles.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| pipelines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond annotations: it runs in the background, never silent-blocks, returns a handle immediately, logs progress, and ensures config files are untouched. These details add significant context that annotations (readOnlyHint=false, destructiveHint=false) do not fully capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative and front-loaded with the main action, but it could be slightly more concise. The parameter details are integrated into a single paragraph; bullet points might improve readability, but the information density is high and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and an output schema, the description covers inputs well but does not mention the output format beyond 'run handle'. Prerequisites (e.g., account must exist) are not stated. However, the output schema exists to fill the return value gap. Overall, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully explains both parameters: account limits to one account, and pipelines is a comma-separated subset of specific pipeline names with mapping to ActionConfig flags. The CLI equivalent reference adds valuable context. This compensates completely for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool runs a legacy batch automation cycle in the background and returns a run handle. It specifies the verb 'run' and the resource 'legacy batch automation cycle', distinguishing it from siblings like process_queue. The parameter details further clarify the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that draft mode does not apply, which provides a negative usage hint, but it does not explicitly state when to use this tool versus alternatives (e.g., process_queue or engage). There is no direct comparison to sibling tools, so the usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_conversationsBRead-only
Search the visible inbox locally; results are partial, not full message-history search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| folder | No | inbox | |
| account | Yes | ||
| inbox_filter | No | all | |
| unread_first | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuinely useful behavioral context: the search runs locally and returns partial rather than complete history, which tells the agent how much to trust completeness. It still omits pagination/limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler; the scope constraint ('visible') and the limitation ('partial, not full message-history') both earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but with 6 undocumented parameters, two of them required, and no folder/account/limit guidance, the agent lacks what it needs to invoke this correctly beyond the bare scope caveat.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description carries the full burden and does not compensate. It says nothing about the account scoping, the folder enum (inbox/requests/other), the inbox_filter default, limit, or unread_first ordering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('search the ... inbox') and sharpens the scope with two modifiers: 'visible' and 'locally'. This distinguishes it from get_inbox/get_conversation, though it does not name a sibling alternative outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('search the visible inbox') and there is a useful caveat that results are partial rather than full message-history, which hints at when not to rely on it. But it names no alternative tool and gives no condition for choosing this over get_inbox.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_profileARead-only
Read recent posts from ONE X profile. profile takes a handle
("@nasa" or "nasa"), a profile URL, or a tweet URL (which resolves to
its author). Read-only (draft mode does not apply, nothing is
posted), but it reuses the account's browser session. account
defaults to the first active configured account.
Use this to watch specific people and competitors, and to re-read one
of your own published posts for its public counts; use search_tweets
for topic and keyword discovery. Profile timelines include pinned
posts and reposts, so check user_handle before treating a result as
the profile owner's own writing.
include_images=true additionally attaches the first photo of up to
5 posts as image content (bounded); the per-post media URLs + alt
text are always present.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | No | ||
| profile | Yes | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint), it explains that draft mode does not apply, nothing is posted, and it reuses the account's browser session. Notes default account behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: starts with main action, then details. A bit long but justified by complexity. Could tighten slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, complete coverage of purpose, usage, and behavioral aspects. Provides enough for agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates significantly: explains profile input varieties, include_images effect, and default account. However, limit parameter is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads recent posts from one X profile, specifying input types (handle, profile URL, tweet URL). It distinguishes from sibling tool search_tweets for topic discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (watch specific people/competitors, re-read own posts) and when not (use search_tweets). Also warns about pinned posts and reposts, advising to check user_handle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tweetsARead-only
Search recent X posts for a query string. Read-only (draft mode
does not apply). Reuses the account's warm browser session. account
defaults to the first active configured account.
include_images=true additionally attaches the first photo of up to
5 tweets as image content (bounded); the per-tweet media URLs +
alt text are always present.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | No | ||
| keywords | Yes | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds beyond these: mentions session reuse, draft mode not applying, and detailed image attachment behavior (first photo of up to 5 tweets, bounded, media URLs and alt text always present). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Multiple short sentences, each adding value (purpose, read-only, session reuse, parameter defaults). Efficient but could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description adequately covers behavior (session, images, account default, read-only). No critical gaps for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates partially: explains account default and include_images behavior clearly. Keywords is implied by purpose. However, limit is not explained, leaving its semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search recent X posts for a query string' with a specific verb and resource. It distinguishes itself from sibling tools like get_tweet (single tweet) and search_profile (profile search) by focusing on recent post search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context such as read-only, draft mode not applicable, reuse of warm browser session, and default account behavior. However, it does not explicitly contrast with alternatives or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageB
Prepare a reviewed DM draft for one handle or conversation. Always requires approve_draft, even when draft_mode is off.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| account | Yes | ||
| recipient | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (write, non-destructive, non-idempotent), and the description adds genuine behavioral context beyond them: the output is a draft held for review and it always gates on approve_draft regardless of mode. It stops short of explaining the non-idempotency implication or what state the draft lands in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and constraint. The second sentence earns its place by disclosing the approval gate, though the 'draft_mode' clause adds confusion rather than value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the approval-gate behavior is covered. But with three undocumented required parameters and a misleading 'draft_mode' mention, the definition is only minimally complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and none of the three parameters are documented. The description adds only one hint ('one handle or conversation', suggesting recipient accepts either), and does not explain account or text. Worse, it cites 'draft_mode', a parameter that does not exist, which can mislead the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('prepare a reviewed DM draft') and, importantly, disambiguates from the tool's own name 'send_message' by clarifying it drafts rather than sends. It is distinguishable from siblings like approve_draft, prepare_reply, and queue_post, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes a workflow prerequisite ('Always requires approve_draft'), which routes the agent to a specific sibling, but gives no when-to-use/when-not guidance or contrast with prepare_reply/queue_post. The reference to 'draft_mode' is confusing because no such parameter exists in the schema, weakening the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_account_activeAIdempotent
Enable or pause an account without deleting it. Pausing closes its warm browser session.
| Name | Required | Description | Default |
|---|---|---|---|
| active | Yes | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) and idempotency (idempotentHint=true). The description adds value by disclosing that pausing closes the warm browser session, which is not inferable from annotations or schema. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core purpose ('Enable or pause an account') and adds a critical behavior detail in the second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and is relatively simple, the description covers the main purpose and one behavioral nuance. However, it lacks parameter semantics and usage guidance, making it incomplete for an agent to use confidently without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate. It implies the 'active' boolean controls enable/pause, but does not explicitly map true/false to states. The 'account' parameter is entirely unexplained, leaving the agent to guess the format or context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enables or pauses an account, and distinguishes itself from deletion by saying 'without deleting it'. It also specifies a key behavioral detail about pausing closing the browser session. This provides a specific verb+resource and distinguishes from siblings like remove_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any explicit guidance on when to use this tool versus alternatives such as update_account, nor does it explain scenarios for enabling vs pausing. It only contrasts with deletion, leaving ambiguity about its role among sibling account management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_campaign_statusAIdempotent
Set local campaign status: draft, ready, paused, completed. Pausing immediately blocks preparation and approval of existing drafts. Resume a paused campaign with ready. completed is terminal.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| account | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/idempotent/non-destructive profile, so the bar is lower, and the description adds real value beyond them: pausing immediately blocks draft preparation and approval, and 'completed' is a terminal state. It does not say what happens to in-flight queued messages or whether 'completed' can be reverted, but the transition semantics are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and its value set, then transition rules. No filler, and every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be explained, and annotations carry the safety profile. The transition rules are covered; only minor gaps remain (auth requirements, effect on queued actions, irreversibility of 'completed').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are no enums, so the description must compensate. It usefully enumerates the valid status values (draft, ready, paused, completed), which the schema lacks, but 'account' and 'campaign_id' remain completely undocumented in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') plus resource ('local campaign status') and enumerates the four valid values, so an agent knows exactly what the tool mutates. The 'local' qualifier implicitly separates it from account-level siblings like pause_account_actions and set_account_active, but it never names an alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: pausing blocks preparation and approval of existing drafts, resume a paused campaign with 'ready', and 'completed' is terminal. That tells an agent how to sequence calls, though it states no explicit when-not-to-use conditions or sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_proxyARead-only
Probe the effective proxy in an isolated, cookieless browser using the configured backend; visits only an IP-echo endpoint, never X. Explicit proxy_url wins; account assignments inherit the global proxy. Returns validated egress IP, startup/request latency and masked route. Async HTTP(S) authentication is supported; legacy Selenium rejects authenticated proxies. Legacy round_robin probes advance its cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| proxy_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations with details the agent could not infer: the browser is isolated and cookieless, it only touches an IP-echo endpoint, authenticated proxies work on async HTTP(S) but not legacy Selenium, and round_robin probes mutate a persistent cursor. That last disclosure is a side effect the annotations do not surface, which is exactly the kind of behavior this dimension rewards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded and every sentence carries operative information, with no boilerplate. It is dense and telegraphic in places ('never X', 'legacy round_robin probes advance its cursor'), reading as compressed notes rather than clean prose, which costs some accessibility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema already exists, yet the description still names the salient returns (validated egress IP, startup/request latency, masked route), and it covers the auth and backend-compatibility constraints an agent needs before calling. For a two-parameter diagnostic probe, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (only bare titles 'Account' and 'Proxy Url'), so the description carries the burden and does: it defines proxy_url as an override and account as a source of inherited global proxy configuration. It adds real meaning, though it does not say what an account value's format is or what happens if both are null.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('probe the effective proxy') and the exact mechanism: an isolated, cookieless browser against an IP-echo endpoint. It is clearly distinguishable from the proxy-management siblings (add_proxy, remove_proxy, list_proxies), which administer proxies rather than exercise one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the precedence rule that governs selection ('explicit proxy_url wins; account assignments inherit the global proxy') and flags an incompatible backend (legacy Selenium rejects authenticated proxies), which tells the agent when the call will fail. It stops short of an explicit when-to-use/when-not statement or naming an alternative diagnostic to prefer under other conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_retweetA
Prepare removal of your repost of one exact post. Always requires approve_draft.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| tweet_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare this is a non-read-only, non-destructive, non-idempotent write; the description adds the crucial two-phase draft-then-approve behavior that the annotations do not convey. It does not say what happens if approve_draft is never called or whether the repost can be restored, but the flow disclosure is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the action stated first and the workflow constraint second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the required-approval flow is covered. The remaining gap is the undocumented parameters, which the description does not compensate for.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and both parameters (account, tweet_url) are undocumented in the schema. The description only weakly implies semantics via 'one exact post' and 'your repost', without clarifying that account is the reposting account or that tweet_url must identify a single post.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (removing your repost) on a specific resource (one exact post), which separates it from siblings like unlike_tweet and remove_bookmark. The word 'Prepare' introduces mild ambiguity about whether the removal happens now or is staged, but the second sentence resolves it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the mandatory workflow step ('Always requires approve_draft'), effectively naming the sibling tool that must follow, which is real usage guidance. It does not state when NOT to use it or contrast with unrelated-removal siblings, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unfollow_profileA
Prepare unfollowing one exact X profile. Always requires approve_draft.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, openWorldHint=false, destructiveHint=false), so the bar is lower. The description adds genuinely useful behavioral context: this is a two-step draft/approve workflow rather than an immediate unfollow. It still doesn't say what artifact is created or whether the draft is queued.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the required follow-up action is front-loaded and impossible to miss. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations and an output schema, the description covers the critical routing fact (approval is mandatory) and the return value is documented by the output schema. The remaining gap is the undocumented parameter contract, which is minor relative to the schema and annotations provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two required parameters. The description hints that the profile must be an exact match and that only one profile is targeted, but it never explains the 'account' parameter or the expected profile format (handle vs. URL), leaving half the input contract undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (unfollow one exact X profile) and implies a prepare/staging action rather than an immediate execution. It is distinguishable from the sibling follow_profile, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear procedural guidance: the action must be followed by approve_draft, naming the exact sibling required to complete it. It lacks a when-not clause or comparison to alternatives (e.g., follow_profile), but the required follow-up step is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlike_tweetA
Prepare removal of your like from one exact post. Always requires approve_draft.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| tweet_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, covering the basic safety profile. The description adds genuinely non-obvious behavior: the action is only a preparation and requires approve_draft to take effect. It omits idempotency implications and what the resulting draft state looks like, so it is good but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the critical prerequisite. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the draft/approve workflow is conveyed. The gap is parameter meaning (both params undocumented in schema and description) plus no note on whether repeated calls stack drafts, leaving the agent with unresolved ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both required parameters (account, tweet_url) and the description adds nothing about them — notably whether tweet_url is a full URL or an ID, or what "account" refers to. With low coverage the description was expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Prepare removal of your like from one exact post" gives a specific verb (remove a like) and resource (one exact post), and the word "prepare" correctly signals the two-step draft-based nature. It distinguishes itself implicitly from siblings like undo_retweet and remove_bookmark, but does not name or contrast them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Always requires approve_draft" is explicit workflow guidance: the agent learns this call alone does not complete the unlike and must be followed by approval. It does not, however, state when-not-to-use or contrast with alternative unlike/undo tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_inboxAIdempotent
Unlock the owner's encrypted inbox once using a server environment variable. PIN never appears in tool arguments, drafts, logs or stored state. Inspect get_account_safety for remaining attempts and reset time; never loop on a rejected PIN or challenge.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| pin_env_var | No | XUSE_INBOX_PIN |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds real value beyond them: the PIN never appears in tool arguments, drafts, logs, or stored state, which tells the agent the secret is handled server-side. It does not describe what unlocking changes about the inbox state or any auth prerequisite, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, zero waste. The core action is front-loaded, followed by the security invariant and the safety guardrail, in order of importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the safety profile; the description covers the security and retry constraints that matter for this mutation. The only gap is that the required 'account' parameter's role is left to the schema, which has no descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the two parameters. The description usefully clarifies that the PIN comes from an environment variable rather than a tool argument, which explains the intent of pin_env_var, but it never explains the required 'account' parameter or the default value semantics. It partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (unlock), a specific resource (the owner's encrypted inbox), and the mechanism (a server environment variable holding the PIN). This is clearly distinguishable from siblings like get_inbox or get_account_safety.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly scopes to a single attempt ('once'), names the alternative for status checks (get_account_safety for remaining attempts and reset time), and states an exclusion ('never loop on a rejected PIN or challenge'). When-to-use, when-not-to-use, and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_accountAIdempotent
Partially update an account. Only provided fields change (None =
leave unchanged); pass an empty string to clear proxy. persona
sets the freeform persona text; pass an empty string to clear it.
cookie_file re-imports cookies like add_account. The account's
warm browser session is closed, so the next action cold-starts on
the new config.
| Name | Required | Description | Default |
|---|---|---|---|
| proxy | No | ||
| account | Yes | ||
| persona | No | ||
| is_active | No | ||
| cookie_file | No | ||
| self_handles | No | ||
| action_config | No | ||
| target_keywords | No | ||
| competitor_profiles | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant value beyond annotations: it explains that only provided fields change (idempotent behavior), how to clear specific fields, and that the warm browser session is closed (side effect). This aligns with annotations (idempotentHint true, destructiveHint false) and provides concrete 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 4 sentences, front-loading the purpose. Each sentence adds value, though it could be more structured (e.g., grouping parameter behaviors).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters and 1 required, the description covers key behaviors but fails to document several parameters. The output schema likely exists, but the description should at least mention the scope of partial updates. Adequate for a complex tool but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description partially compensates by explaining proxy, persona, and cookie_file semantics. However, it does not describe other parameters (is_active, self_handles, action_config, target_keywords, competitor_profiles), leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Partially update an account' and lists the updatable fields (proxy, persona, cookie_file, etc.). It clearly distinguishes from sibling tools like add_account, remove_account, and set_account_active by focusing on partial updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating account settings but does not explicitly state when to use this tool versus alternatives like add_account or set_account_active. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_statusAIdempotent
Change a lead's local status. Only new/qualified leads can receive campaign drafts. opted_out permanently suppresses further outreach.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| account | Yes | ||
| lead_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, idempotent, non-destructive mutation, so the safety profile is covered. The description adds genuine context beyond that: status values gate campaign eligibility, and opted_out causes permanent suppression. It still omits what statuses are valid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, no filler, with the core action front-loaded ahead of the status semantics. Every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be documented, and the annotations carry the safety profile. The remaining gap is the enumeration of legal status values, which appears in no structured field yet is essential to invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three required parameters. The description gestures at status values ('new/qualified', 'opted_out') but never defines the full accepted set, and says nothing about account or lead_id. With low schema coverage, the description should compensate but only partially does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Change a lead's local status.' The word 'local' usefully scopes it against account-level actions. However, it never names the obvious sibling (opt_out_lead) it overlaps with, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful downstream context ('Only new/qualified leads can receive campaign drafts') and warns that opted_out 'permanently suppresses further outreach.' But it never states when an agent should call this tool versus opt_out_lead or upsert_lead, leaving the primary selection decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_leadAIdempotent
Add/update one local lead by X handle (unique per account). Omitted fields retain their values; notes stay local and never enter messages. Status: new, qualified, contacted, replied, closed, opted_out. Opt-out suppression is permanent and cannot be removed by upserting.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| notes | No | ||
| handle | Yes | ||
| status | No | ||
| account | Yes | ||
| company | No | ||
| display_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (not read-only, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real value: partial-update behavior, the local-only nature of notes ("never enter messages"), and the irreversible opt-out suppression, none of which appear 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences with the core upsert action front-loaded and no filler. The status enumeration is a necessary detail rather than padding, though the phrasing is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, and annotations carry the safety profile. Combined with identity, partial-update, status, and opt-out semantics the description is largely sufficient, with only the undocumented tags/company/display_name parameters and absent sibling routing as remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It clarifies handle (unique per account), the status enum values, and the local scope of notes, but leaves tags, company, display_name, and account entirely undocumented in both schema and prose, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ("Add/update one local lead by X handle") and pins identity with "(unique per account)". This clearly distinguishes it from status-only (update_lead_status) and opt-out (opt_out_lead) siblings, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage through partial-update semantics ("Omitted fields retain their values") and by noting opt-out suppression "cannot be removed by upserting," hinting at opt_out_lead as the alternative. However, it gives no explicit when-to-use versus when-not guidance or named alternatives, so usage remains inferred.
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.
51 tool updates
v3.2.0- Added
add_campaign_leads - Added
bookmark_tweet - Added
cancel_thread - Added
close_session - Added
continue_thread - Added
create_campaign - Added
delete_tweet - Added
edit_tweet - Added
follow_profile - Added
get_account_analytics - Added
get_account_safety - Added
get_bookmarks - Added
get_campaign - Added
get_campaign_summary - Added
get_conversation - Added
get_conversation_controls - Added
get_home_feed - Added
get_inbox - Added
get_lead - Added
get_notifications - Added
get_profile - Added
get_profile_connections - Added
get_profile_context - Added
get_profile_posts - Added
get_runtime_info - Added
get_session_status - Added
get_thread - Added
get_thread_run - Added
list_campaigns - Added
list_leads - Changed
list_queue2 fields changed- added
Input schema / properties / limitAdded value: +{ + "default": 50, + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "title": "Offset", + "type": "integer" +}
- Added
manage_conversation - Added
opt_out_lead - Added
pause_account_actions - Added
prepare_campaign_messages - Added
prepare_outreach - Added
prepare_thread - Added
preview_campaign_message - Added
remove_bookmark - Changed
reply_to_tweet1 field changed- added
Input schema / properties / mediaAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Media" +}
- Added
resolve_action_outcome - Added
resume_account_actions - Added
search_conversations - Added
send_message - Added
set_campaign_status - Added
undo_retweet - Added
unfollow_profile - Added
unlike_tweet - Added
unlock_inbox - Added
update_lead_status - Added
upsert_lead
13 tool updates
v0.1.1- Added
approve_draft - Added
cancel_queued_action - Added
draft_post_variations - Added
generate_and_post - Added
get_metrics - Added
get_tweet - Added
list_proxies - Added
list_queue - Added
post_tweet - Added
prepare_reply - Added
reply_to_tweet - Added
search_profile - Added
search_tweets
20 tool updates
v0.1.0- First observed
add_account - First observed
add_proxy - First observed
engage - First observed
get_account - First observed
get_account_health - First observed
get_draft - First observed
get_run_status - First observed
list_accounts - First observed
list_drafts - First observed
process_queue - First observed
queue_engagement - First observed
queue_post - First observed
reject_draft - First observed
remove_account - First observed
remove_proxy - First observed
research_and_stage - First observed
run_cycle - First observed
set_account_active - First observed
test_proxy - First observed
update_account
TDQS
Scored across 82 tools
Many tools overlap in purpose: get_account_health, get_session_status, get_account_safety, get_metrics, and get_runtime_info all report account or server state, while get_profile, get_profile_posts, get_profile_context, search_profile, get_tweet, and prepare_reply all read profile/tweet context. With 82 tools, an agent can easily select a related but wrong read or write path, even though the descriptions attempt guidance.
All names use snake_case and are overwhelmingly verb_noun or verb_object (get_account_health, approve_draft, list_leads, add_proxy, remove_account). Minor deviations like engage, run_cycle, reply_to_tweet, and upsert_lead do not break the overall pattern. The naming is highly predictable.
82 tools is far beyond a well-scoped set; the domain is broad, but this many entry points imposes severe selection load and suggests redundant granularity. Per the rubric, 50+ tools is an extreme mismatch.
The surface covers accounts, proxies, drafts, queue, tweets, DMs, profiles, campaigns, leads, threads, analytics, and notifications with create/read/update/delete-style operations throughout. Minor asymmetries remain, such as no direct like/retweet alongside unlike_tweet/undo_retweet and no campaign/lead deletion, but these are workable.
Maintenance
Related MCP Connectors
X Twitter scraper & Twitter API alternative. Search, monitor, publish & manage X accounts.
- Groniz MCPOAuthcom.groniz
Post & schedule to 32+ networks: X, Facebook, Instagram, Threads, LinkedIn, TikTok, YouTube, Reddit.
Your agent posts, schedules, queues and threads posts on X, with a human approval queue.
Live X/Twitter data: profiles, tweets, search, followers, lists and trends. 29 read-only tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides programmatic X (Twitter) engagement via MCP, offering 24 tools for search, timelines, notifications, bookmarks, profiles, and tweet actions through a headless browser.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to fully automate X/Twitter interactions including searching, posting, engaging, and managing multiple accounts without paid API keys.MIT
- FlicenseAqualityDmaintenanceEnables Twitter/X marketing automation, including tweet search, account analysis, trending topics, and optional AI-generated tweets and scheduling.6-

OpenTweet MCP Serverofficial
AlicenseAqualityDmaintenanceProvides 30 tools to post, schedule, thread, and analyze X (Twitter) content, including AI media generation and multi-account management. No X developer account or OAuth setup required.3089 npmMIT