xdataapi: X (Twitter) data
Read-only public X (Twitter) data: profiles, tweets, threads, followers, search. Pay per result.
Should I use this
Quality & Safety
Findings (3)
- LOWin get_tweet
- LOWin get_replies
- LOWin get_balance
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"xdataapi": {
"url": "https://api.xdataapi.io/mcp"
}
}
}Remote endpoints
https://api.xdataapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (14)
🟢get_user(handle, fresh)
Profile of one X user by handle. 1 credit.
Input Schema
{
"type": "object",
"properties": {
"handle": {
"type": "string",
"minLength": 1,
"maxLength": 16,
"description": "Handle, with or without @"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"handle"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_users(handles, fresh)
Profiles of up to 100 X users by handle in one call. 1 credit per profile found.
Input Schema
{
"type": "object",
"properties": {
"handles": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 16
}
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"handles"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_user_tweets(user, count, cursor, fresh)
Latest tweets of a user, newest first. 1 credit per tweet.
Input Schema
{
"type": "object",
"properties": {
"user": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Handle (with or without @) or numeric user id"
},
"count": {
"description": "Page size, 1 to 100",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"user"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_followers(user, count, cursor, fresh)
Followers of a user. 0.1 credit per profile. Not every account tier can read this; a 403 is free.
Input Schema
{
"type": "object",
"properties": {
"user": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Handle (with or without @) or numeric user id"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"user"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_follower_ids(user, count, cursor, fresh)
Numeric ids of the followers of a user, no profiles. 0.02 credit per id. Same page as get_followers, so a page read there is a cache hit here. A 403 is free.
Input Schema
{
"type": "object",
"properties": {
"user": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Handle (with or without @) or numeric user id"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"user"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_following(user, count, cursor, fresh)
Accounts a user follows. 0.1 credit per profile. Not every account tier can read this; a 403 is free.
Input Schema
{
"type": "object",
"properties": {
"user": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "Handle (with or without @) or numeric user id"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"user"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_tweets(q, product, count, cursor, fresh)
X advanced search. q takes the x.com operators. 1 credit per tweet or profile. product Latest is always available; Top may answer 403 (free).
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Query with x.com operators, e.g. \"from:x since:2026-09-01 -filter:replies\""
},
"product": {
"description": "Default Latest. People returns profiles.",
"type": "string",
"enum": [
"Latest",
"Top",
"People",
"Photos",
"Videos"
]
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"q"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_tweet(id, fresh)
One tweet by numeric id, with its author. 1 credit.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^\\d{1,25}$"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_tweets(ids, fresh)
Up to 100 tweets by numeric id in one call. 1 credit per tweet found.
Input Schema
{
"type": "object",
"properties": {
"ids": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{1,25}$"
}
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"ids"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_thread(id, cursor, fresh)
A tweet with its thread and replies; the focal tweet comes first. 1 credit per tweet returned.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^\\d{1,25}$"
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_replies(id, cursor, fresh)
Direct replies to a tweet, one page. 1 credit per reply.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^\\d{1,25}$"
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_quotes(id, count, cursor, fresh)
Tweets that quote a tweet, newest first. 1 credit per tweet.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^\\d{1,25}$"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_retweeters(id, count, cursor, fresh)
Accounts that retweeted a tweet. 0.5 credit per profile. Not every account tier can read this; a 403 is free.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^\\d{1,25}$"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "next_cursor from the previous page",
"type": "string"
},
"fresh": {
"description": "Bypass the cache. Costs 2x credits.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_balance
Credits left on this key and its rate limit. Free.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Recommended Prompts
search_tweetssearch_tweetsget_userget_usersearch_tweetsget_userCommunity
Evidence