Products
Datacenter proxies from $19/mo Rotating proxies from $25/mo ISP proxies from $33/mo Dedicated proxies from $3.50/mo UDP proxies from $5/mo Try proxies
Use cases
Data & scraping AI services Social media & messaging E-commerce & finance Media & entertainment Marketing & ads Automation & tools All use cases →
Pricing
Full pricing table All locations Money-back guarantee
Resources
Dashboard guide API reference API and MCP Setup guides FAQ Blog For business About us Affiliate program
New dashboard
English
English Русский
For developers

API and MCP: full proxy automation

Everything you do in the Dashboard is available two other ways:

  1. The REST API, for scripts and services.
  2. The MCP server, for Cursor, Claude Code, and other agents.
MCP server
mcp.json
{
  "mcpServers": {
    "papaproxy-net": {
      "url": "https://papaproxy.net/account_new/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer fb_YOUR_API_KEY"
      }
    }
  }
}

Replace fb_YOUR_API_KEY with your key, and your agent gets 56 tools for working with your account. Create a key.

Try it without a key
Prompt
Read https://papaproxy.net/developers.md. Using the public endpoints described there (no API key needed), show which countries have datacenter proxies in stock right now and quote 100 US IPs for 1 month. Then tell me what you could do with my PapaProxy.net account once I connect the MCP server with an API key.

Works with any agent that can open web pages and send HTTP requests, such as Cursor or Claude Code.

REST API or MCP: pick by who makes the decision

The two interfaces reach the same account operations. The difference is where the logic lives: in code you wrote and tested, or in an agent that interprets a request and chooses the calls itself. Many teams use both — the API for production pipelines, MCP for ad hoc work and troubleshooting.

REST API

Your code decides. Predictable, repeatable, easy to test.
  • A scraper fetches the current proxy list at the start of every run, so a list refresh doesn’t leave it with outdated IPs.
  • A provisioning script orders IPs for a new environment and adds its server to IP whitelisting in the same order request.
  • An internal finance report pulls the balance, ledger entries, and invoice PDFs once a month.
  • Webhooks notify your backend about account events, so you don’t have to poll.

MCP server

You describe the outcome. The agent chooses the tools.
  • One-off requests in plain English: “add 200 German IPs to my datacenter plan”.
  • Troubleshooting: the agent compares usage over time, errors by category, and top destinations, then suggests what to change.
  • Routine housekeeping — renewals, whitelist edits, credential rotation, support tickets — without opening the Dashboard.
  • Prototyping: ask the agent to run an operation and show the response before you write the same call in code.

Your first request in three steps

You can start before you even create a key: the country list with live stock and price quotes are open to everyone.

  1. Check available locations and stock

    Returns every country with an ISO code and the number of IPs currently available. Set product_kind to proxy_datacenter or proxy_isp. Dedicated proxies have their own endpoints, starting with GET /billing/dedicated/countries.

    bash
    curl -s "https://papaproxy.net/account_new/api/v1/billing/countries?product_kind=proxy_datacenter"
  2. Get a price for your country mix

    A quote is free and non-binding. The response includes the price per segment, the volume discount, and the monthly total in cents. Set period_months to 3, 6, or 12 to see the term discount. A package needs at least 100 IPs in total and at least 10 per country; a country below 10 IPs is listed in errors and left out of the total.

    bash
    curl -s -X POST https://papaproxy.net/account_new/api/v1/billing/composite/quote \
      -H "Content-Type: application/json" \
      -d '{
        "product_kind": "proxy_datacenter",
        "period_months": 1,
        "segments": [
          {"country": "US", "count": 300},
          {"country": "DE", "count": 200}
        ]
      }'
  3. Create a key and call your account

    In the Dashboard, open Settings → API keys, name the key, and select only the scopes it needs. The full key is displayed once, right after creation — store it in a secrets manager or an environment variable.

    bash
    export PAPAPROXY_API_KEY="fb_..."
    
    curl -s https://papaproxy.net/account_new/api/v1/customer/services \
      -H "Authorization: Bearer $PAPAPROXY_API_KEY"

