Skip to main content
Glama
ryanmac

Agent Twitter Client MCP

by ryanmac

에이전트-트위터-클라이언트-MCP

npm 버전 라이센스: MIT Node.js 버전

agent-twitter-client 패키지를 사용하여 Twitter와 통합되는 MCP(Model Context Protocol) 서버를 통해 AI 모델이 API에 직접 액세스하지 않고도 Twitter와 상호 작용할 수 있습니다.

특징

  • 인증 옵션 :

    • 쿠키 기반 인증(권장)

    • 사용자 이름/비밀번호 인증

    • Twitter API v2 자격 증명

  • 트윗 작업 :

    • 사용자의 트윗 가져오기

    • ID로 특정 트윗 가져오기

    • 트윗 검색

    • 텍스트와 미디어를 포함한 트윗 보내기

    • 여론조사 만들기

    • 트윗을 좋아요, 리트윗, 인용하세요

  • 사용자 작업 :

    • 사용자 프로필 가져오기

    • 사용자를 팔로우하세요

    • 팔로워와 팔로잉 목록을 얻으세요

  • Grok 통합 :

    • Twitter 인터페이스를 통해 Grok과 채팅하세요

    • 대화 ID로 대화 계속하기

    • 웹 검색 결과 및 인용문 가져오기

    • Grok을 통해 Twitter의 실시간 데이터에 액세스하세요

    • 참고 : Grok 기능을 사용하려면 agent-twitter-client v0.0.19 이상이 필요합니다.

Related MCP server: MCP Twitter

선적 서류 비치

빠른 시작

설치

지엑스피1

기본 사용법

  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 Desktop을 다시 시작하세요

인증 방법

쿠키 인증(권장)

{
  "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. 애플리케이션 탭 > 쿠키로 이동하세요

  4. auth_token , ct0 , twid 쿠키 값을 복사합니다.

  5. 각 쿠키에 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
}

트위터 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

사용 예

클로드에게 다음을 요청하세요.

  • "AI에 대한 트윗을 Twitter에서 검색하세요"

  • "클로드가 전하는 안녕하세요!"라는 트윗을 게시하세요.

  • "@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은 단독 Grok API조차 제공하지 않는 실시간 트위터 데이터에 접근할 수 있습니다. 즉, Grok에 다음과 같은 정보를 요청할 수 있습니다.

  • 트위터의 현재 트렌드 주제

  • 특정 주제에 대한 최근 트윗 분석

  • 트위터 사용자와 콘텐츠에 대한 정보

  • 플랫폼에서 논의되는 실시간 이벤트

예시 쿼리:

  • "지금 트위터에서 가장 인기 있는 주제는 무엇인가요?"

  • "트위터에서 AI에 대한 감정을 분석하세요"

  • "사람들은 최근 Apple 이벤트에 대해 어떻게 말하고 있나요?"

  • "오늘 논의되고 있는 인기 있는 밈코인에 대한 정보를 보여주세요"

Grok 인증 요구 사항

Grok 기능을 사용하려면 적절한 인증이 필요합니다. MCP는 두 가지 방법을 지원합니다.

  1. 쿠키 인증 (권장):

    • 쿠키는 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"]

    • 필수 쿠키는 auth_token , ct0 , twid 입니다.

  2. 사용자 이름/비밀번호 인증 :

    • 환경에서 TWITTER_USERNAME 및 TWITTER_PASSWORD 설정하세요.

    • 어떤 경우에는 Cloudflare 보호가 발생할 수 있습니다.

Grok 요금 제한

Grok에는 사용에 영향을 줄 수 있는 요금 제한이 있습니다.

  • 프리미엄이 아닌 계정: 2시간당 25개의 메시지

  • 프리미엄 계정: 더 높은 한도

MCP는 제한에 도달하면 응답으로 속도 제한 정보를 반환합니다.

Grok 사용에 대한 자세한 내용은 Grok 예제 문서를 참조하세요.

문제 해결

인증 문제

쿠키 인증 문제

쿠키 인증에 문제가 있는 경우:

  1. 쿠키 만료 : Twitter 쿠키는 일반적으로 일정 기간 후에 만료됩니다. Twitter에서 로그아웃했다가 다시 로그인하여 쿠키를 새로 고침해 보세요.

  2. 쿠키 형식 : 쿠키가 올바른 도메인을 가진 문자열의 JSON 배열로 올바르게 형식화되었는지 확인하세요.

  3. 필수 쿠키 : 필수 쿠키인 auth_token , ct0 , twid 포함했는지 확인하세요.

올바르게 포맷된 쿠키의 예:

