{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-x-twitter","slug":"x-twitter","name":"X (Twitter)","type":"mcp","url":"https://github.com/mbelinky/x-mcp-server","page_url":"https://unfragile.ai/x-twitter","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-x-twitter__cap_0","uri":"capability://tool.use.integration.oauth.2.0.authenticated.tweet.composition.and.publishing","name":"oauth 2.0-authenticated tweet composition and publishing","description":"Enables programmatic tweet posting with OAuth 2.0 authentication flow, supporting text content and media attachments through Twitter's v2 API with intelligent fallback to v1.1 endpoints when v2 media upload fails. Implements token refresh logic and secure credential management for long-lived authenticated sessions without requiring API keys to be stored in application code.","intents":["Post tweets programmatically from an agent or automation workflow without manual authentication","Build a bot that publishes content to Twitter on a schedule or in response to events","Integrate Twitter publishing into a larger MCP-based agent system with secure OAuth handling"],"best_for":["AI agents and LLM-powered automation systems needing Twitter integration","Teams building social media automation workflows with MCP servers","Developers migrating from REST API direct calls to MCP-based tool orchestration"],"limitations":["Rate limiting enforced per Twitter API tier — free tier limited to 300 posts/15min","Media upload fallback from v2 to v1.1 adds latency and may fail if both endpoints are rate-limited","OAuth token refresh requires network I/O and may introduce 500ms+ delays in token expiration edge cases","No built-in queue or retry logic for failed posts — caller must implement persistence"],"requires":["Twitter/X Developer Account with API v2 access","OAuth 2.0 credentials (Client ID, Client Secret, Redirect URI)","MCP client capable of handling OAuth 2.0 callback flow","Node.js 16+ runtime for the MCP server"],"input_types":["text (tweet content, max 280 characters)","media files (images, videos, GIFs as binary or file paths)","structured metadata (alt text, reply settings, visibility)"],"output_types":["structured JSON response with tweet ID, creation timestamp, and engagement metrics","error objects with rate limit headers and retry-after timing"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-x-twitter__cap_1","uri":"capability://tool.use.integration.media.attachment.handling.with.format.conversion.and.upload.optimization","name":"media attachment handling with format conversion and upload optimization","description":"Processes image, video, and GIF attachments for tweet composition by validating formats, optimizing file sizes, and uploading through Twitter's v2 media endpoint with automatic chunked upload for large files. Falls back to v1.1 media upload endpoint if v2 fails, with format-specific handling (JPEG/PNG for images, MP4/MOV for video, GIF for animations).","intents":["Attach images or videos to tweets without manually managing Twitter's media upload protocol","Automatically optimize media files to meet Twitter's size and format constraints","Handle media upload failures gracefully by retrying with alternative endpoints"],"best_for":["Agents generating visual content (screenshots, charts, generated images) for social sharing","Automation workflows that need to attach user-provided media to tweets","Systems building multi-modal content (text + image/video) for Twitter distribution"],"limitations":["v2 API media upload limited to 15MB per file; v1.1 fallback has same limit","Video processing and chunked upload adds 2-5 second latency per file depending on size","No built-in image generation or format conversion — requires pre-processed media","Animated GIFs converted to video format may lose quality or exceed size limits"],"requires":["OAuth 2.0 authenticated session (from tweet composition capability)","Media files in supported formats: JPEG, PNG, GIF, MP4, MOV","File size under 15MB (Twitter API hard limit)"],"input_types":["binary file data (image/jpeg, image/png, image/gif, video/mp4, video/quicktime)","file paths (local filesystem references)","structured metadata (alt text, media type hints)"],"output_types":["media ID (string identifier for use in tweet composition)","upload status with processing details","error details if format or size validation fails"],"categories":["tool-use-integration","image-visual"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-x-twitter__cap_2","uri":"capability://search.retrieval.tweet.search.and.retrieval.with.semantic.and.keyword.filtering","name":"tweet search and retrieval with semantic and keyword filtering","description":"Queries Twitter's v2 search API to retrieve tweets matching keyword, author, date range, and engagement criteria. Implements pagination through result sets, applies rate limiting per search tier, and returns structured tweet objects with metadata (author, engagement metrics, creation time, media references). Supports both recent tweets (last 7 days) and full-archive search depending on API tier.","intents":["Search for tweets by keyword or author to monitor brand mentions or track conversations","Retrieve recent tweets matching specific criteria for analysis or aggregation","Build a feed or timeline by searching for tweets from followed accounts or hashtags"],"best_for":["Agents monitoring Twitter for mentions, trends, or competitor activity","Automation workflows that need to retrieve tweets for analysis or response","Systems building custom Twitter feeds or search interfaces"],"limitations":["Recent search limited to tweets from last 7 days on free/basic tiers; full-archive requires elevated access","Search API rate limits: 300 requests/15min on free tier, higher on paid tiers","Pagination requires sequential API calls — no random access to result sets","Search operators limited to Twitter's v2 query syntax; complex boolean queries may not be supported"],"requires":["OAuth 2.0 authenticated session","Twitter API v2 search endpoint access (may require elevated permissions for full-archive)","Properly formatted search query using Twitter's v2 query syntax"],"input_types":["search query string (keyword, author, date range, engagement filters)","pagination token (for retrieving next page of results)","filter parameters (max_results, tweet.fields, user.fields)"],"output_types":["array of tweet objects with metadata (ID, text, author, created_at, public_metrics)","pagination metadata (next_token for retrieving additional results)","error details if query is malformed or rate limit exceeded"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-x-twitter__cap_3","uri":"capability://tool.use.integration.tweet.deletion.with.authentication.and.authorization.validation","name":"tweet deletion with authentication and authorization validation","description":"Enables programmatic deletion of tweets owned by the authenticated user through Twitter's v2 delete endpoint. Validates that the authenticated user owns the tweet before deletion, handles authorization errors gracefully, and returns confirmation of successful deletion. Implements rate limiting per Twitter's delete API tier.","intents":["Remove tweets programmatically (e.g., cleanup old content, delete sensitive posts)","Build a tweet management system that allows agents to curate or moderate their own tweets","Implement automated cleanup workflows that delete tweets matching certain criteria"],"best_for":["Agents managing their own Twitter presence with content lifecycle policies","Automation workflows that need to remove tweets based on age, engagement, or content rules","Systems building tweet management dashboards with programmatic deletion"],"limitations":["Can only delete tweets owned by the authenticated user — no cross-user deletion","Deleted tweets cannot be recovered — no undo or soft-delete option","Rate limiting: 300 deletions/15min on standard tier","Deletion is asynchronous — tweet may not be immediately unavailable after API returns success"],"requires":["OAuth 2.0 authenticated session with write:tweets scope","Tweet ID of a tweet owned by the authenticated user","Sufficient rate limit quota for delete operations"],"input_types":["tweet ID (string identifier of tweet to delete)"],"output_types":["confirmation object with deleted status (boolean) and tweet ID","error details if tweet not found or user not authorized to delete"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-x-twitter__cap_4","uri":"capability://automation.workflow.comprehensive.rate.limiting.and.quota.management.with.per.endpoint.tracking","name":"comprehensive rate limiting and quota management with per-endpoint tracking","description":"Tracks rate limits across all Twitter API v2 endpoints (tweet creation, search, deletion, media upload) by parsing rate limit headers from responses and maintaining per-endpoint quota state. Implements backoff strategies (exponential backoff, retry-after headers) and prevents requests when quota is exhausted. Exposes rate limit status to agents for intelligent request scheduling.","intents":["Prevent rate limit errors by checking quota before making API calls","Implement intelligent backoff and retry logic for rate-limited requests","Monitor rate limit consumption across multiple endpoints in a single agent session"],"best_for":["Long-running agents that make multiple Twitter API calls and need to avoid rate limit errors","Automation workflows with high request volume that need to schedule requests intelligently","Systems building Twitter integrations that need visibility into API quota consumption"],"limitations":["Rate limit state is in-memory — restarting the MCP server resets quota tracking","No distributed rate limiting — each MCP server instance tracks limits independently","Backoff strategies are local to the server — no coordination across multiple agents","Twitter's rate limits are per-user and per-app; server-side tracking doesn't account for other clients using the same credentials"],"requires":["OAuth 2.0 authenticated session","MCP server running with rate limiting enabled (default)"],"input_types":["API request (any Twitter API call triggers rate limit tracking)"],"output_types":["rate limit status object with remaining quota, reset time, and endpoint-specific limits","backoff recommendation (retry-after duration) if quota exhausted"],"categories":["automation-workflow","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-x-twitter__cap_5","uri":"capability://tool.use.integration.dual.api.version.support.with.intelligent.endpoint.selection.and.fallback","name":"dual api version support with intelligent endpoint selection and fallback","description":"Maintains compatibility with both Twitter API v2 (primary) and v1.1 (fallback) endpoints, automatically selecting the appropriate version based on feature availability and endpoint health. Implements fallback logic for media uploads (v2 → v1.1) and graceful degradation when v2 endpoints are unavailable. Abstracts API version differences from agents through a unified interface.","intents":["Use Twitter's latest v2 API features while maintaining compatibility with v1.1 for edge cases","Handle API endpoint failures by automatically falling back to alternative versions","Avoid agent-level logic for handling API version differences"],"best_for":["Agents needing robust Twitter integration that handles API version transitions","Systems that need to maintain compatibility across Twitter API evolution","Automation workflows requiring high availability and graceful degradation"],"limitations":["v1.1 fallback may have different response formats — agent must handle both","Some v2-only features (e.g., edit tweets) have no v1.1 equivalent — fallback not possible","Fallback logic adds latency (retry delay) when v2 fails","Maintaining dual API support increases server complexity and testing burden"],"requires":["OAuth 2.0 credentials compatible with both v2 and v1.1 (most accounts)","MCP server configured with both API versions enabled"],"input_types":["API request (any Twitter API call)"],"output_types":["unified response format regardless of which API version was used","metadata indicating which API version was used (for debugging)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-x-twitter__cap_6","uri":"capability://tool.use.integration.mcp.protocol.integration.with.standardized.tool.schema.and.error.handling","name":"mcp protocol integration with standardized tool schema and error handling","description":"Implements the Model Context Protocol (MCP) server specification, exposing Twitter capabilities as standardized MCP tools with JSON schema definitions for inputs/outputs. Handles MCP protocol messages (tool calls, responses, errors) and integrates with MCP clients (Claude, custom agents) through stdio or HTTP transports. Provides structured error responses following MCP conventions.","intents":["Integrate Twitter capabilities into Claude or other MCP-compatible agents","Build custom agents that use Twitter tools alongside other MCP servers","Expose Twitter API through a standardized protocol without custom integration code"],"best_for":["Teams building multi-tool agents using MCP protocol","Claude users wanting to add Twitter capabilities to their agents","Developers building custom agent frameworks that support MCP"],"limitations":["MCP protocol overhead adds ~50-100ms latency per tool call vs direct API calls","Tool schema must be statically defined — dynamic tool generation not supported","MCP client must support the protocol version implemented by the server","Error handling is limited to MCP error format — custom error details may be lost"],"requires":["MCP-compatible client (Claude, custom agent framework)","Node.js 16+ runtime for the MCP server","Stdio or HTTP transport configured between client and server"],"input_types":["MCP tool call messages with JSON-serialized parameters"],"output_types":["MCP tool response messages with JSON-serialized results","MCP error messages with error codes and descriptions"],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":30,"verified":false,"data_access_risk":"high","permissions":["Twitter/X Developer Account with API v2 access","OAuth 2.0 credentials (Client ID, Client Secret, Redirect URI)","MCP client capable of handling OAuth 2.0 callback flow","Node.js 16+ runtime for the MCP server","OAuth 2.0 authenticated session (from tweet composition capability)","Media files in supported formats: JPEG, PNG, GIF, MP4, MOV","File size under 15MB (Twitter API hard limit)","OAuth 2.0 authenticated session","Twitter API v2 search endpoint access (may require elevated permissions for full-archive)","Properly formatted search query using Twitter's v2 query syntax"],"failure_modes":["Rate limiting enforced per Twitter API tier — free tier limited to 300 posts/15min","Media upload fallback from v2 to v1.1 adds latency and may fail if both endpoints are rate-limited","OAuth token refresh requires network I/O and may introduce 500ms+ delays in token expiration edge cases","No built-in queue or retry logic for failed posts — caller must implement persistence","v2 API media upload limited to 15MB per file; v1.1 fallback has same limit","Video processing and chunked upload adds 2-5 second latency per file depending on size","No built-in image generation or format conversion — requires pre-processed media","Animated GIFs converted to video format may lose quality or exceed size limits","Recent search limited to tweets from last 7 days on free/basic tiers; full-archive requires elevated access","Search API rate limits: 300 requests/15min on free tier, higher on paid tiers","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.39,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.6,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:04.690Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=x-twitter","compare_url":"https://unfragile.ai/compare?artifact=x-twitter"}},"signature":"jFuyrReVkiiRRPoz7Cp/nCjqcklY8nAeJGU+BTfXguZpo/kJ7moIYmMRJP7Oh7AcEbFNURIQBwMwRoVzs2aLCg==","signedAt":"2026-06-22T14:34:50.905Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/x-twitter","artifact":"https://unfragile.ai/x-twitter","verify":"https://unfragile.ai/api/v1/verify?slug=x-twitter","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}