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_USERNAMETWITTER_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_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