Skip to main content

x-mcp-guide

ALWAYS read this when a user connects the X plugin or any X MCP, before using any X connection, and again on any X error. Do not call an X tool until this file has been read in the current turn. On first connect, confirm X tools exist, fetch get_usage_credits BEFORE any user-facing text, then send the congrats + capabilities message. Never tell the user to buy credits until that check returns ~$0 or a job would exceed the balance. tools=0 / user-X-* not found is a setup failure, not a paywall. X Chat, XChat, inbox, DMs, Chat PIN, juicebox, and xchat_lite live in THIS file: clone xchat-grokbot-helper and run xchat_lite.py locally — do not wait for the user to name the helper or another skill. Missing chat tools or dm.read/dm.write while other X tools work: reconnect the X plugin. Estimate every X call and confirm before anything expensive.

来源信息

仓库
cursor/plugins
最近来源活动
2026年10月11日 02:33
检测到的 SKILL.md 语言
英语
星标
10,860
分支
1,037

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
2 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
X MCP guide
description
ALWAYS read this when a user connects the X plugin or any X MCP, before using any X tool, including Grok Bot's built-in public reads (no X connection or credits needed), and again on any X error. Do not call an X tool until this file has been read in the current turn. On first connect, confirm X tools exist, fetch get_usage_credits BEFORE any user-facing text, then send the capabilities message. Never tell the user to buy credits until that check returns ~$0 or a job would exceed the balance. tools=0 / user-X-* not found is a setup failure, not a paywall. X Chat, XChat, inbox, DMs, message requests, accepting a request, Chat PIN, juicebox, and xchat_lite live in THIS file: clone xchat-grokbot-helper and run xchat_lite.py locally — do not wait for the user to name the helper or another skill. Missing chat tools or dm.read/dm.write while other X tools work: reconnect the X plugin. Estimate every X call and confirm before anything expensive.
# X MCP guide This plugin uses **X MCP**. The user taps Connect and signs in with X. Developer accounts are auto-created and auto-credited. They are not setting up an API app. On a core error, stop. Name the simple issue, then the next step. Do not explain enrollment mechanics, billing internals, Connected vs enrolled, or pay-per-use. Never retry 401 / 403-enrollment / credits-blocked / missing-tools unchanged. Never ask for keys or Bearer tokens. Chat PIN is allowed only via secret-request (never pasted in chat). Never tell them to create an app, Project, or Production env except the quoted [error 2](#2-account-not-ready) steps. X Chat is in this file — [X Chat](#x-chat). Do not look for a second skill. **Never tell the user to buy, purchase, or add credits until `get_usage_credits` has returned and `{credits}` is ~$0 or the planned job would exceed it.** Do not use “you’ll need to purchase credits at https://console.x.com” (or any “buy credits first” variant) on connect or before that check. Missing tools is not a pay CTA. ## Built-in X reads When the host says public X reads need no X connection, as Grok Bot does, it reads public posts, users, search, trends, and news through its own X access and doesn't spend the user's credits. For those reads, don't ask the user to connect X, check credits, or estimate a cost. `get_usage_credits` and `get_users_me` are only on the user's X connection, so their absence next to built-in reads is not [error 2](#2-account-not-ready) or an outage. The user's own account, home timeline, bookmarks, and X Chat need their X connection and the rest of this guide. ## Connect order Do this **before any user-facing X copy**: 1. Confirm X tools exist (tool list / server status). 2. If the plugin looks connected but tools are missing, that is [error 2](#2-account-not-ready) — stop. You cannot check credits without tools. 3. If not signed in / 401, that is [error 1](#1-sign-in-failed). 4. `get_users_me` (`user.fields=id,name,username,description,public_metrics`) and **`get_usage_credits`**. Cache `id` as `{me}` and `data.total_balance` as `{credits}`. 5. Then the [On connect](#on-connect) message. ## Credit balance Call **`get_usage_credits`** (`GET /2/usage/credits`). It is free. Response (values are **USD dollars and cents**; `20.0` = $20.00): ```json { "data": { "free_balance": 20.0, "free_grants": [ { "amount": 10.0, "expires_at": "2026-11-19T02:14:28.000Z" }, { "amount": 10.0, "expires_at": "2026-11-19T16:02:51.000Z" } ], "prepaid_balance": 0.0, "total_balance": 20.0 } } ``` - **`data.total_balance`** → `{credits}`. Use this for budgets and the ~$0 check. **Always tell the user how many credits they have** (`You have about $X.XX in credits.`), including $0.00. That is remaining balance, not the welcome gift. - **`data.free_balance`** → leftover starter grant, if any. Do **not** say “you received $X”. Prepaid can be negative, so `free_balance > 0` and `{credits}` ~$0 can both be true — `{credits}` ~$0 wins. - Ignore `free_grants` and `prepaid_balance` for user-facing copy. Do not choose what to spend. Fetch it: 1. **On connect** — after tools exist, before any capabilities text. 2. **When a session starts and X calls are required** — alongside `get_users_me`. 3. **When the user asks what they can do** — ideas, a setup, a budget, remaining credits. Do not fetch on every message. ### If they ask how much they received / starter credits Do **not** dump `total_balance` or `free_grants` as the gift amount. Starter credits depend on their Cursor plan. **Only quote a row if you actually know their plan.** Do not guess. There is no Hobby / Business / other row — if you do not know the plan, say remaining `{credits}` and skip the table. | Plan | Starter credits | | ---- | --------------- | | Cursor Ultra | $100 | | SuperGrok Plus | $50 | | Cursor Pro+ | $30 | | Cursor Pro | $10 | If they ask how much they have **left**, quote `{credits}` (`total_balance`) — same number you already state on connect. ## On connect Once tools exist and `{credits}` is cached, send this once. Adapt the wording to your voice. Keep every capability bullet. **`{credits}` ~$0 always wins:** keep the bullets, say **You have $0.00 in credits**, suggest only free lookups, and **then** send them to https://console.x.com to add credits — skip “With that, we could.” Do **not** use the error-3 quote. Do not skip the $0.00 line. > You're connected to X. Here's what I can do: > > - **Your account** — your profile, home timeline, your posts, and mentions > - **Posts** — open any post from a link, and see who liked, reposted, or quoted it > - **Users** — look up any account by handle, search for users, and read their posts > - **Search** — search posts across X and count post volume on a topic > - **News & trends** — search X news stories and get trends by location > - **Bookmarks** — list, add, and remove bookmarks, and organize them into folders > - **Chat** — read and reply to X Chat, and list, open, or accept message requests (needs a Chat PIN via secret-request, not pasted here). Posting tweets is not supported. > > You have about $X.XX in credits. > > With that, we could: (2–3 ideas from the matching [By budget](#by-budget) row, using `{credits}`). > > I'll show a cost estimate before anything expensive. Always include the **You have about $X.XX** line (`total_balance`). Do **not** say “you received $X” — that is the gift size; only the starter table if they ask how much they were given **and** you know their plan. Do not mention purchasing or console.x.com unless `{credits}` is ~$0. Send it once per session. If their first message already contains an ask, send this first, then do the ask if it fits the balance. ## The three errors Match `type`, `reason`, `title`, `detail`, or the missing-tools signatures below. Then say the quoted line. For **#1 and #2**, nothing else. For **#3**, the quoted line plus the free-only follow-up. ### 1. Sign-in failed **When:** not signed in; connect prompt; 401; Unauthorized; login loop; token refresh failed. Plugin is **not** connected. **Say:** > You're not signed in to X. Reconnect the X plugin in this chat. Don't paste keys or passwords. Then I'll retry. Trigger reconnect if you can. Probe once after. If it still 401s, stop. If status is `connected` but tools=0, that is #2, not this. ### 2. Account not ready **When (primary):** X is connected but the agent has **no tools** — the developer account is not set up or not enabled. Signatures: - Server status: `X [connected]` with `tools=0` - X namespace missing (`Use GetDynamicTools to discover available servers` and no X / `user-X` namespace) - **Every** X tool missing (`user-X-get_users_me` not found **and** no other `user-X-*` tools) Do **not** treat `get_usage_credits` not found as #2 by itself. If other `user-X-*` tools work, that is a missing endpoint or an outage — follow the 5xx / could-not-read-balance copy, not “create a Default Project and App.” Missing **Chat** tools (`get_chat_conversations`, `send_chat_message`, …) while timeline/search/`get_users_me` work is **not** #2. That is [X Chat scopes](#x-chat-scopes) — reconnect for `dm.read` / `dm.write`. **When (fallback):** `client-forbidden`; `user-not-enrolled`; `client-not-enrolled`; Client Forbidden; 403 on timeline / mentions / search / bookmarks after Connect. **Say:** > X is connected, but this account isn't ready yet. Please remove and reinstall the X connection, then reconnect. If this doesn't work, please try the following: > > 1. Visiting https://console.x.com and creating a developer account > 2. Ensure you have a Default Project created in the console > 3. Ensure you have an App created in the console Do not retry in a loop. Do not search. Do not send them to pay. Do not add extra enrollment speech beyond the quoted steps. Do not use “This X account isn't set up yet. Go to https://console.x.com, register and onboard…”. ### 3. Out of credits **When:** a billed request is blocked until credits are added; “does not have any credits”; credits-blocked. **Not** a successful `get_usage_credits` with `total_balance` ~$0 — that uses the [On connect](#on-connect) $0 copy (or the ~$0 [By budget](#by-budget) row). **Not** missing tools (#2). **Say:** > You're out of credits. Go to https://console.x.com and add credits, then I'll retry. Stop. Do not retry billed calls. Cache `{credits}` as $0. After the quoted line, you may offer **only free lookups** from the ~$0 [By budget](#by-budget) row: `{me}`, likers of a post, bookmark folders. Do not offer a cheaper paid search or timeline. After they add credits, re-fetch `{credits}` before retrying. If the payload is only `usage-capped` (no enrollment reason): > You hit a limit. Try again later. If `user-not-enrolled` or `client-not-enrolled` is present, that is #2, not this. ## Edge cases If the X connector is failing, stay on errors 1–3 or the 5xx outage line. Do **not** invent another way in. ### No browser / computer sign-in **When:** you would open x.com (or console.x.com) in the agent browser or on this computer to log the user in; type their X username, password, or 2FA; complete Google SSO for them. You cannot sign into the user's X account that way. Stop. Do not navigate to login, fill a form, or ask them to type a password into the agent browser. **Say:** > I can't sign into X from this browser or computer. Use the X plugin in this chat: tap Connect on the X card and sign in there. Don't paste keys or passwords. Then follow [error 1](#1-sign-in-failed) or [error 2](#2-account-not-ready) if that is the real failure. ### No Bearer tokens / direct API **When:** the connector is missing, 401s, or has no tools, and you would ask for a Bearer token, API key, app token, `X_BEARER_TOKEN`, or an Authorization header; or call `api.x.com` yourself with a pasted secret. Do not ask. Do not accept one if they offer. This plugin is OAuth via the X connector only. **Say:** > Don't paste a Bearer token or API key. I only use the X plugin in this chat — tap Connect on the X card and sign in with X. Then follow [error 1](#1-sign-in-failed) or [error 2](#2-account-not-ready). Do not curl, set headers, or stand up a local MCP with their token. ### X Chat scopes **When:** the user wants X Chat / DMs, other X tools work, but Chat tools are missing or a Chat call 403s for `dm.read` / `dm.write`. **Say:** > X Chat needs an extra sign-in. Reconnect the X plugin in this chat and approve access (including messages). Then I'll retry. Don't paste keys, tokens, or your Chat PIN here. Do not tell them to create a Project or App. Do not ask for a Bearer token. After reconnect, follow [X Chat](#x-chat): clone the helper yourself, use a [saved key](#saved-key) or secret-request **only** the Chat PIN into `CHAT_PIN`, then read/reply. ## Other errors `not-authorized-for-resource` (private account they don't own): stop. Their own timeline/bookmarks: probe current user, retry once with that id. > I can't open that. If it's yours, reconnect X. If it's someone else's private account, I don't have access. `resource-not-found`: resolve the id, retry **once**. Never retry the same id. > Paste a handle, profile link, or post link. | They asked | You do | Else ask | | ----------------------------- | ---------------------------------- | --------------------- | | `@handle` posts | User search; one match → that `id` | Paste the profile. | | A post | Parse `/status/{id}` | Paste the post link. | | Bookmarks, timeline, mentions | Current user → that `id` | Reconnect X. | | Bookmark folder | List folders on `{me}` | Which folder? | | News | News search | What topic? | | Search | Rewrite query | What should I search? | 429 `rate-limit-exceeded`: wait for `x-rate-limit-reset`, retry once. > I'll retry in a minute. 400 `invalid-request`: fix params, don't retry unchanged. 5xx / **503** / **`get_usage_credits` missing while other X tools work**: backoff once or twice. Do not treat it as $0 credits, a missing app, or [error 2](#2-account-not-ready). Other endpoints may still work. Then say: > X's API looks like it's having an outage (this one isn't on you). Try again in a bit. If it keeps failing, check [https://developer.x.com/status](https://developer.x.com/status). Do not start billed work without a credits read; wait for a successful `get_usage_credits` or for the user to say go. 200 + `errors[]`: use `data`, skip listed ids. ## Session start When X calls are required this session: confirm tools exist, then `get_users_me` and `get_usage_credits`. | Result | Next | | ------------------------------ | ---- | | Tools missing / not found | [Error 2](#2-account-not-ready). Stop. | | Success | Cache `{me}` and `{credits}`. If `{credits}` is ~$0, use the On connect $0 copy — not error 3. Otherwise do their ask if it fits. Prefer `{me}` for timeline, mentions, bookmarks. | | Error 1 | Quoted line only. Do not search. | | Error 2 | Quoted line only. Do not search. | | Error 3 | Follow [Out of credits](#3-out-of-credits). | | 5xx / 503 | Outage copy. Not $0, not error 2. Retry later. | | 200 + `errors[]` | Keep `data`. | ## Cost awareness Every X call can charge the user. Estimate the cost **before** calling. Read [references/pricing.md](references/pricing.md) — it has the tool-by-tool price table, per-endpoint prices, free endpoints, and cost-saving tips. Once per session, fetch live pricing from https://console.x.com/api/credits/pricing (plain GET, no auth); it wins over the reference file.
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看