Skip to main content
Glama
ryanmac

Agent Twitter Client MCP

by ryanmac

エージェント-Twitter-クライアント-MCP

npmバージョン ライセンス: MIT Node.js バージョン

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

ドキュメント

クイックスタート

インストール

# Install globally
npm install -g agent-twitter-client-mcp

# Or install locally
npm install agent-twitter-client-mcp

基本的な使い方

  1. Twitter の認証情報を使用して.envファイルを作成します (認証方法を参照)

  2. 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

詳細については、デモの README を参照してください。

ポート構成

デフォルトでは、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 にマップされ、他のアプリケーションが引き続きポート 3000 を使用しながらも、http://localhost:3001で MCP にアクセスできるようになります。

Claude Desktopでのセットアップ

  1. 次のコードを追加して、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\"]"
      }
    }
  }
}
  1. Claudeデスクトップを再起動します

認証方法

{
  "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\"]"
}

クッキーを取得するには:

  1. ブラウザでTwitterにログインする

  2. 開発者ツールを開く(F12)

  3. アプリケーションタブ > Cookie へ移動します

  4. auth_tokenct0twid Cookieの値をコピーします。

  5. 各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

これにより、さまざまな MCP 関数をテストできる REPL が起動します。

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のユニークな機能

Grok on Twitterは、スタンドアロンのGrok APIでさえもアクセスできないリアルタイムのTwitterデータにアクセスできます。つまり、Grokに以下の質問をすることができます。

  • Twitterの現在のトレンドトピック

  • 特定のテーマに関する最近のツイートの分析

  • Twitterユーザーとそのコンテンツに関する情報

  • プラットフォーム上で議論されているリアルタイムのイベント

クエリの例:

  • 「今Twitterで話題になっているトピックは何ですか?」

  • 「TwitterにおけるAIに関する感情を分析する」

  • 「最新の Apple イベントについて人々は何と言っているでしょうか?」

  • 「今日話題になっている人気のミームコインに関する情報を表示」

Grok認証要件

Grokの機能には適切な認証が必要です。MCPは次の2つの方法をサポートしています。

  1. Cookie認証(推奨):

    • クッキーは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"]

    • 必須のCookieはauth_tokenct0twidです。

  2. ユーザー名/パスワード認証:

    • TWITTER_USERNAMETWITTER_PASSWORD環境に設定する

    • 場合によってはCloudflareの保護を受ける可能性があります

Grok レート制限

Grok には使用状況に影響する可能性のあるレート制限があります。

  • 非プレミアムアカウント: 2時間あたり25件のメッセージ

  • プレミアムアカウント:上限額の引き上げ

制限に達すると、MCP は応答でレート制限情報を返します。

Grok の使用に関する詳細については、 Grok の例のドキュメントを参照してください。

トラブルシューティング

認証の問題

クッキー認証の問題

Cookie 認証で問題が発生した場合:

  1. Cookieの有効期限:TwitterのCookieは通常、一定期間後に有効期限が切れます。Twitterからログアウトして再度ログインし、Cookieを更新してみてください。

  2. Cookie の形式: Cookie が正しいドメインを持つ文字列の JSON 配列として適切にフォーマットされていることを確認します。

  3. 必須 Cookie : auth_tokenct0twidの必須 Cookie が含まれていることを確認してください。

適切にフォーマットされた Cookie の例:

"TWITTER_COOKIES": "[\"auth_token=1234567890abcdef; Domain=.twitter.com\", \"ct0=abcdef1234567890; Domain=.twitter.com\", \"twid=u%3D1234567890; Domain=.twitter.com\"]"

資格情報認証の問題

ユーザー名/パスワード認証に問題がある場合:

  1. 2 要素認証: アカウントで 2FA が有効になっている場合は、 TWITTER_2FA_SECRET入力する必要があります。

  2. アカウントのロックアウト:ログインに何度も失敗すると、アカウントがロックされる可能性があります。アカウント確認リクエストが届いているか、メールでご確認ください。

  3. キャプチャ チャレンジ: Twitter は、クライアントが自動的に処理できないキャプチャ チャレンジを表示する場合があります。

API認証の問題

API 認証の問題の場合:

  1. API キーの権限: 実行しようとしているアクションに必要な権限が API キーにあることを確認します。

  2. レート制限: Twitter API にはレート制限があり、これを超過すると障害が発生する可能性があります。

  3. API の変更: Twitter は時々 API を変更するため、互換性の問題が発生する可能性があります。

操作エラー

ツイート投稿の失敗

ツイートを投稿できない場合:

  1. コンテンツの制限: Twitter ではコンテンツ ポリシーに違反するツイートをブロックする場合があります。

  2. メディア形式の問題: メディアが適切にフォーマットされ、エンコードされていることを確認します。

  3. レート制限: Twitter では投稿できる頻度が制限されています。

検索の問題

検索が機能しない場合は:

  1. クエリ構文: 検索クエリが Twitter の検索構文に従っていることを確認します。

  2. 検索の制限: 一部の検索モードには制限があったり、特定の権限が必要な場合があります。

