> ## Documentation Index
> Fetch the complete documentation index at: https://docs.proxylane.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How to set up 20 browser profiles with MCP

> One request to an AI agent creates 20 AdsPower profiles, each on its own checked home IP.

An AI agent with two Model Context Protocol (MCP) servers sets up a batch of browser profiles from one text request. The ProxyLane server gives each profile its own [sticky session](https://docs.proxylane.dev/rotating-and-sticky.md) in the target city and checks the exit IP, the address that websites see for that profile. The AdsPower server creates the profiles. The example builds 20 profiles for ad accounts in Houston, US, named `tx01` to `tx20`.

🤖  One request replaces 20 rounds of copying proxy details into AdsPower. For each profile the agent checks the IP, then creates the profile. Claude Code asks before each tool call unless the tool is allowed in its permissions.

## Prerequisites

* [Claude Code](https://docs.anthropic.com/en/docs/claude-code/setup) 2.1 or later. Any MCP client that supports remote servers with sign-in works the same way. The commands below are for Claude Code.
* [Node.js](https://nodejs.org/en/download) 18 or later, required by the AdsPower MCP server.
* [AdsPower](https://www.adspower.com/download) installed, signed in, and open on the same computer, on a paid plan. The [AdsPower Local API](https://localapi-doc-en.adspower.com/docs/Rdw7Iu) is not available on the free plan.
* An AdsPower API key and the Local API port, both shown in the API settings of the AdsPower app.
* A ProxyLane account with purchased [traffic](https://docs.proxylane.dev/traffic-and-payments.md). IP reputation checks work only after a traffic purchase, and each check uses a small amount of traffic.

The AdsPower part of this guide follows the [AdsPower MCP server README](https://github.com/AdsPower/adspower-browser) for package `local-api-mcp-typescript` 2.0.8.

## Connect both servers

**1. Add the ProxyLane server**

Run in a terminal:

```bash wrap theme={null}
claude mcp add --scope user --transport http proxylane https://proxylane.dev/mcp
```

`--scope user` makes the server available in every folder. Start Claude Code with `claude`, run `/mcp`, and choose `proxylane`. A ProxyLane sign-in window opens in the browser. Sign in and click <kbd>Allow access</kbd>. No API key or password goes into the chat.

**2. Add the AdsPower server**

Run in a terminal, with the API key in place of `<ADSPOWER_API_KEY>`:

```bash wrap theme={null}
claude mcp add --scope user adspower-local-api -e PORT="50325" -e API_KEY="<ADSPOWER_API_KEY>" -- npx -y local-api-mcp-typescript@2.0.8
```

`50325` is the default AdsPower Local API port. If the API settings in AdsPower show a different port, use that number.

**3. Check both connections**

Exit Claude Code with `/exit`, run `claude` again, and send:

```text wrap theme={null}
Show my ProxyLane account and my AdsPower groups.
```

The agent calls `get_account` on ProxyLane and `get-group-list` on AdsPower. The answer shows the residential traffic balance and any AdsPower groups. Group ID `0` is the ungrouped group and works in `create-browser` even when the list does not show it.

## Send the request

Copy the request, change the city, count, or name prefix if needed, and send it to the agent:

```text wrap theme={null}
Create 20 AdsPower profiles for ad accounts in Houston, Texas, US, named tx01 to tx20, in group 0.
1. Find the region and city codes with residential_list_locations.
2. Call residential_create_connections with count 20, session_mode sticky, session_prefix tx, protocol http, and save_as_list true with list_title "Houston ads".
3. For each session, call residential_check_connection with the same location, protocol http, session_mode sticky, its session_id, and max_score 25. Use the connection and session_id it returns only when ok is true.
4. Create each profile with create-browser. Set user_proxy_config to proxy_soft "other", proxy_type "http", and the host, port, username, and password of the checked connection.
5. Skip any profile whose check returns threshold_not_met and list it at the end.
6. Finish with a table: profile, session, exit IP, city, fraud score.
If the work stops early, continue from the first profile that does not exist in AdsPower.
```

The agent works through the list in this order:

| Step | Tool | Result |
| - | - | - |
| Find Houston | `residential_list_locations` | Region and city codes |
| Create 20 sessions | `residential_create_connections` | Sticky sessions `tx01` to `tx20`, saved as one list |
| Check each IP | `residential_check_connection` | Exit IP, city, and fraud score from 0 (clean) to 100 |
| Create each profile | `create-browser` in AdsPower | Profile with its own proxy |

Tools that start with `residential_` belong to the ProxyLane server.

If an exit IP scores above `25`, `residential_check_connection` tries a new session in the same city, up to 3 times. The returned `session_id` then differs from the original, and the profile gets the replacement session.

> [!TIP]
>
> Keep the agent's final table as the record of which session each profile uses. The "Houston ads" list under <kbd>Saved lists</kbd> on the [Residential proxies](https://proxylane.dev/dashboard/proxies) page holds the sessions created in step 2. A replacement session such as `tx03r1` is not in that list, and the original `tx03` stays there with its rejected IP.

## Check the result

1. In AdsPower, open the profile list. Profiles `tx01` to `tx20` appear in the ungrouped group, minus any profile the agent reported as skipped.
2. Open one profile and visit [My IP](https://proxylane.dev/tools/what-is-my-ip). The IP and city match the row for that profile in the agent's table.
3. Compare the time zone on My IP with the profile settings. AdsPower sets the time zone from the proxy IP by default.

The [sensitive accounts guide](https://docs.proxylane.dev/sensitive-accounts.md#keep-accounts-apart) lists the profile settings that keep accounts apart after launch.

## Use Native ISP for fixed IPs

A residential sticky session keeps its IP while the home device behind it stays online. For accounts that need the same IP for months, use Native ISP static IPs instead. ProxyLane rents each IP for 30, 60, or 90 days from the USD balance of the account.

```text wrap theme={null}
Show ProxyLane Native ISP products for the US and price 20 IPs for 30 days.
```

The agent calls `isp_list_products` and `isp_quote_order`. These tools appear only while Native ISP sales are open. If the balance is short, the quote includes a top-up link for the missing amount. Place the order on the [Native ISP page](https://proxylane.dev/dashboard/isp-proxies). After the IPs are issued, ask the agent to call `isp_list_orders` with format `adspower` and to create one profile per IP.

## Troubleshoot

* The agent says the ProxyLane account has no traffic. It calls `residential_top_up` and returns a checkout link. Pay on that page, then send the request again.
* A check returns `threshold_not_met`. No session in that city met the score after 3 attempts. The same session names return the same IPs while those sessions last, so ask the agent to check the skipped profiles with a new session prefix, for example `txb`, or with `max_attempts` 5. A broader location, such as the whole state, also helps.
* AdsPower returns "Not found". Update the AdsPower app to its current patch version, as the [AdsPower MCP server README](https://github.com/AdsPower/adspower-browser) advises.
* AdsPower calls fail with a connection or key error. Check that the AdsPower app is open and that the port and API key in the `claude mcp add` command match the API settings in AdsPower. To change them, run `claude mcp remove adspower-local-api --scope user` and add the server again.
* AdsPower refuses new profiles. The AdsPower plan has a profile limit. Check the limit in the AdsPower app or create fewer profiles.
* A check fails with a daily limit message. Each account has 200 IP reputation checks per day, and `get_account` shows how many are left. Retries count as separate checks.
* `/mcp` does not list `proxylane` or `adspower-local-api`. The server was added without `--scope user` in another folder. Run the `claude mcp add` command again with `--scope user`.
* The ProxyLane sign-in window does not open. Run `/mcp` in Claude Code, choose `proxylane`, and select the authenticate option.

For anything else, contact [ProxyLane support](https://docs.proxylane.dev/support.md) with the time of the request and the profile names.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.