TwitterAPIs について
TwitterAPIs は、Twitter/X のデータ取得やアカウント操作を必要とする開発者や Agent 向けの MCP サーバーです。TwitterAPIs REST API を通じて幅広い読み書きツールを提供し、X の開発者アカウントではなく API キーを使用します。
主な機能
- 01投稿とユーザーアカウントの検索
- 02プロフィール、タイムライン、スレッド、リストの取得
- 03投稿とアカウント上の操作
- 04リンク済みセッションによる DM とアカウント限定データの取得
- 05返却フィールドの絞り込みとページ分割
活用シーン
- 01公開投稿やアカウントの動向を調査
- 02ユーザーのタイムラインや会話スレッドを確認
- 03リンク済み X アカウントから投稿や返信
- 04アカウント限定のブックマークや DM を取得
MCP 対応
Twitter/X の読み書き操作を MCP ツールとして公開し、各ツールを TwitterAPIs REST API のエンドポイントに対応させます。公開データの読み取りには API キーを使い、アカウント限定の読み取りと大半の書き込みにはリンク済み X セッションまたは呼び出し単位の認証情報が必要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://api.twitterapis.com/mcpclaude mcp add --transport http twitterapis-twitterapis https://api.twitterapis.com/mcp{"mcpServers":{"twitterapis-twitterapis":{"type":"http","url":"https://api.twitterapis.com/mcp"}}}Cursor で開く{"servers":{"twitterapis-twitterapis":{"type":"http","url":"https://api.twitterapis.com/mcp"}}}VS Code で開く{"mcpServers":{"twitterapis-twitterapis":{"type":"http","url":"https://api.twitterapis.com/mcp"}}}{"mcpServers":{"twitterapis-twitterapis":{"serverUrl":"https://api.twitterapis.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
@twitterapis/mcp
@twitterapis/mcp は TwitterAPIs の公式 MCP サーバーです。Claude、Cursor、Windsurf、VS Code、または任意の MCP クライアントで Twitter / X のデータを必要とする開発者や AI エージェント向けに構築されており、X の開発者アカウントは必要ありません。エージェントはツイートを検索し、プロフィール、タイムライン、フォロワー、スレッド、リストを読み取れるほか、連携した X アカウントから投稿、返信、いいね、リツイート、フォローができます。読み取りのほとんどは 1 回あたり $0.0008 で、1 回の呼び出しで約 20 件のツイートが返されるため、1,000 件あたり約 $0.04 です。ツイートの作成は $0.0016 です。新しいアカウントには、カード不要で $0.50 分の無料クレジットが付与されます。各ツールは api.twitterapis.com の 1 つの REST エンドポイントに対応し、サーバーは状態を保持しません。
インストール: https://www.twitterapis.com/signup の TWITTERAPIS_KEY を使って npx -y @twitterapis/mcp@latest を実行します
ホスト型(Claude Code):キーを貼り付けずにサインインするには、claude mcp add --transport http twitterapis https://api.twitterapis.com/mcp を実行します
ウェブサイト: https://www.twitterapis.com/mcp
クイックスタート
インストールは不要です。npx で実行します。必要なのは API キーだけです(カード不要、$0.50 分の無料クレジット付き):twitterapis.com/signup。
セットアップ
Claude Desktop
claude_desktop_config.json を編集します(設定 → 開発者 → 設定を編集):
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
Claude Desktop を再起動します。ツール選択画面に twitter_* ツールが表示されます。
Cursor
~/.cursor/mcp.json(または設定 → MCP → 新しいサーバーを追加):
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
VS Code(Copilot / エージェントモード)
ワークスペースの .vscode/mcp.json、またはユーザーレベルの MCP 設定:
{
"servers": {
"twitterapis": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
設定
| 環境変数 | 必須 | デフォルト | 用途 |
|---|---|---|---|
TWITTERAPIS_KEY | はい | (なし) | ダッシュボードの API キー |
TWITTERAPIS_BASE_URL | いいえ | https://api.twitterapis.com | API ホストの上書き |
TWITTERAPIS_TIMEOUT_MS | いいえ | 30000 | リクエストごとのタイムアウト(ミリ秒) |
ツール
116 個のツールがあります。読み取りが 70 個、書き込み操作が 46 個です。ほとんどのユーザー向けエンドポイントでは、username(@ を除いたハンドル名)または user_id を指定できます(twitter_user_likes と twitter_user_tweets_complete では user_id が必須です)。ツイート向けエンドポイントでは、id または url を指定できます。ページネーションに対応したエンドポイントは cursor を返すので、それを渡すと次のページを取得できます。すべてのデータ読み取り(常に概要全体を返す twitter_audience_summary を除く)では、fields(保持するドット区切りパスをカンマで区切って指定します。例:id,text,author.username。ページネーションとエンベロープのキーは常に保持されます)と、compact(ID、テキスト、件数、投稿者の基本情報を含む組み込みプリセットを指定する "1")も指定できます。そのため、トークン単位で料金が発生するモデルでも、読み取る内容だけにページを絞り込めます。読み取りのうち 4 つは無料のアカウント照会(twitter_account_me、twitter_account_payments、twitter_feedback_get、twitter_feedback_list)です。14 個の監視ツールと twitter_feedback_send も無料です(アカウント管理であり、従量制の読み取りではありません)。
公開データの読み取り(検索、プロフィール、ツイート、フォロワー、いいね)には、API キーだけで利用できます。アカウント専用の読み取り(ブックマーク、DM、ホームタイムライン、フォローしているユーザーのフォロワー)とほとんどの書き込み操作は、認証済みの X アカウントとして動作するため、まずキーにセッションをリンクする必要があります(リンクされていない場合は HTTP 409 が返されます)。セッションをリンクするには、x.com の Cookie を登録する(twitter_customer_session)か、ユーザー名とパスワードでログインします(twitter_user_login)。または、これらのツールのいずれかで呼び出しごとのインライン認証情報(auth_token と ct0。必要に応じて proxy_url / user_agent も指定)を渡せば、セッションを事前登録せずに、そのアカウントとして 1 回の呼び出しだけを実行できます。これにより、1 つの API キーで複数のアカウントとして操作できます。書き込み操作では、データセンターの IP アドレスから送信される書き込みを X がソフトブロックするため、proxy_url には住宅用プロキシを設定してください。各書き込みツールには readOnlyHint: false が付与されています。操作を元に戻すツール(削除、フォロー解除、いいね解除、リツイート解除、ブックマーク解除、監視/Webhook の削除)には destructiveHint: true が付与されているため、MCP クライアントは実行前に確認を促すことができます。監視ツールとフィードバックツール(以下を参照)は例外です。これらは X セッションではなく、twitterapis.com アカウントを管理するため、API キーだけで利用でき、セッションのリンクもインライン認証情報も必要ありません。
読み取り
| ツール | 機能 |
|---|---|
twitter_advanced_search | X の演算子(from:、min_faves:、since:、filter:links など)を使ってツイートを検索します |
twitter_user_search | 名前またはキーワードでユーザーアカウントを検索します |
twitter_user_info | ハンドル名から完全なプロフィールを取得します(自己紹介、各種件数、認証状況、所在地) |
twitter_user_info_by_id | 数値のユーザー ID から完全なプロフィールを取得します |
twitter_user_status | アカウントが有効、凍結、または削除済みかを確認します |
twitter_user_about | ユーザーの構造化された About オブジェクト(カテゴリ、職業・ビジネス関連のラベル、認証および本人確認のフラグ、登録日、X の「このアカウントについて」透明性パネル)を取得します |
twitter_user_about_batch | 1 回の呼び出しで最大 100 アカウント(ユーザー名または user_ids)の同じ About オブジェクトを取得します。回答が得られたアカウントごとに課金されます。国やアカウントの履歴に基づいてリストを審査する場合に便利です |
twitter_audience_summary | オーディエンスの概要を把握します。最大 100 人のフォロワーまたはリツイートしたユーザーのサンプルをもとに、国別のヒストグラムとボットである可能性が高いアカウントの割合を取得します |
twitter_user_affiliates | 組織プロフィールと提携しているアカウントを取得します |
twitter_check_follow_relationship | ID またはユーザー名で 2 つのアカウント間のフォロー関係を確認します(どちらがどちらをフォローしているか) |
twitter_check_follow_relationship_batch | 1 回の呼び出しで、あるアカウントと最大 100 個のアカウントとのフォロー関係をいずれかの方向で確認します(これらのアカウントのうち、どれがブランドをフォローしているか) |
twitter_user_tweets | ユーザーの最近のオリジナルツイートを取得します(返信を除く) |
twitter_user_tweets_and_replies | ユーザーの全タイムラインを取得します(ツイートと返信) |
twitter_user_tweets_complete | 1 回の呼び出しでユーザーのツイート履歴を大量に取得します(ページングに関する注記を参照) |
twitter_user_media | ユーザーが投稿した画像と動画を取得します |
twitter_user_mentions | ユーザーに言及している最近の公開ツイートを取得します |
twitter_user_likes | ユーザーが「いいね」したツイートを取得します(公開の「いいね」タブ) |
twitter_user_followers | ユーザーをフォローしているアカウントを取得します |
twitter_user_following | ユーザーがフォローしているアカウントを取得します |
twitter_user_followers_v2 | v2 のレスポンス形式でフォロワーを取得します(より多くのフィールド、より深いカーソルページング) |
twitter_user_following_v2 | v2 のレスポンス形式でフォロー中のアカウントを取得します(より多くのフィールド、より深いカーソルページング) |
twitter_user_verified_followers | ユーザーの認証済みフォロワーのみを取得します |
twitter_followers_you_know | 対象ユーザーのフォロワーのうち、認証済みアカウントもフォローしているアカウントを取得します |
twitter_tweet_detail | 1 件のツイートを取得します:テキスト、投稿者、指標、メディア、引用・返信のコンテキスト |
twitter_tweet_replies | ツイートへの返信を取得します |
twitter_tweet_replies_complete | 1 回の呼び出しでツイートへのすべての返信を取得します。is_complete フラグと再開用カーソルも返します |
twitter_tweet_thread | 投稿者によるスレッド全体を取得します(同じ投稿者による連続したツイート) |
twitter_tweet_retweeters | ツイートをリツイートしたアカウントを取得します |
twitter_tweet_quotes | ツイートを引用しているツイートとそのテキストを取得します。検索に基づくため、count は検索で返された件数であり、実際のツイートの quote_count ではありません |
twitter_list_members | Twitter/X リストのメンバーを取得します |
twitter_list_followers | 公開リストをフォローしているアカウントを取得します(リストのメンバーとは異なります) |
twitter_list_tweets | リストのメンバーによる投稿を取得します。検索に基づき、since/until 日付、include_replies、product(Latest/Top)で絞り込めます。リツイートは含まれません |
twitter_list_timeline | リストの X ネイティブフィードを取得します。リツイートと X 独自の並べ替え順を含みます。フィルターはなく、ページングのみ可能です |
twitter_home_timeline | 認証済みアカウントのホームタイムラインを取得します (session) |
twitter_bookmarks | 認証済みアカウントのブックマークを取得します (session) |
twitter_blocking | 認証済みアカウントがブロックしているアカウントを取得します(自分のリストのみ) (session) |
twitter_muting | 認証済みアカウントがミュートしているアカウントを取得します(自分のリストのみ) (session) |
twitter_bookmark_search | ブックマーク内を全文検索します (session) |
twitter_bookmark_folders | 認証済みアカウントのブックマークフォルダーを取得します (session) |
twitter_bookmark_folder_timeline | folder_id で指定したブックマークフォルダー内のツイートを取得します (session) |
twitter_dm_list | DM の会話(受信トレイ)を読み取り専用で取得します (session) |
twitter_dm_conversation | 1 件の DM 会話内のメッセージを読み取り専用で取得します。前のページの min_entry_id を max_id として渡すと、前のページにさかのぼれます (session) |
twitter_spaces_info | 1 件の X Space のメタデータと参加者一覧を取得します。開催中または終了済みの Space に対応します(Space の id を指定) |
twitter_community_search | キーワードで X コミュニティを検索します。コミュニティ関連ツール群で必要となる数値 ID を取得するための検索ステップです |
twitter_community_info | 数値 ID で指定した 1 件の X コミュニティを取得します:名前、件数、参加ポリシー、ルール、トピック、バナー、管理者 |
twitter_community_about | コミュニティのモデレーターとメンバーのプレビューを取得します。各項目は、_members/_moderators が返す簡易行ではなく、完全なユーザープロフィールです |
twitter_community_members | コミュニティのメンバー一覧を取得します。各行には、そのメンバーの Admin/Moderator/Member の役割が含まれます |
twitter_community_moderators | 独自の上流処理からコミュニティのモデレーターと管理者を取得します(メンバー一覧を絞り込むものではありません) |
twitter_community_tweets | コミュニティの投稿タイムラインを取得します。固定投稿は独立した pinned フィールドとして返されます |
twitter_community_memberships | 逆引き検索を行い、指定した数値の user_id が参加しているすべてのコミュニティを取得します |
twitter_creator_commentary_video | トピックについてネイティブ動画を投稿しているユーザーを調べます。検索結果の 1 ページを投稿者ごとにまとめ、動画投稿数順に並べたうえで、再生回数の中央値と合計を取得します。クリエイターごとに上位 3 件までの投稿 ID も返します |
twitter_grok_chat | X 独自の Grok に質問します。X のライブデータに基づく回答と、引用した情報源を取得します |
twitter_grok_config | 認証済みアカウントで Grok を使用できるか、選択できるモデルを確認します |
twitter_trends | 場所(country または woeid)、X Explore タブ(category)、または X が「ビジネスと金融」と分類するトレンドのみ(category=business_and_finance)を指定して、現在の人気トレンドを取得します |
twitter_trends_locations | X がトレンドを提供しているすべての場所と、それぞれの WOEID を取得します |
twitter_account_me | twitterapis.com アカウントのクレジット、使用状況、メールアドレスを取得します(無料) |
twitter_account_payments | twitterapis.com アカウントの支払い履歴を取得します(無料) |
twitter_media_status | アップロード済みの media_id の処理状況を確認します。動画または GIF を添付する前に、succeeded になるまでポーリングしてください (session) |
twitter_article_get | 告知ツイートの ID/URL を使って、公開済み記事の全文を読み取ります(公開、セッション不要) |
twitter_article_list | lifecycle(draft または published)で絞り込み、自分の記事を一覧表示します (session) |
書き込み操作 (リンク済みの X セッションが必要です)
| ツール | 説明 |
|---|---|
twitter_create_tweet | ツイートを投稿します。返信するには reply_to を、引用ツイートするには quote を設定します |
twitter_delete_tweet | 自分のツイートを1件削除します(取り消し不可) |
twitter_favorite_tweet / twitter_unfavorite_tweet | ツイートに「いいね」する/「いいね」を取り消します |
twitter_retweet / twitter_unretweet | リツイートする/リツイートを取り消します |
twitter_bookmark_tweet / twitter_unbookmark_tweet | ブックマークする/ブックマークを削除します |
twitter_follow_user / twitter_unfollow_user | user_id または username でユーザーをフォローする/フォローを解除します(どちらか一方のみ) |
twitter_dm_send | 数値の recipient_id でユーザーにダイレクトメッセージを送信します |
twitter_list_create | セッションが所有する Twitter/X リストを作成します(name、任意で description / is_private) |
twitter_list_add_member / twitter_list_remove_member | 自分が所有するリストにアカウントを追加する/削除します。書き込みが反映された証拠として member_count が返されます |
twitter_community_join / twitter_community_leave | 数値の community_id で X コミュニティに参加する/退会します。モデレーターの承認が必要なコミュニティでは 409 join_requires_approval が返され、参加リクエストは送信されません。拒否された操作には課金されません |
twitter_media_upload | base64 形式の画像をアップロードし、twitter_create_tweet で使う media_id を返します |
twitter_update_profile | 自分の名前、自己紹介、所在地、リンクを変更します。部分更新です。省略したフィールドは現在の値が保持され、空文字列を指定するとその項目がクリアされます |
twitter_update_avatar | 自分のプロフィール画像を置き換えます。URL や media_id ではなく、base64 形式の画像バイト列を image に指定します。元に戻すことはできず、X に履歴は残りません |
twitter_update_banner | 自分のヘッダー画像を置き換えます。URL や media_id ではなく、base64 形式の画像バイト列を banner に指定します。元に戻すことはできず、X に履歴は残りません |
下書きと予約投稿 (リンク済みの X セッションが必要です)
下書きは非公開で、投稿されることはありません。予約投稿は、先にキャンセルしない限り execute_at に公開投稿されます。どちらの一覧も、自分のアカウントの内容のみを読み取ります。
| ツール | 説明 |
|---|---|
twitter_draft_create | アカウントに非公開の下書きを保存します。投稿はされません |
twitter_draft_edit | id で下書きを1件指定し、その内容を置き換えます。送信したフィールドが下書きの内容になります |
twitter_draft_delete | id で下書きを削除します。公開されたことはないため、取り消される投稿はありません |
twitter_draft_list | 各下書きの text と thread_truncated を含む、自分の下書き一覧を返します |
twitter_scheduled_create | 将来の execute_at に投稿を予約します。単位はエポック秒で、ミリ秒ではありません |
twitter_scheduled_delete | 投稿前に保留中の予約投稿をキャンセルします |
twitter_scheduled_list | 保留中の予約投稿キューを返します。execute_at はエポック秒で返されます |
どちらの一覧ツールも partial: true を返すことがあります。これは、X からの応答は読み取られたものの、完全には解釈できなかったことを意味します。空の一覧と同じではありません。正常に読み取れた場合、このフラグはまったく含まれません。そのため、partial がなく配列が空なら、予約投稿も下書きも本当にありません。
記事 (X の長文投稿機能「Notes」。書き込みにはリンク済みの X セッションが必要です)
| ツール | 説明 |
|---|---|
twitter_article_create | 新しい記事の下書きを開始し、その id を返します |
twitter_article_update_title | 下書きまたは公開済み記事のタイトルを設定します |
twitter_article_update_cover_media | アップロード済みの画像を記事のカバー画像として添付します(twitter_media_upload の media_id) |
twitter_article_update_content | 下書きまたは公開済み記事の本文を置き換えます(自分で作成した Draft.js の content_state を指定) |
twitter_article_publish | 下書きを公開し、実際に公開される告知ツイートを投稿します(完全には取り消せません) |
twitter_article_unpublish | 公開済みの記事を下書きに戻します(告知ツイートは残ります) |
twitter_article_delete | 記事を削除します(下書き:完全削除、公開済み:非公開にして告知ツイートを削除)。取り消し不可です |
上記の twitter_article_get と twitter_article_list も参照してください。
モニタリング (新しい投稿の Webhook 配信。無料、従量課金なし)
X アカウントを監視して、新しい投稿があったらポーリングの代わりに、HMAC 署名付きでご自身の HTTPS エンドポイントへプッシュ配信します。まず Webhook を登録してからモニターを作成してください。監視対象のハンドルから新しい投稿があるたびに、ご自身のアカウントに登録されているすべての有効な Webhook(または webhook_ids で指定した一部)に配信されます。モニターと Webhook の CRUD はアカウント管理であり、従量課金対象の Twitter 読み取りではないため、以下のツールはすべて無料です。
| ツール | 機能 |
|---|---|
twitter_monitor_create | X アカウント(handle)の新しい投稿の監視を開始します |
twitter_monitor_list | ご自身のアカウントにあるすべてのモニターを一覧表示します |
twitter_monitor_update | モニターを一時停止/再開するか、webhook_ids の制限を変更します |
twitter_monitor_delete | モニターを停止して削除します(取り消し不可) |
twitter_monitor_health | 1 つのモニターのステータス、劣化フラグ、ポーリング間隔、カーソル位置を表示します |
twitter_monitor_account_health | アカウント全体の概要を表示します。サービスステータス、有効/一時停止中のモニター数、過去 24 時間の配信結果数を 1 回の呼び出しで取得します |
twitter_monitor_deliveries | 検知と配信のレイテンシを含む、すべてのモニターにわたる最近の配信イベントを表示します |
twitter_x_user_stream_add_user | x_user_stream 形式のエンベロープを使用する、twitter_monitor_create の互換ドロップインです |
twitter_x_user_stream_remove_user | x_user_stream 形式のエンベロープを使用する、twitter_monitor_delete の互換ドロップインです |
twitter_x_user_stream_list_users | x_user_stream 形式のエンベロープを使用する、twitter_monitor_list の互換ドロップインです |
twitter_monitor_webhook_create | HTTPS 配信 URL を登録します。HMAC 署名シークレットは一度だけ返されます |
twitter_monitor_webhook_list | ご自身のアカウントに登録されているすべての Webhook を一覧表示します |
twitter_monitor_webhook_delete | ID で Webhook をソフト削除します(呼び出し元側からの取り消し不可) |
twitter_monitor_webhook_test | Webhook に署名付きテストイベントを今すぐ同期的に 1 件送信します |
twitter_monitor_webhook_redrive | エンドポイント停止中にデッドレターキューに入った配信を、古いものから順に再送します |
フィードバック (セッションを離れずに twitterapis.com チームへバグや不足を報告できます。無料)
Claude Code 独自のフィードバックツールをモデルにしています。呼び出しがご自身のキー、クレジット、セッション、レート制限に起因しない形で失敗した場合、対応するツールがない機能をリクエストした場合、または結果が明らかに間違っている場合、モデルはレポートをローカルキュー(~/.twitterapis/feedback-queue.json、下書きは最大 10 件。TWITTERAPIS_FEEDBACK_DIR でディレクトリを変更できます)に下書きできます。キューを確認して送信する下書きを指定するまで、何も送信されません。各レポートには、最後に失敗した呼び出しのエンドポイント、ステータス、リクエスト ID、クライアント名、このパッケージのバージョンが含まれるため、チームは追加確認なしで対応できます。返されたサーバー ID を使って twitter_feedback_get を呼び出すと、トリアージ済み、リリース済み、または却下されたかを確認できます。
| ツール | 機能 |
|---|---|
twitter_feedback_send | action: "draft"(デフォルト)はレポートをローカルにキューイングし、何も送信しません。"list" はキューを表示し、"send" は指定した下書きのみを POST /feedback に送信し、"discard" は下書きを削除します |
twitter_feedback_get | 送信済みレポートのステータス(new、triaged、shipped、declined)とチームの回答を読み取ります |
twitter_feedback_list | このアカウントがすでに送信したレポートを新しい順に一覧表示します。status/type フィルターとページ送り用の cursor を指定できます |
セッションの設定
X アカウントをキーに一度リンクすると、アカウント専用の読み取りや書き込み操作でそのアカウントとして動作します(または、呼び出しごとに auth_token/ct0 を渡してください)。
| ツール | 機能 |
|---|---|
twitter_customer_session | x.com のセッション Cookie(auth_token + ct0)をキーに登録します |
twitter_customer_session_status | 登録済みセッションを変更せずに読み取ります。解決されたアカウント、有効/無効の状態、タイムスタンプ、書き込みで使用されるエグレスの階層を確認できます。Cookie は返しません。無料 |
twitter_customer_session_delete | 保存されたセッションを取り消し、サービスから auth_token + ct0 を削除します。冪等で、無料です |
twitter_user_login | username + password(2FA の場合は totp_secret も)でログインし、セッションをキーに保存します。確認情報を返しますが、Cookie は返しません |
プレイブックと来歴
ツールに加えて、このサーバーは MCP リソースを公開しています。クライアントは resources/list で一覧表示し、resources/read で取得します。そのため、要求されるまではコンテキストを消費せず、クレジットも消費しません。
プレイブック
上記のツールを使ってエージェントが実行する短い手順です。
| URI | 内容 |
|---|---|
playbook://launch-day-monitor | ローンチをほぼリアルタイムで監視します。事前のモニターと Webhook の設定、開催中の正確な件数と拡散者、開催後の拡散者プロフィールを扱います |
playbook://competitor-follower-outreach | 別のアカウントのフォロワーから条件に合うリストを作成し、リンク済みアカウントから連絡します |
playbook://account-audit | 1 つのアカウントを再現可能な方法で読み取ります。本人情報、投稿の内訳、リーチ、エンゲージメント、観測期間が共通する数値を確認します |
playbook://link-x-account | リンクの手順を扱います。現在の状態の読み取り、方法の選択、ログインの時間制限、x.com で対処が必要な結果、セッションで利用可能になる機能を確認します |
playbook://residential-egress | 外向きアドレスの制御を扱います。プロキシ URL を指定する 3 つの場所、URL の要件、現在有効な設定元の確認方法を説明します |
来歴
provenance://tool/{tool_name} は、すでに取得した行データの出所を JSON で返します。元となる REST エンドポイントとメソッド、読み取りか書き込みか、リンク済みの X アカウントとして実行された呼び出しか API キーのみで実行された呼び出しか、呼び出しごとの料金、ドキュメント URL が含まれます。
provenance://tool/twitter_advanced_search
{
"tool": "twitter_advanced_search",
"endpoint": "GET /twitter/tweet/advanced_search",
"kind": "read",
"destructive": false,
"served_by": "the API key alone (a public read, no linked account)",
"cost": "$0.0008 per call",
"docs": "https://docs.twitterapis.com/docs/reference/search/tweet-advanced-search"
}
サービスが X から読み取った際の行単位の上流の来歴(上流キャッシュが応答したか、どのアカウントが読み取ったか)は、このパッケージが受け取るどのレスポンスにも含まれないため、推測せずに省略されています。
ブロックされた呼び出しには次の手順が返されます
キーがない、キーが拒否された、残高がない、または X セッションがないためにブロックされた呼び出しは、構造化されたペイロード(structuredContent 内とテキストへの追記)を返します。このペイロードには、順序付きの steps リスト、解決することで利用可能になる内容(unlocks)、さらにセッションが原因の場合はプレイブック URI と、再試行しても解決できない結果が含まれます。
使用例
トレンドの AI ツイートを検索する
「今週投稿された、AI エージェントに関する最も人気のあるツイートを探してください」
エージェントは次の内容で twitter_advanced_search を呼び出します。
query: "AI agents min_faves:200 since:2024-01-01"
product: "Top"
count: 20
ユーザーの最近の投稿を取得する
「@sama の最新のツイートを 10 件取得してください」
エージェントは twitter_user_tweets を呼び出します。
username: "sama"
count: 10
スレッド全体を読む
「このツイートのスレッド全体を取得してください:https://x.com/karpathy/status/1849.....」
エージェントは twitter_tweet_thread を呼び出します。
url: "https://x.com/karpathy/status/1849....."
ページネーションでフォロワーを取得する
「@openai の最初のフォロワー 100 人を一覧表示し、次にその次の 100 人を一覧表示してください」
最初の呼び出しでは、twitter_user_followers:{ username: "openai", count: 100 } を指定します
2 回目の呼び出しでは、最初のレスポンスの cursor を渡します:{ username: "openai", count: 100, cursor: "<cursor from response>" }
twitter_user_tweets_complete のページネーション
「@elonmusk のツイート履歴をすべて取得して」
twitter_user_tweets_complete はサーバー側で自動的にページネーションを行い、1 回の呼び出しで大量のデータを返しますが、1 回の呼び出しですべての履歴を取得できるとは限りません。結果は次のように読み取ってください。
- 完了を示すのは
countではなくnext_cursorです。 null 以外の場合、履歴は途中までで、続きがあります。null の場合、実際にすべて取得できています。レスポンスには、同じ状態をブール値で示すhas_moreも含まれます。 maxは最低目標であり、上限ではありません。 ページはまとまり単位で取得されるため、レスポンスには指定した数より最大 1 ページ分(<=100)多く含まれることがあります。実際の動作では、max=10で 20 件、max=50で 60 件、max=150で 161 件が返され、maxを省略した場合(サーバーのデフォルトは 200)は 201 件が返されました。count === maxだと決して想定しないでください。- 各呼び出しにはサーバー側の制限時間もあります。 そのため、リクエストしたツイート数より少ない結果しか返されていなくても、レスポンスが途中で切れることがあります。
countだけでは完了したかどうかを判断できない理由はこれが 2 つ目です。 - 料金は呼び出し 1 回あたり一律 $0.0024 で、返されるツイート数には関係ありません。そのため、少数の大きな呼び出しのほうが、多数の小さな呼び出しより低コストです。
続きを取得するには、next_cursor をそのまま cursor として渡し、null が返されるまで繰り返します。
最初の呼び出し、twitter_user_tweets_complete:{ user_id: "44196397", max: 800 }
その後、next_cursor が null 以外の場合:{ user_id: "44196397", max: 800, cursor: "<前回のレスポンスの next_cursor>" }
ブランドへの言及を監視する
「@twitterapis に言及している最近のツイートを表示して」
エージェントは twitter_user_mentions を次のように呼び出します。
username: "twitterapis"
count: 50
トラブルシューティング
HTTP 401 (invalid or missing API key) MCP クライアントの設定で TWITTERAPIS_KEY が正しく設定されており、ダッシュボードに表示されているキーと一致することを確認してください。
HTTP 402 (insufficient credits) twitterapis.com/dashboard でクレジットを追加してください。登録時には、最初の $0.50 分が無料です。
HTTP 403 (access forbidden) アカウントまたはツイートが非公開または保護されているか、ご利用のプランにこのエンドポイントが含まれていない可能性があります。
HTTP 404 (not found) ユーザー、ツイート、またはリストが削除もしくは凍結されているか、ID またはハンドルが間違っている可能性があります。
HTTP 429 (rate limited) 数秒待ってから再試行してください。このエラーが頻繁に発生する場合は、環境設定に "TWITTERAPIS_TIMEOUT_MS": "60000" を追加し、一括リクエストの間隔を空けてください。
Request failed: timed out after 30000ms デフォルトのタイムアウトは 30 秒です。大量のデータをページネーションで取得する場合は、TWITTERAPIS_TIMEOUT_MS をより大きな値(例:60000)に設定してください。
Claude/Cursor にツールが表示されない npx が PATH に含まれており、Node.js 18 以降がインストールされていること(node --version)を確認してください。MCP クライアントのログで起動エラーを確認してください。
料金
呼び出し料金は twitterapis.com アカウントに請求され、各ツールの説明に記載された価格が適用されます。標準料金は1回あたり $0.0008 です。ほぼすべての読み取り(検索、プロフィール、タイムライン、フォロワー、いいね、リスト、ブックマーク、記事)と、簡単な書き込み操作(いいね、リツイート、ブックマーク、フォロー、リストへの追加、およびそれらの取り消し、削除)が対象です。この料金では、1回の呼び出しで約20件のツイートが返されるため、1,000件のツイートの取得にかかる費用は約 $0.04 です。アカウント、フィードバック、監視のツールは無料です。また、ご自身の Cookie を使ったセッションの登録、確認、取り消しも無料です。標準料金と異なる価格が設定されているツールは次のとおりです。
| 価格 | ツール |
|---|---|
| 請求対象項目あたり $0.0008 | twitter_user_about_batch(回答したアカウントごと。100アカウントへの呼び出しでは最大 $0.08)、twitter_check_follow_relationship_batch(回答したペアごと)、twitter_audience_summary(サンプルページごと、および回答したサンプルアカウントごと) |
| 1回あたり $0.0016 | 投稿:twitter_create_tweet、twitter_list_create。DM:twitter_dm_send、twitter_dm_list、twitter_dm_conversation。プロフィール:twitter_update_profile、twitter_update_avatar、twitter_update_banner。下書きと予約投稿、および対象となる2つのリスト読み取り:twitter_draft_create、twitter_draft_edit、twitter_draft_list、twitter_scheduled_create、twitter_scheduled_list。記事の編集:twitter_article_create、twitter_article_update_title、twitter_article_update_cover_media、twitter_article_update_content、twitter_article_publish、twitter_article_unpublish |
| 1回あたり $0.0024 | twitter_user_tweets_complete、twitter_tweet_replies_complete(呼び出しごとの定額で、返されるツイート数やページ数は問いません) |
| 1回あたり $0.004 | twitter_tweet_thread、twitter_grok_chat |
| 1回あたり $0.01 | twitter_user_login(ユーザー名とパスワードを使ったログイン) |
下書きや予約投稿の削除、および記事の読み取り、一覧表示、削除は、引き続き標準料金の1回あたり $0.0008 です。最初の $0.50 は無料です。twitterapis.com/pricing をご覧ください。
リンク
- ドキュメント:docs.twitterapis.com
- ダッシュボード / API キー:twitterapis.com/dashboard
- 料金:twitterapis.com/pricing
- REST API ベース URL(MCP を使わずに直接呼び出す場合):
https://api.twitterapis.com
FAQ
X の開発者アカウントは必要ですか? いいえ。1つの TwitterAPIs キーですべてのツールを利用できます。
ツイート1,000件の取得にはいくらかかりますか? 約 $0.04 です。標準の読み取りは1回あたり $0.0008 で、1回の呼び出しで約20件のツイートが返されます。
エージェントから投稿したり、DM を送信したりできますか? はい。キーにリンクした X アカウントから実行できます。削除やフォロー解除などの取り消し操作には破壊的操作のマークが付いているため、クライアントは実行前に確認できます。
読み取り専用ですか? いいえ。70種類の読み取りツールは API キーだけで利用できます。46種類の書き込み操作(投稿、投稿の保存または予約、いいね、リツイート、フォロー、DM、メディアのアップロード、プロフィール名 / 自己紹介 / アバター / バナーの更新、リストの作成 / メンバーの追加 / メンバーの削除、コミュニティへの参加 / 退出、記事の作成 / 編集 / 公開 / 削除、監視 / webhook の作成 / 更新 / 削除、フィードバックの送信)は、リンク済みの X アカウント、または呼び出しごとのインライン認証情報を使って実行されます。ただし、アカウント管理にあたる監視 / webhook の CRUD とフィードバックには、API キーだけが必要です。
どのクライアントに対応していますか? Claude Desktop、Cursor、Windsurf、VS Code(Copilot エージェントモード)、または任意の Model Context Protocol クライアントに対応しています。
料金はどのように請求されますか? リクエストごとに請求されます。新しいキーにはカード登録不要の無料クレジット $0.50 が付与されます。料金をご覧ください。
キーやデータは保存されますか? いいえ。サーバーは状態を保持せず、呼び出しごとに API キーを転送します。
メンテナー
src/tools.js は生成ファイルです。編集しないでください。カタログは、コミット済みの次の2つの入力からビルド時に構築されます。
test/openapi.snapshot.json。公開済みの OpenAPI 仕様をベンダー化したコピーで、構造を提供します。存在するエンドポイント、各エンドポイントが受け取るパラメーター、パラメーターが必須かどうか、およびその型が含まれます。scripts/tools.overrides.mjs。手作業で作成したファイルで、仕様では表現できないすべての情報を提供します。モデルがツールの呼び出し方を決める際に読むツールと引数の説明、フィールド間のルール(「usernameまたはuser_idのいずれか一方を指定してください」)、x-*ヘッダーとして送信される呼び出しごとの認証情報の引数、書き込み/破壊的操作/JSON ボディのフラグが含まれます。各説明のCost:文とDocs:リンクは仕様から導出されます。
説明には製品に関する事実のみを記載します。ツールが返すもの、受け取るもの、コストを説明します。他のツールの名前を挙げたり、モデルに指示したりすることはありません。どのような場合にどのツールを使うか、あるツールの出力を別のツールにどう渡すか、いつフィードバックの下書きを作るかといったガイダンスは、サーバーの指示(src/server.js の INSTRUCTIONS)に記載されています。test/description-compliance.mjs は、stdio モードとホステッドモードの両方で、クライアントが一覧表示するすべてのツールとパラメーターの説明について、この要件を検証します。
仕様をベンダー化しているのは意図的です。インストール時にもサーバーの起動時にも何も取得しないため、公開パッケージは、ホスト名が引き続き応答するかどうかに依存するものではなく、固定された成果物です。
npm run openapi:refresh # re-vendor the spec, prints the route diff
npm run build # regenerate src/tools.js
npm test # gates, incl. "src/tools.js matches the generator"
npm test は、src/tools.js が手作業で編集されているか古いままの場合、カタログと実際の仕様が一致しない場合、ツール一覧とこの README が一致しない場合、または説明にモデルへの指示、他のツールの名前、隠しテキストが含まれている場合(npm run check:description-compliance)に失敗します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。