https://xcatcher.top/api/v1/mcpAuthorization: Bearer xc_live_.../mcp/health
Xcatcher supports two task modes via both REST and MCP. Choose based on speed/cost vs deeper coverage.
The recommended workflow for agents and automated pipelines is: create → poll → download. Use idempotency_key to keep retries safe and avoid duplicate charges.
# Example batching strategy (pseudo-shell)
# - Split 1000 users into 2 tasks of 500 users each
# - Submit both tasks, then poll each task_id until done
# Task A users: users_a.json (500 usernames)
# Task B users: users_b.json (500 usernames)
BASE="https://xcatcher.top"
API_KEY="xc_live_xxx"
curl -s -X POST "$BASE/api/v1/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"normal","users": [/* 500 usernames */], "idempotency_key":"batch-a-001"}'
curl -s -X POST "$BASE/api/v1/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"normal","users": [/* 500 usernames */], "idempotency_key":"batch-b-001"}'
Typical flow: (1) obtain an API key, (2) verify it, (3) create a task, (4) poll status, (5) download the xlsx result. The server binds tasks to the user derived from your Bearer token.
# 0) Base + key placeholder
BASE="https://xcatcher.top"
API_KEY="xc_live_xxx"
# 1) (Optional) Register (no captcha) → returns api_key
curl -s -X POST "$BASE/api/v1/auth/register" \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'
# 2) Login (no captcha) → rotates and issues a new api_key (old key may be revoked)
curl -s -X POST "$BASE/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'
# 3) Verify token / connectivity
curl -s "$BASE/api/v1/me" \
-H "Authorization: Bearer $API_KEY"
# 4) Create task (side-effect: consumes points)
# mode: "normal" | "deep"
# users: array of X usernames (strings) — submit in batches for large sets
# idempotency_key: optional but recommended for safe retries
curl -s -X POST "$BASE/api/v1/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"normal","users":["elonmusk","naval"],"idempotency_key":"YOUR_IDEMPOTENCY_KEY"}'
# 5) Poll status until done
TASK_ID=10136
curl -s "$BASE/api/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $API_KEY"
# 6) Download result (xlsx stream, not JSON)
curl -L -o result.xlsx \
-H "Authorization: Bearer $API_KEY" \
"$BASE/api/v1/tasks/$TASK_ID/download"
ADK can connect to Remote MCP (Streamable HTTP) directly. Use your Bearer key in headers. Tool names are filtered to the four core tools.
import os
from google.adk.tools.mcp_tool import MCPToolset, StreamableHTTPConnectionParams
toolset = MCPToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://xcatcher.top/mcp",
headers={"Authorization": "Bearer xc_live_xxx"},
# timeout=120, # optional (param name may vary by ADK version)
),
tool_filter=[
"create_crawl_task",
"get_task_status",
"get_result_download_url",
"cancel_task",
],
)
# Health check (public) curl -s "https://xcatcher.top/mcp/health"
Create a top-up order to add points to your account. The server returns the on-chain receiving address and the exact amount to send. Always poll status until finished.
BASE="https://xcatcher.top"
API_KEY="xc_live_xxx"
# Create top-up order (ETH on Ethereum)
curl -s -X POST "$BASE/mcp/payment/create" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"amount_usd":20,"pay_currency":"eth"}'
# Check order status
PAYMENT_ID="5851596631"
curl -s "$BASE/mcp/payment/status/$PAYMENT_ID" \
-H "Authorization: Bearer $API_KEY"
If you prefer Solana, you can top up using USDT on Solana (SPL). Use the Solana-specific currency code and follow the same create → poll pattern.
BASE="https://xcatcher.top"
API_KEY="xc_live_xxx"
# Create top-up order (USDT on Solana / SPL)
curl -s -X POST "$BASE/mcp/payment/create" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"amount_usd":20,"pay_currency":"usdtsol"}'
# Check order status
PAYMENT_ID="5851596631"
curl -s "$BASE/mcp/payment/status/$PAYMENT_ID" \
-H "Authorization: Bearer $API_KEY"