Grokの問題

Grok 機能が動作しない場合は:

  1. バージョン要件:

    • Grok にはagent-twitter-client v0.0.19以上が必要です

    • 現在のパッケージは基本機能にv0.0.18を使用しています

    • デモ スクリプトの場合は、 --use-local-agent-twitter-clientフラグを使用して、v0.0.19 を一時的にインストールします。

  2. 認証の問題:

    • クッキーの形式: クッキーが正しいJSON配列形式であることを確認する

    • クッキーの有効期限: Twitterのクッキーは一定期間後に期限切れになります

    • Cloudflare保護: ユーザー名/パスワード認証がCloudflareによってブロックされる可能性があります

    • プレミアム要件: Grok へのアクセスには Twitter プレミアム サブスクリプションが必要です

  3. レート制限:

    • 非プレミアムアカウント: 2時間あたり25件のメッセージ

    • エラー メッセージ:「レート制限: 制限に達しました...」

    • 解決策: レート制限がリセットされるまで待つか、プレミアムアカウントにアップグレードしてください

  4. 環境ファイルの場所:

    • デモ スクリプトの場合、資格情報がルート.envファイルではなく、 demo/.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

設定

  1. リポジトリをクローンする

git clone https://github.com/ryanmac/agent-twitter-client-mcp.git
cd agent-twitter-client-mcp
  1. 依存関係をインストールする

npm install
  1. 設定を含む.envファイルを作成します。

AUTH_METHOD=cookies
TWITTER_COOKIES=["cookie1=value1", "cookie2=value2"]
  1. プロジェクトを構築する

npm run build
  1. サーバーを起動する

npm start

環境変数

認証変数に加えて、以下を設定できます。

  • LOG_LEVEL : ログレベルを設定する(エラー、警告、情報、デバッグ)

  • NODE_ENV : 環境を設定する(開発、本番)

ドッカー

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の使用

  1. Twitterの認証情報を含む.envファイルを作成する

  2. docker-compose で実行します:

# Start the service
docker-compose up -d

# View logs
docker-compose logs -f

# Stop the service
docker-compose down

Dockerの環境変数

環境変数を Docker コンテナに渡す方法はいくつかあります。

  1. docker-compose.yml ファイル内(すでに設定済み)

  2. .env ファイル経由(docker-compose に推奨)

  3. docker run コマンドで直接実行します(上記のように)

ログの保存

docker-compose 構成には、ログ用のボリューム マウントが含まれています。

volumes:
  - ./logs:/app/logs

これにより、ログはプロジェクト フォルダー内のlogsディレクトリに保存されます。

セキュリティに関する考慮事項

  • 資格情報の保存: 資格情報は、環境変数または安全なボールトを使用して安全に保存することをお勧めします。

  • レート制限: Twitter API の不正使用を防ぐためにレート制限を実装します。

  • コンテンツの検証: 悪意のある使用を防ぐために、投稿する前にすべてのコンテンツを検証します。

ライセンス

マサチューセッツ工科大学

Available Tools

14 tools
follow_userB

Follow a Twitter user

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUsername to follow (without @)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesUser ID
countNoNumber of followers to fetch (1-200)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the verb ('Get') and 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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesUser ID
countNoNumber of following to fetch (1-200)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTweet ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesTwitter username (without @)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the verb ('Get') and 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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesTwitter username (without @)
countNoNumber of tweets to fetch (1-200)
includeRepliesNoInclude replies in results
includeRetweetsNoInclude retweets in results

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesMessage to send to Grok
conversationIdNoOptional conversation ID for continuing a conversation
returnSearchResultsNoWhether to return search results
returnCitationsNoWhether to return citations

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTweet ID to like

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesQuote content (max 280 characters)
quotedTweetIdYesID of tweet to quote
mediaNoMedia attachments (optional, max 4 images or 1 video)

TDQS

C2.7/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTweet ID to retweet

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query
countNoNumber of tweets to return (10-100)
searchModeNoSearch mode: Top, Latest, Photos, or VideosTop

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesTweet content (max 280 characters)
replyToTweetIdNoID of tweet to reply to (optional)
mediaNoMedia attachments (optional, max 4 images or 1 video)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesTweet content (max 280 characters)
replyToTweetIdNoID of tweet to reply to (optional)
pollYesPoll configuration

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus 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.

  1. 14 tool updates
    • First observedfollow_user
    • First observedget_followers
    • First observedget_following
    • First observedget_tweet_by_id
    • First observedget_user_profile
    • First observedget_user_tweets
    • First observedgrok_chat
    • First observedhealth_check
    • First observedlike_tweet
    • First observedquote_tweet
    • First observedretweet
    • First observedsearch_tweets
    • First observedsend_tweet
    • First observedsend_tweet_with_poll

TDQS

B3.3/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    17
    11
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Model 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.
    19
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryanmac/agent-twitter-client-mcp'

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