"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 기능이 작동하지 않는 경우:

  1. 버전 요구 사항 :

    • Grok에는 agent-twitter-client v0.0.19 이상이 필요합니다.

    • 현재 패키지는 기본 기능을 위해 v0.0.18을 사용합니다.

    • 데모 스크립트의 경우 --use-local-agent-twitter-client 플래그를 사용하여 v0.0.19를 임시로 설치합니다.

  2. 인증 문제 :

    • 쿠키 형식: 쿠키가 올바른 JSON 배열 형식인지 확인하세요.

    • 쿠키 유효 기간: Twitter 쿠키는 특정 기간 후에 만료됩니다.

    • Cloudflare Protection: 사용자 이름/비밀번호 인증이 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 : 모든 로그 메시지를 포함합니다.

자세한 오류 정보는 이 로그에서 확인하세요.

개발

필수 조건

  • 노드.js 18+

  • 엔피엠

설정

  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 남용을 방지하기 위해 속도 제한을 구현합니다.

  • 콘텐츠 검증 : 악의적인 사용을 방지하기 위해 게시하기 전에 모든 콘텐츠를 검증합니다.

특허

MIT

Available Tools

14 tools
follow_userC

Follow a Twitter user

NameRequiredDescriptionDefault
usernameYesUsername to follow (without @)

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 must disclose behavioral traits. It only states 'Follow a Twitter user,' with no mention of idempotency (safe to call again?), effects (e.g., rate limiting, notification), or error states (e.g., user not found). Significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence, but lacks structure (e.g., no paragraphs or bullet points). Given the simplicity, it is not overly wasteful, but could be improved by adding a brief note on behavior.

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 simple action with one parameter and no output schema, the description is minimal and lacks context about return value, error handling, and side effects. More completeness is needed to guide an AI agent 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 coverage is 100% with one parameter 'username' described as 'Username to follow (without @).' The description adds no additional meaning beyond the schema, so 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?

Description clearly states the action ('Follow') and resource ('a Twitter user'), making the purpose immediately understandable. However, it could be slightly more specific about the expected input (username format), though the schema already provides that.

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 on when to use this tool versus alternatives (e.g., if already following, or when to use other social actions like like_tweet). No mention of prerequisites (e.g., authentication) or context. Lacks explicit usage context.

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

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

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must fully disclose behavior. It only states 'Get a user's followers' without mentioning pagination, rate limits, authentication requirements, or what happens if count exceeds the allowed range.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no wasted words, but it is overly minimal. It could include more detail without becoming verbose, so it is adequate but not excellent.

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 output schema and no annotations, the description should explain return format, pagination, or handling of large follower lists. The current description is insufficient for an agent to fully understand the tool's capabilities.

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 already provides descriptions for both parameters (userId and count) with 100% coverage. The description 'Get a user's followers' adds no additional meaning beyond what the schema conveys, meeting the baseline for full schema coverage.

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 'Get a user's followers', indicating the verb and resource. However, it does not distinguish from the sibling tool 'get_following', which gets users the user follows. A brief note on the difference would improve clarity.

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 usage guidelines are provided. The description does not mention when to use this tool versus alternatives like 'get_following', nor does it specify prerequisites or context.

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

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

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits such as authentication requirements, rate limits, pagination behavior, or the structure of returned data. The agent receives no insight beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (three words), but this brevity sacrifices essential context. While not verbose, it is not adequately structured to convey important details such as return format or usage constraints.

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 there is no output schema and no annotations, the description should compensate with more context. It fails to explain what the response contains (e.g., list of user objects or IDs), pagination, or error cases. The tool's purpose is simple but incomplete for an AI agent to invoke confidently.

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 for both parameters (userId and count), so the schema already explains their meaning. The tool description adds no additional semantics beyond what the schema provides, meeting the minimum baseline of 3.

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 'Get users a user is following' clearly states the action (get) and resource (users a user is following). It is specific enough to convey the basic purpose, though it does not differentiate from the sibling tool 'get_followers' which retrieves the reverse relationship.

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 'get_followers'. There is no mention of prerequisites, context, or scenarios where this tool is appropriate or when to choose another.

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

