LeaderboardBack to leaderboard — loading return destination
Opening report…
Loading report overview
M
MCP server
server.example.com/mcp
Tools and resources for your MCP client, with a public quality report and detailed checks.
Protocol
MCP 2025-11-25
Server version
1.0.0
Website
server.example.com
Supports
Tools · Resources
Overall score
90 /100
How is this score calculated?
Server metadata
Loading server metadata
Reviewed90/100
Discoverability
Loading discoverability
Reviewed90/100
Protocol
Loading protocol
Reviewed90/100
Tools
Loading tools
Reviewed90/100
MCP Apps
Loading mcp apps
Reviewed90/100
Tool documentation quality
Loading tool documentation quality
Reviewed90/100
LeaderboardBack to leaderboard — loading return destination
P
Proxyon
mcp.proxyon.io
Manage a Proxyon proxy account from an AI app: see the Balance, Subscriptions, prices and Residential traffic; get connection lines and code with the Customer's proxies filled in; test proxies on a site, whitelist IPs, reset proxy credentials and swap Static Residential (ISP) IPs; and, when the Customer allows it, buy and renew from the Balance, asking them before every purchase.
Manage a Proxyon proxy account from an AI app: see the Balance, Subscriptions, prices and Residential traffic; get connection lines and code with the Customer's proxies filled in; test proxies on a site, whitelist IPs, reset proxy credentials and swap Static Residential (ISP) IPs; and, when the Customer allows it, buy and renew from the Balance, asking them before every purchase.
Proxyon sells proxies. These tools read the Customer's own Proxyon account: their Balance, what they have (Residential plans, Static Residential (ISP) packages, Dedicated Datacenter IPs and IPv6 Rotating subscriptions), what is left and what it costs, and give ready connection lines and code with their proxies filled in.
Use Proxyon's words: Residential is paid by the GB and bought traffic never expires; Static Residential (ISP), Dedicated Datacenter and IPv6 Rotating are rented for a Period and end unless Auto-renewal is on.
Proxyon never checks a Customer's proxies on its own. When the Customer asks, test_proxies tests up to 10 of them on a site they name, which uses their traffic; otherwise give them the line or code to run themselves.
Anything that spends money, deletes, resets credentials or switches on an automatic payment asks the Customer first: the tool answers with a question, and goes ahead only on their yes, which the AI app brings back with the confirm token it was given (or in its own form, where it shows one). Never answer the question for the Customer. Money comes from the Balance only; add_money makes a pay link for a Deposit.
Buying is off for this connection, so buy, top_up_residential, renew, set_auto_renewal and set_auto_top_up aren't here. To allow it, tick "Let my AI buy with my Balance" for this AI app in Settings on app.proxyon.io.
Discoverability
0/6 passed0 of 6 passed0/100
Client listings and public setup information.
mcp.json or server-card.json
Either mcp.json or an MCP Server Card declaring this endpoint passes.
No matching mcp.json manifest or MCP Server Card was found at the checked URLs.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
The Customer's Proxyon account: their email, name, Balance, whether their email is confirmed, what they have spent and since when they have been a Customer.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"email",
"name",
"balance",
"emailConfirmed",
"totalSpent",
"customerSince"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The Customer's name; null when they have none saved."
},
"email": {
"type": "string",
"description": "The email the account signs in with."
},
"balance": {
"type": "string",
"description": "The Balance in USD, which buying and renewing pay from."
},
"totalSpent": {
"type": "string",
"description": "Everything the Customer has spent, in USD."
},
"customerSince": {
"type": "string",
"description": "The date the account was made, in UTC."
},
"emailConfirmed": {
"type": "boolean",
"description": "Whether the Customer has confirmed their email."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "get_account",
"title": "Get account details",
"description": "The Customer's Proxyon account: their email, name, Balance, whether their email is confirmed, what they have spent and since when they have been a Customer.",
"inputSchema": {
"type": "object",
"required": [
"context"
],
"properties": {
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"email",
"name",
"balance",
"emailConfirmed",
"totalSpent",
"customerSince"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The Customer's name; null when they have none saved."
},
"email": {
"type": "string",
"description": "The email the account signs in with."
},
"balance": {
"type": "string",
"description": "The Balance in USD, which buying and renewing pay from."
},
"totalSpent": {
"type": "string",
"description": "Everything the Customer has spent, in USD."
},
"customerSince": {
"type": "string",
"description": "The date the account was made, in UTC."
},
"emailConfirmed": {
"type": "boolean",
"description": "Whether the Customer has confirmed their email."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get account details",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Everything the Customer has bought and still holds: each Residential plan with the traffic left, each Static Residential (ISP) package, their Dedicated Datacenter IPs by Proxy group, and each IPv6 Rotating subscription, with when it ends and whether Auto-renewal (Auto top-up for Residential) is on. Dates are UTC.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
product
Limits the list to one kind of proxy. Leave it out to list everything the Customer holds.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"subscriptions"
],
"properties": {
"subscriptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"product",
"id",
"name",
"holds",
"ends",
"status"
],
"properties": {
"id": {
"type": "number",
"description": "Its id, which the other tools take as id. For Dedicated Datacenter it is the Proxy group's, and 0 for the Ungrouped IPs."
},
"ends": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The date it ends, in UTC; null for Residential, which never expires. For a Proxy group, the date its first IP ends."
},
"name": {
"type": "string",
"description": "Its name in Proxyon's app, such as Residential #7 or Price checks (Proxy group)."
},
"holds": {
"type": "string",
"description": "What it holds, in words: the traffic left, or the IPs or threads and their country."
},
"status": {
"type": "string",
"description": "How it stands, in words, such as ends in 3 days or renews 23 Nov; for Residential, that bought traffic never expires."
},
"product": {
"type": "string",
"description": "The kind of proxy: Residential, Static Residential (ISP), Dedicated Datacenter or IPv6 Rotating."
},
"autoTopUp": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto top-up is set to buy more. Residential only."
},
"autoRenewal": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto-renewal is set to renew it. Rented products only; Residential has autoTopUp instead."
}
},
"additionalProperties": false
},
"description": "What the Customer holds, product by product, a rented product's soonest end first. Empty when they hold nothing."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "list_subscriptions",
"title": "Your Subscriptions",
"description": "Everything the Customer has bought and still holds: each Residential plan with the traffic left, each Static Residential (ISP) package, their Dedicated Datacenter IPs by Proxy group, and each IPv6 Rotating subscription, with when it ends and whether Auto-renewal (Auto top-up for Residential) is on. Dates are UTC.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"context"
],
"properties": {
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"product": {
"enum": [
"residential",
"static_residential",
"dedicated_datacenter",
"ipv6_rotating"
],
"type": "string",
"description": "Limits the list to one kind of proxy. Leave it out to list everything the Customer holds."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"subscriptions"
],
"properties": {
"subscriptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"product",
"id",
"name",
"holds",
"ends",
"status"
],
"properties": {
"id": {
"type": "number",
"description": "Its id, which the other tools take as id. For Dedicated Datacenter it is the Proxy group's, and 0 for the Ungrouped IPs."
},
"ends": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The date it ends, in UTC; null for Residential, which never expires. For a Proxy group, the date its first IP ends."
},
"name": {
"type": "string",
"description": "Its name in Proxyon's app, such as Residential #7 or Price checks (Proxy group)."
},
"holds": {
"type": "string",
"description": "What it holds, in words: the traffic left, or the IPs or threads and their country."
},
"status": {
"type": "string",
"description": "How it stands, in words, such as ends in 3 days or renews 23 Nov; for Residential, that bought traffic never expires."
},
"product": {
"type": "string",
"description": "The kind of proxy: Residential, Static Residential (ISP), Dedicated Datacenter or IPv6 Rotating."
},
"autoTopUp": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto top-up is set to buy more. Residential only."
},
"autoRenewal": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto-renewal is set to renew it. Rented products only; Residential has autoTopUp instead."
}
},
"additionalProperties": false
},
"description": "What the Customer holds, product by product, a rented product's soonest end first. Empty when they hold nothing."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Your Subscriptions",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Gets one thing the Customer holds. It answers with what list_subscriptions says of it (what it holds, when it ends, its Auto-renewal or Auto top-up), plus its proxy lines (host:port:user:pass with the username and password filled in, the first 100, the rest counted), the protocols they take and its Whitelisted IPs. Use it when the Customer needs a Subscription's proxies or whitelist; it does not give prices or usage (get_prices, get_residential_usage). For Dedicated Datacenter, `id` is a Proxy group's (0 for Ungrouped IPs). Residential gives its one rotating line: get_connection_strings makes Sticky or targeted ones.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
product
The kind of proxy the Subscription is: its product in list_subscriptions.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
The Subscription's id, as list_subscriptions gives it. For Dedicated Datacenter, the Proxy group's, or 0 for the Ungrouped IPs.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product",
"id",
"name",
"holds",
"ends",
"status",
"format",
"lines",
"linesNotShown",
"protocols"
],
"properties": {
"id": {
"type": "number",
"description": "Its id, which the other tools take as id. For Dedicated Datacenter it is the Proxy group's, and 0 for the Ungrouped IPs."
},
"ends": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The date it ends, in UTC; null for Residential, which never expires. For a Proxy group, the date its first IP ends."
},
"name": {
"type": "string",
"description": "Its name in Proxyon's app, such as Residential #7 or Price checks (Proxy group)."
},
"holds": {
"type": "string",
"description": "What it holds, in words: the traffic left, or the IPs or threads and their country."
},
"lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "The proxy lines with the username and password filled in, the first 100 at most."
},
"format": {
"type": "string",
"const": "host:port:user:pass",
"description": "How each line is written."
},
"status": {
"type": "string",
"description": "How it stands, in words, such as ends in 3 days or renews 23 Nov; for Residential, that bought traffic never expires."
},
"product": {
"type": "string",
"description": "The kind of proxy: Residential, Static Residential (ISP), Dedicated Datacenter or IPv6 Rotating."
},
"autoTopUp": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto top-up is set to buy more. Residential only."
},
"protocols": {
"type": "string",
"description": "The protocols the lines take and their ports, in words."
},
"autoRenewal": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto-renewal is set to renew it. Rented products only; Residential has autoTopUp instead."
},
"linesNotShown": {
"type": "number",
"description": "How many more lines there are than lines holds."
},
"whitelistedIps": {
"type": "array",
"items": {
"type": "string"
},
"description": "The Whitelisted IPs, which connect without a username and password. Left out where there is no whitelist to read."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "get_subscription",
"title": "Get a Subscription",
"description": "Gets one thing the Customer holds. It answers with what list_subscriptions says of it (what it holds, when it ends, its Auto-renewal or Auto top-up), plus its proxy lines (host:port:user:pass with the username and password filled in, the first 100, the rest counted), the protocols they take and its Whitelisted IPs. Use it when the Customer needs a Subscription's proxies or whitelist; it does not give prices or usage (get_prices, get_residential_usage). For Dedicated Datacenter, `id` is a Proxy group's (0 for Ungrouped IPs). Residential gives its one rotating line: get_connection_strings makes Sticky or targeted ones.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product",
"id",
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The Subscription's id, as list_subscriptions gives it. For Dedicated Datacenter, the Proxy group's, or 0 for the Ungrouped IPs."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"product": {
"enum": [
"residential",
"static_residential",
"dedicated_datacenter",
"ipv6_rotating"
],
"type": "string",
"description": "The kind of proxy the Subscription is: its product in list_subscriptions."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product",
"id",
"name",
"holds",
"ends",
"status",
"format",
"lines",
"linesNotShown",
"protocols"
],
"properties": {
"id": {
"type": "number",
"description": "Its id, which the other tools take as id. For Dedicated Datacenter it is the Proxy group's, and 0 for the Ungrouped IPs."
},
"ends": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The date it ends, in UTC; null for Residential, which never expires. For a Proxy group, the date its first IP ends."
},
"name": {
"type": "string",
"description": "Its name in Proxyon's app, such as Residential #7 or Price checks (Proxy group)."
},
"holds": {
"type": "string",
"description": "What it holds, in words: the traffic left, or the IPs or threads and their country."
},
"lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "The proxy lines with the username and password filled in, the first 100 at most."
},
"format": {
"type": "string",
"const": "host:port:user:pass",
"description": "How each line is written."
},
"status": {
"type": "string",
"description": "How it stands, in words, such as ends in 3 days or renews 23 Nov; for Residential, that bought traffic never expires."
},
"product": {
"type": "string",
"description": "The kind of proxy: Residential, Static Residential (ISP), Dedicated Datacenter or IPv6 Rotating."
},
"autoTopUp": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto top-up is set to buy more. Residential only."
},
"protocols": {
"type": "string",
"description": "The protocols the lines take and their ports, in words."
},
"autoRenewal": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto-renewal is set to renew it. Rented products only; Residential has autoTopUp instead."
},
"linesNotShown": {
"type": "number",
"description": "How many more lines there are than lines holds."
},
"whitelistedIps": {
"type": "array",
"items": {
"type": "string"
},
"description": "The Whitelisted IPs, which connect without a username and password. Left out where there is no whitelist to read."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get a Subscription",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
How much traffic a Residential plan has left and what it used in each of the last 7 days and in the last 30, in GB (1,000 MB). Bought traffic never expires. Without an id, the Customer's main plan.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
id
The Residential plan's id, as list_subscriptions gives it. The main plan when left out.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Residential traffic left and used",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema75/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"left",
"usedLast7Days",
"usedLast30Days",
"lastSevenDays",
"autoTopUp"
],
"properties": {
"left": {
"type": "string",
"description": "The traffic left on the plan, in GB."
},
"name": {
"type": "string",
"description": "The plan's name, such as Residential #7."
},
"autoTopUp": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto top-up is set to buy more traffic for the plan."
},
"lastSevenDays": {
"type": "array",
"items": {
"type": "object",
"required": [
"day",
"used"
],
"properties": {
"day": {
"type": "string",
"description": "The date, in UTC."
},
"used": {
"type": "string",
"description": "The traffic used that day, in GB."
}
},
"additionalProperties": false
},
"description": "The traffic used on each of the last 7 days."
},
"usedLast7Days": {
"type": "string",
"description": "The traffic used in the last 7 days, in GB."
},
"usedLast30Days": {
"type": "string",
"description": "The traffic used in the last 30 days, in GB."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "get_residential_usage",
"title": "Residential traffic left and used",
"description": "How much traffic a Residential plan has left and what it used in each of the last 7 days and in the last 30, in GB (1,000 MB). Bought traffic never expires. Without an id, the Customer's main plan.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The Residential plan's id, as list_subscriptions gives it. The main plan when left out.",
"exclusiveMinimum": 0
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"left",
"usedLast7Days",
"usedLast30Days",
"lastSevenDays",
"autoTopUp"
],
"properties": {
"left": {
"type": "string",
"description": "The traffic left on the plan, in GB."
},
"name": {
"type": "string",
"description": "The plan's name, such as Residential #7."
},
"autoTopUp": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto top-up is set to buy more traffic for the plan."
},
"lastSevenDays": {
"type": "array",
"items": {
"type": "object",
"required": [
"day",
"used"
],
"properties": {
"day": {
"type": "string",
"description": "The date, in UTC."
},
"used": {
"type": "string",
"description": "The traffic used that day, in GB."
}
},
"additionalProperties": false
},
"description": "The traffic used on each of the last 7 days."
},
"usedLast7Days": {
"type": "string",
"description": "The traffic used in the last 7 days, in GB."
},
"usedLast30Days": {
"type": "string",
"description": "The traffic used in the last 30 days, in GB."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Residential traffic left and used",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Proxyon's prices in USD, live from its own tables: Residential by the GB, Static Residential (ISP) by the IP a month, Dedicated Datacenter by the IP for each Period in days, IPv6 Rotating by the thread, and what Static Residential (ISP) and Dedicated Datacenter have in stock in each country now. Discount codes and negotiated rates aren't included.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
product
Limits the answer to one kind of proxy's prices and stock. Leave it out for all of them.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"currency"
],
"properties": {
"currency": {
"type": "string",
"description": "The currency of every price: USD."
},
"residential": {
"type": "object",
"required": [
"rates",
"note"
],
"properties": {
"note": {
"type": "string",
"description": "That bought traffic never expires."
},
"rates": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount",
"rate"
],
"properties": {
"rate": {
"type": "string",
"description": "The price at that amount, such as $3.25 per GB."
},
"amount": {
"type": "string",
"description": "The amount this rate is for, such as 1-9 GB or 500 GB or more."
}
},
"additionalProperties": false
},
"description": "What a GB costs, by how many GB are bought at once."
}
},
"description": "Residential's prices. Left out when product is another.",
"additionalProperties": false
},
"ipv6Rotating": {
"type": "object",
"required": [
"threads",
"prices"
],
"properties": {
"prices": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"price"
],
"properties": {
"price": {
"type": "string",
"description": "The price for that Period, in USD, and what it covers: per IP, or for 100 threads."
},
"period": {
"type": "string",
"description": "How long the price is for, such as 30 days."
}
},
"additionalProperties": false
},
"description": "What 100 threads cost, by Period."
},
"threads": {
"type": "string",
"description": "How many threads one subscription can have."
}
},
"description": "IPv6 Rotating's prices. Left out when product is another.",
"additionalProperties": false
},
"staticResidential": {
"type": "object",
"required": [
"monthly",
"inStock"
],
"properties": {
"inStock": {
"type": "array",
"items": {
"type": "object",
"required": [
"country",
"ips",
"useCases"
],
"properties": {
"ips": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "How many IPs are in stock there now; null when no count is given."
},
"country": {
"type": "string",
"description": "The country's two letters, which buy takes as country."
},
"useCases": {
"type": "array",
"items": {
"type": "string"
},
"description": "The use cases the country is sold for, which buy takes as useCase."
}
},
"additionalProperties": false
},
"description": "Where Static Residential (ISP) is sold now."
},
"monthly": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount",
"rate"
],
"properties": {
"rate": {
"type": "string",
"description": "The price at that amount, such as $3.25 per GB."
},
"amount": {
"type": "string",
"description": "The amount this rate is for, such as 1-9 GB or 500 GB or more."
}
},
"additionalProperties": false
},
"description": "What an IP costs for a month, by how many IPs are bought."
}
},
"description": "Static Residential (ISP) prices and stock. Left out when product is another.",
"additionalProperties": false
},
"dedicatedDatacenter": {
"type": "object",
"required": [
"ipv4",
"ipv6",
"inStock"
],
"properties": {
"ipv4": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"price"
],
"properties": {
"price": {
"type": "string",
"description": "The price for that Period, in USD, and what it covers: per IP, or for 100 threads."
},
"period": {
"type": "string",
"description": "How long the price is for, such as 30 days."
}
},
"additionalProperties": false
},
"description": "What an IPv4 IP costs, by Period."
},
"ipv6": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"price"
],
"properties": {
"price": {
"type": "string",
"description": "The price for that Period, in USD, and what it covers: per IP, or for 100 threads."
},
"period": {
"type": "string",
"description": "How long the price is for, such as 30 days."
}
},
"additionalProperties": false
},
"description": "What an IPv6 IP costs, by Period."
},
"inStock": {
"type": "object",
"required": [
"ipv4",
"ipv6"
],
"properties": {
"ipv4": {
"type": "object",
"description": "IPv4 IPs in stock, by country's two letters.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"ipv6": {
"type": "object",
"description": "IPv6 IPs in stock, by country's two letters.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
}
},
"description": "What is in stock to buy now.",
"additionalProperties": false
}
},
"description": "Dedicated Datacenter's prices and stock. Left out when product is another.",
"additionalProperties": false
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "get_prices",
"title": "Proxyon's prices",
"description": "Proxyon's prices in USD, live from its own tables: Residential by the GB, Static Residential (ISP) by the IP a month, Dedicated Datacenter by the IP for each Period in days, IPv6 Rotating by the thread, and what Static Residential (ISP) and Dedicated Datacenter have in stock in each country now. Discount codes and negotiated rates aren't included.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"context"
],
"properties": {
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"product": {
"enum": [
"residential",
"static_residential",
"dedicated_datacenter",
"ipv6_rotating"
],
"type": "string",
"description": "Limits the answer to one kind of proxy's prices and stock. Leave it out for all of them."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"currency"
],
"properties": {
"currency": {
"type": "string",
"description": "The currency of every price: USD."
},
"residential": {
"type": "object",
"required": [
"rates",
"note"
],
"properties": {
"note": {
"type": "string",
"description": "That bought traffic never expires."
},
"rates": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount",
"rate"
],
"properties": {
"rate": {
"type": "string",
"description": "The price at that amount, such as $3.25 per GB."
},
"amount": {
"type": "string",
"description": "The amount this rate is for, such as 1-9 GB or 500 GB or more."
}
},
"additionalProperties": false
},
"description": "What a GB costs, by how many GB are bought at once."
}
},
"description": "Residential's prices. Left out when product is another.",
"additionalProperties": false
},
"ipv6Rotating": {
"type": "object",
"required": [
"threads",
"prices"
],
"properties": {
"prices": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"price"
],
"properties": {
"price": {
"type": "string",
"description": "The price for that Period, in USD, and what it covers: per IP, or for 100 threads."
},
"period": {
"type": "string",
"description": "How long the price is for, such as 30 days."
}
},
"additionalProperties": false
},
"description": "What 100 threads cost, by Period."
},
"threads": {
"type": "string",
"description": "How many threads one subscription can have."
}
},
"description": "IPv6 Rotating's prices. Left out when product is another.",
"additionalProperties": false
},
"staticResidential": {
"type": "object",
"required": [
"monthly",
"inStock"
],
"properties": {
"inStock": {
"type": "array",
"items": {
"type": "object",
"required": [
"country",
"ips",
"useCases"
],
"properties": {
"ips": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "How many IPs are in stock there now; null when no count is given."
},
"country": {
"type": "string",
"description": "The country's two letters, which buy takes as country."
},
"useCases": {
"type": "array",
"items": {
"type": "string"
},
"description": "The use cases the country is sold for, which buy takes as useCase."
}
},
"additionalProperties": false
},
"description": "Where Static Residential (ISP) is sold now."
},
"monthly": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount",
"rate"
],
"properties": {
"rate": {
"type": "string",
"description": "The price at that amount, such as $3.25 per GB."
},
"amount": {
"type": "string",
"description": "The amount this rate is for, such as 1-9 GB or 500 GB or more."
}
},
"additionalProperties": false
},
"description": "What an IP costs for a month, by how many IPs are bought."
}
},
"description": "Static Residential (ISP) prices and stock. Left out when product is another.",
"additionalProperties": false
},
"dedicatedDatacenter": {
"type": "object",
"required": [
"ipv4",
"ipv6",
"inStock"
],
"properties": {
"ipv4": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"price"
],
"properties": {
"price": {
"type": "string",
"description": "The price for that Period, in USD, and what it covers: per IP, or for 100 threads."
},
"period": {
"type": "string",
"description": "How long the price is for, such as 30 days."
}
},
"additionalProperties": false
},
"description": "What an IPv4 IP costs, by Period."
},
"ipv6": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"price"
],
"properties": {
"price": {
"type": "string",
"description": "The price for that Period, in USD, and what it covers: per IP, or for 100 threads."
},
"period": {
"type": "string",
"description": "How long the price is for, such as 30 days."
}
},
"additionalProperties": false
},
"description": "What an IPv6 IP costs, by Period."
},
"inStock": {
"type": "object",
"required": [
"ipv4",
"ipv6"
],
"properties": {
"ipv4": {
"type": "object",
"description": "IPv4 IPs in stock, by country's two letters.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"ipv6": {
"type": "object",
"description": "IPv6 IPs in stock, by country's two letters.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
}
},
"description": "What is in stock to buy now.",
"additionalProperties": false
}
},
"description": "Dedicated Datacenter's prices and stock. Left out when product is another.",
"additionalProperties": false
}
},
"additionalProperties": false
},
"annotations": {
"title": "Proxyon's prices",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Makes proxy lines for a Residential plan, with the plan's username and password and the targeting filled in, ready to paste into a tool: any country or one country, state and city; rotating (a new IP each request, one line is all it takes) or Sticky (each line holds its own IP for a set time); HTTP or SOCKS5; host:port:user:pass or user:pass@host:port. It answers with the plan's name, the layout and protocol used and the lines, which carry the Customer's password. It makes no request through them: to try them on a site, use test_proxies. Without an id, the Customer's main plan.
Describe the returned information so the agent knows whether it will answer the request.
Inputs94/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
The Residential plan's id, as list_subscriptions gives it. The main plan when left out.
Clear enough to supply this argument.
country
The country the exit IPs should be in, as an ISO country code such as US or DE. Any country when left out.
Clear enough to supply this argument.
state
A state or region within the country to take exit IPs from, named in words.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
city
A city within the country to take exit IPs from, named in words.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
session
rotating changes the exit IP on every request; sticky holds one for stickyMinutes. Choose sticky when several requests must come from the same IP.
Clear enough to supply this argument.
stickyMinutes
How long, in minutes, the gateway holds each Sticky line's IP. Only used with sticky.
Clear enough to supply this argument.
count
How many Sticky lines to make, each with a session of its own, for as many connections that must not share an IP. Only used with sticky: a rotating connection is always one line.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
protocol
The protocol the proxy is spoken to in. Choose socks5 only when the Customer's tool needs it: Residential and Dedicated Datacenter take it, Static Residential (ISP) and IPv6 Rotating don't.
Clear enough to supply this argument.
format
How each line is written. Choose the one the Customer's tool takes; user:pass@host:port is the shape of a proxy URL.
Clear enough to supply this argument.
gateway
The gateway to connect through: us, or eu for the one nearest Europe.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"plan",
"format",
"protocol",
"lines"
],
"properties": {
"note": {
"type": "string",
"description": "A remark about the lines, when there is one to make."
},
"plan": {
"type": "string",
"description": "The plan the lines are for, such as Residential #7."
},
"lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "The proxy lines, with the username and password filled in."
},
"format": {
"type": "string",
"description": "The layout each line is written in."
},
"protocol": {
"type": "string",
"description": "The protocol the lines are for: http or socks5."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "get_connection_strings",
"title": "Residential connection lines",
"description": "Makes proxy lines for a Residential plan, with the plan's username and password and the targeting filled in, ready to paste into a tool: any country or one country, state and city; rotating (a new IP each request, one line is all it takes) or Sticky (each line holds its own IP for a set time); HTTP or SOCKS5; host:port:user:pass or user:pass@host:port. It answers with the plan's name, the layout and protocol used and the lines, which carry the Customer's password. It makes no request through them: to try them on a site, use test_proxies. Without an id, the Customer's main plan.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The Residential plan's id, as list_subscriptions gives it. The main plan when left out.",
"exclusiveMinimum": 0
},
"city": {
"type": "string",
"pattern": "^[\\p{L}][\\p{L} .'-]{0,59}$",
"description": "A city within the country to take exit IPs from, named in words."
},
"count": {
"type": "integer",
"default": 1,
"maximum": 100,
"minimum": 1,
"description": "How many Sticky lines to make, each with a session of its own, for as many connections that must not share an IP. Only used with sticky: a rotating connection is always one line."
},
"state": {
"type": "string",
"pattern": "^[\\p{L}][\\p{L} .'-]{0,59}$",
"description": "A state or region within the country to take exit IPs from, named in words."
},
"format": {
"enum": [
"host:port:user:pass",
"user:pass@host:port"
],
"type": "string",
"default": "host:port:user:pass",
"description": "How each line is written. Choose the one the Customer's tool takes; user:pass@host:port is the shape of a proxy URL."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "The country the exit IPs should be in, as an ISO country code such as US or DE. Any country when left out."
},
"gateway": {
"enum": [
"us",
"eu"
],
"type": "string",
"default": "us",
"description": "The gateway to connect through: us, or eu for the one nearest Europe."
},
"session": {
"enum": [
"rotating",
"sticky"
],
"type": "string",
"default": "rotating",
"description": "rotating changes the exit IP on every request; sticky holds one for stickyMinutes. Choose sticky when several requests must come from the same IP."
},
"protocol": {
"enum": [
"http",
"socks5"
],
"type": "string",
"default": "http",
"description": "The protocol the proxy is spoken to in. Choose socks5 only when the Customer's tool needs it: Residential and Dedicated Datacenter take it, Static Residential (ISP) and IPv6 Rotating don't."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"stickyMinutes": {
"type": "integer",
"default": 60,
"maximum": 1440,
"minimum": 1,
"description": "How long, in minutes, the gateway holds each Sticky line's IP. Only used with sticky."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"plan",
"format",
"protocol",
"lines"
],
"properties": {
"note": {
"type": "string",
"description": "A remark about the lines, when there is one to make."
},
"plan": {
"type": "string",
"description": "The plan the lines are for, such as Residential #7."
},
"lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "The proxy lines, with the username and password filled in."
},
"format": {
"type": "string",
"description": "The layout each line is written in."
},
"protocol": {
"type": "string",
"description": "The protocol the lines are for: http or socks5."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Residential connection lines",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Writes runnable code in curl, Python or Node with the Customer's proxy (host, port, username and password) filled in, which sends one request through it and prints the IP it left from. Give it a line from get_connection_strings or get_subscription, or a product and id to use that one's first line; with neither, the main Residential plan's rotating line. The Customer runs it on their own machine. To test proxies on a site from Proxyon's server instead, use test_proxies.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
language
The language of the code, to suit the Customer's project: curl is a shell command, Python uses requests and Node uses undici (socks-proxy-agent for SOCKS5).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
line
A proxy line the Customer has, in either layout, from get_connection_strings or get_subscription. The code is for exactly this proxy, and product and id are ignored.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
product
With no line: the kind of proxy to write the code for. Residential, or no product at all, gives a Residential plan's rotating line; any other kind gives the first line of one of that kind.
Clear enough to supply this argument.
id
With no line: which Subscription of product to use, as list_subscriptions gives its id (for Dedicated Datacenter, the Proxy group's). Left out, the main Residential plan, or the first of that product list_subscriptions lists.
Clear enough to supply this argument.
protocol
The protocol the proxy is spoken to in. Choose socks5 only when the Customer's tool needs it: Residential and Dedicated Datacenter take it, Static Residential (ISP) and IPv6 Rotating don't.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"language",
"proxy",
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The code, ready to run, with the username and password in it."
},
"proxy": {
"type": "string",
"description": "The proxy the code connects through, as host:port and its protocol, without the login."
},
"language": {
"type": "string",
"description": "The language the code is in."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "get_code_sample",
"title": "Get proxy code sample",
"description": "Writes runnable code in curl, Python or Node with the Customer's proxy (host, port, username and password) filled in, which sends one request through it and prints the IP it left from. Give it a line from get_connection_strings or get_subscription, or a product and id to use that one's first line; with neither, the main Residential plan's rotating line. The Customer runs it on their own machine. To test proxies on a site from Proxyon's server instead, use test_proxies.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"language",
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "With no line: which Subscription of product to use, as list_subscriptions gives its id (for Dedicated Datacenter, the Proxy group's). Left out, the main Residential plan, or the first of that product list_subscriptions lists."
},
"line": {
"type": "string",
"maxLength": 600,
"description": "A proxy line the Customer has, in either layout, from get_connection_strings or get_subscription. The code is for exactly this proxy, and product and id are ignored."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"product": {
"enum": [
"residential",
"static_residential",
"dedicated_datacenter",
"ipv6_rotating"
],
"type": "string",
"description": "With no line: the kind of proxy to write the code for. Residential, or no product at all, gives a Residential plan's rotating line; any other kind gives the first line of one of that kind."
},
"language": {
"enum": [
"curl",
"python",
"node"
],
"type": "string",
"description": "The language of the code, to suit the Customer's project: curl is a shell command, Python uses requests and Node uses undici (socks-proxy-agent for SOCKS5)."
},
"protocol": {
"enum": [
"http",
"socks5"
],
"type": "string",
"default": "http",
"description": "The protocol the proxy is spoken to in. Choose socks5 only when the Customer's tool needs it: Residential and Dedicated Datacenter take it, Static Residential (ISP) and IPv6 Rotating don't."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"language",
"proxy",
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The code, ready to run, with the username and password in it."
},
"proxy": {
"type": "string",
"description": "The proxy the code connects through, as host:port and its protocol, without the login."
},
"language": {
"type": "string",
"description": "The language the code is in."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get proxy code sample",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Tests up to 10 of the Customer's proxies on a site they name, such as one they plan to scrape: Proxyon's server sends one GET to it through each proxy, looking like a Chrome browser, and says whether each worked, was blocked (a challenge page, a captcha, HTTP 403, 429 or 503) or failed (a timeout, or the proxy refused), with how long the site took to answer (responseMs), the IP it left from and that IP's country. It never gives back or keeps the page. It uses the Customer's own traffic, up to about 100 KB per proxy, so test only when the Customer asks. Give lines from get_connection_strings or get_subscription as proxies, or residential to make fresh Sticky lines on a Residential plan for the test (their lines aren't given back: to keep the ones that work, make them with get_connection_strings and pass them as proxies). A rotating line leaves from a new IP on each request, so its exitIp is the one the check left from. An account can test 100 proxies an hour.
The description explains the capability, when to use it, and what to expect.
Inputs77/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
url
The address of the site to test the proxies on, starting with http:// or https://. Use the page the Customer plans to scrape, as another page of the site may not block the same way. Proxyon's own sites and addresses that are not on the public internet are refused.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
proxies
The proxies to test, as lines in either layout, such as those from get_connection_strings or get_subscription. Give this or residential, not both.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
residential › id
The Residential plan to make the lines on, as list_subscriptions gives its id. The main plan when left out.
Clear enough to supply this argument.
residential › count
How many fresh Sticky lines to make and test. Each has a session of its own.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
residential › country
The country the lines should exit in, as an ISO country code such as DE. Any country when left out.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
protocol
The protocol to speak to each proxy in. It must be one the proxy takes: use socks5 only for proxies that have a SOCKS5 port.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Test proxies on a site",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
Output schema84/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url",
"results",
"summary"
],
"properties": {
"url": {
"type": "string",
"description": "The address that was tested."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"line",
"proxy",
"outcome"
],
"properties": {
"why": {
"type": "string",
"description": "For blocked and failed: what happened, in words."
},
"line": {
"type": "number",
"description": "Which proxy this is, counting from 1 in the order they were tested."
},
"proxy": {
"type": "string",
"description": "The proxy as host:port, without its username and password."
},
"exitIp": {
"type": "string",
"description": "The IP address the request left from. Not there when it failed or could not be found out."
},
"status": {
"type": "number",
"description": "The HTTP status the site answered with. Not there when it failed."
},
"country": {
"type": "string",
"description": "The country of exitIp, as two letters. Not there without exitIp or when it could not be found out."
},
"outcome": {
"enum": [
"worked",
"blocked",
"failed"
],
"type": "string",
"description": "worked: the site answered the proxy. blocked: the site answered with a block, challenge or captcha. failed: no usable answer came, such as a timeout or a refused login."
},
"responseMs": {
"type": "number",
"description": "How long the site took to answer, in milliseconds. Not there when it failed."
}
},
"additionalProperties": false
},
"description": "One result for each proxy, in the order they were given."
},
"summary": {
"type": "string",
"description": "How many got through and how many were blocked or failed."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "test_proxies",
"title": "Test proxies on a site",
"description": "Tests up to 10 of the Customer's proxies on a site they name, such as one they plan to scrape: Proxyon's server sends one GET to it through each proxy, looking like a Chrome browser, and says whether each worked, was blocked (a challenge page, a captcha, HTTP 403, 429 or 503) or failed (a timeout, or the proxy refused), with how long the site took to answer (responseMs), the IP it left from and that IP's country. It never gives back or keeps the page. It uses the Customer's own traffic, up to about 100 KB per proxy, so test only when the Customer asks. Give lines from get_connection_strings or get_subscription as proxies, or residential to make fresh Sticky lines on a Residential plan for the test (their lines aren't given back: to keep the ones that work, make them with get_connection_strings and pass them as proxies). A rotating line leaves from a new IP on each request, so its exitIp is the one the check left from. An account can test 100 proxies an hour.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url",
"context"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"description": "The address of the site to test the proxies on, starting with http:// or https://. Use the page the Customer plans to scrape, as another page of the site may not block the same way. Proxyon's own sites and addresses that are not on the public internet are refused."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"proxies": {
"type": "array",
"items": {
"type": "string",
"maxLength": 600
},
"maxItems": 10,
"minItems": 1,
"description": "The proxies to test, as lines in either layout, such as those from get_connection_strings or get_subscription. Give this or residential, not both."
},
"protocol": {
"enum": [
"http",
"socks5"
],
"type": "string",
"default": "http",
"description": "The protocol to speak to each proxy in. It must be one the proxy takes: use socks5 only for proxies that have a SOCKS5 port."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"residential": {
"type": "object",
"required": [
"count"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The Residential plan to make the lines on, as list_subscriptions gives its id. The main plan when left out.",
"exclusiveMinimum": 0
},
"count": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "How many fresh Sticky lines to make and test. Each has a session of its own."
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "The country the lines should exit in, as an ISO country code such as DE. Any country when left out."
}
},
"description": "Instead of proxies: make fresh Sticky lines on a Residential plan and test those. Their lines are not given back."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url",
"results",
"summary"
],
"properties": {
"url": {
"type": "string",
"description": "The address that was tested."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"line",
"proxy",
"outcome"
],
"properties": {
"why": {
"type": "string",
"description": "For blocked and failed: what happened, in words."
},
"line": {
"type": "number",
"description": "Which proxy this is, counting from 1 in the order they were tested."
},
"proxy": {
"type": "string",
"description": "The proxy as host:port, without its username and password."
},
"exitIp": {
"type": "string",
"description": "The IP address the request left from. Not there when it failed or could not be found out."
},
"status": {
"type": "number",
"description": "The HTTP status the site answered with. Not there when it failed."
},
"country": {
"type": "string",
"description": "The country of exitIp, as two letters. Not there without exitIp or when it could not be found out."
},
"outcome": {
"enum": [
"worked",
"blocked",
"failed"
],
"type": "string",
"description": "worked: the site answered the proxy. blocked: the site answered with a block, challenge or captcha. failed: no usable answer came, such as a timeout or a refused login."
},
"responseMs": {
"type": "number",
"description": "How long the site took to answer, in milliseconds. Not there when it failed."
}
},
"additionalProperties": false
},
"description": "One result for each proxy, in the order they were given."
},
"summary": {
"type": "string",
"description": "How many got through and how many were blocked or failed."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Test proxies on a site",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Whitelists an IP address on a Residential plan, every IP in a Proxy group of Dedicated Datacenter IPs, or an IPv6 Rotating subscription, or takes one off. Traffic from a whitelisted IP connects without the username and password. Static Residential (ISP) packages have no whitelist.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
product
The kind of proxy whose whitelist to change. Static Residential (ISP) has no whitelist.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
The Subscription's id, as list_subscriptions gives it. For Dedicated Datacenter, the Proxy group's: the whitelist covers every IP in it.
Clear enough to supply this argument.
ip
The IPv4 or IPv6 address.
Clear enough to supply this argument.
action
Whether to put the address on the whitelist or take it off it.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Whitelist an IP, or take one off",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
Output schema86/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"done",
"whitelistedIps"
],
"properties": {
"done": {
"type": "string",
"description": "What was changed, in a sentence."
},
"whitelistedIps": {
"type": "array",
"items": {
"type": "string"
},
"description": "The Subscription's Whitelisted IPs after the change, as the API reports them."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "whitelist_ip",
"title": "Whitelist an IP, or take one off",
"description": "Whitelists an IP address on a Residential plan, every IP in a Proxy group of Dedicated Datacenter IPs, or an IPv6 Rotating subscription, or takes one off. Traffic from a whitelisted IP connects without the username and password. Static Residential (ISP) packages have no whitelist.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product",
"id",
"ip",
"action",
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The Subscription's id, as list_subscriptions gives it. For Dedicated Datacenter, the Proxy group's: the whitelist covers every IP in it."
},
"ip": {
"type": "string",
"description": "The IPv4 or IPv6 address."
},
"action": {
"enum": [
"add",
"remove"
],
"type": "string",
"description": "Whether to put the address on the whitelist or take it off it."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"product": {
"enum": [
"residential",
"static_residential",
"dedicated_datacenter",
"ipv6_rotating"
],
"type": "string",
"description": "The kind of proxy whose whitelist to change. Static Residential (ISP) has no whitelist."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"done",
"whitelistedIps"
],
"properties": {
"done": {
"type": "string",
"description": "What was changed, in a sentence."
},
"whitelistedIps": {
"type": "array",
"items": {
"type": "string"
},
"description": "The Subscription's Whitelisted IPs after the change, as the API reports them."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Whitelist an IP, or take one off",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Arranges the Customer's Dedicated Datacenter IPs in Proxy groups, which renew, reset and whitelist together: create one (with IPs, by address), rename one, move IPs into one (from wherever they are), take IPs out of one (they become Ungrouped), or delete one (its IPs stay, Ungrouped; it asks the Customer first). Answers with the account's Proxy groups afterwards.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
What to do to the Proxy groups. create needs name, and may take ips to start with. rename needs id and name. add_ips moves ips into the group id from wherever they are. remove_ips takes ips out of it, which leaves them Ungrouped. delete_group deletes the group id, leaves its IPs Ungrouped and asks the Customer first.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
The Proxy group's id, as list_subscriptions gives it under Dedicated Datacenter. Needed for everything but create.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
The Proxy group's name, for create and rename.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
ips
Dedicated Datacenter IPs of the Customer's, by address alone with no port (get_subscription lists them): the ones to start a new group with, to move in or to take out.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
confirmToken
The confirm token from this tool's own question, once the Customer said yes to it. Leave it out to ask them.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status"
],
"properties": {
"done": {
"type": "string",
"description": "With done or not_done: what was done, or that nothing was, in a sentence."
},
"next": {
"type": "string",
"description": "With confirm_first: what to do with the question."
},
"price": {
"type": "string",
"description": "With confirm_first, for a purchase: what it costs, in USD, from the Balance."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"product",
"id",
"name",
"holds",
"ends",
"status"
],
"properties": {
"id": {
"type": "number",
"description": "Its id, which the other tools take as id. For Dedicated Datacenter it is the Proxy group's, and 0 for the Ungrouped IPs."
},
"ends": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The date it ends, in UTC; null for Residential, which never expires. For a Proxy group, the date its first IP ends."
},
"name": {
"type": "string",
"description": "Its name in Proxyon's app, such as Residential #7 or Price checks (Proxy group)."
},
"holds": {
"type": "string",
"description": "What it holds, in words: the traffic left, or the IPs or threads and their country."
},
"status": {
"type": "string",
"description": "How it stands, in words, such as ends in 3 days or renews 23 Nov; for Residential, that bought traffic never expires."
},
"product": {
"type": "string",
"description": "The kind of proxy: Residential, Static Residential (ISP), Dedicated Datacenter or IPv6 Rotating."
},
"autoTopUp": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto top-up is set to buy more. Residential only."
},
"autoRenewal": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto-renewal is set to renew it. Rented products only; Residential has autoTopUp instead."
}
},
"additionalProperties": false
},
"description": "With done: the Customer's Dedicated Datacenter Proxy groups that hold IPs afterwards, and the Ungrouped IPs, as list_subscriptions gives them."
},
"status": {
"enum": [
"confirm_first",
"done",
"not_done"
],
"type": "string",
"description": "confirm_first: nothing has been done yet; put question to the Customer. done: it was done. not_done: the Customer said no, so nothing changed."
},
"balance": {
"type": "string",
"description": "The Customer's Balance in USD: before the purchase with confirm_first, after paying with done."
},
"question": {
"type": "string",
"description": "With confirm_first: the question to put to the Customer, for a yes or no."
},
"callAgain": {
"type": "object",
"description": "With confirm_first: the arguments to call this tool again with if the Customer says yes, confirmToken among them.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"balanceAfter": {
"type": "string",
"description": "With confirm_first, for a purchase: what the Balance will be after paying, in USD."
},
"confirmToken": {
"type": "string",
"description": "With confirm_first: proof that the Customer was asked. It works for 10 minutes, for this order only."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "manage_datacenter_groups",
"title": "Arrange Dedicated Datacenter IPs in Proxy groups",
"description": "Arranges the Customer's Dedicated Datacenter IPs in Proxy groups, which renew, reset and whitelist together: create one (with IPs, by address), rename one, move IPs into one (from wherever they are), take IPs out of one (they become Ungrouped), or delete one (its IPs stay, Ungrouped; it asks the Customer first). Answers with the account's Proxy groups afterwards.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"action",
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The Proxy group's id, as list_subscriptions gives it under Dedicated Datacenter. Needed for everything but create.",
"exclusiveMinimum": 0
},
"ips": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 1000,
"description": "Dedicated Datacenter IPs of the Customer's, by address alone with no port (get_subscription lists them): the ones to start a new group with, to move in or to take out."
},
"name": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "The Proxy group's name, for create and rename."
},
"action": {
"enum": [
"create",
"rename",
"add_ips",
"remove_ips",
"delete_group"
],
"type": "string",
"description": "What to do to the Proxy groups. create needs name, and may take ips to start with. rename needs id and name. add_ips moves ips into the group id from wherever they are. remove_ips takes ips out of it, which leaves them Ungrouped. delete_group deletes the group id, leaves its IPs Ungrouped and asks the Customer first."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"confirmToken": {
"type": "string",
"description": "The confirm token from this tool's own question, once the Customer said yes to it. Leave it out to ask them."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status"
],
"properties": {
"done": {
"type": "string",
"description": "With done or not_done: what was done, or that nothing was, in a sentence."
},
"next": {
"type": "string",
"description": "With confirm_first: what to do with the question."
},
"price": {
"type": "string",
"description": "With confirm_first, for a purchase: what it costs, in USD, from the Balance."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"product",
"id",
"name",
"holds",
"ends",
"status"
],
"properties": {
"id": {
"type": "number",
"description": "Its id, which the other tools take as id. For Dedicated Datacenter it is the Proxy group's, and 0 for the Ungrouped IPs."
},
"ends": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The date it ends, in UTC; null for Residential, which never expires. For a Proxy group, the date its first IP ends."
},
"name": {
"type": "string",
"description": "Its name in Proxyon's app, such as Residential #7 or Price checks (Proxy group)."
},
"holds": {
"type": "string",
"description": "What it holds, in words: the traffic left, or the IPs or threads and their country."
},
"status": {
"type": "string",
"description": "How it stands, in words, such as ends in 3 days or renews 23 Nov; for Residential, that bought traffic never expires."
},
"product": {
"type": "string",
"description": "The kind of proxy: Residential, Static Residential (ISP), Dedicated Datacenter or IPv6 Rotating."
},
"autoTopUp": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto top-up is set to buy more. Residential only."
},
"autoRenewal": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "Whether an Auto-renewal is set to renew it. Rented products only; Residential has autoTopUp instead."
}
},
"additionalProperties": false
},
"description": "With done: the Customer's Dedicated Datacenter Proxy groups that hold IPs afterwards, and the Ungrouped IPs, as list_subscriptions gives them."
},
"status": {
"enum": [
"confirm_first",
"done",
"not_done"
],
"type": "string",
"description": "confirm_first: nothing has been done yet; put question to the Customer. done: it was done. not_done: the Customer said no, so nothing changed."
},
"balance": {
"type": "string",
"description": "The Customer's Balance in USD: before the purchase with confirm_first, after paying with done."
},
"question": {
"type": "string",
"description": "With confirm_first: the question to put to the Customer, for a yes or no."
},
"callAgain": {
"type": "object",
"description": "With confirm_first: the arguments to call this tool again with if the Customer says yes, confirmToken among them.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"balanceAfter": {
"type": "string",
"description": "With confirm_first, for a purchase: what the Balance will be after paying, in USD."
},
"confirmToken": {
"type": "string",
"description": "With confirm_first: proof that the Customer was asked. It works for 10 minutes, for this order only."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Arrange Dedicated Datacenter IPs in Proxy groups",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
Align the title with the capability actually described by this tool.
Description91/100
Resets the proxy credentials, the login the proxies sign in with, of a Residential plan (a new password), every IP in a Proxy group of Dedicated Datacenter IPs or an IPv6 Rotating subscription (a new username and password). Static Residential (ISP) credentials can't be reset. The old ones stop working immediately. It asks the Customer first: the first call answers with a question, and it resets only when called again with the confirm token, after they said yes.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
product
The kind of proxy whose credentials to reset. Static Residential (ISP) credentials can't be reset.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
The Subscription's id, as list_subscriptions gives it. For Dedicated Datacenter, the Proxy group's; the Ungrouped IPs (0) aren't changed here.
Clear enough to supply this argument.
confirmToken
The confirm token from this tool's own question, once the Customer said yes to it. Leave it out to ask them.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status"
],
"properties": {
"done": {
"type": "string",
"description": "With done or not_done: what was done, or that nothing was, in a sentence."
},
"next": {
"type": "string",
"description": "With confirm_first: what to do with the question."
},
"price": {
"type": "string",
"description": "With confirm_first, for a purchase: what it costs, in USD, from the Balance."
},
"status": {
"enum": [
"confirm_first",
"done",
"not_done"
],
"type": "string",
"description": "confirm_first: nothing has been done yet; put question to the Customer. done: it was done. not_done: the Customer said no, so nothing changed."
},
"balance": {
"type": "string",
"description": "The Customer's Balance in USD: before the purchase with confirm_first, after paying with done."
},
"question": {
"type": "string",
"description": "With confirm_first: the question to put to the Customer, for a yes or no."
},
"callAgain": {
"type": "object",
"description": "With confirm_first: the arguments to call this tool again with if the Customer says yes, confirmToken among them.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"balanceAfter": {
"type": "string",
"description": "With confirm_first, for a purchase: what the Balance will be after paying, in USD."
},
"confirmToken": {
"type": "string",
"description": "With confirm_first: proof that the Customer was asked. It works for 10 minutes, for this order only."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reset_password",
"title": "Reset proxy credentials",
"description": "Resets the proxy credentials, the login the proxies sign in with, of a Residential plan (a new password), every IP in a Proxy group of Dedicated Datacenter IPs or an IPv6 Rotating subscription (a new username and password). Static Residential (ISP) credentials can't be reset. The old ones stop working immediately. It asks the Customer first: the first call answers with a question, and it resets only when called again with the confirm token, after they said yes.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product",
"id",
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The Subscription's id, as list_subscriptions gives it. For Dedicated Datacenter, the Proxy group's; the Ungrouped IPs (0) aren't changed here."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"product": {
"enum": [
"residential",
"static_residential",
"dedicated_datacenter",
"ipv6_rotating"
],
"type": "string",
"description": "The kind of proxy whose credentials to reset. Static Residential (ISP) credentials can't be reset."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"confirmToken": {
"type": "string",
"description": "The confirm token from this tool's own question, once the Customer said yes to it. Leave it out to ask them."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status"
],
"properties": {
"done": {
"type": "string",
"description": "With done or not_done: what was done, or that nothing was, in a sentence."
},
"next": {
"type": "string",
"description": "With confirm_first: what to do with the question."
},
"price": {
"type": "string",
"description": "With confirm_first, for a purchase: what it costs, in USD, from the Balance."
},
"status": {
"enum": [
"confirm_first",
"done",
"not_done"
],
"type": "string",
"description": "confirm_first: nothing has been done yet; put question to the Customer. done: it was done. not_done: the Customer said no, so nothing changed."
},
"balance": {
"type": "string",
"description": "The Customer's Balance in USD: before the purchase with confirm_first, after paying with done."
},
"question": {
"type": "string",
"description": "With confirm_first: the question to put to the Customer, for a yes or no."
},
"callAgain": {
"type": "object",
"description": "With confirm_first: the arguments to call this tool again with if the Customer says yes, confirmToken among them.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"balanceAfter": {
"type": "string",
"description": "With confirm_first, for a purchase: what the Balance will be after paying, in USD."
},
"confirmToken": {
"type": "string",
"description": "With confirm_first: proof that the Customer was asked. It works for 10 minutes, for this order only."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Reset proxy credentials",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Swaps the IPs of a Static Residential (ISP) package: every IP in the package is replaced with a new one (one IP can't be swapped alone), and the old ones stop working immediately. The username and password stay. It's free within the package's swaps for its term, which a renewal resets. It asks the Customer first: the first call answers with a question naming the IPs that go, and it swaps only when called again with the confirm token, after they said yes. Answers with the new lines.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
id
The Static Residential (ISP) package's id, as list_subscriptions gives it.
Clear enough to supply this argument.
confirmToken
The confirm token from this tool's own question, once the Customer said yes to it. Leave it out to ask them.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status"
],
"properties": {
"done": {
"type": "string",
"description": "With done or not_done: what was done, or that nothing was, in a sentence."
},
"next": {
"type": "string",
"description": "With confirm_first: what to do with the question."
},
"lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "With done: the package's new proxy lines, host:port:user:pass, one for each new IP."
},
"price": {
"type": "string",
"description": "With confirm_first, for a purchase: what it costs, in USD, from the Balance."
},
"status": {
"enum": [
"confirm_first",
"done",
"not_done"
],
"type": "string",
"description": "confirm_first: nothing has been done yet; put question to the Customer. done: it was done. not_done: the Customer said no, so nothing changed."
},
"balance": {
"type": "string",
"description": "The Customer's Balance in USD: before the purchase with confirm_first, after paying with done."
},
"question": {
"type": "string",
"description": "With confirm_first: the question to put to the Customer, for a yes or no."
},
"callAgain": {
"type": "object",
"description": "With confirm_first: the arguments to call this tool again with if the Customer says yes, confirmToken among them.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"balanceAfter": {
"type": "string",
"description": "With confirm_first, for a purchase: what the Balance will be after paying, in USD."
},
"confirmToken": {
"type": "string",
"description": "With confirm_first: proof that the Customer was asked. It works for 10 minutes, for this order only."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "swap_ips",
"title": "Swap a Static Residential (ISP) package's IPs",
"description": "Swaps the IPs of a Static Residential (ISP) package: every IP in the package is replaced with a new one (one IP can't be swapped alone), and the old ones stop working immediately. The username and password stay. It's free within the package's swaps for its term, which a renewal resets. It asks the Customer first: the first call answers with a question naming the IPs that go, and it swaps only when called again with the confirm token, after they said yes. Answers with the new lines.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The Static Residential (ISP) package's id, as list_subscriptions gives it.",
"exclusiveMinimum": 0
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"confirmToken": {
"type": "string",
"description": "The confirm token from this tool's own question, once the Customer said yes to it. Leave it out to ask them."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status"
],
"properties": {
"done": {
"type": "string",
"description": "With done or not_done: what was done, or that nothing was, in a sentence."
},
"next": {
"type": "string",
"description": "With confirm_first: what to do with the question."
},
"lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "With done: the package's new proxy lines, host:port:user:pass, one for each new IP."
},
"price": {
"type": "string",
"description": "With confirm_first, for a purchase: what it costs, in USD, from the Balance."
},
"status": {
"enum": [
"confirm_first",
"done",
"not_done"
],
"type": "string",
"description": "confirm_first: nothing has been done yet; put question to the Customer. done: it was done. not_done: the Customer said no, so nothing changed."
},
"balance": {
"type": "string",
"description": "The Customer's Balance in USD: before the purchase with confirm_first, after paying with done."
},
"question": {
"type": "string",
"description": "With confirm_first: the question to put to the Customer, for a yes or no."
},
"callAgain": {
"type": "object",
"description": "With confirm_first: the arguments to call this tool again with if the Customer says yes, confirmToken among them.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"balanceAfter": {
"type": "string",
"description": "With confirm_first, for a purchase: what the Balance will be after paying, in USD."
},
"confirmToken": {
"type": "string",
"description": "With confirm_first: proof that the Customer was asked. It works for 10 minutes, for this order only."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Swap a Static Residential (ISP) package's IPs",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Deletes a Residential plan (and the traffic left on it), every IP in a Proxy group of Dedicated Datacenter IPs, or an IPv6 Rotating subscription. It stops working immediately and nothing is refunded. It asks the Customer first: the first call answers with a question saying what goes, and it deletes only when called again with the confirm token, after they said yes. Static Residential (ISP) packages aren't deleted: they end with their Period.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
product
The kind of proxy to delete. Static Residential (ISP) can't be deleted: it ends with its Period.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
The Subscription's id, as list_subscriptions gives it. For Dedicated Datacenter, the Proxy group's; the Ungrouped IPs (0) aren't changed here.
Clear enough to supply this argument.
confirmToken
The confirm token from this tool's own question, once the Customer said yes to it. Leave it out to ask them.
Clear enough to supply this argument.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status"
],
"properties": {
"done": {
"type": "string",
"description": "With done or not_done: what was done, or that nothing was, in a sentence."
},
"next": {
"type": "string",
"description": "With confirm_first: what to do with the question."
},
"price": {
"type": "string",
"description": "With confirm_first, for a purchase: what it costs, in USD, from the Balance."
},
"status": {
"enum": [
"confirm_first",
"done",
"not_done"
],
"type": "string",
"description": "confirm_first: nothing has been done yet; put question to the Customer. done: it was done. not_done: the Customer said no, so nothing changed."
},
"balance": {
"type": "string",
"description": "The Customer's Balance in USD: before the purchase with confirm_first, after paying with done."
},
"question": {
"type": "string",
"description": "With confirm_first: the question to put to the Customer, for a yes or no."
},
"callAgain": {
"type": "object",
"description": "With confirm_first: the arguments to call this tool again with if the Customer says yes, confirmToken among them.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"balanceAfter": {
"type": "string",
"description": "With confirm_first, for a purchase: what the Balance will be after paying, in USD."
},
"confirmToken": {
"type": "string",
"description": "With confirm_first: proof that the Customer was asked. It works for 10 minutes, for this order only."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "delete_subscription",
"title": "Delete a Subscription",
"description": "Deletes a Residential plan (and the traffic left on it), every IP in a Proxy group of Dedicated Datacenter IPs, or an IPv6 Rotating subscription. It stops working immediately and nothing is refunded. It asks the Customer first: the first call answers with a question saying what goes, and it deletes only when called again with the confirm token, after they said yes. Static Residential (ISP) packages aren't deleted: they end with their Period.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product",
"id",
"context"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The Subscription's id, as list_subscriptions gives it. For Dedicated Datacenter, the Proxy group's; the Ungrouped IPs (0) aren't changed here."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"product": {
"enum": [
"residential",
"static_residential",
"dedicated_datacenter",
"ipv6_rotating"
],
"type": "string",
"description": "The kind of proxy to delete. Static Residential (ISP) can't be deleted: it ends with its Period."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"confirmToken": {
"type": "string",
"description": "The confirm token from this tool's own question, once the Customer said yes to it. Leave it out to ask them."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status"
],
"properties": {
"done": {
"type": "string",
"description": "With done or not_done: what was done, or that nothing was, in a sentence."
},
"next": {
"type": "string",
"description": "With confirm_first: what to do with the question."
},
"price": {
"type": "string",
"description": "With confirm_first, for a purchase: what it costs, in USD, from the Balance."
},
"status": {
"enum": [
"confirm_first",
"done",
"not_done"
],
"type": "string",
"description": "confirm_first: nothing has been done yet; put question to the Customer. done: it was done. not_done: the Customer said no, so nothing changed."
},
"balance": {
"type": "string",
"description": "The Customer's Balance in USD: before the purchase with confirm_first, after paying with done."
},
"question": {
"type": "string",
"description": "With confirm_first: the question to put to the Customer, for a yes or no."
},
"callAgain": {
"type": "object",
"description": "With confirm_first: the arguments to call this tool again with if the Customer says yes, confirmToken among them.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"balanceAfter": {
"type": "string",
"description": "With confirm_first, for a purchase: what the Balance will be after paying, in USD."
},
"confirmToken": {
"type": "string",
"description": "With confirm_first: proof that the Customer was asked. It works for 10 minutes, for this order only."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete a Subscription",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Makes a pay link the Customer opens in their own browser to add money to their Balance: by card on Stripe's page, or in crypto on Heleket's. A Deposit is $10.00 or more. Nothing is charged until they pay there, and the Balance goes up once they have (get_account shows it). Give the Customer the link; never open or pay it for them.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Resolve the mismatch between this description and its schema constraints.
amount
How much to add to the Balance, in US dollars, as the Customer asked. A Deposit has a minimum of $10.00, which the schema can't hold.
Resolve the mismatch between this description and its schema constraints.
method
How the Customer will pay: card on Stripe's page, or crypto on Heleket's page. Card when left out; ask the Customer if they care.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Pay link for a Deposit",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
Output schema69/100
Describe the returned fields so an agent can interpret the result.
View output schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"payLink",
"amount",
"paidWith",
"next"
],
"properties": {
"next": {
"type": "string",
"description": "What to do next."
},
"amount": {
"type": "string",
"description": "The amount of the Deposit, in USD."
},
"payLink": {
"type": "string",
"description": "The link the Customer opens in their own browser to pay. Give it to them; never open or pay it."
},
"paidWith": {
"type": "string",
"description": "How and where the Customer pays, in words."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "add_money",
"title": "Pay link for a Deposit",
"description": "Makes a pay link the Customer opens in their own browser to add money to their Balance: by card on Stripe's page, or in crypto on Heleket's. A Deposit is $10.00 or more. Nothing is charged until they pay there, and the Balance goes up once they have (get_account shows it). Give the Customer the link; never open or pay it for them.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount",
"context"
],
"properties": {
"amount": {
"type": "number",
"description": "How much to add to the Balance, in US dollars, as the Customer asked. A Deposit has a minimum of $10.00, which the schema can't hold.",
"exclusiveMinimum": 0
},
"method": {
"enum": [
"card",
"crypto"
],
"type": "string",
"description": "How the Customer will pay: card on Stripe's page, or crypto on Heleket's page. Card when left out; ask the Customer if they care."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"payLink",
"amount",
"paidWith",
"next"
],
"properties": {
"next": {
"type": "string",
"description": "What to do next."
},
"amount": {
"type": "string",
"description": "The amount of the Deposit, in USD."
},
"payLink": {
"type": "string",
"description": "The link the Customer opens in their own browser to pay. Give it to them; never open or pay it."
},
"paidWith": {
"type": "string",
"description": "How and where the Customer pays, in words."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Pay link for a Deposit",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
The Customer's latest Invoices (what they paid or still owe, and how, with a pay link for each unpaid one) and Transactions (what their Balance paid for), newest first. Dates are UTC.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many Invoices, and how many Transactions, to return, the newest of each. 10 of each when left out.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
context
A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details.
Clear enough to supply this argument.
llm_model
The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics.
Clear enough to supply this argument.
conversation_id
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoices",
"transactions"
],
"properties": {
"invoices": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"date",
"what",
"amount",
"paidWith",
"status"
],
"properties": {
"id": {
"type": "number",
"description": "The Invoice's number."
},
"date": {
"type": "string",
"description": "The date of the Invoice, in UTC."
},
"what": {
"type": "string",
"description": "What it was for, such as a Deposit or a Residential order."
},
"amount": {
"type": "string",
"description": "The amount, in USD."
},
"status": {
"type": "string",
"description": "Paid, Unpaid (still owed) or Pending (crypto not yet confirmed)."
},
"payLink": {
"type": "string",
"description": "For an Unpaid Invoice: the link the Customer pays it on."
},
"paidWith": {
"type": "string",
"description": "How it is paid or was paid."
}
},
"additionalProperties": false
},
"description": "The latest Invoices, newest first."
},
"transactions": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"what",
"amount"
],
"properties": {
"date": {
"type": "string",
"description": "The date of the Transaction, in UTC."
},
"what": {
"type": "string",
"description": "What the Balance paid for, such as a Residential top-up or a Dedicated Datacenter renewal."
},
"amount": {
"type": "string",
"description": "The amount, in USD."
},
"period": {
"type": "string",
"description": "For a rented product: the Period it paid for, such as 30 days."
}
},
"additionalProperties": false
},
"description": "The latest Transactions on the Balance, newest first."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "list_billing",
"title": "Your Invoices and Transactions",
"description": "The Customer's latest Invoices (what they paid or still owe, and how, with a pay link for each unpaid one) and Transactions (what their Balance paid for), newest first. Dates are UTC.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"context"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many Invoices, and how many Transactions, to return, the newest of each. 10 of each when left out."
},
"context": {
"type": "string",
"description": "A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as \"a customer\". Do not quote the user or include names, emails, or other personal details."
},
"llm_model": {
"type": "string",
"description": "The model identifier you are running as, for example \"claude-opus-4-8\" or \"gpt-5.2\". Pass \"unknown\" if you are not certain. Recorded for the server developer's analytics."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoices",
"transactions"
],
"properties": {
"invoices": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"date",
"what",
"amount",
"paidWith",
"status"
],
"properties": {
"id": {
"type": "number",
"description": "The Invoice's number."
},
"date": {
"type": "string",
"description": "The date of the Invoice, in UTC."
},
"what": {
"type": "string",
"description": "What it was for, such as a Deposit or a Residential order."
},
"amount": {
"type": "string",
"description": "The amount, in USD."
},
"status": {
"type": "string",
"description": "Paid, Unpaid (still owed) or Pending (crypto not yet confirmed)."
},
"payLink": {
"type": "string",
"description": "For an Unpaid Invoice: the link the Customer pays it on."
},
"paidWith": {
"type": "string",
"description": "How it is paid or was paid."
}
},
"additionalProperties": false
},
"description": "The latest Invoices, newest first."
},
"transactions": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"what",
"amount"
],
"properties": {
"date": {
"type": "string",
"description": "The date of the Transaction, in UTC."
},
"what": {
"type": "string",
"description": "What the Balance paid for, such as a Residential top-up or a Dedicated Datacenter renewal."
},
"amount": {
"type": "string",
"description": "The amount, in USD."
},
"period": {
"type": "string",
"description": "For a rented product: the Period it paid for, such as 30 days."
}
},
"additionalProperties": false
},
"description": "The latest Transactions on the Balance, newest first."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Your Invoices and Transactions",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Your SubscriptionsEverything the Customer has bought and still holds: each Residential plan with the traffic left, each Static Residential (ISP) package, their Dedicated Datac…
02Proxyon's pricesProxyon's prices in USD, live from its own tables: Residential by the GB, Static Residential (ISP) by the IP a month, Dedicated Datacenter by the IP for each…
03Your Invoices and TransactionsThe Customer's latest Invoices (what they paid or still owe, and how, with a pay link for each unpaid one) and Transactions (what their Balance paid for), ne…
04Residential traffic left and usedHow much traffic a Residential plan has left and what it used in each of the last 7 days and in the last 30, in GB (1,000 MB).
05Get account detailsThe Customer's Proxyon account: their email, name, Balance, whether their email is confirmed, what they have spent and since when they have been a Customer.
Want to run these tasks against your MCP server with us?
Proxyon setup, tools, quality score, publishing readiness, and alternatives.
How do I add Proxyon to Claude, ChatGPT, or Cursor?
Add Proxyon to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.proxyon.io/.
Is Proxyon MCP ready for ChatGPT and Claude?
As of November 10, 2026, Proxyon scores 100/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is Proxyon's MCP tool documentation?
As of November 10, 2026, Proxyon scores 92/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 15 of 15 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to Proxyon?
As of November 10, 2026, alternatives to Proxyon in developer-tools on the Manufact MCP leaderboard include Speko, Manufact, AgentMail, Context, and Speko.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.