xdataapi: X (Twitter) data

Read-only public X (Twitter) data: profiles, tweets, threads, followers, search. Pay per result.

Should I use this

Quality & Safety

A
Description quality
91%
Schema completeness
89%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'get_tweet' description lacks action verbin get_tweet
  • LOWTool 'get_replies' description lacks action verbin get_replies
  • LOWTool 'get_balance' description lacks action verbin get_balance

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,121Tokens (tool definitions)
~1.0 KBTypical response size
Moderate attention impact (1.66% of 128k context)

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-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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_research
Search for information about [topic] using xdataapi: X (Twitter) data
Expected tools: search_tweets
find_specific
Find [specific item] using xdataapi: X (Twitter) data
Expected tools: search_tweets
retrieve_data
Get details about [item] from xdataapi: X (Twitter) data
Expected tools: get_user
fetch_info
Fetch [information type] using xdataapi: X (Twitter) data
Expected tools: get_user
research_workflow
Search for [topic], then get detailed information about the top results using xdataapi: X (Twitter) data
Expected tools: search_tweetsget_user

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools
verifiedversion not recorded14 tools