NameRequiredDescriptionDefault
idYesTweet ID

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 must convey behavioral traits. 'Fetch' implies a read operation, but it does not disclose rate limits, authentication needs, error handling for non-existent tweets, or any side effects. The description is too brief to give full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only 6 words, highly concise. It is front-loaded with the key action and resource. However, it could be slightly improved by structuring with additional context without becoming wordy.

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 simple tool with one parameter and no output schema, the description is minimally adequate. It states the basic purpose but omits details about return format, error conditions, or any special behavior. There is room for improvement.

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 coverage is 100% with the 'id' parameter described as 'Tweet ID'. The description does not add any further meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description uses 'Fetch a specific tweet by ID' which clearly specifies the verb (fetch) and resource (tweet by ID). It distinguishes this tool from siblings like search_tweets or get_user_tweets that operate on multiple tweets or by different criteria.

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 does not provide any guidance on when to use this tool versus alternatives. It only implies usage when a specific tweet ID is known, but lacks explicit when-not conditions or comparisons to sibling tools like search_tweets.

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

NameRequiredDescriptionDefault
usernameYesTwitter username (without @)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states 'Get', implying a read operation, but does not mention authentication, error cases, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the purpose. However, it sacrifices detail for brevity.

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?

Without an output schema, the description should hint at return values, but it only says 'profile information', which is vague. For a simple tool, this is insufficient.

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 coverage is 100% with one parameter clearly described in the schema. The description adds no extra meaning beyond what the schema already provides, so baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description states it gets a user's profile information, which is clear but vague. It does not differentiate from sibling tools like get_user_tweets or get_followers, which also relate to user data.

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. There is no mention of prerequisites, context, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_tweetsB

Fetch tweets from a specific user

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

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description only says 'Fetch tweets'. It does not disclose rate limits, pagination behavior, sorting order, or whether the tool respects privacy settings. Adds minimal behavioral context beyond the name.

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?

Single sentence with no excess words. Perfectly concise.

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?

No output schema, and description lacks details on return format, error handling, or limitations (e.g., max tweets beyond count). For a tool with 4 params and moderate complexity, 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?

Input schema covers 100% of parameters with descriptions. The tool description adds no extra info beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states 'Fetch tweets from a specific user', which is a specific verb-resource pair. It disambiguates from sibling tools like search_tweets (keyword search) and get_tweet_by_id (single tweet).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies fetching all tweets of a user, but does not mention exclusions or when to prefer follow_user, get_followers, etc.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

grok_chatB

Chat with Grok via Twitter

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

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclosure behavioral traits, but it only states 'Chat with Grok via Twitter' without mentioning authentication, side effects, or the nature of the interaction (e.g., AI response).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded and efficient. While it is not verbose, it could include slightly more context without sacrificing conciseness.

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 chat tool with no output schema or annotations, the description is too sparse. It does not explain how conversationId, returnSearchResults, or returnCitations work, leaving the agent with insufficient information to use the tool 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 coverage is 100%, so parameters are already fully documented in the input schema. The description adds no additional meaning beyond what the schema provides, earning a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description 'Chat with Grok via Twitter' clearly specifies the action (chat) and the resource (Grok), distinguishing it from sibling tools that focus on Twitter-centric actions like sending tweets or searching.

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 (e.g., send_tweet, search_tweets). There is no mention of prerequisites or appropriate contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

health_checkA

Check the health of the Twitter MCP server

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states 'check the health' without explaining what constitutes health, whether the tool is read-only, what the response contains, or if it has any side effects. This is insufficient for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of one short sentence. It is front-loaded and easy to parse, but could benefit from slightly more detail without becoming verbose.

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 has no parameters, no output schema, and a simple purpose, the description is adequate but not fully complete. It does not explain what the health check entails or what the output indicates, which is important for a diagnostic tool.

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 no parameters, so schema description coverage is 100% (empty). The description adds no parameter info, but none is needed. Baseline 4 is appropriate for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose: 'Check the health of the Twitter MCP server'. It uses a specific verb ('check') and resource ('health'), and is unambiguous. No sibling tool serves a similar purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. However, given it's the only health check tool, usage is implied: use before other operations to verify server status. No exclusions or alternatives mentioned.

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

NameRequiredDescriptionDefault
idYesTweet ID to like

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool performs a 'like' action (a write operation), but with no annotations, it fails to mention authentication needs, idempotency, side effects, or errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, but it is too brief; it could include more information without losing conciseness.

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 simple one-parameter tool with no output schema or annotations, the description lacks sufficient completeness, e.g., whether liking is idempotent or requires specific permissions.

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 schema covers the only parameter (id) with a description, and the tool description adds no extra meaning. Baseline of 3 is appropriate given 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

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

Description 'Like a tweet' is a tautology of the tool name 'like_tweet', restating the same verb and resource without adding clarity or differentiation from sibling tools.

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 retweet or quote_tweet, nor any exclusions or context.

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

