X (Twitter)
Search, read and publish X posts and manage users, lists and media via the X API v2.
The current version, v0.1.1, was published to the official MCP registry on 2026-09-09. It is distributed as the Docker image ghcr.io/role1776/mcp-x:0.1.1, filed under Search by this index, and declares 41 environment variables. Removals and unreachable sources are measured across every server this index tracks, contract drift across the servers that answer in consecutive snapshots; the index's current counts put this record in context.
Using X (Twitter) in Claude, Cursor, Gemini CLI, Cline, or Zed?
MCP tool contracts can change remotely with no version bump. The mcpindex gate pins each contract and HOLDs the call when it drifts-before your agent acts. Zero credentials. This is not the package install for this server itself (use Install this server for that).
Rewrites your MCP host config so each server launches behind the gate. Inspect first: curl -fsSL https://mcpindex.ai/install.sh | less
uv tool install mcpindex-gate && mcpindex-config-wireVerdict not yet evaluated for this tool. The semantic screen takes adversarial cases first; coverage rolls out as the corpus expands (15/150 labels to graduation). The deterministic conformance probe is built but has not yet run on the public corpus, so a recorded verdict here is REVIEW or UNVERIFIED, never a clearing ALLOW. Until a verdict is recorded, an agent should treat this tool as not-yet-cleared and fall back to its own checks. Method: the eval, four-state verdict, honest limits.
Own this server? Screen its description →
That verdict was true at screening time (snapshot 2026-09-09).
Contracts can change after screening, with no version bump. The gate pins X (Twitter)’s tool contracts on first sight and holds any silent change before your agent acts - the check that keeps being true on Tuesday.
See your first HOLD in 2 minutes →
Related: how to trust an MCP server · screen before install · silent contract drift
X_API_KEYOAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRETOAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKENUser access token. Set the app permissions to Read and Write BEFORE generating it: a token keeps the permissions it was created with, and a read-only one fails every write until it is regenerated.
X_ACCESS_TOKEN_SECRETUser access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOTAbsolute path to an existing directory - the only one x_media_upload may read files from. Anything outside it is refused, symlinks included. Checked at startup.
MCP_TRANSPORTstdio (client spawns the process) or http (streamable HTTP listener).
MCP_NAMEServer name reported in the MCP initialize handshake.
MCP_PATHHTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.
SERVER_PORTTCP port to listen on. Used only when MCP_TRANSPORT=http.
SERVER_READ_TIMEOUTHTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.
SERVER_WRITE_TIMEOUTHTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.
LOG_MODElocal (text, debug) or prod (JSON, info). Logs go to stderr.
MAX_IDLE_CONNS_PER_HOSTIdle connections the outbound HTTP client keeps per host.
X_DEBUGLog the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.
POSTS_MAX_QUERIESQueries accepted in one x_posts_search or x_posts_count call.
POSTS_MAX_USERNAMESUsernames accepted in one x_posts_by_user call.
POSTS_MAX_IDSPost ids accepted in one x_posts_lookup call. The X API caps this at 100.
POSTS_DEFAULT_RESULTSPosts returned per query when the call does not ask for a count. Every post returned is billed.
POSTS_MAX_RESULTSUpper bound for posts per query. The X API caps this at 100.
POSTS_DEFAULT_DAYSHow far back post searches look when the call does not say, in days.
POSTS_MAX_DAYSFurthest back a post search may look, in days. Recent search cannot exceed 7.
POSTS_DEFAULT_TIMEOUT_MSTimeout for a posts call in milliseconds when the call does not request one.
POSTS_MIN_TIMEOUT_MSLowest timeout a posts call may request, in milliseconds.
POSTS_MAX_TIMEOUT_MSHighest timeout a posts call may request, in milliseconds.
USERS_MAX_USERNAMESUsernames accepted in one x_users_lookup call. The X API caps this at 100.
USERS_MAX_IDSUser ids accepted in one x_users_lookup call. The X API caps this at 100.
USERS_DEFAULT_RESULTSUsers returned per page when the call does not ask for a count.
USERS_MAX_RESULTSUpper bound for users per page.
USERS_DEFAULT_TIMEOUT_MSTimeout for a users call in milliseconds when the call does not request one.
USERS_MIN_TIMEOUT_MSLowest timeout a users call may request, in milliseconds.
USERS_MAX_TIMEOUT_MSHighest timeout a users call may request, in milliseconds.
LISTS_DEFAULT_RESULTSItems returned per list page when the call does not ask for a count.
LISTS_MAX_RESULTSUpper bound for items per list page. The X API caps this at 100.
LISTS_DEFAULT_TIMEOUT_MSTimeout for a lists call in milliseconds when the call does not request one.
LISTS_MIN_TIMEOUT_MSLowest timeout a lists call may request, in milliseconds.
LISTS_MAX_TIMEOUT_MSHighest timeout a lists call may request, in milliseconds.
MEDIA_CHUNK_BYTESBytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.
MEDIA_POLL_INTERVAL_MSHow often the upload status is polled while X transcodes a video, in milliseconds.
MEDIA_DEFAULT_TIMEOUT_MSTimeout for a whole upload in milliseconds when the call does not request one.
MEDIA_MIN_TIMEOUT_MSLowest timeout an upload may request, in milliseconds.
MEDIA_MAX_TIMEOUT_MSHighest timeout an upload may request, in milliseconds.
X_API_KEYOAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRETOAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKENUser access token. Set the app permissions to Read and Write BEFORE generating it: a token keeps the permissions it was created with, and a read-only one fails every write until it is regenerated.
X_ACCESS_TOKEN_SECRETUser access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOTAbsolute path to an existing directory - the only one x_media_upload may read files from. Anything outside it is refused, symlinks included. Checked at startup.
MCP_TRANSPORTstdio (client spawns the process) or http (streamable HTTP listener).
MCP_NAMEServer name reported in the MCP initialize handshake.
MCP_PATHHTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.
SERVER_PORTTCP port to listen on. Used only when MCP_TRANSPORT=http.
SERVER_READ_TIMEOUTHTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.
SERVER_WRITE_TIMEOUTHTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.
LOG_MODElocal (text, debug) or prod (JSON, info). Logs go to stderr.
MAX_IDLE_CONNS_PER_HOSTIdle connections the outbound HTTP client keeps per host.
X_DEBUGLog the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.
POSTS_MAX_QUERIESQueries accepted in one x_posts_search or x_posts_count call.
POSTS_MAX_USERNAMESUsernames accepted in one x_posts_by_user call.
POSTS_MAX_IDSPost ids accepted in one x_posts_lookup call. The X API caps this at 100.
POSTS_DEFAULT_RESULTSPosts returned per query when the call does not ask for a count. Every post returned is billed.
POSTS_MAX_RESULTSUpper bound for posts per query. The X API caps this at 100.
POSTS_DEFAULT_DAYSHow far back post searches look when the call does not say, in days.
POSTS_MAX_DAYSFurthest back a post search may look, in days. Recent search cannot exceed 7.
POSTS_DEFAULT_TIMEOUT_MSTimeout for a posts call in milliseconds when the call does not request one.
POSTS_MIN_TIMEOUT_MSLowest timeout a posts call may request, in milliseconds.
POSTS_MAX_TIMEOUT_MSHighest timeout a posts call may request, in milliseconds.
USERS_MAX_USERNAMESUsernames accepted in one x_users_lookup call. The X API caps this at 100.
USERS_MAX_IDSUser ids accepted in one x_users_lookup call. The X API caps this at 100.
USERS_DEFAULT_RESULTSUsers returned per page when the call does not ask for a count.
USERS_MAX_RESULTSUpper bound for users per page.
USERS_DEFAULT_TIMEOUT_MSTimeout for a users call in milliseconds when the call does not request one.
USERS_MIN_TIMEOUT_MSLowest timeout a users call may request, in milliseconds.
USERS_MAX_TIMEOUT_MSHighest timeout a users call may request, in milliseconds.
LISTS_DEFAULT_RESULTSItems returned per list page when the call does not ask for a count.
LISTS_MAX_RESULTSUpper bound for items per list page. The X API caps this at 100.
LISTS_DEFAULT_TIMEOUT_MSTimeout for a lists call in milliseconds when the call does not request one.
LISTS_MIN_TIMEOUT_MSLowest timeout a lists call may request, in milliseconds.
LISTS_MAX_TIMEOUT_MSHighest timeout a lists call may request, in milliseconds.
MEDIA_CHUNK_BYTESBytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.
MEDIA_POLL_INTERVAL_MSHow often the upload status is polled while X transcodes a video, in milliseconds.
MEDIA_DEFAULT_TIMEOUT_MSTimeout for a whole upload in milliseconds when the call does not request one.
MEDIA_MIN_TIMEOUT_MSLowest timeout an upload may request, in milliseconds.
MEDIA_MAX_TIMEOUT_MSHighest timeout an upload may request, in milliseconds.
X_API_KEYOAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRETOAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKENUser access token. Set the app permissions to Read and Write BEFORE generating it: a token keeps the permissions it was created with, and a read-only one fails every write until it is regenerated.
X_ACCESS_TOKEN_SECRETUser access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOTAbsolute path to an existing directory - the only one x_media_upload may read files from. Anything outside it is refused, symlinks included. Checked at startup.
MCP_TRANSPORTstdio (client spawns the process) or http (streamable HTTP listener).
MCP_NAMEServer name reported in the MCP initialize handshake.
MCP_PATHHTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.
SERVER_PORTTCP port to listen on. Used only when MCP_TRANSPORT=http.
SERVER_READ_TIMEOUTHTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.
SERVER_WRITE_TIMEOUTHTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.
LOG_MODElocal (text, debug) or prod (JSON, info). Logs go to stderr.
MAX_IDLE_CONNS_PER_HOSTIdle connections the outbound HTTP client keeps per host.
X_DEBUGLog the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.
POSTS_MAX_QUERIESQueries accepted in one x_posts_search or x_posts_count call.
POSTS_MAX_USERNAMESUsernames accepted in one x_posts_by_user call.
POSTS_MAX_IDSPost ids accepted in one x_posts_lookup call. The X API caps this at 100.
POSTS_DEFAULT_RESULTSPosts returned per query when the call does not ask for a count. Every post returned is billed.
POSTS_MAX_RESULTSUpper bound for posts per query. The X API caps this at 100.
POSTS_DEFAULT_DAYSHow far back post searches look when the call does not say, in days.
POSTS_MAX_DAYSFurthest back a post search may look, in days. Recent search cannot exceed 7.
POSTS_DEFAULT_TIMEOUT_MSTimeout for a posts call in milliseconds when the call does not request one.
POSTS_MIN_TIMEOUT_MSLowest timeout a posts call may request, in milliseconds.
POSTS_MAX_TIMEOUT_MSHighest timeout a posts call may request, in milliseconds.
USERS_MAX_USERNAMESUsernames accepted in one x_users_lookup call. The X API caps this at 100.
USERS_MAX_IDSUser ids accepted in one x_users_lookup call. The X API caps this at 100.
USERS_DEFAULT_RESULTSUsers returned per page when the call does not ask for a count.
USERS_MAX_RESULTSUpper bound for users per page.
USERS_DEFAULT_TIMEOUT_MSTimeout for a users call in milliseconds when the call does not request one.
USERS_MIN_TIMEOUT_MSLowest timeout a users call may request, in milliseconds.
USERS_MAX_TIMEOUT_MSHighest timeout a users call may request, in milliseconds.
LISTS_DEFAULT_RESULTSItems returned per list page when the call does not ask for a count.
LISTS_MAX_RESULTSUpper bound for items per list page. The X API caps this at 100.
LISTS_DEFAULT_TIMEOUT_MSTimeout for a lists call in milliseconds when the call does not request one.
LISTS_MIN_TIMEOUT_MSLowest timeout a lists call may request, in milliseconds.
LISTS_MAX_TIMEOUT_MSHighest timeout a lists call may request, in milliseconds.
MEDIA_CHUNK_BYTESBytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.
MEDIA_POLL_INTERVAL_MSHow often the upload status is polled while X transcodes a video, in milliseconds.
MEDIA_DEFAULT_TIMEOUT_MSTimeout for a whole upload in milliseconds when the call does not request one.
MEDIA_MIN_TIMEOUT_MSLowest timeout an upload may request, in milliseconds.
MEDIA_MAX_TIMEOUT_MSHighest timeout an upload may request, in milliseconds.
X_API_KEYOAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRETOAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKENUser access token. Set the app permissions to Read and Write BEFORE generating it: a token keeps the permissions it was created with, and a read-only one fails every write until it is regenerated.
X_ACCESS_TOKEN_SECRETUser access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOTAbsolute path to an existing directory - the only one x_media_upload may read files from. Anything outside it is refused, symlinks included. Checked at startup.
MCP_TRANSPORTstdio (client spawns the process) or http (streamable HTTP listener).
MCP_NAMEServer name reported in the MCP initialize handshake.
MCP_PATHHTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.
SERVER_PORTTCP port to listen on. Used only when MCP_TRANSPORT=http.
SERVER_READ_TIMEOUTHTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.
SERVER_WRITE_TIMEOUTHTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.
LOG_MODElocal (text, debug) or prod (JSON, info). Logs go to stderr.
MAX_IDLE_CONNS_PER_HOSTIdle connections the outbound HTTP client keeps per host.
X_DEBUGLog the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.
POSTS_MAX_QUERIESQueries accepted in one x_posts_search or x_posts_count call.
POSTS_MAX_USERNAMESUsernames accepted in one x_posts_by_user call.
POSTS_MAX_IDSPost ids accepted in one x_posts_lookup call. The X API caps this at 100.
POSTS_DEFAULT_RESULTSPosts returned per query when the call does not ask for a count. Every post returned is billed.
POSTS_MAX_RESULTSUpper bound for posts per query. The X API caps this at 100.
POSTS_DEFAULT_DAYSHow far back post searches look when the call does not say, in days.
POSTS_MAX_DAYSFurthest back a post search may look, in days. Recent search cannot exceed 7.
POSTS_DEFAULT_TIMEOUT_MSTimeout for a posts call in milliseconds when the call does not request one.
POSTS_MIN_TIMEOUT_MSLowest timeout a posts call may request, in milliseconds.
POSTS_MAX_TIMEOUT_MSHighest timeout a posts call may request, in milliseconds.
USERS_MAX_USERNAMESUsernames accepted in one x_users_lookup call. The X API caps this at 100.
USERS_MAX_IDSUser ids accepted in one x_users_lookup call. The X API caps this at 100.
USERS_DEFAULT_RESULTSUsers returned per page when the call does not ask for a count.
USERS_MAX_RESULTSUpper bound for users per page.
USERS_DEFAULT_TIMEOUT_MSTimeout for a users call in milliseconds when the call does not request one.
USERS_MIN_TIMEOUT_MSLowest timeout a users call may request, in milliseconds.
USERS_MAX_TIMEOUT_MSHighest timeout a users call may request, in milliseconds.
LISTS_DEFAULT_RESULTSItems returned per list page when the call does not ask for a count.
LISTS_MAX_RESULTSUpper bound for items per list page. The X API caps this at 100.
LISTS_DEFAULT_TIMEOUT_MSTimeout for a lists call in milliseconds when the call does not request one.
LISTS_MIN_TIMEOUT_MSLowest timeout a lists call may request, in milliseconds.
LISTS_MAX_TIMEOUT_MSHighest timeout a lists call may request, in milliseconds.
MEDIA_CHUNK_BYTESBytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.
MEDIA_POLL_INTERVAL_MSHow often the upload status is polled while X transcodes a video, in milliseconds.
MEDIA_DEFAULT_TIMEOUT_MSTimeout for a whole upload in milliseconds when the call does not request one.
MEDIA_MIN_TIMEOUT_MSLowest timeout an upload may request, in milliseconds.
MEDIA_MAX_TIMEOUT_MSHighest timeout an upload may request, in milliseconds.
X_API_KEYOAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRETOAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKENUser access token. Set the app permissions to Read and Write BEFORE generating it: a token keeps the permissions it was created with, and a read-only one fails every write until it is regenerated.
X_ACCESS_TOKEN_SECRETUser access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOTAbsolute path to an existing directory - the only one x_media_upload may read files from. Anything outside it is refused, symlinks included. Checked at startup.
MCP_TRANSPORTstdio (client spawns the process) or http (streamable HTTP listener).
MCP_NAMEServer name reported in the MCP initialize handshake.
MCP_PATHHTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.
SERVER_PORTTCP port to listen on. Used only when MCP_TRANSPORT=http.
SERVER_READ_TIMEOUTHTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.
SERVER_WRITE_TIMEOUTHTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.
LOG_MODElocal (text, debug) or prod (JSON, info). Logs go to stderr.
MAX_IDLE_CONNS_PER_HOSTIdle connections the outbound HTTP client keeps per host.
X_DEBUGLog the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.
POSTS_MAX_QUERIESQueries accepted in one x_posts_search or x_posts_count call.
POSTS_MAX_USERNAMESUsernames accepted in one x_posts_by_user call.
POSTS_MAX_IDSPost ids accepted in one x_posts_lookup call. The X API caps this at 100.
POSTS_DEFAULT_RESULTSPosts returned per query when the call does not ask for a count. Every post returned is billed.
POSTS_MAX_RESULTSUpper bound for posts per query. The X API caps this at 100.
POSTS_DEFAULT_DAYSHow far back post searches look when the call does not say, in days.
POSTS_MAX_DAYSFurthest back a post search may look, in days. Recent search cannot exceed 7.
POSTS_DEFAULT_TIMEOUT_MSTimeout for a posts call in milliseconds when the call does not request one.
POSTS_MIN_TIMEOUT_MSLowest timeout a posts call may request, in milliseconds.
POSTS_MAX_TIMEOUT_MSHighest timeout a posts call may request, in milliseconds.
USERS_MAX_USERNAMESUsernames accepted in one x_users_lookup call. The X API caps this at 100.
USERS_MAX_IDSUser ids accepted in one x_users_lookup call. The X API caps this at 100.
USERS_DEFAULT_RESULTSUsers returned per page when the call does not ask for a count.
USERS_MAX_RESULTSUpper bound for users per page.
USERS_DEFAULT_TIMEOUT_MSTimeout for a users call in milliseconds when the call does not request one.
USERS_MIN_TIMEOUT_MSLowest timeout a users call may request, in milliseconds.
USERS_MAX_TIMEOUT_MSHighest timeout a users call may request, in milliseconds.
LISTS_DEFAULT_RESULTSItems returned per list page when the call does not ask for a count.
LISTS_MAX_RESULTSUpper bound for items per list page. The X API caps this at 100.
LISTS_DEFAULT_TIMEOUT_MSTimeout for a lists call in milliseconds when the call does not request one.
LISTS_MIN_TIMEOUT_MSLowest timeout a lists call may request, in milliseconds.
LISTS_MAX_TIMEOUT_MSHighest timeout a lists call may request, in milliseconds.
MEDIA_CHUNK_BYTESBytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.
MEDIA_POLL_INTERVAL_MSHow often the upload status is polled while X transcodes a video, in milliseconds.
MEDIA_DEFAULT_TIMEOUT_MSTimeout for a whole upload in milliseconds when the call does not request one.
MEDIA_MIN_TIMEOUT_MSLowest timeout an upload may request, in milliseconds.
MEDIA_MAX_TIMEOUT_MSHighest timeout an upload may request, in milliseconds.
X_API_KEYOAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRETOAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKENUser access token. Set the app permissions to Read and Write BEFORE generating it: a token keeps the permissions it was created with, and a read-only one fails every write until it is regenerated.
X_ACCESS_TOKEN_SECRETUser access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOTAbsolute path to an existing directory - the only one x_media_upload may read files from. Anything outside it is refused, symlinks included. Checked at startup.
MCP_TRANSPORTstdio (client spawns the process) or http (streamable HTTP listener).
MCP_NAMEServer name reported in the MCP initialize handshake.
MCP_PATHHTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.
SERVER_PORTTCP port to listen on. Used only when MCP_TRANSPORT=http.
SERVER_READ_TIMEOUTHTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.
SERVER_WRITE_TIMEOUTHTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.
LOG_MODElocal (text, debug) or prod (JSON, info). Logs go to stderr.
MAX_IDLE_CONNS_PER_HOSTIdle connections the outbound HTTP client keeps per host.
X_DEBUGLog the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.
POSTS_MAX_QUERIESQueries accepted in one x_posts_search or x_posts_count call.
POSTS_MAX_USERNAMESUsernames accepted in one x_posts_by_user call.
POSTS_MAX_IDSPost ids accepted in one x_posts_lookup call. The X API caps this at 100.
POSTS_DEFAULT_RESULTSPosts returned per query when the call does not ask for a count. Every post returned is billed.
POSTS_MAX_RESULTSUpper bound for posts per query. The X API caps this at 100.
POSTS_DEFAULT_DAYSHow far back post searches look when the call does not say, in days.
POSTS_MAX_DAYSFurthest back a post search may look, in days. Recent search cannot exceed 7.
POSTS_DEFAULT_TIMEOUT_MSTimeout for a posts call in milliseconds when the call does not request one.
POSTS_MIN_TIMEOUT_MSLowest timeout a posts call may request, in milliseconds.
POSTS_MAX_TIMEOUT_MSHighest timeout a posts call may request, in milliseconds.
USERS_MAX_USERNAMESUsernames accepted in one x_users_lookup call. The X API caps this at 100.
USERS_MAX_IDSUser ids accepted in one x_users_lookup call. The X API caps this at 100.
USERS_DEFAULT_RESULTSUsers returned per page when the call does not ask for a count.
USERS_MAX_RESULTSUpper bound for users per page.
USERS_DEFAULT_TIMEOUT_MSTimeout for a users call in milliseconds when the call does not request one.
USERS_MIN_TIMEOUT_MSLowest timeout a users call may request, in milliseconds.
USERS_MAX_TIMEOUT_MSHighest timeout a users call may request, in milliseconds.
LISTS_DEFAULT_RESULTSItems returned per list page when the call does not ask for a count.
LISTS_MAX_RESULTSUpper bound for items per list page. The X API caps this at 100.
LISTS_DEFAULT_TIMEOUT_MSTimeout for a lists call in milliseconds when the call does not request one.
LISTS_MIN_TIMEOUT_MSLowest timeout a lists call may request, in milliseconds.
LISTS_MAX_TIMEOUT_MSHighest timeout a lists call may request, in milliseconds.
MEDIA_CHUNK_BYTESBytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.
MEDIA_POLL_INTERVAL_MSHow often the upload status is polled while X transcodes a video, in milliseconds.
MEDIA_DEFAULT_TIMEOUT_MSTimeout for a whole upload in milliseconds when the call does not request one.
MEDIA_MIN_TIMEOUT_MSLowest timeout an upload may request, in milliseconds.
MEDIA_MAX_TIMEOUT_MSHighest timeout an upload may request, in milliseconds.
X_API_KEYOAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRETOAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKENUser access token. Set the app permissions to Read and Write BEFORE generating it: a token keeps the permissions it was created with, and a read-only one fails every write until it is regenerated.
X_ACCESS_TOKEN_SECRETUser access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOTAbsolute path to an existing directory - the only one x_media_upload may read files from. Anything outside it is refused, symlinks included. Checked at startup.
MCP_TRANSPORTstdio (client spawns the process) or http (streamable HTTP listener).
MCP_NAMEServer name reported in the MCP initialize handshake.
MCP_PATHHTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.
SERVER_PORTTCP port to listen on. Used only when MCP_TRANSPORT=http.
SERVER_READ_TIMEOUTHTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.
SERVER_WRITE_TIMEOUTHTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.
LOG_MODElocal (text, debug) or prod (JSON, info). Logs go to stderr.
MAX_IDLE_CONNS_PER_HOSTIdle connections the outbound HTTP client keeps per host.
X_DEBUGLog the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.
POSTS_MAX_QUERIESQueries accepted in one x_posts_search or x_posts_count call.
POSTS_MAX_USERNAMESUsernames accepted in one x_posts_by_user call.
POSTS_MAX_IDSPost ids accepted in one x_posts_lookup call. The X API caps this at 100.
POSTS_DEFAULT_RESULTSPosts returned per query when the call does not ask for a count. Every post returned is billed.
POSTS_MAX_RESULTSUpper bound for posts per query. The X API caps this at 100.
POSTS_DEFAULT_DAYSHow far back post searches look when the call does not say, in days.
POSTS_MAX_DAYSFurthest back a post search may look, in days. Recent search cannot exceed 7.
POSTS_DEFAULT_TIMEOUT_MSTimeout for a posts call in milliseconds when the call does not request one.
POSTS_MIN_TIMEOUT_MSLowest timeout a posts call may request, in milliseconds.
POSTS_MAX_TIMEOUT_MSHighest timeout a posts call may request, in milliseconds.
USERS_MAX_USERNAMESUsernames accepted in one x_users_lookup call. The X API caps this at 100.
USERS_MAX_IDSUser ids accepted in one x_users_lookup call. The X API caps this at 100.
USERS_DEFAULT_RESULTSUsers returned per page when the call does not ask for a count.
USERS_MAX_RESULTSUpper bound for users per page.
USERS_DEFAULT_TIMEOUT_MSTimeout for a users call in milliseconds when the call does not request one.
USERS_MIN_TIMEOUT_MSLowest timeout a users call may request, in milliseconds.
USERS_MAX_TIMEOUT_MSHighest timeout a users call may request, in milliseconds.
LISTS_DEFAULT_RESULTSItems returned per list page when the call does not ask for a count.
LISTS_MAX_RESULTSUpper bound for items per list page. The X API caps this at 100.
LISTS_DEFAULT_TIMEOUT_MSTimeout for a lists call in milliseconds when the call does not request one.
LISTS_MIN_TIMEOUT_MSLowest timeout a lists call may request, in milliseconds.
LISTS_MAX_TIMEOUT_MSHighest timeout a lists call may request, in milliseconds.
MEDIA_CHUNK_BYTESBytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.
MEDIA_POLL_INTERVAL_MSHow often the upload status is polled while X transcodes a video, in milliseconds.
MEDIA_DEFAULT_TIMEOUT_MSTimeout for a whole upload in milliseconds when the call does not request one.
MEDIA_MIN_TIMEOUT_MSLowest timeout an upload may request, in milliseconds.
MEDIA_MAX_TIMEOUT_MSHighest timeout an upload may request, in milliseconds.
yt-dlp search, download, metadata, delivery, and Plex workflows over MCP and CLI.
Trend, stats & insight search across PSFK expert graphs with citable sources.
Evidence-ranked supplement data: search, compare, price history, goal recs. No API key.