MCProxy
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCProxylist my proxy providers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCProxy
An MCP server that gives AI agents on-demand access to proxies from the world's leading and Russian/CIS proxy providers — through a single, unified interface.
Built with FastMCP 3. When an agent needs a proxy, it calls one MCProxy tool; MCProxy talks to whichever provider you've configured and returns ready-to-use proxy strings.
Why
Every proxy provider has its own API, auth scheme, and quirks. MCProxy normalizes them behind one provider-agnostic tool surface so an agent (or you) can:
discover which providers are configured and what they support,
generate or list proxies with geo-targeting and rotation,
buy and extend proxies where the provider's API allows it,
check balance / usage and list targetable countries,
run requests through managed scraping APIs,
…without learning each vendor's API.
Related MCP server: Frostbyte MCP
How it works
AI agent ──MCP──> MCProxy (FastMCP server)
│
├─ unified tools: list_providers, get_proxies,
│ generate_proxy_list, buy_proxies, check_balance, …
│
└─ provider registry ─> per-provider adapters ─HTTP─> vendor APIsEach provider is a small adapter that maps the vendor's API onto shared models
(ProxyEndpoint, BalanceInfo, CountryListResult, …). A registry exposes them,
and a handful of generic tools dispatch to the right adapter based on a provider
argument. This keeps the tool count low (great for token usage) while supporting
many providers.
Supported providers
Implemented adapters
Provider | Region | Types | Operations |
Webshare | 🌍 US | datacenter, ISP, residential | list, balance, usage, countries |
IPRoyal | 🌍 LT | residential | generate, balance, usage, countries |
ProxyMesh | 🌍 US | datacenter, ISP | list, countries, usage |
ScraperAPI | 🌍 US | scraping API | scrape, usage |
ScrapingBee | 🌍 FR | scraping API | scrape, usage |
Proxy6 | 🇷🇺 RU | datacenter (IPv4/IPv6) | list, balance, countries, buy, extend |
ProxyLine | 🇷🇺 RU | datacenter (IPv4/IPv6) | list, balance, countries, buy, extend |
Proxy-Store | 🇷🇺 RU | datacenter, residential, mobile | list, balance, countries, buy, extend |
Proxy-Seller | 🇷🇺 RU | IPv4/IPv6/ISP/mobile/residential | list, balance, countries |
ASOCKS | 🇷🇺 RU/CIS | residential, mobile | balance |
FineProxy | 🇷🇺 RU | datacenter, ISP, residential | balance |
Documented & planned
list_providers also surfaces a catalog of major providers with public APIs whose
adapters are planned: Bright Data, Oxylabs, Decodo (Smartproxy), SOAX, NetNut,
Infatica, Proxy-Cheap, Zyte, Nimble, Rayobyte (global) and Mobile Proxy Space,
iProxy.online, ProxyMarket, Froxy (RU/CIS). See
docs/PROVIDERS.md for the full landscape, API notes and sources.
Install
Requires Python 3.12+. uv recommended.
git clone https://github.com/evgenygurin/mcproxy.git
cd mcproxy
uv venv --python 3.12
uv pip install -e . # add ".[dev]" for tests/lintingConfigure
Credentials are read from environment variables (or a local .env). Configure only
the providers you use. Copy .env.example and fill in your keys:
cp .env.example .env
# e.g.
WEBSHARE_API_KEY=...
IPROYAL_API_TOKEN=...
PROXY6_API_KEY=...list_providers shows which providers are configured and the exact env var names
each one needs.
Run
# stdio (default — for Claude Desktop, Cursor, etc.)
uv run mcproxy
# or
uv run fastmcp run server.py:mcp
# HTTP transport
MCPROXY_TRANSPORT=http MCPROXY_PORT=8000 uv run mcproxyUse with an MCP client
{
"mcpServers": {
"mcproxy": {
"command": "uv",
"args": ["run", "mcproxy"],
"env": {
"WEBSHARE_API_KEY": "your-key",
"PROXY6_API_KEY": "your-key"
}
}
}
}Tools
Tool | Purpose |
| Discover providers, capabilities and config status. Start here. |
| Capabilities for one provider. |
| List proxies already on your account (fixed-IP providers). |
| Generate proxy strings with geo + rotation (residential pools). |
| Purchase new proxies (spends money; supported providers only). |
| Renew existing proxies by ID. |
| Monitor spend and traffic. |
| Targetable locations for a provider. |
| Fetch a URL through a managed scraping API. |
| "Just give me a proxy" — picks a configured provider automatically. |
Every returned proxy includes a ready-to-use url (e.g. http://user:pass@host:port).
Settings
Global options use the MCPROXY_ prefix:
Variable | Default | Description |
|
|
|
|
| HTTP bind address. |
|
| Outbound HTTP timeout (seconds). |
| – | Preferred provider for |
Development
uv pip install -e ".[dev]"
uv run pytest # tests (in-memory MCP client + mocked HTTP)
uv run ruff check . # lint
uv run mypy src # typesAdding a provider: create src/mcproxy/providers/<name>.py subclassing
BaseProvider, override the operations it supports, and register it in
src/mcproxy/providers/__init__.py. See webshare.py for a clean reference.
Disclaimer
Use proxies lawfully and in accordance with each provider's terms of service and applicable law. This project is an integration layer; it does not endorse misuse.
License
Available Tools
11 toolsacquire_proxyARead-only
Get a single ready-to-use proxy from any configured provider.
Convenience for "I just need a proxy now": picks the first configured provider that can serve the requested type, preferring generation over listing. Use the more specific tools for control over which provider.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ||
| proxy_type | No | Category of proxy, normalized across providers. | residential |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| count | Yes | |
| proxies | Yes | |
| provider | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses the selection algorithm (first configured provider that can serve the requested type, preferring generation over listing) and that it works across any configured provider. It does not describe failure behavior or rate limits, but the annotations cover the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core function, and each sentence adds value—purpose and usage guidance. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers core function, usage context, and selection behavior. It does not explain the country parameter's role or what happens when no provider matches, but the output schema handles return values and the tool is simple with only two optional parameters. Thus it is largely complete but with noticeable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description references 'requested type' but does not explain the country parameter or confirm how parameters filter provider selection. With schema coverage at 50% (country lacks a description), the description fails to compensate for the undocumented parameter, leaving country semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool obtains a single ready-to-use proxy from any configured provider, distinguishing it from sibling tools like get_proxies (plural) and generate_proxy_list (list generation). It also notes the provider selection logic (first available, preferring generation over listing), making its scope and behavior obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly frames the tool as a convenience for when you need a proxy quickly ('I just need a proxy now'), and directs users to 'more specific tools' for provider control, implying a when-not. However, it does not name the specific alternative tools, relying on the sibling list for that information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_proxiesA
Purchase new proxies. This spends real money on the provider account.
Only available for providers that support programmatic ordering (e.g.
proxy6, proxystore, proxyline). Check list_providers first.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ||
| protocol | No | http | |
| provider | Yes | ||
| quantity | Yes | ||
| proxy_type | Yes | Category of proxy, normalized across providers. | |
| period_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| count | Yes | |
| proxies | Yes | |
| provider | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and openWorldHint=true, but the description adds critical context: 'spends real money on the provider account' and 'only available for providers that support programmatic ordering.' This exceeds the annotation baseline without contradicting it, though it could disclose failure/refund behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the first states the action, the second warns about real-money impact, and the third gives availability guidance. No filler or redundant phrasing—every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential context for selection and invocation: purpose, cost warning, and provider prerequisite. Combined with the output schema (present but not shown), this is sufficient for most agent decisions. Slightly limited by lack of parameter guidance, but that is captured in lower parameter semantics score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (only proxy_type has a description). The description does not compensate by explaining parameters like country, protocol, quantity, or period_days. It only mentions 'new proxies' and provider support, leaving the agent to infer parameter meanings from names and schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource combination ('Purchase new proxies') and clarifies scope by noting it's for new purchases only. It distinguishes from sibling tools like list_proxies and extend_proxies by emphasizing the monetary transaction and programmatic ordering requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use when buying new proxies, not for listing or extending. Explicitly instructs to check list_providers first and mentions provider-specific availability, giving strong situational guidance. Does not explicitly name alternatives but the 'new' vs 'extend' distinction is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_balanceARead-only
Check the account balance / remaining traffic allowance for a provider.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| raw | No | Provider-native payload for reference. |
| balance | No | Monetary balance, if applicable. |
| currency | No | |
| provider | Yes | |
| traffic_remaining_gb | No | Remaining traffic allowance in GB, if applicable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe read-only nature is known. The description adds context about returning balance/remaining allowance, but does not disclose specifics like response format or whether the provider parameter is a name or ID. With annotations covering safety, this description provides minimal additional behavioral context beyond the purpose, warranting a mid-range score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the action and resource. It contains no redundant words or filler, every word contributes meaning, and it is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter, an output schema exists, and annotations indicate read-only behavior. The description clearly states the core purpose and scope. While it lacks usage guidelines and parameter details, these are partially covered by the presence of sibling tools and the output schema. Overall, the description is sufficiently complete for a basic balance-check tool, though not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter 'provider' with no description, and schema coverage is 0%. The description says 'for a provider', which clarifies that the parameter identifies the provider, but it does not define what values are acceptable, whether it is an ID or name, or how it relates to business logic. This is insufficient compensation for the zero coverage, leaving the agent unsure about parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and clearly identifies the resource ('account balance / remaining traffic allowance') and scope ('for a provider'). It distinguishes itself from siblings like 'get_usage' by focusing on balance/allowance rather than usage. The phrasing is unambiguous and directly states the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. There is no mention of related tools such as 'get_usage' or 'list_providers', nor any exclusions or prerequisites. The usage context is only implied by the tool's purpose, leaving the agent without explicit decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extend_proxiesA
Extend/renew existing proxies by their IDs. Spends real money.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes | ||
| proxy_ids | Yes | ||
| period_days | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and openWorldHint=true, which is consistent with extensions. The description adds the critical warning 'Spends real money,' which is valuable behavioral context beyond the annotations. It also implies that proxies must already exist, but lacks details on failure modes or reversal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the core action and the most important risk warning. No fluff or repetition; the structure is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too brief given the 3-parameter schema and absence of parameter explanations. It omits operational details like which provider to specify, where proxy IDs come from, and how period_days affects the extension. While an output schema exists, the tool still lacks context for safe selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no descriptions for provider, proxy_ids, or period_days. The description clarifies that proxy_ids are IDs of existing proxies ('by their IDs'), but provider and period_days remain ambiguous. Provider's possible values and period_days' constraints are only found in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Extend/renew existing proxies by their IDs.' The verb 'extend/renew' and resource 'existing proxies' specify exactly what the tool does, and the phrase 'by their IDs' distinguishes it from tools like buy_proxies that create new proxies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as buy_proxies or acquire_proxy. The description only states the operation and does not mention appropriate contexts, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_proxy_listARead-only
Generate ready-to-use proxy strings with geo-targeting and rotation.
Best for residential/rotating providers (e.g. iproyal). Each proxy in the
result has a url field usable directly as an HTTP/SOCKS5 proxy.
| Name | Required | Description | Default |
|---|---|---|---|
| isp | No | ||
| city | No | ||
| count | No | ||
| region | No | ||
| country | No | ISO alpha-2 country code. | |
| protocol | No | http | |
| provider | Yes | ||
| rotation | No | How the exit IP behaves for a given proxy string. | rotating |
| proxy_type | No | Category of proxy, normalized across providers. | residential |
| session_duration | No | For sticky sessions, e.g. '10m', '2h'. Ignored when rotating. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| count | Yes | |
| proxies | Yes | |
| provider | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and open-world, so the description doesn't need to restate safety. It adds useful output behavior: 'Each proxy in the result has a url field usable directly as an HTTP/SOCKS5 proxy.' But it does not disclose details like whether it requires existing provider accounts, how it interacts with count limits, or any error behavior. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, then a useful output detail and provider recommendation. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the core purpose and a key output detail, and an output schema exists, which reduces the burden. However, it does not explain prerequisites (e.g., whether a provider is needed from list_providers), how this differs from get_proxies, or the meaning of 'generate' in a read-only context. Given the tool's complexity (10 params, sibling tools), this is a noticeable gap but not a total failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, with descriptions for country, rotation, proxy_type, and session_duration. The tool description mentions 'geo-targeting' and 'rotation' which vaguely points to several parameters but does not explicitly explain any of them. It fails to clarify the required 'provider' parameter or 'count'/'protocol'. This does not sufficiently compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Generate ready-to-use proxy strings with geo-targeting and rotation.' It also adds that each result has a 'url' field usable directly as an HTTP/SOCKS5 proxy, which distinguishes it from retrieval tools like get_proxies. This is a precise, non-tautological purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: 'Best for residential/rotating providers (e.g. iproyal).' This tells the agent when this tool is appropriate. However, it does not explicitly mention alternatives or exclusions (e.g., 'use get_proxies for existing proxies'), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_provider_infoARead-only
Get capabilities and configuration status for a single provider.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| notes | No | |
| website | Yes | |
| configured | No | |
| operations | Yes | |
| proxy_types | Yes | |
| display_name | Yes | |
| country_of_origin | No | |
| requires_credentials | No | Environment variable names the adapter needs to be configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds context about the nature of retrieved data ('capabilities and configuration status'), which informs the agent of the return content without repeating annotation fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with a clear verb and object. It is front-loaded and contains no redundant words, earning maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema exists, but the parameter semantics are undefined and no usage alternatives are mentioned. The description is adequate for a basic read-only lookup but leaves gaps in parameter guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain what the 'provider' parameter should contain (e.g., ID, name, or slug). It only references 'single provider', leaving the agent to guess the expected value format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches capabilities and configuration status for a single provider. The verb 'Get' and the resource are specific, and it distinguishes from sibling tools like list_providers by scoping to one provider.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting a specific provider, but does not explicitly contrast with alternatives such as list_providers. There is no mention of when to prefer this over other tools, so it provides only implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proxiesARead-only
List proxies already on your account with a given provider.
Best for providers that sell fixed IPs (e.g. proxy6, proxyline, webshare,
proxymesh). For rotating/residential pools, prefer generate_proxy_list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| country | No | ISO 3166-1 alpha-2 country code, e.g. 'US'. | |
| provider | Yes | ||
| proxy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| count | Yes | |
| proxies | Yes | |
| provider | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and completeness profile. The description adds 'already on your account' as scoping context but does not disclose additional behavioral traits such as pagination, filtering behavior, or provider-specific caveats. With annotations present, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, front-loaded with the core action. The first sentence states exactly what the tool does; the second provides decision-relevant guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, annotations, and sibling context, the description is mostly complete for an agent to select and invoke the tool. It could add a note about the optional filter parameters, but the schema partially covers those, and the core use case is well explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, and the description does not explain the limit, country, or proxy_type parameters beyond the schema's own partial descriptions. It clarifies only the provider dimension ('with a given provider'), leaving the other parameters under-explained for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'List proxies already on your account with a given provider.' It distinguishes itself from the sibling generate_proxy_list by explicitly contrasting listing existing fixed-IP proxies vs generating rotating/residential pools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidance: 'Best for providers that sell fixed IPs' and directly names the alternative for rotating/residential pools ('prefer generate_proxy_list'). This clearly tells an agent when to choose this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageARead-only
Get traffic / request usage statistics for a provider.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| raw | No | |
| period | No | |
| provider | Yes | |
| requests_used | No | |
| traffic_used_gb | No | |
| traffic_total_gb | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true, covering safety and dynamic behavior. The description adds that the tool provides traffic/request usage statistics, which is a slight semantic clarification, but it does not disclose any additional behaviors such as pagination, date filtering, or required permissions beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is front-loaded with the main action and object. It contains no filler or redundant information, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, read-only, output schema present), the description is mostly complete. It lacks explicit usage guidance and parameter details, but the core purpose is clear. The absence of deeper context is acceptable for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter, 'provider', with 0% description coverage. The description mentions 'for a provider' but does not clarify valid values (e.g., provider ID, name, or format). Since the description does not compensate for the lack of schema descriptions, the semantics remain largely inferred from the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resource 'traffic / request usage statistics for a provider', which distinguishes it from sibling tools like get_provider_info (provider details) and check_balance (financial balance). It is unambiguous and easily understood.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or mention of sibling tools. Usage context is only implied by the tool name and generic resource description, so an agent receives limited direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesBRead-only
List the countries/locations targetable with a provider.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes | ||
| proxy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| provider | Yes | |
| countries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds that results are scoped to a provider, which is a useful contextual detail, but it does not disclose additional behaviors like required permissions, error conditions, or output specifics. With annotations covering the key safety trait, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately states the tool's purpose. It is front-loaded with the action and resource, containing no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values do not need to be described. However, the description lacks details about the optional proxy_type parameter and how it affects the results, and it does not mention any prerequisites or context for the provider parameter. For a simple listing tool this is minimally viable but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, meaning the description must compensate for parameter meaning. The description only mentions "with a provider" but does not explain the provider parameter or the optional proxy_type filter. This leaves both parameters semantically unexplained, providing no value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb "list" and clearly identifies the resource as "countries/locations targetable with a provider." This distinguishes it from sibling tools like list_providers or get_provider_info, which focus on providers rather than country-level targeting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to know which countries are available for a given provider, but it does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or conditions. This is an implied usage scenario, not explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_providersARead-only
List all supported proxy providers and their capabilities.
Always call this first. Shows each provider's proxy types, supported operations, whether it is configured, and the env vars it requires.
| Name | Required | Description | Default |
|---|---|---|---|
| configured_only | No | Only return providers that have credentials configured. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the read-only nature is known. The description adds valuable context about what the tool shows (proxy types, supported operations, configuration status, env vars) and its role as the first call, enriching understanding beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary action. The second sentence packs the 'always call first' directive and the output content list without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and an output schema present, the description fully covers purpose, scope, and call order. Annotations handle safety, and the output content is specified, leaving no meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'configured_only' has a complete schema description (100% coverage), so baseline 3 applies. The tool description does not add further parameter semantics beyond the schema's own explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all supported proxy providers and their capabilities, with a specific verb and resource. It distinguishes itself from siblings like get_provider_info (details for one provider) and get_proxies (proxies, not providers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly commands 'Always call this first,' giving a clear when-to-use directive. It does not name specific alternatives or exclusions, but the strong entry-point indication is sufficient for this simple list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrapeBRead-only
Fetch a URL through a managed scraping API (e.g. scraperapi, scrapingbee).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| country | No | ||
| premium | No | Use premium residential/mobile pool for hard targets. | |
| provider | Yes | ||
| render_js | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| cost | No | |
| content | No | |
| provider | Yes | |
| raw_headers | No | |
| status_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond the annotations. Annotations already declare readOnlyHint=true and openWorldHint=true, and the description simply restates the fetching behavior without detailing rate limits, authentication, costs, or error handling. It lacks the depth expected for a network-scraping tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core action and resource. It contains no fluff and is appropriately sized for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and annotations, the description is incomplete for a 5-parameter tool with low schema coverage. It lacks details on required parameters, optional behavior (render_js, country), and integration with sibling tools. An agent could not reliably determine how to fill all parameters from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (only 'premium' is described), and the description does not compensate. It mentions examples of provider values ('scraperapi, scrapingbee') and the URL implicitly, but leaves country, render_js, and required provider semantics unclear. This is insufficient for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Fetch a URL through a managed scraping API.' It uses a specific verb ('Fetch') and resource ('URL'), and the managed scraping API context distinguishes it from sibling proxy-management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention exclusions or point to sibling tools like list_providers or get_proxies. The intended use is implied by the tool's name and purpose, but there is no actionable comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v0.1.0- First observed
acquire_proxy - First observed
buy_proxies - First observed
check_balance - First observed
extend_proxies - First observed
generate_proxy_list - First observed
get_provider_info - First observed
get_proxies - First observed
get_usage - First observed
list_countries - First observed
list_providers - First observed
scrape
TDQS
Scored across 11 tools
Most tools target distinct actions (list, generate, buy, extend), but `acquire_proxy` overlaps somewhat with `get_proxies` and `generate_proxy_list`, and `check_balance` vs `get_usage` could be confusing without careful reading. Descriptions mostly clarify the intended use cases.
All tool names follow a consistent verb_noun pattern (list_providers, get_proxies, generate_proxy_list, buy_proxies, etc.) with snake_case throughout. Even `scrape` and `acquire_proxy` fit the verb-first style.
11 tools is well-scoped for a proxy management server. Each tool addresses a distinct need: provider discovery, proxy listing/generation, account checks, purchasing, and usage. No redundancy or bloat.
The surface covers the core proxy lifecycle: view providers, generate/list proxies, buy/extend them, and monitor balance/usage. Missing are configuration tools (e.g., to set up providers) and a deletion option, but these are minor gaps that agents can work around.
Maintenance
Related MCP Connectors
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
One connector for 15,000+ MCP servers plus your team's private MCPs, from any AI client.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA proxy server that unifies multiple MCP servers, enabling seamless tool, prompt, and resource management via the MetaMCP App.46 npm155Apache 2.0
- AlicenseNot gradedqualityCmaintenanceA unified MCP server providing AI agents with 40+ developer APIs including geolocation, crypto prices, DNS lookup, and web scraping. Enables natural language access to various tools through a single gateway.1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server giving AI agents controlled residential-proxy web access with optional browser rendering and structured extraction from 60+ sites.1MIT
- FlicenseAqualityDmaintenanceMCP server that wraps the Proxyline proxy provider API, exposing all methods as MCP tools for AI assistants. Enables managing proxies, orders, countries, IPs, balance, and tags through natural language.116 npm-