What the REST API covers

Every Dashboard operation has an endpoint. Request and response schemas, error codes, and code samples in cURL, Python, Node.js, PHP, and Go are in the API reference, built from the public OpenAPI 3.1 specification. To send test requests with your key, use the “try it” console in your Dashboard.

Before your first order: whitelist_ips is required for proxy orders — without it, the request is rejected with HTTP 422 before any charge. use_balance: true applies your account balance first. If the balance doesn’t cover the total, or without use_balance, the service is created as pending with the remainder in amount_due_cents; pay it in the Dashboard under Pending payments.

MCP server: the Dashboard as tools for your agent

The Model Context Protocol lets an agent discover and call tools on a remote server. Connect the PapaProxy.net server once, and your agent gets 56 tools to work with your account the way you would: check stock, compare prices, buy, configure, and report back in the chat.

Connect it

Paste the configuration into your client’s MCP settings — in Cursor, that’s .cursor/mcp.json in your project or ~/.cursor/mcp.json for all projects. The server name is up to you. You can also install it in Cursor in one click and then replace fb_YOUR_API_KEY with your key. Step-by-step setup, safe tool approvals, and troubleshooting are in the Cursor MCP guide.

mcp.json
{
  "mcpServers": {
    "papaproxy-net": {
      "url": "https://papaproxy.net/account_new/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer fb_YOUR_API_KEY"
      }
    }
  }
}

Claude Code adds the same server from the command line. Scopes, permission rules, and troubleshooting are in the Claude Code MCP guide.

bash
claude mcp add --transport http papaproxy-net \
  https://papaproxy.net/account_new/api/v1/mcp \
  --header "Authorization: Bearer fb_YOUR_API_KEY"

Other clients use the same URL and header; only the file and its format differ:

VS Code (GitHub Copilot)

Run MCP: Open User Configuration from the Command Palette and add the server. The user configuration stays outside your project, so the key doesn’t end up in a repository.

mcp.json
{
  "servers": {
    "papaproxy-net": {
      "type": "http",
      "url": "https://papaproxy.net/account_new/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer fb_YOUR_API_KEY"
      }
    }
  }
}
Windsurf (Cascade)

In Cascade, open the MCP menu, choose Open MCP config file, and add the server to mcp_config.json. Current versions keep it at ~/.config/devin/mcp_config.json; older Windsurf builds use ~/.codeium/windsurf/mcp_config.json. Windsurf expects serverUrl rather than url for remote servers. Press refresh in the MCP panel after saving.

mcp_config.json
{
  "mcpServers": {
    "papaproxy-net": {
      "serverUrl": "https://papaproxy.net/account_new/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer fb_YOUR_API_KEY"
      }
    }
  }
}

To keep the key out of the file, write "Bearer ${env:PAPAPROXY_API_KEY}" as the header value and set the variable in your environment.

Cline

In the Cline panel, click the MCP Servers icon, open the Configure tab, and click Configure MCP Servers. This opens cline_mcp_settings.json (for the Cline CLI, ~/.cline/data/settings/cline_mcp_settings.json). Set type to streamableHttp explicitly: without it, Cline falls back to the legacy SSE transport.

cline_mcp_settings.json
{
  "mcpServers": {
    "papaproxy-net": {
      "type": "streamableHttp",
      "url": "https://papaproxy.net/account_new/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer fb_YOUR_API_KEY"
      }
    }
  }
}
Codex CLI

Add the server to ~/.codex/config.toml. Codex reads the key from an environment variable, so the key isn’t stored in the file.

config.toml
[mcp_servers.papaproxy-net]
url = "https://papaproxy.net/account_new/api/v1/mcp"
bearer_token_env_var = "PAPAPROXY_API_KEY"

