OpenClaw Mobile Proxy Setup with MCP
Give an OpenClaw assistant the Coronium MCP server, so it can check stock, read your lines and rotate an IP, with spending off.
OpenClaw is a self-hosted gateway that puts an AI assistant behind WhatsApp, Telegram, Slack, Discord and other chat apps. A Coronium line gives it two things: lines it can manage from a chat message, and a carrier IP for its browser instead of the address of the server it runs on.
Checked against the OpenClaw documentation on 30 October 2026. Sources are listed at the end.
// ~/.openclaw/openclaw.json (JSON5)
{
mcp: {
servers: {
coronium: {
command: "npx",
args: ["-y", "coronium-proxy-mcp@2.3.0"],
env: {
CORONIUM_API_TOKEN: "YOUR_CORONIUM_API_TOKEN",
CORONIUM_TOOL_PROFILE: "directory",
},
requestTimeoutMs: 200000,
},
},
},
}Before you start
A running OpenClaw gateway
Installed with the one-line install script from the OpenClaw getting started page, or with Docker, Nix or npm. OpenClaw needs a recent Node (24.16 or later on 24, or 26.1 or later), which also covers the Node 20 the Coronium server needs.
A Coronium API token
Created in dashboard.coronium.io, Account, API Access. It goes into the gateway's config file, on the machine that runs OpenClaw, and nowhere else.
A line, for the browser part
Managing stock needs no line at all. Routing the assistant's browser through a carrier IP needs one, in the country the browsing should come from.
What the agent gets
The Coronium MCP server is coronium-proxy-mcp on npm. The environment variable CORONIUM_TOOL_PROFILE decides which tools exist inside OpenClaw. Counts below were read with tools/list on the current release.
| Profile | Tools | Money tools | Use it for |
|---|---|---|---|
| directory | 21 | None | An agent that checks, tests and rotates lines you already rent. The hosted server runs this profile. |
| read-only | 31 | None | Reporting: balances, lines, usage, payments and tickets, with nothing that changes state. |
| buyer | 12, or 13 with CORONIUM_ENABLE_SPENDING=1 | Buy only, and only with spending on | An agent that quotes, buys and runs a few lines after you approve each total. |
| full | 59, plus 6 money tools with spending on | Buy, renew, top up and cancel, only with spending on | Everything else: settings, webhooks, rotation timers and Node tools. The server default when the profile is unset. |
- directory
- Tools: 21
- Money tools: None
- An agent that checks, tests and rotates lines you already rent. The hosted server runs this profile.
- read-only
- Tools: 31
- Money tools: None
- Reporting: balances, lines, usage, payments and tickets, with nothing that changes state.
- buyer
- Tools: 12, or 13 with CORONIUM_ENABLE_SPENDING=1
- Money tools: Buy only, and only with spending on
- An agent that quotes, buys and runs a few lines after you approve each total.
- full
- Tools: 59, plus 6 money tools with spending on
- Money tools: Buy, renew, top up and cancel, only with spending on
- Everything else: settings, webhooks, rotation timers and Node tools. The server default when the profile is unset.
Start with directory. Its tools include coronium_list_free_modems, coronium_list_tariffs, coronium_get_proxies, coronium_test_modem, coronium_rotate_modem, coronium_get_rotation_status, coronium_replace_modem and coronium_get_renewal_quote. Names can change between releases, so let the agent read them from tools/list rather than from this page.
Add the Coronium server to OpenClaw
OpenClaw keeps MCP servers under mcp.servers in its config. You can edit the file or use the CLI; both write the same entry.
Write the entry into the config file
Open
~/.openclaw/openclaw.json(it is JSON5, so comments and trailing commas are fine) and add thecoroniumentry shown at the top of this page undermcp.servers. Stdio entries takecommand,args,envandcwd.Checked against OpenClaw: Configuration, MCP, skills and plugins
Or save it from the command line
openclaw mcp settakes the server name and one JSON object. It writes the same entry; note that the token then sits in your shell history, so the config file is the tidier route.Terminal openclaw mcp set coronium '{"command":"npx","args":["-y","coronium-proxy-mcp@2.3.0"],"env":{"CORONIUM_API_TOKEN":"YOUR_CORONIUM_API_TOKEN","CORONIUM_TOOL_PROFILE":"directory"},"requestTimeoutMs":200000}'Checked against OpenClaw: Manage saved MCP servers
Raise the request timeout
OpenClaw gives each MCP request 60 seconds by default. A rotation or a replacement waits for the carrier and can take longer, so set
requestTimeoutMson the entry to 200000 (200 seconds).Checked against OpenClaw: Configuration, MCP, skills and plugins
Probe the server
Run
openclaw mcp probe coronium. It opens a live connection and lists what the server offers, which is the fastest way to see a typo or a missing token.openclaw mcp show coronium --jsonprints the saved entry with the token redacted.Terminal openclaw mcp probe coronium openclaw mcp show coronium --jsonChecked against OpenClaw: MCP CLI
Or use the hosted server
OpenClaw can connect to remote MCP servers over Streamable HTTP with OAuth. Add an entry with
url: "https://api.coronium.io/mcp",transport: "streamable-http"andauth: "oauth", then runopenclaw mcp login coronium-remoteand sign in with your Coronium dashboard account. There is no token to paste, and that server never spends.~/.openclaw/openclaw.json { mcp: { servers: { "coronium-remote": { url: "https://api.coronium.io/mcp", transport: "streamable-http", auth: "oauth", }, }, }, }Checked against OpenClaw: Transports and OAuth
First tasks to try
Ask in plain words. The agent picks the tools; the names below are what it should call, so you can tell from its log whether it did.
โWhich countries have Coronium lines in stock right now, and what does 24 hours cost in each?โ
Calls
coronium_list_free_modemsthencoronium_list_tariffs. Reads live stock and plans. Nothing is bought.โShow my Coronium lines with their country, carrier, expiry and SOCKS5 URL.โ
Calls
coronium_get_proxies. Returns credentials. Treat the answer as a secret and keep it out of shared chats.โRotate my line called <name> and tell me the new IP once the rotation has finished.โ
Calls
coronium_rotate_modemthencoronium_get_rotation_status. A rotation answers done, rotating (poll the status, do not resubmit) or unchanged (the carrier kept the IP; wait about 60 seconds).
Rotating from a chat message
Ask the assistant to rotate a line by name. It calls coronium_rotate_modem, then coronium_get_rotation_status until the answer is done. If the answer is rotating, the right move is to wait and poll, not to send the rotation again.
Never paste a line's Reset Link into a chat with the assistant. WhatsApp, Telegram, Slack and Discord fetch a preview of every link they see, and each fetch of a Reset Link is a rotation. The MCP tool does the same job without the link ever appearing in a message.
Leave at least 60 seconds between rotations of one line. An assistant that rotates on a schedule should be told the interval in its instructions, or the line can carry a timer instead.
Keep money tools off
An OpenClaw gateway takes messages from whoever can reach it in your chat apps. That alone is a reason to keep the Coronium entry on the directory profile, which cannot spend.
If you do want the assistant to buy, switch that entry to buyer and set CORONIUM_ENABLE_SPENDING=1 in its env, and give it a rule that every purchase needs your yes for the exact total. With the hosted server, use https://api.coronium.io/mcp/buyer: purchases stay off for each new connection until you turn them on, with your password, at Connected AI apps.
- Money tools appear only when
CORONIUM_ENABLE_SPENDING=1is set in the host environment and the profile isbuyer(buy only) orfull. A.envfile in the working directory cannot turn it on. - Every money call needs
confirm: true, a new idempotency key for each approved order, an explicit funding source and the exact approved total; any other live total is refused withprice_changed. - The server spends money already on the account. It has no way to add funds; a person does that in the dashboard.
Give the assistant's browser the line
OpenClaw launches its managed Chrome without a proxy on purpose, and the HTTP_PROXY style variables of the gateway do not reach it. To send the browser through a line, OpenClaw documents passing Chrome's own flag through browser.extraArgs.
Chrome's --proxy-server flag has a scheme, a host and a port, and no place for a username and password. With an HTTP proxy that asks for a login, Chrome shows a sign-in prompt, which a headless browser cannot answer. OpenClaw's managed profiles are headless by default, so set headless: false and enter the line's username and password when Chrome asks.
OpenClaw's docs add that strict SSRF mode blocks explicit browser proxy routing unless private-network browser access is deliberately enabled. If the flag seems to be ignored, look at browser.ssrfPolicy first. For a browser that signs in to the line by itself, add Playwright MCP as a second server: its config file takes the proxy username and password.
{
browser: {
headless: false,
extraArgs: ["--proxy-server=http://CONNECTION_IP:HTTP_PORT"],
},
}Hardening the setup
OpenClaw can hide individual tools from the agent with a toolFilter on the server entry, by exact name or with * globs. A filter that excludes coronium_replace_modem keeps the assistant from swapping a line on a whim while it can still test and rotate.
- Create the API token in dashboard.coronium.io, Account, API Access and keep it in the host's config, never in a chat or a repository. Regenerating it in the dashboard revokes the old one.
- Give each agent its own line. Two agents on one line rotate each other's IP in the middle of a task.
- The answer to
coronium_get_proxiescontains proxy passwords. Treat it, the Reset Link and any OpenVPN profile as secrets. coronium_replace_modemis irreversible: the line gets a new device, new credentials and possibly a new carrier. Filter it out if the agent should never do that on its own.
toolFilter: { exclude: ["coronium_replace_modem"] },Check it worked
Ask the assistant for the IP its browser sees, and compare it with the line's IP in the dashboard. Then open the pages below in that browser yourself.
- The IP and the carrier
- Open What Is My IP through the line. The country should be the line's country and the network should be the mobile carrier, not a hosting company.
- WebRTC
- Run the WebRTC leak test. The only public address it should report is the line's. Your own address showing up means the browser is leaking around the proxy.
- Timezone against the IP
- The IP and timezone check compares the clock the browser reports with the timezone of the IP. A mismatch is one of the first things anti-fraud systems look at.
From a terminal the agent can use, the same check is one request. Export the line's details once, then ask an IP echo service which address it sees:
export CORONIUM_PROXY_HOST="CONNECTION_IP"
export CORONIUM_HTTP_PORT="HTTP_PORT"
export CORONIUM_SOCKS_PORT="SOCKS5_PORT"
export CORONIUM_PROXY_USER="USERNAME"
export CORONIUM_PROXY_PASS="PASSWORD"
curl -x "http://$CORONIUM_PROXY_USER:$CORONIUM_PROXY_PASS@$CORONIUM_PROXY_HOST:$CORONIUM_HTTP_PORT" https://api.ipify.orgWhen it does not connect
| What you see | Likely cause | What to do |
|---|---|---|
| No Coronium tools in the assistant | The server did not start: a JSON typo, Node too old, or a profile name outside the four that exist. | openclaw mcp probe coronium shows the error. The profile must be directory, buyer, full or read-only. |
| Rotation calls time out | OpenClaw's default request timeout is 60 seconds, and a rotation can take longer. | Set requestTimeoutMs to 200000 on the coronium entry. |
| A line rotated right after you shared a link | The chat app fetched a preview of the Reset Link. | Keep Reset Links out of chats. Ask the assistant to rotate instead, which uses the MCP tool. |
| The browser still shows the server's IP | The managed browser ignores proxy environment variables, or the extra flag was not applied. | Put --proxy-server in browser.extraArgs, restart the browser, and check browser.ssrfPolicy. |
| Pages fail in the headless browser | The line asks for a login that a headless Chrome cannot enter. | Run that profile with headless: false and sign in once, or browse through Playwright MCP with the credentials in its config. |
| The hosted server is not connected | OAuth sign-in has not been completed for that entry. | Run openclaw mcp login coronium-remote on a machine with a browser and approve the connection. |
- No Coronium tools in the assistant
- The server did not start: a JSON typo, Node too old, or a profile name outside the four that exist.
openclaw mcp probe coroniumshows the error. The profile must bedirectory,buyer,fullorread-only.- Rotation calls time out
- OpenClaw's default request timeout is 60 seconds, and a rotation can take longer.
- Set
requestTimeoutMsto 200000 on the coronium entry. - A line rotated right after you shared a link
- The chat app fetched a preview of the Reset Link.
- Keep Reset Links out of chats. Ask the assistant to rotate instead, which uses the MCP tool.
- The browser still shows the server's IP
- The managed browser ignores proxy environment variables, or the extra flag was not applied.
- Put
--proxy-serverinbrowser.extraArgs, restart the browser, and checkbrowser.ssrfPolicy. - Pages fail in the headless browser
- The line asks for a login that a headless Chrome cannot enter.
- Run that profile with
headless: falseand sign in once, or browse through Playwright MCP with the credentials in its config. - The hosted server is not connected
- OAuth sign-in has not been completed for that entry.
- Run
openclaw mcp login coronium-remoteon a machine with a browser and approve the connection.
Questions
Can OpenClaw buy Coronium lines on its own?
Not with the setup on this page. The directory profile has no money tools. Buying needs the buyer profile with CORONIUM_ENABLE_SPENDING=1, or the hosted buyer URL with purchases turned on for that connection, and every purchase still needs the exact approved total. It spends money already on the account; it cannot add funds.
Which tool profile suits an OpenClaw gateway?
directory, with 21 tools: balances, your lines, health, tests, rotation, replacement, OpenVPN profiles, plans and stock, renewal quotes and tickets, and nothing that spends. Anyone who can message the assistant can ask for those, so keep money tools off unless only you can reach it.
Can I use the hosted Coronium MCP server instead of npx?
Yes. OpenClaw supports remote MCP servers over Streamable HTTP with OAuth. Add https://api.coronium.io/mcp with auth set to oauth and run openclaw mcp login for that entry. You sign in with your Coronium account instead of pasting a token.
Is it safe to send my rotation link in a chat?
No. Chat apps fetch link previews, and every request to a Reset Link rotates the line. Ask the assistant to rotate the line by name instead; it uses the MCP tool and the link never appears in the chat.
Does the MCP server change the IP OpenClaw uses for its model calls?
No. The Coronium MCP server manages your lines through the Coronium API; it does not route OpenClaw's own traffic. Only the browser you point at the line with --proxy-server, or a tool you configure with the line's details, leaves through the carrier IP.
How we checked
Every OpenClaw config key, command and flag on this page was read from the pages below on 30 October 2026. The Coronium side comes from the dashboard and the live API. There are no screenshots: we quote the names instead of showing an account we do not run. If a label in OpenClaw has moved since, the tool's own page is the one to trust.
- OpenClaw: Getting startedThe install script and the Node versions OpenClaw needs.
- OpenClaw: Configuration, MCP, skills and pluginsmcp.servers, the JSON5 config file, requestTimeoutMs and its 60-second default, enabled and toolFilter.
- OpenClaw: Manage saved MCP serversopenclaw mcp set, list, show and unset, and the redaction of env values in show.
- OpenClaw: MCP CLIprobe opens a live connection and lists capabilities.
- OpenClaw: Transports and OAuthStdio fields (command, args, env, cwd), the stdio env safety filter, Streamable HTTP and openclaw mcp login.
- OpenClaw: Browser configurationManaged Chrome launches direct, browser.extraArgs for proxy flags, the strict SSRF note and headless by default.
- coronium-proxy-mcp on npmPackage and version; tool names read with tools/list on the current release on 30 October 2026.