Configure any available plan and add-ons. Pay only for 48 hours.
Try proxiesEverything you do in the Dashboard is available two other ways:
{
"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.
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.
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.
You can start before you even create a key: the country list with live stock and price quotes are open to everyone.
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.
curl -s "https://papaproxy.net/account_new/api/v1/billing/countries?product_kind=proxy_datacenter"
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.
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}
]
}'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.
export PAPAPROXY_API_KEY="fb_..." curl -s https://papaproxy.net/account_new/api/v1/customer/services \ -H "Authorization: Bearer $PAPAPROXY_API_KEY"
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.
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.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.
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.
{
"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.
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:
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.
{
"servers": {
"papaproxy-net": {
"type": "http",
"url": "https://papaproxy.net/account_new/api/v1/mcp",
"headers": {
"Authorization": "Bearer fb_YOUR_API_KEY"
}
}
}
}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.
{
"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.
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.
{
"mcpServers": {
"papaproxy-net": {
"type": "streamableHttp",
"url": "https://papaproxy.net/account_new/api/v1/mcp",
"headers": {
"Authorization": "Bearer fb_YOUR_API_KEY"
}
}
}
}Add the server to ~/.codex/config.toml. Codex reads the key from an environment variable, so the key isn’t stored in the file.
[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.
Add the server to ~/.gemini/settings.json for all projects, or to .gemini/settings.json in one project.
{
"mcpServers": {
"papaproxy-net": {
"httpUrl": "https://papaproxy.net/account_new/api/v1/mcp",
"headers": {
"Authorization": "Bearer fb_YOUR_API_KEY"
}
}
}
}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.
{
"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 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”.
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.
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.The full list of MCP tools in the API reference shows the scope each tool requires and the REST endpoint it calls.
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.
| Scope | What it allows |
|---|---|
catalog:read | Products, countries, stock, and prices |
services:read | Your services, proxy IPs, credentials, IP whitelisting, refresh status, and add-ons |
services:write | Orders, renewals, cancellation, auto-renewal, credentials, IP whitelisting and connection limits, IP refresh, add-ons, and sticky sessions |
usage:read | Usage statistics and analytics |
wallet:read | Balance, transactions, invoices, and payment methods |
wallet:deposit | Start a balance top-up, get a checkout URL, and track its status |
wallet:spend | Pay from your balance: purchases, renewals, add-ons, extra IPs, and paid IP refreshes |
tickets:read | Read support tickets |
tickets:write | Open, reply to, and close tickets |
customer:read | Profile details and login history |
customer:write | Update profile details |
webhooks | Manage webhook endpoints and deliveries |
Every endpoint and every MCP tool in the API reference lists the scope it requires.
services:read, usage:read
For dashboards, alerting, and an agent that only analyzes. It can see everything about your services and change nothing.
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.
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.
X-FB-Signature carries an HMAC-SHA256 of the timestamp and the raw body, so your handler can confirm the event came from PapaProxy.net.Signature verification code, headers, the retry schedule, and the full event list are in the API reference.
wallet:spend, a key can read, quote, and configure, but it can’t pay for anything.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.
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.
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.
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.
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.
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.