Set the variable in the shell you start Codex from: export PAPAPROXY_API_KEY=fb_YOUR_API_KEY.

Gemini CLI

Add the server to ~/.gemini/settings.json for all projects, or to .gemini/settings.json in one project.

settings.json
{
  "mcpServers": {
    "papaproxy-net": {
      "httpUrl": "https://papaproxy.net/account_new/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer fb_YOUR_API_KEY"
      }
    }
  }
}
Claude Desktop

Claude Desktop can’t send an API key header to a remote server, so it connects through the open-source mcp-remote bridge, which requires Node.js. Open Settings → Developer → Edit Config, add the server to claude_desktop_config.json, and restart Claude Desktop.

claude_desktop_config.json
{
  "mcpServers": {
    "papaproxy-net": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://papaproxy.net/account_new/api/v1/mcp",
        "--header", "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer fb_YOUR_API_KEY"
      }
    }
  }
}
n8n

n8n has no config file: add an MCP Client Tool node to the Tool input of an AI Agent node and fill in four fields. For the credential, choose Bearer Auth and paste the key itself as the token, without the word “Bearer”.

MCP Client Tool
Endpoint:          https://papaproxy.net/account_new/api/v1/mcp
Server Transport:  HTTP Streamable
Authentication:    Bearer Auth
Bearer Token:      fb_YOUR_API_KEY

Workflows often run unattended, so give each one its own key with only the scopes it uses — for example, services:read and usage:read for a monitoring workflow — and use Tools to Include → Selected to expose only the tools it needs. For fixed steps on a schedule, such as a nightly usage report, the MCP Client node calls one tool as a regular step and doesn’t use model tokens. Human review for paid tools, proxies in HTTP Request nodes, and troubleshooting are in the n8n MCP guide.

Any other MCP client that supports remote servers with custom headers works with the same URL and header. Connectors that sign in only with OAuth, such as custom connectors in ChatGPT and in Claude on the web, can’t connect yet: the server authenticates with API keys. Examples are also in our GitHub repository.

How an agent buys proxies

list_countries1. Check stockISO country codes and the number of IPs available right now, so the agent doesn’t plan an order that can’t be filled.
quote_composite2. Price the mixThe exact price for the country mix and term. Quotes are free and don’t reserve or charge anything.
order_composite3. Buy from the balancePayment comes from your account balance, with a price guard and an idempotency key, so a retry doesn’t create a duplicate order.

What else the agent can do

ServicesCancel with a prorated refund, toggle auto-renewal, renew a suspended service to restore access, replace or add IPs.
Proxy settingsRotating-proxy connection details, credential rotation, IP whitelisting, per-IP connection limits.
Add-onsSee which add-ons a plan supports, buy them, or cancel with a prorated refund.
AnalyticsUsage summary and time series, top destinations, errors by category, and recommendations.
BillingInvoices with PDF download, available payment methods, balance top-ups, and deposit status.
SupportOpen a ticket, read the conversation, reply, and close it when the issue is resolved.
AccountProfile details, the IP the agent connects from, and login history.
Rotating plansGateway hostnames, ports, and sample connection strings. Sticky sessions are managed through the REST API.

The full list of MCP tools in the API reference shows the scope each tool requires and the REST endpoint it calls.

Requests that work well

“What would 1,000 ISP proxies across the US and Spain cost for 3 months? Don’t buy anything yet.”
“Our office IP changed to 198.51.100.24 — update IP whitelisting on all active services.”
“Why did errors increase on my datacenter plan yesterday? Break them down by category.”
“Which services expire this month, and which of them have auto-renewal turned off?”

Scopes: give each key only what it needs

A request succeeds only if the key holds the scope that endpoint requires. Scopes apply the same way to REST calls and MCP tools, so a key without wallet:spend can’t pay for anything through either interface.

