Xcatcher — Recent X Posts
by lvpiggyqq · remote · no sign-in to list tools · v3.1.0 · published by GitHub user lvpiggyqq
Fetch recent public X/Twitter posts by named handle for monitoring, comparison, OSINT, and research.
17 tools: 4 can delete or cancel things, 3 change things and 10 only read.
Scanned Oct 21, 2026
- Deletes or cancels4Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads10Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http xcatcher https://xcatcher.top/mcp/Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
17 tools
Deletes or cancels 4Claude Code: deny
cancel_taskCancel a queued task by task_id.No findings
Why it is in this group
- The name "cancel_task" says "cancel": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Cancel a queued task by task_id. Side effects: changes task state. Xcatcher refunds cost_points when a queued task is successfully cancelled.
Annotations the server declares
- title: Cancel a queued crawl task
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
create_crawl_taskCreate a crawl task for one or more X (Twitter) usernames.No findings
Why it is in this group
- The name "create_crawl_task" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a crawl task for one or more X (Twitter) usernames. Side effects: creates a new task AND consumes points. If points are insufficient, upstream returns HTTP 402 with PAYMENT-REQUIRED (quote). This tool surfaces it as error.code=PAYMENT_REQUIRED with payment_required payload so agents can request spending approval, top up, then retry safely. Modes: - normal: Fast latest-post snapshot at scale (fresh-feed monitoring). Optimized for high-throughput batch retrieval. - deep: Deeper per-user collection/enrichment (typically slower; higher resource usage). Use when you need more than a quick latest-post snapshot. Performance note: Normal mode is optimized for a small latest-post snapshot per handle. Actual completeness and latency depend on X availability, upstream limits, and network conditions. Batching: For very large sets, split users into batches. Suggested upper bound per task: 500 users (configurable via MAX_USERS_PER_TASK). Reliability: - Use idempotency_key to make retries safe (avoid duplicate charges). - After creation, poll get_task_status every 5–10s until has_result=true. - Then call get_result_download_url (download still requires the same Bearer token).
Annotations the server declares
- title: Create an X crawl task
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
submit_direct_crawl_paymentSubmit an x402 v2 PAYMENT-SIGNATURE for the exact users/mode used by get_direct_crawl_payment.No findings
Why it is in this group
- The name "submit_direct_crawl_payment" says "submit": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Submit an x402 v2 PAYMENT-SIGNATURE for the exact users/mode used by get_direct_crawl_payment. This may settle USDC and create a crawl task. Call only after explicit spending approval. On success, securely save task_token: it grants task-scoped result access for seven days.
Annotations the server declares
- title: Pay for and create an accountless crawl
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
x402_topupTop up points for the CURRENT Bearer key using x402 proof.No findings
Why it is in this group
- The name "x402_topup" says "topup": a word that usually means money moves, which cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Top up points for the CURRENT Bearer key using x402 proof. Inputs: - quote_id: returned by PAYMENT-REQUIRED (or /api/v1/x402/quote) - payment_signature_b64: base64(JSON) that will be passed as HTTP header PAYMENT-SIGNATURE Side effects: credits points to the same Bearer key (no key rotation). On success returns credited_points and balance_after (shape depends on upstream).
Annotations the server declares
- title: Credit points from an x402 payment
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 3Claude Code: ask
get_direct_crawl_paymentCreate a request-bound x402 v2 payment requirement for an accountless crawl.No findings
Why it is in this group
- The name "get_direct_crawl_payment" says "get": a word for reading.
- The description's first verb is "create": a word for a change.
Description, as the server wrote it Create a request-bound x402 v2 payment requirement for an accountless crawl. Use this only for the accountless x402 path after preflight_crawl; API-key accounts use create_crawl_task instead. Normal requests use progressive batch pricing, so quote the complete deduplicated handle list together. This does not move funds. Return payment_required_b64 unchanged to an x402-compatible wallet/client; the live amount, asset, network, destination, and quoteId are authoritative.
Annotations the server declares
- title: Get accountless crawl payment requirements
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
get_x402_quoteCreate a short-lived USDC quote for a requested number of Xcatcher points.No findings
Why it is in this group
- The name "get_x402_quote" says "get": a word for reading.
- The description's first verb is "create": a word for a change.
Description, as the server wrote it Create a short-lived USDC quote for a requested number of Xcatcher points. Returns the exact live amount and supported Base/Solana payment requirements; it does not move funds. Ask the user before signing or sending any payment.
Annotations the server declares
- title: Get an x402 top-up quote
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
preflight_crawlNormalize and deduplicate X handles, validate the mode, and preview the current modeled points/USDC cost.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Normalize and deduplicate X handles, validate the mode, and preview the current modeled points/USDC cost. This free read-only check requires no account, creates no quote or task, and moves no funds. Use it before requesting a live x402 payment challenge.
Annotations the server declares
- title: Preflight an Xcatcher crawl for free
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 10Claude Code: allow
get_account_balanceReturn the account attached to the current Bearer API key and its points balance.No findings
Why it is in this group
- The name "get_account_balance" says "get": a word for reading.
Description, as the server wrote it Return the account attached to the current Bearer API key and its points balance. Use before creating a task to estimate whether an x402 top-up will be needed. Read-only.
Annotations the server declares
- title: Get Xcatcher balance
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
get_direct_result_previewReturn structured JSON rows for a completed accountless paid crawl.No findings
Why it is in this group
- The name "get_direct_result_preview" says "get": a word for reading.
Description, as the server wrote it Return structured JSON rows for a completed accountless paid crawl. Use this instead of get_result_preview for an accountless x402 task; API-key accounts use get_result_preview. Use offset for pagination; the task token is required and should be treated as a secret.
Annotations the server declares
- title: Preview accountless paid crawl results
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
get_direct_task_statusRead an accountless paid crawl using its task_id and task-scoped token.No findings
Why it is in this group
- The name "get_direct_task_status" says "get": a word for reading.
Description, as the server wrote it Read an accountless paid crawl using its task_id and task-scoped token. Use this instead of get_task_status for an accountless x402 task. Poll every 5-10 seconds until task.has_result is true or it reaches failed/cancelled.
Annotations the server declares
- title: Get accountless paid task status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
get_result_download_urlGet an absolute download URL for a task result (read-only).No findings
Why it is in this group
- The name "get_result_download_url" says "get": a word for reading.
Description, as the server wrote it Get an absolute download URL for a task result (read-only). If the task is not finished, returns ok=false with code=RESULT_NOT_READY (HTTP 409). Downloading the URL requires the same Authorization: Bearer token.
Annotations the server declares
- title: Get result download URL
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
get_result_previewReturn up to 100 result rows from an API-key account task as native structured JSON for direct agent analysis; accountless x402 tasks use get_direct_result_preview instead.No findings
Why it is in this group
- The name "get_result_preview" says "get": a word for reading.
Description, as the server wrote it Return up to 100 result rows from an API-key account task as native structured JSON for direct agent analysis; accountless x402 tasks use get_direct_result_preview instead. Use offset/next_offset for pagination; this does not download or parse XLSX. Use after has_result=true; use get_result_download_url when the complete XLSX is required. Read-only.
Annotations the server declares
- title: Preview crawl results
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
get_sample_resultReturn a stable synthetic example of Xcatcher's paginated result and coverage metadata.No findings
Why it is in this group
- The name "get_sample_result" says "get": a word for reading.
Description, as the server wrote it Return a stable synthetic example of Xcatcher's paginated result and coverage metadata. No live X data is fetched, no account is needed, no task or quote is created, and no funds move.
Annotations the server declares
- title: Inspect a free Xcatcher sample result
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_service_infoRead Xcatcher's live capabilities, prices, limits, endpoints, and recommended agent workflow.No findings
Why it is in this group
- The name "get_service_info" says "get": a word for reading.
Description, as the server wrote it Read Xcatcher's live capabilities, prices, limits, endpoints, and recommended agent workflow. Call this first when planning a crawl or when cached documentation may be stale. No points are consumed.
Annotations the server declares
- title: Get Xcatcher service info
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
get_task_statusGet API-key account task status by task_id (read-only); accountless x402 tasks use get_direct_task_status instead.No findings
Why it is in this group
- The name "get_task_status" says "get": a word for reading.
Description, as the server wrote it Get API-key account task status by task_id (read-only); accountless x402 tasks use get_direct_task_status instead. Recommended polling interval: every 5–10 seconds until has_result=true. Returns safe structured state, result metadata, and authenticated result URLs; server filesystem paths are never exposed.
Annotations the server declares
- title: Get crawl task status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
list_crawl_tasksList recent tasks owned by the current Bearer API key, newest first.No findings
Why it is in this group
- The name "list_crawl_tasks" says "list": a word for reading.
Description, as the server wrote it List recent tasks owned by the current Bearer API key, newest first. Use next_before_id for cursor pagination. Read-only and does not consume points.
Annotations the server declares
- title: List Xcatcher crawl tasks
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
wait_for_taskPoll a crawl task server-side until it has a result, reaches a terminal failure/cancelled state, or the bounded timeout expires.No findings
Why it is in this group
- The name "wait_for_task" says "wait": a word for reading.
Description, as the server wrote it Poll a crawl task server-side until it has a result, reaches a terminal failure/cancelled state, or the bounded timeout expires. Read-only and cheaper for agent context than repeated manual polling.
Annotations the server declares
- title: Wait for a crawl task
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 3.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http xcatcher https://xcatcher.top/mcp/Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__xcatcher__get_service_info",
"mcp__xcatcher__get_sample_result",
"mcp__xcatcher__get_account_balance",
"mcp__xcatcher__list_crawl_tasks",
"mcp__xcatcher__get_direct_task_status",
"mcp__xcatcher__get_direct_result_preview",
"mcp__xcatcher__get_task_status",
"mcp__xcatcher__wait_for_task",
"mcp__xcatcher__get_result_preview",
"mcp__xcatcher__get_result_download_url"
],
"ask": [
"mcp__xcatcher__preflight_crawl",
"mcp__xcatcher__get_x402_quote",
"mcp__xcatcher__get_direct_crawl_payment"
],
"deny": [
"mcp__xcatcher__submit_direct_crawl_payment",
"mcp__xcatcher__create_crawl_task",
"mcp__xcatcher__x402_topup",
"mcp__xcatcher__cancel_task"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as xcatcher. Review it before you use it.
