ProLevelMax
Read-only public social data for AI: posts, comments, profiles, search and trends from 70+ platforms incl. TikTok, Instagram, YouTube, Reddit, X, Xiaohongshu, Douyin, Weibo. Remote MCP with OAuth, pay per call.
托管 MCP 服务器
npx add-mcp 'https://prolevelmax.com/mcp'可安装到 Claude Code、Codex、Cursor 等客户端
文档
Quickstart
Sign up (new users get $1 in free credit, one per person), then connect the AI you use:
- Claude.ai, ChatGPT and other chat apps: add the MCP connector, sign in and allow. No API key needed.
- Claude Code, Codex, Cursor and other AI that can run commands: create your setup text under Get started → One-click setup in the dashboard (it contains this line and your API key) and send it to the AI. It reads SKILL.md and finishes the setup.
- Your own code: use the REST API.
set up https://prolevelmax.com/SKILL.md
Skill
For AI that can run commands or send HTTP requests, such as Claude Code, Codex and Cursor. In Claude.ai and ChatGPT chats, use the MCP connector instead.
set up https://prolevelmax.com/SKILL.md
Pass your API key alongside it: API Key: sk_procli_…. Keys are created in the dashboard and shown once.
MCP (OAuth 2.1)
Remote MCP server with OAuth 2.1 and PKCE. An API key also works as a Bearer token.
https://prolevelmax.com/mcp
Confirm in Cursor or VS Code, then sign in to ProLevelMax and click Allow. No API key needed.
Claude.ai / Claude Desktop: Settings → Connectors → Add custom connector, then paste the URL above.
ChatGPT (web, Plus, Pro, Business, Enterprise and Edu plans): Settings → Apps → Advanced settings, turn on Developer mode, create an app with the URL above and choose OAuth.
Claude Code: add the server, then run /mcp inside Claude Code to sign in.
claude mcp add --scope user --transport http prolevelmax https://prolevelmax.com/mcp
Codex: pass your API key through an environment variable.
export PLM_API_KEY=sk_procli_... codex mcp add prolevelmax --url https://prolevelmax.com/mcp --bearer-token-env-var PLM_API_KEY
Cursor, manual setup with an API key instead of sign-in: Settings → MCP → Add New MCP Server, with this config:
{ "mcpServers": { "prolevelmax": { "url": "https://prolevelmax.com/mcp", "headers": { "Authorization": "Bearer sk_procli_..." } } } }
REST API
Authenticate with your API key as a Bearer token. Requests and responses are JSON. Machine-readable reference: openapi.json (OpenAPI 3.1).
curl https://prolevelmax.com/v1/discover \ -H "Authorization: Bearer sk_procli_..." \ -H "Content-Type: application/json" \ -d '{"query":"reddit comments"}' curl https://prolevelmax.com/v1/inspect \ -H "Authorization: Bearer sk_procli_..." \ -H "Content-Type: application/json" \ -d '{"scraper":"procli_reddit_b"}' curl https://prolevelmax.com/v1/run \ -H "Authorization: Bearer sk_procli_..." \ -H "Content-Type: application/json" \ -d '{"scraper":"procli_reddit_b","input":{"post_id":"t3_1abcde"}}' curl -o results.csv "https://prolevelmax.com/v1/runs/RUN\_ID/download?format=csv" \ -H "Authorization: Bearer sk_procli_..."
| Endpoint | What it does |
|---|---|
POST /v1/discover | Find sources for a request in English or Chinese. Body: query, limit (1–50) |
POST /v1/inspect | Input fields, price and quote for one source (quote.maxCharge is the most the run can cost). Body: scraper, optional input and maxItems |
POST /v1/run | Run a source, billed to your balance. Body: scraper, input, maxItems (per-result sources return up to 100 unless set), timeout (seconds, max 300), async (true returns 202 and a runId at once) |
GET /v1/runs | Your recent runs, newest first. Query: limit (1–100, default 20), offset |
GET /v1/runs/:id | Status, cost and results of a run. Query: offset, limit (1–1000) to read the results in pages |
GET /v1/runs/:id/download | Download the results. Query: format=csv, xlsx or json (nested fields become a.b columns) |
GET /v1/whoami | Verify the key and check the balance |
Paging: per-call sources return one page per call. The result's page object carries the cursor for the next page (cursor, after, max_cursor and the like); pass it as the paging field listed by inspect.
Schedules
Run a source automatically every day or every week at a set Beijing time, for example to check Xiaohongshu for your brand every morning. Each run is billed like a normal run and never costs more than its runCap; monthlyCap optionally limits a calendar month. Results appear in your run history. A schedule pauses itself, and emails you, after 3 failed runs in a row or when the balance is too low.
curl https://prolevelmax.com/v1/schedules \ -H "Authorization: Bearer sk_procli_..." \ -H "Content-Type: application/json" \ -d '{"scraper":"procli_xiaohongshu_b","input":{"keyword":"your brand"}, "frequency":"daily","time":"09:00","runCap":0.05,"notifyEmail":true}'
| Endpoint | What it does |
|---|---|
POST /v1/schedules | Create a schedule. Body: scraper, input, maxItems, frequency (daily or weekly), weekday (1–7 or mon–sun, weekly only), time (HH:MM, Beijing time), runCap (USD; default: the source's quote for this input), monthlyCap (optional), notifyEmail. With dryRun: true it returns a preview and saves nothing |
GET /v1/schedules | Your schedules: next run, last run (runId and status), spent this month, on or off |
GET /v1/schedules/:id | One schedule |
PATCH /v1/schedules/:id | Change the time, caps or email, or turn it on and off with enabled; turning it back on clears a pause |
DELETE /v1/schedules/:id | Delete a schedule; past runs are kept |
MCP tools: procli_schedule_create (call it without confirmed for a preview, then with confirmed: true once the user agrees to the cost), procli_schedule_list, procli_schedule_delete. You can also see, pause and delete schedules in the console under Schedules.
Tools
Tools available over MCP.
procli_discover Find sources for a request, in English or Chinese
procli_inspect Input fields, price and quote
procli_run Run a source (charges your balance); returns a preview, the total, the cost, the balance and download links
procli_runs_get Run status and results, in pages
procli_balance Check the current balance
procli_schedule_create Schedule a daily or weekly run (previews the cost; saved only after the user confirms)
procli_schedule_list List schedules with their next and last runs
procli_schedule_delete Delete a schedule
Billing
- Two modes: per call (a fixed price per call, one page per call) and per result (billed by rows returned, plus a run fee and a per-run minimum). Each platform's mode is listed on the pricing page.
- inspect returns a quote (the most the run can cost) before the run. The charge never exceeds the quote. Your AI tells you the price first and asks before any run that can cost more than $0.10.
- Per-result sources return up to 100 results unless you set maxItems. Run size is capped by your balance; a reduced run says so in its result. Your account is never overdrawn.
- Failed runs are usually free. If part of the work was already done before the failure, a partial charge applies, never more than the run's quote.
- Each account runs up to 5 jobs at a time, across all of its API keys and connections. Results are kept for 30 days.
- Refunds: within 30 days of a top-up, its unused part can be refunded to the original payment method from Dashboard → Billing → Request a refund (processing fees are not returned). If a run looks wrongly charged, open it and choose “Report a billing problem”. See the refund policy.
Errors
Errors are JSON: {"code": 402, "type": "insufficient_balance", "message": "…", "requestId": "…"}. type is a stable identifier you can branch on.
| HTTP | type | Meaning | What to do |
|---|---|---|---|
202 | Async run started | Poll GET /v1/runs/:id with the runId | |
400 | invalid_request | A required field is missing or malformed | Check the request body against the docs |
401 | unauthorized | Missing or invalid API key | Check the Authorization header |
402 | insufficient_balance | Insufficient balance | Top up in the dashboard |
402 | spend_limit | The API key or connected app reached its daily or monthly spending limit (UTC) | Raise the limit in the console under API keys or Settings → Connected apps; no top-up needed |
404 | unknown_source · run_not_found · not_found | Unknown source or run ID, or the requested post or user does not exist | Use discover to find valid sources, or check the ID |
405 | method_not_allowed | Wrong HTTP method | See the Allow header |
409 | balance_reserved · run_in_progress | Balance held by runs still in progress, or the run has not finished | Retry when they finish, or ask for fewer results with maxItems; no top-up needed |
422 | invalid_input | The source rejected the input | Fix the input using inspect's fields; do not retry unchanged |
429 | too_many_runs · rate_limited | Too many runs at once (5 per account), or the source is busy | Wait, then retry |
502 | source_error | Data source error | Retry. Usually not charged; any charge stays within the quote |
503 | unavailable | Source temporarily unavailable | Retry later or use another source |
Need help?
toph@prolevelmax.com Toph · Founder
Discord discord.gg/RvSSbYETgd