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.

Barındırılan MCP Sunucusu

npx add-mcp 'https://prolevelmax.com/mcp'

Claude Code, Codex, Cursor ve daha fazlasına kurulur

Dokümantasyon

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_..."

EndpointWhat it does
POST /v1/discoverFind sources for a request in English or Chinese. Body: query, limit (1–50)
POST /v1/inspectInput fields, price and quote for one source (quote.maxCharge is the most the run can cost). Body: scraper, optional input and maxItems
POST /v1/runRun 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/runsYour recent runs, newest first. Query: limit (1–100, default 20), offset
GET /v1/runs/:idStatus, cost and results of a run. Query: offset, limit (1–1000) to read the results in pages
GET /v1/runs/:id/downloadDownload the results. Query: format=csv, xlsx or json (nested fields become a.b columns)
GET /v1/whoamiVerify 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}'

EndpointWhat it does
POST /v1/schedulesCreate 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/schedulesYour schedules: next run, last run (runId and status), spent this month, on or off
GET /v1/schedules/:idOne schedule
PATCH /v1/schedules/:idChange the time, caps or email, or turn it on and off with enabled; turning it back on clears a pause
DELETE /v1/schedules/:idDelete 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.

HTTPtypeMeaningWhat to do
202Async run startedPoll GET /v1/runs/:id with the runId
400invalid_requestA required field is missing or malformedCheck the request body against the docs
401unauthorizedMissing or invalid API keyCheck the Authorization header
402insufficient_balanceInsufficient balanceTop up in the dashboard
402spend_limitThe 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
404unknown_source · run_not_found · not_foundUnknown source or run ID, or the requested post or user does not existUse discover to find valid sources, or check the ID
405method_not_allowedWrong HTTP methodSee the Allow header
409balance_reserved · run_in_progressBalance held by runs still in progress, or the run has not finishedRetry when they finish, or ask for fewer results with maxItems; no top-up needed
422invalid_inputThe source rejected the inputFix the input using inspect's fields; do not retry unchanged
429too_many_runs · rate_limitedToo many runs at once (5 per account), or the source is busyWait, then retry
502source_errorData source errorRetry. Usually not charged; any charge stays within the quote
503unavailableSource temporarily unavailableRetry later or use another source

Need help?

toph@prolevelmax.com Toph · Founder

Discord discord.gg/RvSSbYETgd