NameRequiredDescriptionDefault
textYesQuote content (max 280 characters)
quotedTweetIdYesID of tweet to quote
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. It only states the action but does not disclose any behavioral traits such as authentication requirements, rate limits, or effects (e.g., creating a new tweet).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action. It is concise but may be too terse for an agent unfamiliar with Twitter's quoting feature.

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 absence of output schema and lack of explanation about return values or error conditions, the description is incomplete. It does not address what the tool returns or how to use the parameters 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 coverage is 100% with descriptions for each parameter. The description adds no extra meaning beyond what the schema provides, so baseline 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 'Quote a tweet' clearly states the action and the resource (tweet). It distinguishes from siblings like 'retweet' (which doesn't add text) and 'send_tweet' (new tweet), but does not elaborate on what quoting entails.

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 on when to use this tool versus alternatives like retweet or send_tweet. The description does not mention any prerequisites or context for quoting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retweetB

Retweet a tweet

NameRequiredDescriptionDefault
idYesTweet ID to retweet

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only says 'retweet' with no disclosure of side effects (e.g., changes to retweet count, like counts) or authentication requirements. Minimal transparency 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?

Single sentence with no unnecessary words. Front-loaded with the action and resource. Every word adds value.

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 simple 1-param tool without output schema or nested objects, the description is minimally adequate but lacks context on limits, side effects, or expected behavior.

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 covers 100% of parameters (id is described as 'Tweet ID to retweet'). Description adds no extra meaning beyond the schema, so baseline 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 'Retweet a tweet' clearly states the verb (retweet) and resource (a tweet). It distinguishes from sibling tools like 'like_tweet' or 'quote_tweet', though it could explicitly clarify it's a simple retweet without comment.

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 on when to use retweet vs alternatives like quote_tweet or send_tweet. No mention of prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_tweetsC

Search for tweets by keyword

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 provided, so description must carry full burden. It only states 'Search for tweets by keyword' and omits behavioral traits like rate limits, return format, pagination, or that it returns a list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no extraneous information. Could be slightly more informative but remains concise.

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 3 parameters, no output schema, and no annotations, the description is too brief. It lacks details on return structure, pagination, and default behavior beyond schema fields.

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 coverage is 100%, so description adds no extra meaning. The description merely restates 'keyword' for the query parameter, which is already described in the schema.

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 'Search for tweets by keyword', specifying a verb and resource. It distinguishes from sibling tools like get_user_tweets and get_tweet_by_id by implying a global search scope.

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 on when to use this tool versus alternatives (e.g., get_user_tweets for user-specific tweets, get_tweet_by_id for single tweet). No mention of prerequisites or exclusions.

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

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, the description bears full responsibility for behavioral disclosure. It only states 'post' (implying creation), but omits details like authentication needs, rate limits, or idempotency. This is insufficient for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 4 words, with no redundancy. However, it sacrifices some clarity and completeness; a single additional sentence could improve value without harming conciseness.

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 tool has 3 parameters, no output schema, and no annotations, the description is too minimal. It fails to cover return values, error conditions, or prerequisites (e.g., authentication), leaving the agent underinformed for a nontrivial operation.

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 baseline is 3. The description adds no extra meaning beyond the schema; it does not clarify parameter usage or constraints like the 280-character limit for text (already in schema).

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?

Description clearly states the action ('Post a new tweet'), using a specific verb and resource. It distinguishes from siblings like quote_tweet, retweet, and send_tweet_with_poll by focusing on creating a new standalone tweet, but does not explicitly differentiate 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?

No guidance is given on when to use this tool versus alternatives like send_tweet_with_poll or quote_tweet. The description lacks any context for selection, which is a significant gap given the many sibling tools.

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

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?

No annotations are provided, and the description does not disclose behavioral traits such as authentication requirements, rate limits, side effects, or limitations. It only repeats the basic function without adding depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence. It is front-loaded and efficient, though it could be slightly more informative without becoming verbose.

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 absence of an output schema, the complexity of the nested poll object, and the lack of behavioral information, the description is insufficient for an agent to fully understand the tool's behavior and return value. Important context is missing.

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 for all parameters. The description does not add any additional meaning beyond what the schema already provides. Thus, baseline 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 clearly states the action 'Post a tweet' and the distinguishing feature 'with a poll'. It is specific about the resource and action, but does not explicitly contrast with the sibling tool 'send_tweet' which lacks a poll.

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 given on when to use this tool versus alternatives like 'send_tweet' or 'quote_tweet'. There are no explicit conditions, prerequisites, or exclusions mentioned.

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.

  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

Scored across 14 tools

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

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.
    7 npm
    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.
    8 npm
    MIT