twitr.sh
Server Details
X/Twitter reads, search, monitors and posting. Pay-per-call in USDC — no signup, no API keys.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- lnvestor/twitr-skills
- GitHub Stars
- 1
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Score is being calculated. Check back soon.
Available Tools
14 toolsx_communitiesInspect
Community info, members, moderators, tweets, and in-community search.
Guidance: kind=info (fixed price) or members|moderators|tweets|search (per-item — resultsLimit MANDATORY). id = community ID. search additionally requires q.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | search: query within the community. | |
| id | Yes | Community ID. | |
| kind | Yes | What to read. | |
| resultsLimit | No | Mandatory for members/moderators/tweets/search: max items, billed per item. |
x_communityInspect
Create, join, leave, or delete an X community as a connected account.
Guidance: PREREQUISITE: connect an X account. Acts as a handle THIS wallet owns. action=create (name, optional description) | join|leave (community_id) | delete (community_id + community_name confirmation). account required. Payment settles before the action; Idempotency-Key required.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | create: the community name. | |
| action | Yes | Which community action. | |
| account | Yes | A connected X handle owned by this wallet (no @). | |
| description | No | create: optional community description. | |
| community_id | No | join|leave|delete: the community ID. | |
| community_name | No | delete: the community name, as confirmation. |
x_composeInspect
AI tweet drafting: generate, refine, and score tweet text in a 3-step flow.
Guidance: step=generate (topic + goal required; optional tone/styleUsername/additionalContext/callToAction/mediaType/hasLink/hasMedia), refine (draft required), or score (draft required). Returns text variants with scores and suggestions. Flat floor price per call.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | ||
| step | Yes | Composer step. | |
| tone | No | ||
| draft | No | ||
| topic | No | ||
| hasLink | No | ||
| hasMedia | No | ||
| mediaType | No | ||
| callToAction | No | ||
| styleUsername | No | ||
| additionalContext | No |
x_drawsInspect
Pick crypto-random giveaway winners from a tweet's replies, with retweet/follow/filter conditions.
Guidance: tweetUrl required. Optional: winnerCount (default 1), backupCount, uniqueAuthorsOnly, mustRetweet, mustFollowUsername, filterMinFollowers, filterAccountAgeDays, filterLanguage, requiredHashtags/Keywords/Mentions. Pricing is fixed upfront from the estimatedEntries you set (default 1000, max 10000) — set it near the tweet's reply count; that number is enforced as a hard cap. Payment settles before the draw runs, so pay only when you intend to run it; a failed draw does not auto-refund (contact support). Idempotency-Key header required — retries with the same key replay the original result instead of re-charging.
| Name | Required | Description | Default |
|---|---|---|---|
| tweetUrl | Yes | Full tweet URL (https://x.com/user/status/ID). | |
| backupCount | No | ||
| mustRetweet | No | ||
| winnerCount | No | ||
| filterLanguage | No | ||
| estimatedEntries | No | Expected replies inspected — drives the fixed price (default 1000). | |
| requiredHashtags | No | ||
| requiredKeywords | No | ||
| requiredMentions | No | ||
| uniqueAuthorsOnly | No | ||
| filterMinFollowers | No | ||
| mustFollowUsername | No | ||
| filterAccountAgeDays | No |
x_extractInspect
Bulk extraction jobs (followers, replies, quotes, threads, lists, communities, spaces, people/tweet search) returned as downloadable datasets.
Guidance: tool selects the extractor (23 options). Provide the matching target: targetTweetId (reply/repost/quote/thread/article/favoriters extractors), targetUsername (follower/following/verified/post/mention/likes/media), targetCommunityId, targetListId, targetSpaceId, or searchQuery (people_search, tweet_search_extractor). resultsLimit is MANDATORY — billed per result (article_extractor bills 5× per result). Runs ASYNC: the response is a claim check {snapshot_id, status_url}; poll status_url (free, SIWX) until status=ready for the download link. Idempotency-Key header is required so retries reuse the same job.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Which extractor to run. | |
| language | No | ||
| minFaves | No | ||
| mediaType | No | ||
| sinceDate | No | ||
| untilDate | No | ||
| searchQuery | No | ||
| resultsLimit | Yes | MANDATORY: max results extracted, billed per result. | |
| targetListId | No | ||
| verifiedOnly | No | ||
| targetSpaceId | No | ||
| targetTweetId | No | ||
| targetUsername | No | ||
| targetCommunityId | No |
x_inboxInspect
Read a connected account's private feed — bookmarks, bookmark folders, notifications, and DM history.
Guidance: PREREQUISITE: connect an X account (see /api/x-accounts/connect). Reads act AS that account, so you can only read the inbox of a handle THIS wallet connected. action=bookmarks (optional folderId) | bookmark_folders | notifications (optional type) | dm_history (target_user_id required). bookmarks/notifications/dm_history are billed per item — set resultsLimit (1–10000). account (the connected handle) is required.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | notifications: optional filter (e.g. mentions). | |
| maxId | No | dm_history: paginate before this message id. | |
| action | Yes | Which inbox read to run. | |
| account | Yes | A connected X handle owned by this wallet (no @). | |
| folderId | No | bookmarks: optional folder to read. | |
| resultsLimit | No | Max items to return (billed per item); ignored for bookmark_folders. | |
| target_user_id | No | dm_history: the other party's user id. |
x_listsInspect
Read X list timelines, members, and followers.
Guidance: kind=tweets|members|followers; id = list ID. resultsLimit is MANDATORY — billed per item returned. tweets supports sinceTime/untilTime and includeReplies.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | List ID. | |
| kind | Yes | What to read from the list. | |
| sinceTime | No | ||
| untilTime | No | ||
| resultsLimit | Yes | MANDATORY: max items returned, billed per item. | |
| includeReplies | No |
x_monitorInspect
Real-time monitors on X accounts or keyword queries — prepaid by the hour; events arrive via free polling or your signed webhook.
Guidance: action=create needs username (account monitor, e.g. "vercel") OR query (keyword monitor, X search syntax, ≤512 chars), optional eventTypes — 21 available: post events (tweet.new, .reply, .retweet, .quote, .media, .link, .poll, .mention, .hashtag, .longform) for any monitor, plus profile-change events (profile.avatar/banner/name/username/bio/location/url/verified/protected/pinned_tweet/unavailable.changed) for ACCOUNT monitors only; default all applicable — and hours (1–168, default 1). action=extend needs monitorId + hours; hours append to the current expiry (total prepaid window ≤ 720h). Extend at least 5 minutes BEFORE expiry — extends inside the final 5 minutes are refused (unpaid) to keep settlement from racing the expiry teardown. PREPAID: the monitor stops and is removed at expires_at unless extended — no open-ended billing; early deletion does not refund remaining hours. Idempotency-Key header REQUIRED — retries replay the original monitor instead of re-charging (on the MCP door, retries are protected by single-use payment credentials instead). Pay with USDC on Base (x402) or Tempo (MPP); Solana is not offered for monitors (stateful resources need a recoverable owner wallet). After creation: poll events at /api/monitors/{id}/events (free — SIWX sign-in with the paying wallet; do NOT poll in a tight loop) or register an HTTPS webhook once at /api/webhooks to push signed events straight to your AI agent (Claude, OpenClaw, Hermes, or any endpoint) in real time. Manage monitors at /api/monitors (SIWX).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Monitor kind (create). Inferred from username/query when omitted. | |
| hours | No | Prepaid hours to purchase (default 1). | |
| query | No | X search query to monitor (create, type=keyword). | |
| action | Yes | Create a new monitor or extend an existing one. | |
| username | No | X handle to monitor, without @ (create, type=account). | |
| monitorId | No | Monitor to extend (extend only). | |
| eventTypes | No | Event types to receive (default: all applicable). Post events (tweet.*) work for any monitor; profile-change events (profile.*.changed) apply to ACCOUNT monitors only. |
x_profileInspect
Edit a connected account's profile — display name, bio, location, website, avatar, and banner.
Guidance: PREREQUISITE: connect an X account. Acts as a handle THIS wallet owns. action=update_profile (any of name, description, location, url) | set_avatar (media_url) | set_banner (media_url). account required. Payment settles before the change; Idempotency-Key required.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | update_profile: new website URL. | |
| name | No | update_profile: new display name. | |
| action | Yes | Which profile edit to make. | |
| account | Yes | A connected X handle owned by this wallet (no @). | |
| location | No | update_profile: new location. | |
| media_url | No | set_avatar|set_banner: public image URL. | |
| description | No | update_profile: new bio. |
x_radarInspect
Trending news and topics across regions and categories.
Guidance: Optional filters: category, region, hours (lookback), limit, source. Use report.next_cursor via after for the next page. Flat floor price per call.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor. | |
| hours | No | ||
| limit | No | ||
| region | No | ||
| source | No | Trend source filter. | |
| category | No | Topic category filter. |
x_readInspect
Fetch a single tweet, user profile, article, follow relationship, trends, media downloads, or a batch of up to 100 tweets or users.
Guidance: resource=get-tweet|get-user (id), batch-tweets|batch-users (ids array, ≤100), check-follower (source+target usernames), trends (optional woeid/count), article (tweet id), followers-you-know (id + mandatory resultsLimit), download-media (id or ids ≤50 — returns media file URLs on THIS origin; links live 7 days). Fixed-price per call/id except followers-you-know which is per-result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Tweet ID, user ID, or username (depends on resource). | |
| ids | No | batch-tweets|batch-users: up to 100 tweet IDs or user IDs/usernames. | |
| count | No | trends: number of trends to return. | |
| woeid | No | trends: region WOEID (default 1 = worldwide). | |
| source | No | check-follower: source username. | |
| target | No | check-follower: target username. | |
| resource | Yes | Which read operation to run. | |
| resultsLimit | No | Mandatory for followers-you-know: max results, billed per result. |
x_searchInspect
Search tweets with the full operator filter set, or search user profiles by keyword.
Guidance: type=search-tweets (default): q required, resultsLimit MANDATORY (billed per tweet returned). Supports the full filter set: fromUser, language, sinceDate/untilDate, mediaType, minFaves, verifiedOnly, exactPhrase, excludeWords, advancedQuery, and more. type=search-users: q required; returns one results page per call — follow report.next_cursor for the next page (each page is a separate paid call).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query (X operator syntax supported for tweets). | |
| type | No | Search tweets (default) or users. | |
| cursor | No | search-users: pagination cursor from a previous call's report.next_cursor. | |
| fromUser | No | ||
| language | No | ||
| minFaves | No | ||
| mediaType | No | ||
| sinceDate | No | YYYY-MM-DD | |
| untilDate | No | YYYY-MM-DD | |
| minReplies | No | ||
| exactPhrase | No | ||
| minRetweets | No | ||
| excludeWords | No | ||
| resultsLimit | No | search-tweets: MANDATORY max tweets returned, billed per tweet. | |
| verifiedOnly | No | ||
| advancedQuery | No | Raw X search operator string appended to q. |
x_timelineInspect
User timelines (tweets, replies, likes, media, mentions), follower graphs, and tweet engagement lists.
Guidance: kind selects the timeline: user-tweets|user-replies|user-likes|user-media|user-mentions|followers|following|verified-followers (id = user) or tweet-replies|tweet-quotes|tweet-thread|tweet-favoriters|tweet-retweeters (id = tweet). resultsLimit is MANDATORY — billed per item returned. Search-operator filters (fromUser, language, mediaType, minFaves, …) apply to tweet timelines.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | User ID/username or tweet ID (depends on kind). | |
| kind | Yes | Which timeline to fetch. | |
| language | No | ||
| minFaves | No | ||
| mediaType | No | ||
| resultsLimit | Yes | MANDATORY: max items returned, billed per item. | |
| verifiedOnly | No | ||
| includeReplies | No | ||
| includeParentTweet | No |
x_writeInspect
Post, reply, like/unlike, retweet/unretweet, follow/unfollow, DM, delete a tweet, remove a follower, or upload media — through an X account you've connected.
Guidance: PREREQUISITE: connect an X account first — POST /api/x-accounts/connect (free, SIWX) with {username, email, password, and totp_secret if the account has 2FA}; finish any email code via /api/x-accounts/confirm. Then reference the linked handle in account. Actions: post (text) | reply (text + reply_to_tweet_id) | like|unlike|retweet|unretweet|delete_tweet (target_tweet_id) | follow|unfollow (target_user_id — the NUMERIC user id, get it from x_read get-user) | remove_follower (target_user_id of the follower) | send_dm (target_user_id + text) | upload_media (media_url → returns media_id). You can only write as a handle THIS wallet connected (checked server-side; the input account is not trusted). Payment settles before the action runs and is non-refundable; a write may return status=pending_confirmation with an actionId to poll — do NOT resend. Idempotency-Key header is required so a retry replays the original result instead of acting twice.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | post|reply|send_dm: the message body. | |
| action | Yes | Which write to perform. | |
| account | Yes | A connected X handle owned by this wallet (no @). | |
| media_ids | No | send_dm: optional uploaded media ids to attach. | |
| media_url | No | upload_media: public URL of the file to upload; returns a media_id. | |
| community_id | No | post: optional community to post into. | |
| is_note_tweet | No | post: long-form note tweet. | |
| target_user_id | No | follow|unfollow|send_dm|remove_follower: the numeric X user id of the target (not the @handle). Get it from x_read get-user. | |
| target_tweet_id | No | like|unlike|retweet|unretweet|delete_tweet: the target tweet ID. | |
| reply_to_tweet_id | No | reply: the tweet being replied to. |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!