twitterapi-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@twitterapi-mcpSearch for recent tweets about AI"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TwitterAPI MCP Server
A Model Context Protocol (MCP) server that provides access to Twitter data through the TwitterAPI.io service. This server enables Claude and other MCP clients to interact with Twitter's ecosystem without requiring Twitter developer account approval.
Features
User Information: Get detailed user profiles, followers, and following lists
Tweet Operations: Search tweets, get tweet details, replies, and user timelines
Search Capabilities: Advanced search for both tweets and users
Write Actions: Post tweets and interact with content (requires login)
Enterprise Ready: Proxy support and robust error handling
No Twitter Auth: Uses TwitterAPI.io which doesn't require Twitter developer approval
Related MCP server: Agent Twitter Client MCP
Installation
Quick Start with npx (Recommended)
npx twitterapi-mcpGlobal Installation
npm install -g twitterapi-mcpLocal Installation
npm install twitterapi-mcpConfiguration
Environment Variables
TWITTERAPI_API_KEY- Your TwitterAPI.io API key (required)PROXY_URLorHTTP_PROXY- Proxy URL for enterprise environments (optional)
Getting an API Key
Visit TwitterAPI.io
Create a free account
Get your API key from the dashboard
Set the
TWITTERAPI_API_KEYenvironment variable
Usage with Claude Desktop
Add this server to your Claude Desktop configuration:
{
"mcpServers": {
"twitterapi": {
"command": "npx",
"args": ["twitterapi-mcp"],
"env": {
"TWITTERAPI_API_KEY": "your_api_key_here"
}
}
}
}With Proxy Support
{
"mcpServers": {
"twitterapi": {
"command": "npx",
"args": ["twitterapi-mcp"],
"env": {
"TWITTERAPI_API_KEY": "your_api_key_here",
"PROXY_URL": "http://proxy.company.com:8080"
}
}
}
}Available Tools
User Information
get_user_by_username- Get user details by usernameget_user_by_id- Get user details by user IDget_user_followers- Get user's followers listget_user_following- Get list of users someone followssearch_users- Search for users by query
Tweet Operations
get_user_tweets- Get tweets from a specific usersearch_tweets- Search tweets by keywordsget_tweet_by_id- Get specific tweet detailsget_tweet_replies- Get replies to a tweet
Write Actions (Requires Login)
login_user- Login to Twitter accountcreate_tweet- Post new tweets or replies
Examples
Get User Information
// Get user by username
await get_user_by_username({ username: "elonmusk" })
// Get user followers
await get_user_followers({ username: "elonmusk", count: 50 })Search and Retrieve Tweets
// Search recent tweets
await search_tweets({
query: "artificial intelligence",
count: 20,
result_type: "recent"
})
// Get user's recent tweets
await get_user_tweets({ username: "openai", count: 10 })
// Get tweet details
await get_tweet_by_id({ tweet_id: "1234567890123456789" })Create Content (Requires Login)
// Login first
await login_user({
username: "your_username",
password: "your_password"
})
// Post a tweet
await create_tweet({ text: "Hello from MCP!" })
// Reply to a tweet
await create_tweet({
text: "Great point!",
reply_to: "1234567890123456789"
})API Limits and Pricing
TwitterAPI.io offers:
Pay-as-you-go: $0.15 per 1,000 tweets
High Performance: 1000+ requests per second
Free Trial: $0.1 in credits to start
No Monthly Fees: Only pay for what you use
Development
Building from Source
git clone https://github.com/yourusername/twitterapi-mcp.git
cd twitterapi-mcp
npm install
npm run buildRunning in Development Mode
npm run devTesting the Server
# Test with MCP client
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | node build/index.jsArchitecture
This MCP server is built with:
TypeScript: Type-safe implementation
@modelcontextprotocol/sdk: Official MCP SDK
axios: HTTP client with proxy support
Enterprise Features: Proxy support, comprehensive error handling
Project Structure
twitterapi-mcp/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript
├── package.json # Package configuration
├── tsconfig.json # TypeScript configuration
└── README.md # DocumentationError Handling
The server includes comprehensive error handling for:
API authentication failures
Rate limiting responses
Network connectivity issues
Invalid parameters
Service unavailability
Security Considerations
API keys should be stored as environment variables
Login credentials are only used for authentication, not stored
All requests use HTTPS
Proxy support for enterprise security requirements
Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
Documentation: TwitterAPI.io Docs
Issues: GitHub Issues
Twitter Support: TwitterAPI.io Support
Acknowledgments
Built on TwitterAPI.io service
Uses the Model Context Protocol
Inspired by the growing MCP ecosystem
Note: This is an unofficial MCP server for TwitterAPI.io. Make sure to comply with Twitter's Terms of Service when using this tool.
Available Tools
11 toolscreate_tweetA
Create a new tweet (requires login)
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Tweet text (max 280 characters) | |
| reply_to | No | Tweet ID to reply to (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does state the authentication requirement and that a new tweet is created, but it does not mention side effects such as publishing the tweet publicly, rate limits, or failure/return behavior. This is a moderate disclosure, not a glaring omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence contains the action, target resource, and the key precondition. There is no filler or redundancy, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter create operation with a fully described schema, the description is nearly complete: it covers the action and login prerequisite. It could mention what a successful response looks like, but the absence of an output schema and simple mutation semantics make this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the schema already documents text (max 280) and reply_to (tweet ID, optional). The description adds no parameter detail, but none is needed because the schema handles it fully, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Create') and resource ('a new tweet'), making the tool's function unambiguous. It also notes the login precondition and is clearly distinct from the sibling read/search tools, including login_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is the parenthetical '(requires login)', which implies the agent should authenticate first but does not explicitly name login_user or state when not to use this tool. The intended use is strongly implied by the name and purpose, but no explicit when/when-not guidance is provided.
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
Get a specific tweet by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| tweet_id | Yes | Twitter tweet ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral disclosure burden. It indicates a read operation with no side effects, but it does not mention authentication requirements, behavior for nonexistent or private tweets, rate limits, or response shape. This is a significant gap for a tool that may require context the schema cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is concise and easy to parse, though it borders on restating the tool name rather than adding substantial new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, single-purpose read tool, the description is minimally adequate for knowing what to call and with what argument. However, it omits useful contextual details such as authentication expectations, error cases, and when to prefer a sibling tool like search_tweets. Given the simplicity, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage of the single parameter with a clear description ('Twitter tweet ID'). The tool description adds no parameter semantics beyond restating 'by its ID', so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation (get), the resource (tweet), and the selection mechanism (by ID). It is specific enough to be distinguished from search or user-based tweet-listing siblings, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its ID' implies the tool should be used when the caller already knows the tweet ID, but it does not explicitly state when not to use it or mention sibling tools as alternatives. Usage context is clear but underdeveloped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tweet_repliesB
Get replies to a specific tweet
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of replies to retrieve (default: 10, max: 100) | |
| tweet_id | Yes | Twitter tweet ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read operation, but the description discloses no additional behavior such as authentication needs, pagination, rate limits, ordering, or what exactly constitutes a reply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler and the primary operation front-loaded. It is appropriately concise, though it could have included slightly more context without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool, this is minimally adequate for selecting the tool. However, with no annotations and no output schema, it leaves unspecified aspects like return format, ordering, pagination, and whether authentication is required, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both tweet_id and count already documented clearly, including count's default and maximum values. The description adds no extra parameter meaning beyond what the schema provides, so the schema-covered baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb-resource pair ('Get replies' + 'specific tweet') and is easily distinguishable from user-level or search endpoints. It does not explicitly name a sibling alternative like get_tweet_by_id, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to a specific tweet' implies usage when a tweet_id is already known, giving some contextual signal. However, it provides no explicit guidance about when not to use this tool or how it differs from alternatives such as get_tweet_by_id or 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_by_idA
Get Twitter user information by user ID
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Twitter user ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden, and it does convey that this is a read-only retrieval operation. However, it does not disclose authentication requirements, rate limiting, or behavior for non-existent or private users, which are relevant gaps for a live API tool. The core behavior is clear, but the description is thin on consequences and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler or repetition. The verb, resource, and lookup key are all present and front-loaded, so an agent can parse the definition quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool the description is adequate, but it leaves out what information is returned, whether authentication is needed, and what happens for unknown IDs. Since there is no output schema and no annotations, this missing context is not supplied elsewhere, so the description is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the user_id parameter is already documented as 'Twitter user ID'. The tool description simply repeats this notion ('by user ID') without adding format details, whether the ID is a numeric string, or how it relates to the returned user record. Baseline 3 applies because the schema handles the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('Twitter user information'), and lookup key ('by user ID'), which clearly distinguishes it from siblings like get_user_by_username, get_user_tweets, and get_tweet_by_id. The combination of resource and identifier leaves no ambiguity about what this tool retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by user ID' gives a clear context for when this tool applies: when the caller has the user ID rather than a username or tweet ID. It does not explicitly name alternatives or state when not to use it, but the ID-based lookup condition is enough to route an agent correctly among the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_by_usernameB
Get Twitter user information by username
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Twitter username (without @) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get', implying a read operation, but does not mention authentication requirements, rate limits, not-found behavior, private-account handling, or what fields are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It front-loads the action and the resource, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter read tool, and the purpose is clear, but there is no output schema and no behavioral detail about response format or error conditions. The description is minimally viable but leaves an agent uncertain about what the result will look like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the schema already documents that username is required and should be submitted without '@'. The description adds no additional parameter meaning beyond what the schema provides, which matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a clear resource ('Twitter user information') and a specific retrieval method ('by username'). It is immediately distinguishable from the sibling get_user_by_id, so an agent can understand what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to prefer this tool over get_user_by_id or search_users. The description implies it should be used when a username is available, but it never states this explicitly or mentions any exclusions or alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_followersC
Get followers of a specific user
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of followers to retrieve (default: 20, max: 100) | |
| username | Yes | Twitter username (without @) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals nothing about pagination, rate limits, authentication requirements, ordering, or behavior for invalid usernames. For a tool with no annotation coverage, this is a meaningful gap, though the read-only nature is at least implied by 'get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clean sentence with zero wasted words, front-loading the core action. Slightly under-specified given the complete absence of annotations, but as concisness goes, it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, more burden falls on the description. It lacks pagination expectations, auth context, and the critical contrast with get_user_following. An agent could call it, but might fetch the wrong direction or be surprised by truncation at the default count.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both username and count are documented with descriptions, including default and max for count. The tool description adds no parameter-level meaning, but per the rubric a baseline of 3 applies when the schema covers parameters thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Get followers of a specific user' states a specific verb (get), resource (followers), and scope (of a specific user). It distinguishes well from get_user_tweets, get_user_by_username, and get_user_by_id, and the direction is clear from the name vs. get_user_following, though the description itself doesn't explicitly call out that sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives. It doesn't clarify the relationship to get_user_following (incoming vs. outgoing connections), nor when search_users might be preferable. An agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_followingC
Get users that a specific user is following
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of following to retrieve (default: 20, max: 100) | |
| username | Yes | Twitter username (without @) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only states the action ('Get users') without mentioning ordering, pagination behavior, rate limits, authorization requirements, or whether the response contains full user objects. The description adds no behavioral detail beyond the tool's basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. It is not padded, but it is very brief; this makes it concise rather than appropriately detailed for more complex use cases, so a slight deduction from the top is warranted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description does not explain what the returned data looks like or how pagination via 'count' behaves. It also fails to distinguish itself from get_user_followers, making the overall context incomplete for an agent deciding whether this tool fits the task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both 'username' and 'count' already described in the schema. The description does not add any additional meaning about parameters, so the baseline of 3 is appropriate—the schema does the heavy lifting and the description is not required to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action ('Get') and a clear resource ('users that a specific user is following'), so an agent can understand the basic operation. However, it does not explicitly differentiate from the sibling tool get_user_followers, relying on the tool name to disambiguate the direction of the relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to choose this tool over alternatives. The sibling list includes get_user_followers, and the description does not mention that get_user_following is for the 'following' direction while get_user_followers is for the reverse, leaving selection partially to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_tweetsB
Get tweets from a specific user
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of tweets to retrieve (default: 10, max: 100) | |
| username | Yes | Twitter username (without @) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It only states the core action and does not mention ordering, rate limits, authentication requirements, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no redundant information. It is front-loaded and efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the schema covers parameter details and the description covers the core purpose. Though no output schema exists, the return is evident from the name and description, and no critical invocation details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters already documented including defaults, constraints, and format. The description adds no semantic value beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (get) and resource (tweets from a specific user), making the tool's function immediately understandable. It implies a user-scoped scope that distinguishes it from siblings like search_tweets, though it doesn't name alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like search_tweets or get_user_by_username. The intended context is only implied by the description, not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
login_userA
Login to Twitter account for write actions (requires username and password)
| Name | Required | Description | Default |
|---|---|---|---|
| password | Yes | Twitter password | |
| username | Yes | Twitter username or email |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose side effects and behavior, but it only says 'for write actions.' It does not explain whether login creates a session, returns an auth token, verifies credentials, or persists state, leaving important authentication-flow behavior opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler. The core purpose is front-loaded, and the credential requirement is included without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotation coverage, so the description should explain what happens after login, such as session/token behavior or expected return values. It does neither, which is a material gap for a stateful authentication tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both parameters as 'Twitter password' and 'Twitter username or email.' The description merely restates that credentials are required, adding no new semantic detail, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Login') and resource ('Twitter account'), and scopes the operation to 'write actions'. This clearly distinguishes it from all sibling read/search tools and from create_tweet, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says the tool is needed for write actions, giving the agent a clear precondition for using it before mutating operations. It does not explicitly name alternative tools or say when not to use it, but the write-action framing is sufficient context.
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 using keywords
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of tweets to retrieve (default: 10, max: 100) | |
| query | Yes | Search query for tweets | |
| result_type | No | Type of search results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Search for tweets using keywords' only states the basic operation. It does not disclose authentication requirements, rate limits, result ordering, pagination, or whether default result_type applies. The operation is likely read-only, but this is implied rather than stated, and no additional behavioral traits are revealed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly conveys the action and resource. It is front-loaded and contains no filler. While it is somewhat sparse, it earns its place as an efficient high-level summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description provides little beyond the core action. It fails to mention return value expectations, pagination, default result_type behavior, or usage context versus sibling tools. The schema covers parameters, but the overall contextual picture is incomplete for an agent deciding whether and how to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's phrase 'using keywords' adds no new meaning beyond the query parameter description already in the schema. It does not elaborate on count or result_type, but the schema fully documents them, so no deduction is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search for tweets using keywords.' It clearly says what the tool does and is distinguishable from siblings like search_users and get_user_tweets by the resource and keyword-based approach. However, it does not explicitly differentiate from alternatives, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention siblings such as search_users, get_user_tweets, or get_tweet_by_id, nor does it give any exclusions or prerequisites. The only implicit cue is 'using keywords,' which suggests keyword-based search, but no clear context or when-not-to-use advice is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_usersC
Search for Twitter users
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of users to retrieve (default: 10, max: 50) | |
| query | Yes | Search query for users |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description gives no behavioral details such as authentication requirements, rate limits, pagination, or the shape of returned data. 'Search' implies read-only behavior, but that is not explicitly disclosed, leaving the full burden on the description unfulfilled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it is so brief that it borders on restating the tool name, which slightly limits its value even though it is structurally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents parameters, but there is no output schema and no description of what a 'user' result contains or how this tool fits among the exact-lookup siblings. For a low-complexity tool this is adequate yet leaves noticeable gaps in selection and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'query' and 'count' already described in the schema. The tool description adds no additional meaning about parameters, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and resource ('Twitter users'), making the core action clear. It distinguishes itself from search_tweets by targeting users rather than tweets, but does not explicitly contrast with get_user_by_username or get_user_by_id for exact lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool versus sibling tools like get_user_by_username, get_user_by_id, or search_tweets. The agent must infer from the name that this is query-based search, which is not explicitly stated.
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.
11 tool updates
v1.0.0- First observed
create_tweet - First observed
get_tweet_by_id - First observed
get_tweet_replies - First observed
get_user_by_id - First observed
get_user_by_username - First observed
get_user_followers - First observed
get_user_following - First observed
get_user_tweets - First observed
login_user - First observed
search_tweets - First observed
search_users
TDQS
Every tool maps to a distinct resource and action: user lookup by username/ID, tweet fetching by user/ID/search/replies, follower/following lists, and auth/write. No two tools overlap in purpose.
All tools follow a consistent snake_case verb_noun pattern (get_, search_, login_, create_). The naming convention is uniform and predictable across the entire set.
With 11 tools, the set is well-scoped for a Twitter API server covering basic reads, search, and a minimal write path. Each tool has a clear purpose and the count fits comfortably in the ideal range.
The read side is well covered (user, tweets, followers, search), and create_tweet provides a write entry point. However, there are notable missing operations such as delete/update tweet, follow/unfollow, or like/retweet, leaving the write surface incomplete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Twitter/X read-only MCP server — 12 tools: search, users, tweets, followers, timelines, trends.
FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
- MysocialOAuthio.mysocial
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
1
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that enables Claude to interact with Twitter, allowing for posting tweets and searching Twitter content.2348401MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI agents to interact with Twitter without direct API access, supporting tweet operations, user interactions, and Grok AI integration.141,31032MIT
- AlicenseNot gradedqualityFmaintenanceAn enhanced Model Context Protocol server that enables Claude to interact with Twitter/X, supporting tweet posting, searching, and deletion with both OAuth 1.0a and OAuth 2.0 authentication methods.9221MIT
- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server that enables programmatic interaction with Twitter API, allowing users to post tweets, search for content, and retrieve user timelines through standardized MCP tools.19MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kinhunt/twitterapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server