Agent Twitter Client MCP
代理-Twitter-客户端-MCP
使用agent-twitter-client包与 Twitter 集成的模型上下文协议 (MCP) 服务器,允许 AI 模型无需直接 API 访问即可与 Twitter 交互。
特征
身份验证选项:
基于 Cookie 的身份验证(推荐)
用户名/密码认证
Twitter API v2 凭证
推文操作:
获取用户的推文
通过 ID 获取特定推文
搜索推文
发送带有文本和媒体的推文
创建投票
点赞、转发和引用推文
用户操作:
获取用户个人资料
关注用户
获取关注者和关注列表
Grok 集成:
通过 Twitter 界面与 Grok 聊天
使用对话 ID 继续对话
获取网络搜索结果和引用
通过 Grok 访问 Twitter 的实时数据
注意:Grok 功能需要agent-twitter-client v0.0.19或更高版本
Related MCP server: MCP Twitter
文档
开发者指南——面向开发者的综合指南
测试指南- MCP 测试说明
代理指南- 人工智能代理如何使用 Twitter MCP 的指南
贡献指南——为该项目做出贡献的指南
变更日志——该项目变更的历史记录
演示自述文件- 运行演示脚本的指南
Grok 示例- Grok AI 集成示例的文档
快速入门
安装
# Install globally
npm install -g agent-twitter-client-mcp
# Or install locally
npm install agent-twitter-client-mcp基本用法
使用您的 Twitter 凭证创建一个
.env文件(请参阅身份验证方法)运行 MCP 服务器:
# If installed globally
agent-twitter-client-mcp
# If installed locally
npx agent-twitter-client-mcp演示脚本
该软件包包括一个demo目录,其中有演示各种功能的示例脚本:
# Clone the repository to access the demo scripts
git clone https://github.com/ryanmac/agent-twitter-client-mcp.git
cd agent-twitter-client-mcp/demo
# Run the interactive demo menu
./run-demo.sh
# Run a specific demo script
./run-demo.sh --script tweet-search.js
# Run Grok AI examples (requires agent-twitter-client v0.0.19)
./run-demo.sh --script simple-grok.js --use-local-agent-twitter-client
./run-demo.sh --script grok-chat.js --use-local-agent-twitter-client请参阅演示自述文件以了解更多详细信息。
端口配置
默认情况下,MCP 服务器在端口 3000 上运行。如果您需要更改此设置(例如,如果您已经在端口 3000 上运行应用程序),您有以下几种选择:
选项 1:使用环境变量
设置PORT环境变量:
PORT=3001 npx agent-twitter-client-mcp选项 2:使用 Docker Compose
如果使用 Docker Compose,您可以在.env文件中配置主机和容器端口:
# .env file
MCP_HOST_PORT=3001 # The port on your host machine
MCP_CONTAINER_PORT=3000 # The port inside the container然后运行:
docker-compose up -d这会将主机上的端口 3001 映射到容器中的端口 3000,从而允许您通过http://localhost:3001访问 MCP,同时您的其他应用程序继续使用端口 3000。
使用 Claude Desktop 进行设置
通过向配置文件中添加以下内容来配置 Claude Desktop 以使用此 MCP:
Windows : %APPDATA%\Claude\claude_desktop_config.json macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"agent-twitter-client-mcp": {
"command": "npx",
"args": ["-y", "agent-twitter-client-mcp"],
"env": {
"AUTH_METHOD": "cookies",
"TWITTER_COOKIES": "[\"auth_token=YOUR_AUTH_TOKEN; Domain=.twitter.com\", \"ct0=YOUR_CT0_VALUE; Domain=.twitter.com\", \"twid=u%3DYOUR_USER_ID; Domain=.twitter.com\"]"
}
}
}
}重启Claude桌面
身份验证方法
Cookie 认证(推荐)
{
"AUTH_METHOD": "cookies",
"TWITTER_COOKIES": "[\"auth_token=YOUR_AUTH_TOKEN; Domain=.twitter.com\", \"ct0=YOUR_CT0_VALUE; Domain=.twitter.com\", \"twid=u%3DYOUR_USER_ID; Domain=.twitter.com\"]"
}获取 cookies:
在浏览器中登录 Twitter
打开开发者工具(F12)
转到“应用程序”选项卡 >“Cookie”
复制
auth_token、ct0和twidcookie 的值确保每个 cookie 都包含
Domain=.twitter.com部分
用户名/密码验证
{
"AUTH_METHOD": "credentials",
"TWITTER_USERNAME": "your_username",
"TWITTER_PASSWORD": "your_password",
"TWITTER_EMAIL": "your_email@example.com", // Optional
"TWITTER_2FA_SECRET": "your_2fa_secret" // Optional, required if 2FA is enabled
}Twitter API 身份验证
{
"AUTH_METHOD": "api",
"TWITTER_API_KEY": "your_api_key",
"TWITTER_API_SECRET_KEY": "your_api_secret_key",
"TWITTER_ACCESS_TOKEN": "your_access_token",
"TWITTER_ACCESS_TOKEN_SECRET": "your_access_token_secret"
}可用工具
get_user_tweets:获取特定用户的推文get_tweet_by_id:通过 ID 获取特定推文search_tweets:搜索推文send_tweet:发布一条新推文send_tweet_with_poll:发布带有投票的推文like_tweet:喜欢一条推文retweet:转发一条推文quote_tweet:引用一条推文get_user_profile:获取用户的个人资料follow_user:关注用户get_followers:获取用户的关注者get_following:获取用户关注的用户grok_chat:通过 Twitter 与 Grok 聊天health_check:检查 Twitter MCP 服务器的健康状况
测试接口
MCP 包含一个用于测试的交互式命令行界面:
npx agent-twitter-client-mcp-test
# or if installed locally
npm run test:interface这将启动一个 REPL,您可以在其中测试各种 MCP 功能:
agent-twitter-client-mcp> help
Available commands:
health Run a health check
profile <username> Get a user profile
tweets <username> [count] Get tweets from a user
tweet <id> Get a specific tweet by ID
search <query> [count] Search for tweets
post <text> Post a new tweet
like <id> Like a tweet
retweet <id> Retweet a tweet
quote <id> <text> Quote a tweet
follow <username> Follow a user
followers <userId> [count] Get a user's followers
following <userId> [count] Get users a user is following
grok <message> Chat with Grok
help Show available commands
exit Exit the test interface示例测试命令
# Run a health check
agent-twitter-client-mcp> health
# Search for tweets
agent-twitter-client-mcp> search mcp 2
# Get a user's profile
agent-twitter-client-mcp> profile elonmusk
# Get tweets from a user
agent-twitter-client-mcp> tweets openai 5
# Chat with Grok
agent-twitter-client-mcp> grok Explain quantum computing in simple terms示例用法
要求克劳德:
“在 Twitter 上搜索有关 AI 的推文”
“发布一条推文说‘克劳德向你问好!’”
“获取来自@OpenAI的最新推文”
“与 Grok 聊聊量子计算”
高级用法
与媒体合作
要发布带有图片的推文:
I want to post a tweet with an image. The tweet should say "Beautiful sunset today!" and include this image.要发布带有视频的推文:
I want to post a tweet with a video. The tweet should say "Check out this amazing video!" and include the video file.创建投票
要创建投票:
Create a Twitter poll asking "What's your favorite programming language?" with options: Python, JavaScript, Rust, and Go. The poll should run for 24 hours.与 Grok 交互
与 Grok 对话:
Use Grok to explain quantum computing to me. Ask it to include some real-world applications.要继续与 Grok 对话:
Continue the Grok conversation and ask it to elaborate on quantum entanglement.Grok 的独特功能
Twitter 上的 Grok 可以访问实时 Twitter 数据,而独立的 Grok API 则无法访问这些数据。这意味着你可以向 Grok 询问以下信息:
Twitter 上当前的热门话题
分析最近关于特定主题的推文
有关 Twitter 用户及其内容的信息
平台上正在讨论的实时事件
示例查询:
“现在 Twitter 上的热门话题是什么?”
“分析 Twitter 上有关人工智能的情绪”
“人们对最新的苹果发布会有何评价?”
“显示有关今天正在讨论的热门 memecoin 的信息”
Grok 身份验证要求
Grok 功能需要正确的身份验证。MCP 支持两种身份验证方式:
Cookie 身份验证(推荐):
Cookies 必须是 JSON 数组格式
例如:
TWITTER_COOKIES=["auth_token=YOUR_AUTH_TOKEN; Domain=.twitter.com", "ct0=YOUR_CT0_VALUE; Domain=.twitter.com", "twid=u%3DYOUR_USER_ID; Domain=.twitter.com"]必需的 cookies 是
auth_token、ct0和twid
用户名/密码验证:
在您的环境中设置
TWITTER_USERNAME和TWITTER_PASSWORD在某些情况下可能会受到 Cloudflare 保护
Grok 速率限制
Grok 具有可能影响使用的速率限制:
非高级帐户:每 2 小时 25 条消息
高级帐户:更高的限额
当达到限制时,MCP 将在响应中返回速率限制信息。
有关使用 Grok 的更多详细信息,请参阅Grok 示例文档。
故障排除
身份验证问题
Cookie 身份验证问题
如果您遇到 Cookie 身份验证问题:
Cookie 过期:Twitter 的 Cookie 通常会在一段时间后过期。请尝试注销并重新登录 Twitter 来刷新您的 Cookie。
Cookie 格式:确保您的 cookie 正确格式化为具有正确域的 JSON 字符串数组。
必需的 Cookies :确保已包含必要的 cookies:
auth_token、ct0和twid。
正确格式的 cookie 示例:
"TWITTER_COOKIES": "[\"auth_token=1234567890abcdef; Domain=.twitter.com\", \"ct0=abcdef1234567890; Domain=.twitter.com\", \"twid=u%3D1234567890; Domain=.twitter.com\"]"凭证认证问题
如果您在用户名/密码验证方面遇到问题:
双因素身份验证:如果您的帐户启用了 2FA,则需要提供
TWITTER_2FA_SECRET。账户锁定:登录失败次数过多可能会导致您的账户被锁定。请查看您的电子邮件,查看是否有账户验证请求。
验证码挑战:Twitter 可能会提出客户端无法自动处理的验证码挑战。
API 身份验证问题
对于 API 身份验证问题:
API 密钥权限:确保您的 API 密钥具有您尝试执行的操作所需的权限。
速率限制:Twitter API 具有速率限制,如果超出可能会导致失败。
API 更改:Twitter 偶尔会更改其 API,这可能会导致兼容性问题。
操作错误
推文发布失败
如果您无法发布推文:
内容限制:Twitter 可能会阻止违反其内容政策的推文。
媒体格式问题:确保媒体格式和编码正确。
频率限制:Twitter 限制您发帖的频率。
搜索问题
如果搜索不起作用:
查询语法:确保您的搜索查询遵循 Twitter 的搜索语法。
搜索限制:某些搜索模式可能有限制或需要特定权限。
Grok 问题
如果 Grok 功能不起作用:
版本要求:
Grok 需要agent-twitter-client v0.0.19或更高版本
当前软件包使用 v0.0.18 实现基本功能
对于演示脚本,使用
--use-local-agent-twitter-client标志临时安装 v0.0.19
身份验证问题:
Cookie 格式:确保 Cookie 采用正确的 JSON 数组格式
Cookie 有效性:Twitter Cookie 会在一定期限后过期
Cloudflare 保护:用户名/密码验证可能会被 Cloudflare 阻止
高级要求:访问 Grok 需要 Twitter Premium 订阅
速率限制:
非高级帐户:每 2 小时 25 条消息
错误消息:“速率限制:您已达到限制...”
解决方案:等到速率限制重置或升级到高级帐户
环境文件位置:
对于演示脚本,请确保您的凭据位于
demo/.env中,而不是在根.env文件中使用
--debug-env标志检查正在加载哪些环境变量
有关 Grok 问题的详细故障排除,请参阅Grok 示例文档。
服务器问题
健康检查
使用health_check工具诊断服务器问题:
Run a health check on the agent-twitter-client-mcp server to diagnose any issues.健康检查将报告以下内容:
身份验证状态
API 连接
内存使用情况
日志记录
服务器记录到控制台和文件:
error.log:包含错误级别的消息combined.log:包含所有日志消息
检查这些日志以获取详细的错误信息。
发展
先决条件
Node.js 18+
npm
设置
克隆存储库
git clone https://github.com/ryanmac/agent-twitter-client-mcp.git
cd agent-twitter-client-mcp安装依赖项
npm install创建带有配置的
.env文件:
AUTH_METHOD=cookies
TWITTER_COOKIES=["cookie1=value1", "cookie2=value2"]构建项目
npm run build启动服务器
npm start环境变量
除了身份验证变量之外,您还可以设置:
LOG_LEVEL:设置日志级别(错误、警告、信息、调试)NODE_ENV:设置环境(开发、生产)
Docker
您还可以使用 Docker 运行服务器:
直接使用 Docker
# Build the Docker image
docker build -t agent-twitter-client-mcp .
# Run the container with environment variables
docker run -p 3000:3000 \
-e AUTH_METHOD=cookies \
-e TWITTER_COOKIES='["auth_token=YOUR_AUTH_TOKEN; Domain=.twitter.com", "ct0=YOUR_CT0_VALUE; Domain=.twitter.com"]' \
agent-twitter-client-mcp使用 Docker Compose
使用您的 Twitter 凭证创建一个
.env文件使用 docker-compose 运行:
# Start the service
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the service
docker-compose downDocker 中的环境变量
您可以通过多种方式将环境变量传递给 Docker 容器:
在docker-compose.yml文件中(已经配置)
通过 .env 文件(推荐用于 docker-compose)
直接在docker run命令中(如上图)
持久化日志
docker-compose 配置包括用于日志的卷挂载:
volumes:
- ./logs:/app/logs这会将日志存储在项目文件夹中的logs目录中。
安全注意事项
凭证存储:安全地存储凭证,最好使用环境变量或安全保险库。
速率限制:实施速率限制以防止滥用 Twitter API。
内容验证:发布前验证所有内容,以防止恶意使用。
执照
麻省理工学院
Available Tools
14 toolsfollow_userB
Follow a Twitter user
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username to follow (without @) |
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 of behavioral disclosure. It states 'Follow a Twitter user,' which implies a mutation/write operation, but doesn't describe any behavioral traits such as authentication requirements, rate limits, error conditions (e.g., invalid username), or what happens on success (e.g., confirmation message). This leaves significant gaps for safe and effective use.
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, direct sentence: 'Follow a Twitter user.' It is front-loaded with the core action and resource, with zero wasted words. Every part of the sentence earns its place by conveying essential purpose 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 complexity (a mutation tool with no annotations and no output schema), the description is incomplete. It doesn't address behavioral aspects like authentication needs, rate limits, or response format, which are crucial for a write operation. While the schema covers the single parameter well, the overall context for safe and informed use is lacking.
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 100% description coverage, with the 'username' parameter clearly documented as 'Username to follow (without @).' The description doesn't add any parameter details beyond what the schema provides, but since schema coverage is high, the baseline is 3. It gets a 4 because with only one parameter, the description's lack of additional info is less critical, and the schema fully 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 clearly states the action ('Follow') and resource ('a Twitter user'), making the purpose immediately understandable. It distinguishes from siblings like 'get_followers' or 'get_following' by being a write operation rather than a read operation. However, it doesn't explicitly differentiate from other social actions like 'like_tweet' or 'retweet' beyond the verb 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?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication status), when not to use it (e.g., if already following), or compare it to similar tools like 'get_following' for checking follow status. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_followersC
Get a user's followers
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | User ID | |
| count | No | Number of followers to fetch (1-200) |
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 of behavioral disclosure. It states the action ('Get') but doesn't describe what the tool returns (e.g., list of users, pagination), any rate limits, authentication needs, or error conditions. This leaves significant gaps in understanding how the tool 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?
The description is extremely concise with just four words, front-loading the core purpose without any wasted text. It efficiently communicates the essential action, though this brevity contributes to gaps in other dimensions.
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 lack of annotations and output schema, the description is incomplete for a tool with two parameters. It doesn't explain what the tool returns (e.g., a list of follower objects), how results are structured, or any behavioral traits like pagination or error handling, leaving the agent with insufficient 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 100%, so the schema already documents both parameters ('userId' and 'count') with descriptions and constraints. The description adds no additional meaning beyond what the schema provides, such as explaining the relationship between parameters or typical use cases.
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 ('Get') and resource ('a user's followers'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_following' or 'get_user_profile', which also retrieve user-related data, so it doesn't fully distinguish itself from 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?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer 'get_followers' over 'get_following' or 'get_user_profile', nor does it specify any prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_followingC
Get users a user is following
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | User ID | |
| count | No | Number of following to fetch (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It implies a read-only operation ('Get'), but doesn't specify whether it's paginated, what the return format is, or any error conditions. For a tool with zero annotation coverage, this is insufficient to inform the agent adequately.
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, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It is front-loaded and wastes no words, making it easy for an agent to parse quickly.
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 lack of annotations and output schema, the description is incomplete for a tool that likely returns a list of users. It doesn't explain the return structure, pagination behavior, or any constraints like rate limits. For a tool with two parameters and no structured output documentation, the description should provide more context to be fully helpful.
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 100% description coverage, providing clear details for both parameters (userId and count with default). The description adds no additional parameter semantics beyond what the schema already documents. According to the rules, with high schema coverage, the baseline is 3, which is appropriate here as the description doesn't enhance parameter understanding.
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 ('Get') and resource ('users a user is following'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'get_followers' by focusing on following relationships rather than followers. However, it doesn't specify the exact scope (e.g., whether it returns all following or a subset), which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'get_following' over 'get_followers' or 'get_user_profile', nor does it specify prerequisites like authentication needs or rate limits. This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tweet_by_idB
Fetch a specific tweet by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Tweet ID |
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 of behavioral disclosure. It states 'fetch' implies a read operation, but doesn't cover aspects like authentication requirements, rate limits, error handling (e.g., invalid IDs), or response format. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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, efficient sentence with zero wasted words. It front-loads the core purpose ('Fetch a specific tweet') and avoids redundancy, making it easy to parse quickly.
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 low complexity (single parameter, no output schema) and high schema coverage, the description is minimally adequate. However, it lacks context on usage guidelines and behavioral traits, which are important for an agent to invoke it correctly. Without annotations or output schema, more detail 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?
The input schema has 100% description coverage, with the 'id' parameter documented as 'Tweet ID'. The description adds no additional meaning beyond this, as it only repeats 'by ID' without elaborating on format (e.g., numeric string) or constraints. With high schema coverage, the baseline score 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?
The description 'Fetch a specific tweet by ID' clearly states the action (fetch) and resource (tweet), with the qualifier 'specific' indicating it retrieves a single item. However, it doesn't explicitly differentiate from sibling tools like 'get_user_tweets' or 'search_tweets', which also fetch tweets but with different scopes.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a tweet ID), exclusions (e.g., not for bulk retrieval), or comparisons to siblings like 'get_user_tweets' (for multiple tweets by a user) or 'search_tweets' (for query-based results).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileC
Get a user's profile information
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Twitter username (without @) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe how it behaves - no information about authentication requirements, rate limits, error conditions, response format, or whether it's read-only (though implied by 'Get'). This leaves significant gaps for an agent to understand operational 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?
The description is extremely concise - a single sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded with the essential information and wastes no space on redundant details.
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 no annotations and no output schema, the description is insufficiently complete. While it states what the tool does, it doesn't provide enough context about what 'profile information' includes, how results are structured, or any behavioral constraints. The agent would need to guess about the response format and operational characteristics.
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 doesn't add any parameter information beyond what's already in the schema. However, with 100% schema description coverage and only one well-documented parameter ('Twitter username without @'), the schema provides adequate documentation. The baseline score of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('a user's profile information'), making the purpose immediately understandable. It doesn't specifically differentiate from siblings like 'get_followers' or 'get_following', which also retrieve user-related data, but the focus on 'profile information' provides reasonable 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 no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over other user-related tools like 'get_followers' or 'get_user_tweets', nor does it specify any prerequisites or constraints for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_tweetsC
Fetch tweets from a specific user
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Twitter username (without @) | |
| count | No | Number of tweets to fetch (1-200) | |
| includeReplies | No | Include replies in results | |
| includeRetweets | No | Include retweets in results |
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 of behavioral disclosure. It states the action ('fetch') but doesn't cover critical aspects like rate limits, authentication needs, pagination, error handling, or what the output looks like (e.g., tweet format, ordering). For a tool with no annotation coverage, this leaves significant gaps in understanding its 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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.
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 complexity of fetching tweets (involving parameters like count and filters) and the lack of annotations and output schema, the description is incomplete. It doesn't address output format, error cases, or behavioral constraints, leaving the agent with insufficient context to use the tool effectively beyond basic parameter input.
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 clear documentation for all parameters (username, count, includeReplies, includeRetweets). The description adds no additional parameter semantics beyond what the schema provides, such as explaining interactions between parameters or usage tips. This meets the baseline of 3 since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Fetch tweets from a specific user' clearly states the verb (fetch) and resource (tweets from a user), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'search_tweets' or 'get_tweet_by_id', which also retrieve tweets but with different scopes or filters.
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 no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like retrieving a user's timeline versus searching across users, or how it differs from 'get_user_profile' for user data. Without such context, the agent must infer usage 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.
grok_chatC
Chat with Grok via Twitter
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message to send to Grok | |
| conversationId | No | Optional conversation ID for continuing a conversation | |
| returnSearchResults | No | Whether to return search results | |
| returnCitations | No | Whether to return citations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Chat with' implies an interactive conversation, it doesn't disclose important behavioral traits such as authentication requirements, rate limits, whether this initiates a new conversation or continues an existing one, or what the typical response format looks like. The description is too minimal for a tool that likely involves API calls and conversation management.
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 at just four words, with zero wasted language. It's front-loaded with the core purpose and doesn't contain any unnecessary elaboration. This is an example of efficient communication.
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 that this is a chat tool with 4 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what kind of responses to expect, how conversations are managed, or any behavioral characteristics. For a tool that likely involves complex interaction patterns, more context is needed.
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 100% description coverage, so all parameters are documented in the schema itself. The description doesn't add any additional meaning or context about the parameters beyond what's already in the schema descriptions. This meets the baseline expectation when schema coverage is complete.
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 ('Chat with') and target ('Grok via Twitter'), providing a specific verb+resource combination. However, it doesn't differentiate this tool from potential sibling tools that might also involve interaction with Grok or Twitter's chat features, which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate compared to other Twitter interaction tools like 'send_tweet' or 'search_tweets', nor does it specify any prerequisites or context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkB
Check the health of the Twitter MCP server
| 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 full burden for behavioral disclosure. It states what the tool does but doesn't describe what 'health' means (server status, API availability, rate limit status), what the response format might be, or whether this has any side effects. The description is minimal beyond the basic purpose.
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, clear sentence that states the essential purpose without any unnecessary words. It's perfectly front-loaded and wastes no space, making it ideal 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 zero-parameter diagnostic tool with no output schema, the description provides the basic purpose but lacks important context about what 'health' entails and what information the check returns. It's minimally adequate but leaves significant gaps in understanding the tool's behavior and output.
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 has zero parameters with 100% schema description coverage, so the schema fully documents the parameter situation. The description appropriately doesn't discuss parameters since none exist, earning a baseline score of 4 for not creating confusion about non-existent 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 clearly states the action ('Check') and target ('health of the Twitter MCP server'), making the purpose immediately understandable. It doesn't differentiate from siblings, but that's reasonable since this is a unique administrative tool among Twitter API functions.
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 no guidance on when to use this tool versus alternatives. It doesn't mention whether this should be used for monitoring, troubleshooting, or as a prerequisite for other operations, nor does it reference any sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
like_tweetC
Like a tweet
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Tweet ID to like |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Like a tweet' implies a write operation that modifies tweet state, but it doesn't disclose behavioral traits such as authentication requirements, rate limits, idempotency, or error handling. For a mutation tool with zero annotation coverage, this is inadequate.
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 just three words, front-loading the core action and resource without any waste. Every word earns its place, making it efficient and easy to parse.
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 this is a mutation tool with no annotations, no output schema, and 1 parameter, the description is incomplete. It lacks crucial context like return values, error cases, or behavioral implications. For a tool that modifies data, more information is needed for safe and effective use.
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 100% description coverage, with the 'id' parameter fully documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate when the schema does all 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?
The description 'Like a tweet' clearly states the action (like) and resource (tweet), making the purpose immediately understandable. It distinguishes from siblings like 'retweet' or 'quote_tweet' by specifying a different interaction type. However, it doesn't explicitly contrast with all siblings (e.g., 'send_tweet'), keeping it from a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), when not to use it, or how it differs from similar actions like 'retweet'. With multiple sibling tools for tweet interactions, this lack of context is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_tweetC
Quote a tweet
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Quote content (max 280 characters) | |
| quotedTweetId | Yes | ID of tweet to quote | |
| media | No | Media attachments (optional, max 4 images or 1 video) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but provides almost none. 'Quote a tweet' implies a write operation but doesn't disclose any behavioral traits: no mention of authentication requirements, rate limits, whether this creates a public post, what happens on success/failure, or any side effects. This is inadequate for a tool that presumably posts content to a social platform.
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 maximally concise at just three words with zero wasted language. It's front-loaded with the essential action and resource. Every word earns its place, making it immediately scannable and understandable without unnecessary elaboration.
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 this is a write operation with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what happens after quoting (e.g., returns a tweet ID, posts publicly), doesn't mention authentication or permission requirements, and provides no behavioral context. For a social media posting tool, this leaves critical gaps in understanding how to use it effectively.
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 fully documents all three parameters (text, quotedTweetId, media). The description adds no additional meaning about parameters beyond what's in the schema. The baseline score of 3 reflects adequate coverage through the schema alone, though the description contributes nothing extra.
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 'Quote a tweet' clearly states the verb ('quote') and resource ('a tweet'), making the purpose immediately understandable. It distinguishes this from siblings like 'retweet' or 'send_tweet' by specifying the quote action rather than simple reposting or original posting. However, it doesn't explicitly mention what quoting entails (embedding another tweet with commentary), which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when quoting is appropriate compared to retweeting, sending a new tweet, or other sibling tools. There's no information about prerequisites, context, or exclusions for using this functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retweetC
Retweet a tweet
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Tweet ID to retweet |
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 of behavioral disclosure. While 'retweet' implies a write/mutation operation, the description doesn't specify whether this is reversible, what permissions are needed, if there are rate limits, or what happens on success/failure. This leaves significant gaps for an agent to understand the tool's 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, clear sentence with zero wasted words. It's appropriately sized for a simple tool and front-loaded with the essential action, making it highly efficient.
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 this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like authentication needs, error conditions, or what the tool returns, which are critical for an agent to use it correctly in context with sibling 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 input schema has 100% description coverage, with the 'id' parameter clearly documented. The description doesn't add any additional meaning beyond what the schema provides (e.g., it doesn't explain tweet ID format or constraints), so it meets the baseline score when schema coverage is high.
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 ('retweet') and resource ('a tweet'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'quote_tweet' or 'like_tweet' which are also tweet interaction tools, so it doesn't reach the highest score.
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 no guidance on when to use this tool versus alternatives like 'quote_tweet' or 'like_tweet', nor does it mention any prerequisites (e.g., authentication requirements, rate limits, or whether the user can retweet their own tweets). It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tweetsC
Search for tweets by keyword
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| count | No | Number of tweets to return (10-100) | |
| searchMode | No | Search mode: Top, Latest, Photos, or Videos | Top |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions searching by keyword but doesn't disclose behavioral traits like rate limits, authentication requirements, pagination, result format, or whether it's read-only/destructive. For a search tool with zero annotation coverage, this leaves significant gaps in understanding how 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?
The description is a single, efficient sentence with zero waste—'Search for tweets by keyword' is front-loaded and directly conveys the core purpose. Every word earns its place, making it highly concise and well-structured.
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 annotations, no output schema, and a search tool with potential complexity (e.g., result formatting, limits), the description is incomplete. It lacks context on authentication, rate limits, return values, or error handling, which are crucial for an AI agent to use it effectively. It's minimal but insufficient for full understanding.
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 fully documents parameters (query, count, searchMode). The description adds no additional meaning beyond implying keyword-based search, which aligns with the 'query' parameter but doesn't provide extra context like syntax examples or search scope. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search for') and target resource ('tweets'), with the specific mechanism ('by keyword'). It distinguishes from siblings like 'get_tweet_by_id' (specific ID lookup) and 'get_user_tweets' (user-specific retrieval). However, it doesn't explicitly contrast with other search-like siblings (none exist in the list), so it's not a perfect 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), when not to use it (e.g., for user-specific tweets), or compare to siblings like 'get_user_tweets' for user-focused retrieval. Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_tweetC
Post a new tweet
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Tweet content (max 280 characters) | |
| replyToTweetId | No | ID of tweet to reply to (optional) | |
| media | No | Media attachments (optional, max 4 images or 1 video) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Post a new tweet' implies a write operation but reveals nothing about authentication requirements, rate limits, error conditions, or what happens when posting succeeds/fails. For a mutation tool with zero annotation coverage, this is inadequate.
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 maximally concise at just three words. Every word earns its place - 'Post' specifies the action, 'new' distinguishes from other tweet operations, and 'tweet' identifies the resource. No wasted words or unnecessary elaboration.
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 is insufficient. It doesn't address what happens after posting, what permissions are required, or how to handle errors. The combination of write operation + missing structured data demands more descriptive context than 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 100%, so the schema already fully documents all three parameters. The description adds no additional parameter information beyond what's in the schema. This meets the baseline expectation when schema coverage is complete.
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 'Post a new tweet' clearly states the verb ('Post') and resource ('tweet'), making the tool's purpose immediately understandable. However, it doesn't distinguish this from sibling tools like 'quote_tweet' or 'send_tweet_with_poll', which also involve posting tweets with different characteristics.
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 no guidance on when to use this tool versus alternatives. There are multiple tweet-posting siblings (quote_tweet, send_tweet_with_poll) with no indication of when this basic tweet tool is preferred over those specialized versions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_tweet_with_pollC
Post a tweet with a poll
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Tweet content (max 280 characters) | |
| replyToTweetId | No | ID of tweet to reply to (optional) | |
| poll | Yes | Poll configuration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention authentication requirements, rate limits, whether the tweet is public/private, error conditions, or what happens after posting (e.g., returns tweet ID). This is inadequate 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?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded with the core functionality, though it could benefit from additional context.
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 is incomplete. It doesn't explain what happens after posting (success response, error handling), authentication needs, or platform-specific constraints (e.g., Twitter/X API limits). The 100% schema coverage helps but doesn't compensate for missing behavioral 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 100%, providing detailed parameter documentation. The description adds no additional parameter semantics beyond implying 'poll' is required, which is already in the schema. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Post a tweet with a poll' clearly states the action (post) and resource (tweet with poll), distinguishing it from sibling tools like 'send_tweet' (which lacks poll functionality). However, it doesn't specify the platform (e.g., Twitter/X) or fully differentiate from 'quote_tweet' which also posts tweets.
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 is provided on when to use this tool versus alternatives like 'send_tweet' (for tweets without polls) or 'quote_tweet' (for quoting existing tweets). The description lacks any context about prerequisites, constraints, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
- First observed
follow_user - First observed
get_followers - First observed
get_following - First observed
get_tweet_by_id - First observed
get_user_profile - First observed
get_user_tweets - First observed
grok_chat - First observed
health_check - First observed
like_tweet - First observed
quote_tweet - First observed
retweet - First observed
search_tweets - First observed
send_tweet - First observed
send_tweet_with_poll
TDQS
Every tool has a clearly distinct purpose with no ambiguity. Each tool targets a specific Twitter action (like, retweet, quote, follow) or data retrieval operation (get followers, get tweets, search), and the descriptions make their unique functions immediately apparent. There is no overlap that would cause confusion or misselection.
The naming is mostly consistent with a clear verb_noun pattern (e.g., follow_user, get_followers, like_tweet), but there are minor deviations. For example, 'grok_chat' and 'health_check' follow the pattern but stand out as non-core Twitter actions, and 'send_tweet' and 'send_tweet_with_poll' could be more aligned (e.g., 'post_tweet'). Overall, the naming is readable and predictable.
With 14 tools, this is well-scoped for a Twitter client server, covering core social media interactions and data access. Each tool earns its place by addressing a specific need, such as posting, liking, searching, or retrieving user information, without being overly bloated or too sparse for the domain.
The tool set provides comprehensive coverage for Twitter operations, including CRUD-like actions (send, like, retweet) and data retrieval (get tweets, search, profile). Minor gaps exist, such as no tools for deleting tweets, managing lists, or handling direct messages, but agents can work around these with the available tools for core workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
X (formerly Twitter) posts, profiles, and search for AI agents. Free key, self-minted, no signup.
Twitter/X read-only MCP server — 12 tools: search, users, tweets, followers, timelines, trends.
Twitter (X) API alternative for AI agents: tweet search, profiles, followers. $0.0002 per result.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI to interact with Twitter, allowing functions like searching tweets, comparing sentiments across accounts, and retrieving timeline content.MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI models and applications to interact directly with Twitter/X, providing capabilities to create posts, reply to tweets, retrieve user data, and manage account actions.1711MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with Twitter functionality using cookie-based authentication, allowing for timeline access, tweet management, user information retrieval, and search capabilities.16-
- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server that enables programmatic interaction with Twitter API, allowing users to post tweets, search for content, and retrieve user timelines through standardized MCP tools.19MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryanmac/agent-twitter-client-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server