ScopeWhat it allows
catalog:readProducts, countries, stock, and prices
services:readYour services, proxy IPs, credentials, IP whitelisting, refresh status, and add-ons
services:writeOrders, renewals, cancellation, auto-renewal, credentials, IP whitelisting and connection limits, IP refresh, add-ons, and sticky sessions
usage:readUsage statistics and analytics
wallet:readBalance, transactions, invoices, and payment methods
wallet:depositStart a balance top-up, get a checkout URL, and track its status
wallet:spendPay from your balance: purchases, renewals, add-ons, extra IPs, and paid IP refreshes
tickets:readRead support tickets
tickets:writeOpen, reply to, and close tickets
customer:readProfile details and login history
customer:writeUpdate profile details
webhooksManage webhook endpoints and deliveries

Every endpoint and every MCP tool in the API reference lists the scope it requires.

Typical key setups

Monitoring

services:read, usage:read

For dashboards, alerting, and an agent that only analyzes. It can see everything about your services and change nothing.

Provisioning

catalog:read, services:read, services:write, wallet:read, wallet:spend

For scripts and agents that order and configure proxies. Keep the balance at the level you’re comfortable letting automation spend.

Webhooks: get notified instead of polling

Register an HTTPS URL and choose the events you care about; GET /customer/webhooks/events returns the current list of event types. The endpoint secret appears only once, in the creation response, so save it right away.

Signature verification code, headers, the retry schedule, and the full event list are in the API reference.

Safeguards for automation that spends money

Spending is a separate scopeWithout wallet:spend, a key can read, quote, and configure, but it can’t pay for anything.
Only your balanceAgent purchases are paid from your account balance. Card details stay with the payment processor and aren’t available to the agent.
Safe retriesOrders, paid IP refreshes, and top-ups accept an idempotency key, so a repeated request returns the original result.
Revocable keysEach key shows when and from which IP it was last used. Keys are created and revoked only in the Dashboard, so a leaked key can’t be used to issue new ones.
We recommend a separate key for each integration and environment, so you can revoke one without affecting the rest. Don’t paste keys into prompts or commit them to a repository — keep them in your MCP client config or a secrets manager.

Frequently asked questions

Does API or MCP access cost extra?

No. The REST API and the MCP server are available on every account at no additional charge. You pay only for the proxies and add-ons you order, at the same prices as in the Dashboard.

Do I need programming experience to use the MCP server?

No. You paste one configuration block with your API key into your MCP client, then describe what you need in plain English. The agent picks the tools and shows the results in the chat. Programming is only needed if you want to call the REST API from your own code.

Which AI agents can connect?

Any MCP client that supports remote servers and lets you set an Authorization header, including Cursor, Claude Code, VS Code, Windsurf, Cline, Codex CLI, Gemini CLI, and n8n. Claude Desktop connects through the mcp-remote bridge. The connection details are the same for every client: the server URL and your API key. Configuration for each client is in the MCP server section.

Connectors that sign in only with OAuth, such as custom connectors in ChatGPT and in Claude on the web, can’t connect yet, because the server authenticates with API keys.

Can an agent spend more than I intend?

An agent can pay only from your account balance, and only if its key includes the wallet:spend scope. For analysis and price checks, create a key without that scope. For purchasing, keep the balance at the amount you’re willing to let it spend, and ask the agent to show a quote before it orders.

Do the API and MCP work with rotating proxies?

Yes. For rotating plans, there’s no IP list to export: you get the gateway connection details and manage sticky sessions — their mode, TTL, and forced rotation. Sticky sessions are managed through the REST API; the MCP server returns the gateway connection details. For datacenter, ISP, and dedicated proxies, you work with IP lists, credentials, and IP whitelisting.

Where is the full API reference?

The API reference lists every endpoint with its parameters, required scope, and response schema. It’s generated from the OpenAPI 3.1 specification, which is published at papaproxy.net/openapi.json — AI agents and code generators can read it directly. To send test requests with your API key, use the “try it” console in your Dashboard. For an AI agent, there’s also a Markdown version of this page.