bnbot-mcp-server
Provides tools to fetch TikTok metadata and download video locally.
Provides tools to fetch and extract WeChat article content.
Provides tools to fetch Xiaohongshu note content and metadata.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bnbot-mcp-serverScrape my Twitter timeline"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bnbot-mcp-server
MCP Server for BNBOT Chrome Extension - Control Twitter/X via AI assistants like OpenClaw or Claude Desktop.
Architecture
AI Assistant (OpenClaw / Claude Desktop)
↓ stdio (MCP protocol)
bnbot-mcp-server (local Node.js process)
↓↑ WebSocket (ws://localhost:18900)
BNBOT Chrome Extension
↓ DOM operations
Twitter/XRelated MCP server: Twitter MCP
Setup
1. Install BNBOT Chrome Extension
Install from the Chrome Web Store.
2. Enable OpenClaw Integration
In the BNBOT extension sidebar, open Settings and turn on the OpenClaw toggle.
3. Configure Your AI Assistant
OpenClaw / Claude Desktop
Add to your MCP config:
{
"mcpServers": {
"bnbot": {
"command": "npx",
"args": ["bnbot-mcp-server"]
}
}
}Custom Port
{
"mcpServers": {
"bnbot": {
"command": "npx",
"args": ["bnbot-mcp-server", "--port", "9999"]
}
}
}4. Use It
Ask your AI assistant:
"Scrape my Twitter timeline"
"Search for tweets about AI"
"Post a tweet saying hello world"
"Navigate to my bookmarks and scrape them"
Available Tools
Scrape
Tool | Description |
| Scrape tweets from the timeline |
| Scrape bookmarked tweets |
| Search and scrape results |
| Scrape currently visible tweets |
| Scrape a tweet thread from URL |
| Get account analytics data |
Tweet
Tool | Description |
| Post a tweet with optional images |
| Post a thread of tweets |
| Reply to a tweet |
| Quote a tweet with optional comment |
Engagement
Tool | Description |
| Like a target tweet |
| Retweet a target tweet |
| Follow a target user |
Navigation
Tool | Description |
| Go to a specific tweet |
| Go to search page |
| Go to bookmarks |
| Go to notifications |
| Go to following timeline |
| Go back to timeline |
Status
Tool | Description |
| Check extension connection |
| Get current page info |
Content
Tool | Description |
| Fetch and extract WeChat article content |
| Fetch TikTok metadata and download video locally |
| Fetch Xiaohongshu note content and metadata |
Article
Tool | Description |
| Open X article editor via stable flow |
| Fill article title field |
| Fill article body ( |
| Upload article header image |
| Publish article (or keep draft) |
| End-to-end article creation flow |
Testing
Use the MCP Inspector to test tools directly:
npx @modelcontextprotocol/inspector npx bnbot-mcp-serverLicense
MIT
Available Tools
31 toolsaccount_analyticsC
Get Twitter/X account analytics data for a date range.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date in YYYY-MM-DD format | |
| startDate | No | Start date in YYYY-MM-DD format | |
| granularity | No | Aggregation level for time series data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing beyond the operation itself. It does not state authentication requirements, whether the account must be the caller's own, rate limits, or what happens if the range is empty—all material for an analytics endpoint.
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, which is efficient. It is arguably too terse given the tool's complexity, but there is no wasted structure or 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?
There is no output schema and no annotations, so the description should compensate—yet it says nothing about what analytics metrics are returned, how granularity affects the response, or authentication prerequisites. For a three-parameter data tool with zero structured support, this is 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 coverage is 100%, so startDate/endDate formats and the granularity enum are already fully documented in the schema, making 3 the baseline. The description's only added signal is the phrase 'date range', which maps to the two date parameters but adds no format or constraint detail.
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 ('Get') and resource ('Twitter/X account analytics data') with a stated scope ('for a date range'). It is clearly distinguishable from the sibling tools, which are almost all navigation/scraping/posting actions, though it does not explicitly name a sibling it replaces.
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 guidance on when to use this tool versus alternatives, no prerequisites (e.g., must be logged in to an account), and no mention of which account's analytics are returned. The single sentence only describes what it fetches, not when or why to reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_articleA
Create and publish a Twitter/X article (long-form content). Handles the full flow: open editor, fill title, fill body, and optionally publish.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title | |
| format | No | Body content format (default: plain) | |
| content | Yes | Article body content | |
| publish | No | Whether to publish immediately (default: false, saves as draft) | |
| bodyImages | No | Optional body images. Supports URLs, local file paths, or data URLs. | |
| headerImage | No | Optional header image. Supports URL, local file path, or data URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose useful behavior beyond the schema by explaining the multi-step flow (opens editor, fills title, fills body, optionally publishes), which helps the agent understand side effects. However, it omits auth requirements, rate limits, failure behavior, whether an existing draft is overwritten, and what is returned.
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 primary action and followed by the flow breakdown, with no filler. Only minor waste is the redundant restatement of what the schema already defines.
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 no-annotation, no-output-schema mutation tool with six parameters, the description covers the core flow but not enough to be fully self-sufficient. It omits image/header handling, the format parameter's effect, draft-vs-publish outcomes, and error/failure semantics, 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 100%, so the schema already documents title, content, format, publish, bodyImages, and headerImage. The description adds only marginal meaning, echoing title/body and the optionality of publish, and says nothing about format, image handling, or draft vs. live semantics beyond what the schema states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Create and publish a Twitter/X article (long-form content)') and immediately clarifies scope versus the granular siblings by stating it handles the composite flow of open editor, fill title, fill body, and publish. An agent can distinguish it from open_article_editor, fill_article_title, fill_article_body, and publish_article 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?
The description implies when to use it (for the end-to-end flow rather than the individual step tools) and notes that publishing is 'optional', but it never explicitly says to prefer this over the granular siblings or when not to use it. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_tiktok_videoB
Fetch TikTok video metadata including description, author info, and video download URL. Automatically downloads the video via the browser extension and saves it locally.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | TikTok video URL | |
| savePath | No | Local path to save the video file. Defaults to ~/Downloads/tiktok_{video_id}.mp4 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the behavioral burden. It discloses that the tool automatically downloads the video via the browser extension and saves it locally, which is important. However, it doesn't mention permissions, rate limits, or what happens if the download fails. Some behavioral context is provided but incomplete.
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 the main purpose. No wasted words, but slightly redundant: 'video download URL' and 'downloads the video' could be streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description should explain return values, but it only lists metadata fields briefly. It mentions description, author info, and download URL, but not other metadata that might be returned. The behavioral aspect of downloading is covered, but the completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description does not add any parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb+resource: fetching TikTok video metadata (description, author info, download URL). It also adds that the tool downloads and saves the video. However, it doesn't differentiate from siblings like fetch_wechat_article or fetch_xiaohongshu_note other than by platform, which is adequate but not exceptional.
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 implies it's for retrieving TikTok video data, but doesn't mention alternatives or conditions. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_wechat_articleB
Fetch and extract content from a WeChat Official Account article. Returns markdown-formatted article content including title, author, and body text.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | WeChat article URL (mp.weixin.qq.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses the return format (markdown with title, author, body), which is useful, but omits other relevant traits such as authentication requirements, rate limits, or error handling for inaccessible articles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first states the action and target, the second describes the return format. It is front-loaded and contains 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?
For a simple one-parameter fetch tool with no output schema, the description provides enough context: it names the source, the extraction behavior, and the return format. It could still mention usage conditions or limitations, but the core information 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 100% and the single parameter is well documented in the schema. The description adds no extra meaning about the URL parameter beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('fetch and extract') and a precise resource ('content from a WeChat Official Account article'), making the tool's purpose clear. It does not explicitly contrast itself with sibling fetch tools like fetch_tiktok_video or fetch_xiaohongshu_note, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not state conditions, exclusions, or prerequisites beyond the implied need for a WeChat article URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_xiaohongshu_noteA
Fetch content from a Xiaohongshu (Little Red Book) note including text, images, author, and engagement metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Xiaohongshu note URL (xiaohongshu.com or xhslink.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Fetch' implies a read-only operation and the description usefully discloses the returned payload (text, images, author, metrics), but it says nothing about authentication needs, rate limits, failure modes, or whether access requires login.
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 tight sentence that front-loads the action and resource, then lists the payload. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description is mostly complete: it names the source, the input (URL), and the returned contents. The remaining gaps (auth requirements, error behavior) are minor for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'url' parameter is already documented in the schema with accepted domains (xiaohongshu.com, xhslink.com). The description adds no format or syntax detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Fetch') and resource ('Xiaohongshu note content') and enumerates what is retrieved (text, images, author, engagement metrics). It is clear but does not explicitly distinguish itself from sibling fetchers like fetch_wechat_article or fetch_tiktok_video beyond naming the platform.
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 by the platform name and the 'fetch' verb; the description offers no when-to-use guidance, no prerequisites, and no mention of alternative tools. An agent can infer this is the retrieval path for Xiaohongshu notes, but nothing is stated explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_article_bodyB
Fill article body in the current editor. Supports optional body images.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Body format | |
| content | Yes | Article body content | |
| bodyImages | No | Optional body images (URL/local path/data URL) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does not meet it. It is silent on whether filling replaces or appends existing body content, what the default format is, and what permissions or editor state are required. The only behavioral note, optional body images, duplicates the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler, and the core action leads. It is efficient, though extremely terse given the unaddressed behavioral questions.
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 3-parameter mutation tool with no annotations and no output schema, the description is minimally viable but leaves key gaps: replace-vs-append semantics, the format default, and the editor-state prerequisite. The schema covers parameters, but behavioral context 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 description coverage is 100%, so the parameters (format enum, content, bodyImages) are fully documented in the schema; baseline is 3. The description adds no meaning beyond the schema, mentioning body images only to repeat what the property already says.
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 (fill article body) with a scope qualifier (in the current editor), and clearly distinguishes it from sibling fill_article_title. It is a clean purpose statement, though it never contrasts itself with open_article_editor or create_article.
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?
"In the current editor" implies the tool must follow open_article_editor, but this prerequisite is never stated explicitly and no when-not or alternative is named. Usage is implied rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_article_titleB
Fill article title in the current Twitter/X article editor.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation. It does not say whether an existing title is replaced or appended, whether the call fails if no editor is open, what permissions are required, or what the response reports — all material for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action verb and the target resource, with no filler. Nothing is wasted, though there is also very little content to structure.
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 tool with full schema coverage, no output schema, and simple mutation semantics, the description is minimally viable. It omits the precondition that the article editor must already be open and the replacement behavior on an existing title, which are the main gaps an agent would hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's schema description is 'Article title', so the schema already documents it. The description adds no format, length, or validation guidance beyond that, making the baseline 3 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?
States a specific verb+resource ('Fill article title') and scopes it to the 'current Twitter/X article editor', which distinguishes it from the scrape/navigate siblings. It stops short of differentiating itself from the closest sibling, fill_article_body, which an agent must still infer by name.
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 'current ... article editor' weakly implies the tool must be used while the editor is already open, so usage is only implied. There is no explicit when/when-not, no mention of open_article_editor as a prerequisite, and no routing to fill_article_body for body content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
follow_userA
Follow a user on Twitter/X. If username is provided, navigates to their profile first. Otherwise follows the author of the currently open tweet.
| Name | Required | Description | Default |
|---|---|---|---|
| username | No | Optional Twitter username (without @) to navigate to their profile and follow |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the navigation side effect ('navigates to their profile first') and the fallback behavior tied to page state, which are non-obvious traits. It stops short of covering auth requirements, reversibility, or rate limits, but the core behavior is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, with no redundant or filler content. The conditional logic is compact and readable.
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, no-annotation, no-output-schema tool, the description covers purpose, conditional usage, and navigation behavior sufficiently for an agent to invoke it correctly. Minor gaps around auth/session requirements and return behavior are tolerable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description genuinely adds meaning beyond the schema by explaining the conditional default when username is omitted ('follows the author of the currently open tweet'). This clarifies the parameter's effect in 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?
States a specific verb (Follow) and resource (a user on Twitter/X), and immediately disambiguates the two operating modes. An agent can distinguish this from like_tweet, retweet, or scrape_* siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states both usage paths: pass username to follow a specific user, omit it to follow the author of the currently open tweet. This gives explicit when-to-use conditions for each branch, though it does not name alternatives or prerequisites (e.g., must be logged in).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_page_infoB
Get information about the current page open in the Twitter/X tab (URL, page type, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden. It implicitly signals a safe, parameterless read and discloses the shape of the result at a high level, but says nothing about failure modes (no tab open, non-Twitter page), whether it works outside X, or the exact page-type set.
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 parenthetical efficiently enumerates the payload without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the only source of contract information. Listing 'URL, page type, etc.' helps but the 'etc.' leaves the return contract underspecified, and nothing covers error or edge-case behavior.
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 there is nothing to disambiguate; the baseline of 4 applies. The description correctly implies no arguments are 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?
States a specific verb ('Get information about') and resource ('the current page open in the Twitter/X tab'), plus example fields (URL, page type). It does not differentiate itself from the nearby sibling scrape_current_view, which reads as overlapping in intent, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this rather than scrape_current_view, get_extension_status, or any scrape_* sibling, and no preconditions (e.g. must a Twitter/X tab be active). Usage is only implied by the phrase 'current page'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_extension_statusB
Check if the BNBOT Chrome extension is connected and get its current status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says it checks connectivity and returns 'current status' but does not disclose what status fields are reported, what happens (or what error surfaces) when the extension is disconnected, or whether it is a safe, side-effect-free read. For a diagnostic tool this is thin.
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 that states the connectivity check first and the status retrieval second, with no filler. Appropriately sized for a simple zero-argument 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 is simple (0 params) but has no output schema, so the description is the only place a caller could learn what 'current status' returns. It does not describe the return shape or the disconnected-state behavior, leaving a modest gap for an agent trying to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate. No parameter semantics are required and none are 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?
The description states a specific verb+resource: check whether the BNBOT Chrome extension is connected and retrieve its status. This is clearly distinct from the action-oriented siblings (scrape_*, navigate_*, post_*), which are all about operating on content rather than reporting extension health. No sibling is named, so it stops short of explicit differentiation, but the purpose is 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?
There is no guidance on when to call this tool versus alternatives, no mention of it as a prerequisite/health check before other operations, and no exclusions. Usage is only implied by the name. Nothing tells the agent why or when it should reach for this over the rest of the toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
like_tweetA
Like the tweet on the currently open tweet page. Navigate to the tweet first using navigate_to_tweet.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the implicit state dependency (must be on the tweet page) which is valuable. However, it doesn't cover idempotency, what happens if the tweet is already liked, or the return value. For a mutation tool with zero annotations, this is a reasonable but not thorough disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, immediately followed by the operational dependency. 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?
Given the tool's simplicity (zero params, no output schema), the description covers the essential context: the action and the required page state. It lacks only edge-case behavior for a mutation, but the core guidance is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description correctly implies the tool needs no parameters because it relies on browser 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?
States a specific verb ('Like') and resource ('the tweet'), and adds the crucial constraint that it operates on the currently open tweet page. This distinguishes it from sibling actions like retweet and quote_tweet which target a specific tweet by ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to call navigate_to_tweet first, naming the exact prerequisite sibling. This is a textbook when-to-use instruction that prevents a failed call on the wrong page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_article_editorA
Open the Twitter/X article editor using the stable flow (navigate to compose page then click create).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does disclose the internal mechanism (navigate to compose page, then click create). However, it says nothing about authentication/session prerequisites, what happens if the editor is already open, or whether this mutates server-side state — meaningful gaps for a UI-driving tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with the implementation detail relegated to a parenthetical. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter navigation tool with no output schema and no annotations, the description is nearly sufficient — it identifies the destination and the path. It would be closer to complete if it stated the resulting editor state or the typical follow-up tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty with full coverage, so there is nothing for the description to compensate for. Baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (opens the Twitter/X article editor) and even names the mechanism, which is clearer than most navigation tools. It does not differentiate itself from the surrounding article siblings (create_article, publish_article, fill_article_title/body), so an agent must infer that this only opens the editor rather than creating or publishing.
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 or when-not-to-use statement and no sibling is named as an alternative. The parenthetical 'stable flow' weakly implies this is the preferred path over fragile alternatives, but the agent is left to infer that this is a prerequisite for the fill_*/publish_article tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_threadC
Post a thread (multiple connected tweets) on Twitter/X.
| Name | Required | Description | Default |
|---|---|---|---|
| tweets | Yes | Array of tweets in the thread, in order | |
| draftOnly | No | If true, fill the thread composer but do not click send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a public-facing mutation. It does not disclose that posting is irreversible/public, whether auth is required, what happens if the thread partially fails, or anything about the draftOnly mode that the schema exposes.
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 core action and the thread concept come first. It is efficient, though it is arguably too terse to be fully useful.
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 publishing mutation with no annotations and no output schema, the description should say more: whether the response returns thread IDs/URLs and how draftOnly interacts with posting. The gaps are material for an agent deciding whether 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?
Schema description coverage is 100%, including descriptions for 'text', media fields, images, and draftOnly, so the schema does the heavy lifting. The description adds no meaning beyond it (e.g., ordering semantics of the tweets array), which is the baseline case.
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 (Post) and resource (a thread), and the parenthetical 'multiple connected tweets' distinguishes it conceptually from the singular post_tweet sibling. It stops short of naming alternatives explicitly, but the scope is 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?
There is no guidance on when to choose this over post_tweet, submit_reply, or quote_tweet, and no prerequisites are stated. The only implied usage is that a thread means multiple tweets, which an agent could infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_tweetC
Post a new tweet on Twitter/X. Supports text and optional images/videos.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Tweet text content (max 280 characters) | |
| media | No | Array of media to attach. Supports: URLs (https://...), local file paths (/path/to/file.png, ~/Downloads/video.mp4). Images: png/jpg/gif/webp. Videos: mp4/mov/webm. | |
| draftOnly | No | If true, fill the tweet composer but do not click send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about authentication, rate limits, or that posting is public and irreversible. The draftOnly parameter exists to avoid publishing, yet the description never mentions draft 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?
Two short sentences with the core action front-loaded and no wasted words. Well sized for a simple posting 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?
For a mutation tool with no annotations and no output schema, the description should disclose success/failure behavior and the publish-vs-draft distinction. It omits both, leaving an agent unable to predict the consequence of calling 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 100%, so the schema already documents text length, media formats, and draftOnly. The description only restates that images/videos are supported, adding no meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (post) and resource (tweet) plus supported content types. Clear what the tool does, though it does not distinguish itself from close siblings such as post_thread, quote_tweet, or submit_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?
No guidance on when to use this versus post_thread, quote_tweet, or submit_reply. A tweet, a thread, a quote, and a reply are adjacent actions and the description gives no conditions for choosing among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_articleC
Publish article or keep as draft (auto-save).
| Name | Required | Description | Default |
|---|---|---|---|
| asDraft | No | Force draft mode if true | |
| publish | No | Publish immediately if true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that publishing is user-visible and effectively irreversible, what happens if both boolean flags are omitted or both set, or any auth/permission requirement. The '(auto-save)' note is unexplained.
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 a single front-loaded sentence with no filler, which is structurally sound. But it is arguably too terse for a mutation tool, and the ambiguous '(auto-save)' clause does not clearly earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation with no annotations and no output schema, the description should explain the flag interaction, the default behavior when neither flag is set, and the effect of publishing. None of that is present, leaving the agent unable to predict the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both asDraft and publish are already documented in the schema and the baseline is 3. The description adds only the marginal framing that draft mode preserves the article, with no detail on flag precedence or defaults.
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 (publish) plus the alternative outcome (keep as draft) for the article resource, so an agent can tell it apart from create_article or fill_article_body. However, the parenthetical '(auto-save)' muddies the purpose, and there is no explicit differentiation from the create_article sibling in the same workflow.
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 guidance on when to call this versus create_article, open_article_editor, or the fill_* tools, and no indication of prerequisites (e.g., whether an article must already exist). The publish/draft choice is implied by the name only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_tweetA
Quote tweet the currently open tweet with custom text. Navigate to the tweet first using navigate_to_tweet.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The quote text to post with the retweet | |
| media | No | Array of media to attach. Supports: URLs (https://...), local file paths (/path/to/file.png, ~/Downloads/video.mp4). Images: png/jpg/gif/webp. Videos: mp4/mov/webm. | |
| draftOnly | No | If true, fill the composer but do not click send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden. It implies a public write ('Quote tweet ... to post') but says nothing about irreversibility, authentication requirements, rate limits, or failure behavior, leaving the agent without meaningful behavioral context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no wasted words. The action is stated first and the prerequisite second, which is the ideal ordering 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?
For a simple write tool with no annotations and no output schema, the description covers purpose and the key prerequisite, and the schema fully covers parameters including the draftOnly safety flag. It is adequate but omits the behavioral disclosure (posting consequences, auth) that would normally come from annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents text, media, and draftOnly thoroughly. The description's only parameter-related addition is the phrase 'custom text,' which does not go beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Quote tweet') and a specific resource ('the currently open tweet with custom text'), which is clearly distinct from sibling tools like retweet or post_tweet. However, it does not explicitly name or contrast with those siblings, so it lands just short of full sibling differentiation.
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 states the required precondition and names the prerequisite tool: 'Navigate to the tweet first using navigate_to_tweet.' This gives clear context for when the tool can be used, though it stops short of stating exclusions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
return_to_timelineA
Navigate back to the Twitter/X home timeline.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it discloses very little: it does not say whether this refreshes the timeline, resets scroll position, or discards the current view state. For a zero-parameter navigation action the risk surface is small, so this is a moderate gap rather than a severe one.
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. Every word earns its place and the action is immediately obvious.
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 no-parameter, no-output-schema navigation tool, the description is essentially complete: it tells the agent the destination. It could add whether the current page state is lost, but no structural field is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to describe and the baseline of 4 applies. Nothing in the description is needed to compensate for schema 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 states a specific verb ('Navigate back') and a specific resource ('Twitter/X home timeline'), which an agent can distinguish from siblings like navigate_to_following or navigate_to_bookmarks. It stops short of explicitly naming those alternatives, but the resource is 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?
There is no guidance on when to use this tool versus the other navigation tools (navigate_to_following, navigate_to_search, etc.), nor any preconditions such as being on a different page first. The phrase 'back' faintly implies returning from elsewhere, but that 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.
retweetA
Retweet/repost the tweet on the currently open tweet page. Navigate to the tweet first using navigate_to_tweet.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a meaningful non-obvious trait — the tool operates on the current page state rather than a passed tweet identifier — but says nothing about toggling/un-retweeting, behavior if already retweeted, or failure modes.
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, the action is front-loaded and the precondition follows immediately. No filler or restated boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter action with no annotations and no output schema, the description covers the essential precondition but leaves behavioral questions (idempotency, already-retweeted state, error outcome) unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The description correctly reinforces that the target is implicit in the open page.
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 (retweet the tweet) and scopes it to the currently open tweet page, which distinguishes it from id-based siblings. It implies but does not explicitly contrast with quote_tweet, which also acts on the open 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?
Provides one clear prerequisite ('navigate to the tweet first using navigate_to_tweet'), which is useful routing guidance. It gives no when-not guidance and does not mention quote_tweet as an alternative for adding commentary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_bookmarksA
Scrape bookmarked tweets from Twitter/X. Automatically navigates to the bookmarks page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of bookmarks to collect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the automatic navigation behavior (implying no prior navigation step is required), but says nothing about login/auth requirements, whether it scrolls, or what happens on failure — significant gaps for a scraper tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, and the second sentence adds the key navigation behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter scraping tool with no output schema, the description covers purpose and the auto-navigation behavior, which is the main ambiguity versus the separate navigate_to_bookmarks sibling. It would be stronger with a hint about the returned content and auth prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter ('limit') and schema description coverage is 100%, so the schema already documents it fully. The description adds no semantics about how limit is applied (e.g., truncation behavior or whether it stops scrolling). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('scrape bookmarked tweets from Twitter/X'), which cleanly separates it from scrape_timeline, scrape_search_results, and scrape_current_view. It does not, however, explicitly name which sibling it replaces or why an agent would pick it over scrape_current_view.
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 note that it 'automatically navigates to the bookmarks page' implies the tool is self-contained and does not need navigate_to_bookmarks first, which is useful. But there is no explicit when-to-use/when-not-to-use guidance or stated alternative for scraping bookmarks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_current_viewA
Scrape tweets currently visible on the page without scrolling.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose one meaningful trait — that no scrolling occurs, so results are limited to currently rendered items and no pagination happens. It says nothing about authentication, rate limits, or which page types it operates on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words, and the key constraint ('currently visible ... without scrolling') is front-loaded. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description is nearly sufficient: it tells the agent what it captures and its viewport limitation. It could go slightly further by indicating which page contexts it applies to, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. No misleading or missing parameter information exists.
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 (scrape) and resource (tweets currently visible on the page) plus a scope qualifier (without scrolling). This distinguishes it from siblings like scrape_timeline and scrape_search_results, which target specific pages, by signaling it grabs whatever is rendered on the current page. It does not, however, name those siblings 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?
Usage is only implied: the phrase 'without scrolling' suggests you reach for this when you want a snapshot of the viewport rather than a paginated crawl. There is no explicit statement of when to prefer this over scrape_timeline, scrape_bookmarks, or scrape_thread, nor any prerequisite about which page must be open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_search_resultsB
Search for tweets and scrape the results. Navigates to search page with the given query.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to collect | |
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral-disclosure burden. It discloses that the tool navigates to a search page, but it omits return format, pagination behavior, rate limits, authentication requirements, and whether the scrape is read-only or has 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?
Two sentences, front-loaded with the core action and followed by the navigation detail. Both sentences earn their place and contain 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?
For a simple two-parameter scrape tool with no output schema and no annotations, the description covers the basic action but not the return shape or how 'limit' affects pagination. It is adequate but leaves an agent guessing about the output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('query' and 'limit'). The description mentions the given query but adds no syntax, constraints, or meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search for tweets and scrape the results.' It also clarifies the mechanism ('Navigates to search page with the given query'), which distinguishes it from sibling scrape tools like scrape_timeline, scrape_bookmarks, and scrape_current_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to search tweets, but it gives no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives such as navigate_to_search or scrape_timeline, nor does it state prerequisites like authentication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_threadA
Scrape all tweets from a Twitter/X thread. Must be on a tweet detail page (/status/ URL). Collects all tweets by the same author, returns individual tweets and merged text.
| Name | Required | Description | Default |
|---|---|---|---|
| maxScrolls | No | Maximum scroll attempts to load more tweets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that it collects all tweets by the same author and returns both individual tweets and merged text, which is real behavioral context. However, it says nothing about auth, rate limits, or how scrolling failure is handled, so it is only partially transparent.
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: purpose, precondition, output shape, in that order. No filler, and the critical scoping constraint is front-loaded after the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the return shape (individual tweets + merged text). The single-parameter surface is simple and the precondition is stated, but auth/rate-limit behavior is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and maxScrolls is fully documented in the schema, so the description adds no parameter detail. Baseline 3 applies when the schema already does the work.
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 ('scrape') and resource ('all tweets from a Twitter/X thread'), plus the scope of what is collected. It implicitly separates itself from scrape_timeline/scrape_bookmarks by the 'thread' scope and the detail-page precondition, but never names those siblings 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 hard precondition — 'Must be on a tweet detail page (/status/ URL)' — which tells the agent exactly when this tool is usable. It stops short of naming alternatives (e.g. scrape_current_view) or saying 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.
scrape_timelineA
Scrape tweets from the Twitter/X timeline. Returns tweet text, author, metrics, and URLs. Navigate to the timeline first if not already there.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tweets to collect | |
| scrollAttempts | No | Number of scroll attempts to load more tweets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral burden. It discloses that navigation to the timeline may be required, which is useful. But it does not mention permissions, rate limits, side effects, or scrolling/pagination behavior beyond the schema parameters.
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 core action, followed by return contents and a prerequisite. 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?
For a two-parameter scraping tool with complete schema coverage and no output schema, the description covers purpose, returns, and one prerequisite. It is adequate overall, though it could better distinguish usage from similar scrape 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?
The schema already documents both parameters with 100% description coverage, including defaults and meanings. The description adds no parameter-specific details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Scrape tweets from the Twitter/X timeline.' It also lists the return contents, clearly distinguishing it from siblings such as scrape_search_results, scrape_bookmarks, and scrape_thread.
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 usage condition: 'Navigate to the timeline first if not already there.' However, it does not explain when to choose this tool over scrape_current_view or other scrape tools, nor 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.
search_jobsB
Search for available jobs — tweet engagement campaigns with crypto rewards. Returns a list of active jobs you can complete to earn rewards.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort field (default: created_at) | |
| type | No | Job type: boost (engage with tweets), hire (content creation), or all (default: all) | |
| limit | No | Max results (default: 10) | |
| token | No | Filter by reward token (ETH, USDT, etc.) | |
| status | No | Filter by status (default: active) | |
| keyword | No | Search keyword | |
| endingSoon | No | Only show jobs ending within 24h |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only that results are a list of jobs and that they are 'active' — but the schema exposes a status filter allowing completed/expired, and there is no mention of pagination behavior, auth requirements, or result limits beyond the limit param.
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 object of the search and the reward context. No filler or repetition; slightly under-specified rather than 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?
With no annotations and no output schema, the description must cover behavior, and it only partially does. The 'active jobs' phrasing mildly conflicts with the status filter's completed/expired options, and nothing is said about auth, pagination, or result shape for a 7-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 100% with 7 parameters each documented (sort, type, limit, token, status, keyword, endingSoon), so the schema fully explains the inputs. The description adds no parameter detail beyond that, making the baseline 3 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?
States a specific verb ('Search') and resource ('jobs') and immediately defines what a job is — 'tweet engagement campaigns with crypto rewards'. No sibling tool overlaps this space (all others are scraping, navigation, or posting), so it is unambiguous without needing to name an 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 only says the tool returns jobs you can complete to earn rewards. It gives no when-to-use versus when-not-to-use guidance, no indication of prerequisites (e.g., connected wallet/account), and no advice on which filters matter for which goal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_replyB
Reply to a specific tweet. Navigate to the tweet first or provide the tweet URL.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Reply text content | |
| image | No | Image URL to attach to the reply | |
| tweetUrl | No | URL of the tweet to reply to. If omitted, replies to the currently open tweet. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It discloses the navigation prerequisite but says nothing about authentication needs, rate limits, whether the reply is immediately public, or what happens on failure.
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 zero padding; the core action is front-loaded and the prerequisite follows immediately. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no annotations and no output schema, the description covers the key prerequisite but omits behavioral details an agent would need, such as auth requirements and confirmation of success. Adequate 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?
Schema coverage is 100%, so the baseline is 3. The description reinforces that tweetUrl is optional by offering the 'navigate first' path, but adds no format or syntax detail beyond the schema's own parameter 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?
States a specific verb and resource ('Reply to a specific tweet'), which clearly separates it from siblings like post_tweet and quote_tweet. It does not explicitly name those alternatives, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an implicit usage condition: be on the tweet or supply its URL. It does not state when to prefer submit_reply over quote_tweet or post_tweet, nor any restrictive conditions, so 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.
upload_article_header_imageA
Upload a header image in the current article editor. Supports URL/local path/data URL.
| Name | Required | Description | Default |
|---|---|---|---|
| headerImage | Yes | Header image source (URL/local path/data URL) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it mostly does not. It says 'Upload' (a mutation) but never states whether an existing header image is replaced, whether the upload is synchronous, or what permissions/state are required. The only behavioral hint is the list of accepted source formats.
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 scope, with no filler. Every clause (context, supported source types) contributes 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?
For a one-parameter mutation tool with no annotations and no output schema, the description covers the what and the accepted input forms, but omits replace/overwrite behavior, required editor state, and timing relative to publish_article. Adequate 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?
Schema description coverage is 100% and the single parameter's schema text ('Header image source (URL/local path/data URL)') is nearly identical to the description's phrasing, so no additional meaning is added. Baseline 3 applies when the schema fully documents the 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?
States a specific verb (upload) and resource (header image) plus the operating context (current article editor), which cleanly separates it from siblings like fill_article_title, fill_article_body, and publish_article. An agent can identify what it does and where it applies 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?
The phrase 'in the current article editor' implicitly signals the prerequisite state (an editor must already be open, e.g. via open_article_editor), which is useful. However, there is no explicit when-to-use guidance, no ordering relative to publish_article, and no named alternative.
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.
31 tool updates
v0.1.2- First observed
account_analytics - First observed
create_article - First observed
fetch_tiktok_video - First observed
fetch_wechat_article - First observed
fetch_xiaohongshu_note - First observed
fill_article_body - First observed
fill_article_title - First observed
follow_user - First observed
get_current_page_info - First observed
get_extension_status - First observed
like_tweet - First observed
navigate_to_bookmarks - First observed
navigate_to_following - First observed
navigate_to_notifications - First observed
navigate_to_search - First observed
navigate_to_tweet - First observed
open_article_editor - First observed
post_thread - First observed
post_tweet - First observed
publish_article - First observed
quote_tweet - First observed
return_to_timeline - First observed
retweet - First observed
scrape_bookmarks - First observed
scrape_current_view - First observed
scrape_search_results - First observed
scrape_thread - First observed
scrape_timeline - First observed
search_jobs - First observed
submit_reply - First observed
upload_article_header_image
TDQS
Scored across 31 tools
Each tool largely targets a distinct action or resource (navigation, scraping, posting, engagement, article creation), and descriptions clarify boundaries. The only notable overlap is create_article duplicating the granular open_article_editor, fill_article_title, fill_article_body, upload_article_header_image, and publish_article tools, which could confuse an agent about which path to use.
Predominantly consistent snake_case verb_noun pattern (e.g., post_tweet, scrape_timeline, navigate_to_tweet, fetch_wechat_article). Minor deviations exist: retweet lacks a noun, account_analytics has no verb, and return_to_timeline uses 'return' instead of 'navigate'. Still highly readable and mostly predictable.
31 tools is above the typical 3-15 range, and the article workflow is unnecessarily split into six granular tools plus a redundant create_article wrapper. While the breadth of Twitter automation and cross-platform fetching justifies many tools, the count feels heavy and includes clear redundancy.
Core Twitter/X lifecycle is well covered: navigation, scraping, posting, replying, liking, retweeting, quoting, following, analytics, and long-form articles. Minor gaps exist (e.g., delete tweet, bookmark/unbookmark, direct messages, reading notifications), but agents can accomplish most stated goals.
Maintenance
Related MCP Connectors
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
- MysocialOAuthio.mysocial
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for interacting with the Twitter/X API v2, enabling AI assistants to retrieve tweets, post content, reply, quote, and more programmatically.681 npm13MIT
- AlicenseAqualityDmaintenanceMCP server for Twitter/X enabling AI agents to search, post, reply, and engage with tweets.147 npm1MIT
- AlicenseBqualityDmaintenanceMCP server for interacting with the X platform (Twitter) via MCP clients like Claude, Cursor AI, and Windsurf AI.205 npm6MIT
- AlicenseAqualityAmaintenanceMCP server to read X (Twitter) posts, threads, replies, quotes, and search using your own logged-in session, no API key required.83MIT