Skip to main content
Glama

Renew a proxy

renew_proxy
Destructive

Extend a proxy by one plan period at its renewal price, adding plan GB for shared proxies; the charge is refused if it exceeds your approved max price.

Instructions

Extend a proxy by one more period of its plan, charged to your balance at its renewal price (next_renewal_price_cents in get_proxy_status); a shared proxy also gets its plan's GB added. A dedicated proxy must still be active; a shared one can be renewed until 7 days after it expires. Requires max_price_cents: the renewal price you showed the user and they approved; refused uncharged if the price is higher.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
proxy_idYesprx_... id
max_price_centsYesThe price you showed the user and they approved, in US cents (e.g. 250 = $2.50). Nothing is charged if the current price is higher; the new price comes back so you can ask the user again.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
proxyYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.2.1
    • addedInput schema / properties / max_price_cents
      Added value: +{
      +  "description": "The price you showed the user and they approved, in US cents (e.g. 250 = $2.50). Nothing is charged if the current price is higher; the new price comes back so you can ask the user again.",
      +  "exclusiveMinimum": 0,
      +  "maximum": 1000000,
      +  "type": "integer"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "proxy_id"
      -]New value: +[
      +  "proxy_id",
      +  "max_price_cents"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "proxy": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "auto_renew": {
      +          "type": "boolean"
      +        },
      +        "carrier": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "charged_price_cents": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "country": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "created_at": {
      +          "type": "string"
      +        },
      +        "data_bytes_used": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "data_gb_total": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "expires_at": {
      +          "type": "string"
      +        },
      +        "gateway": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "host": {
      +                  "type": "string"
      +                },
      +                "password": {
      +                  "type": "string"
      +                },
      +                "port": {
      +                  "maximum": 9007199254740991,
      +                  "minimum": -9007199254740991,
      +                  "type": "integer"
      +                },
      +                "protocol": {
      +                  "enum": [
      +                    "http",
      +                    "socks5"
      +                  ],
      +                  "type": "string"
      +                },
      +                "socks_port": {
      +                  "anyOf": [
      +                    {
      +                      "maximum": 9007199254740991,
      +                      "minimum": -9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "username": {
      +                  "type": "string"
      +                },
      +                "username_geo_hint": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "host",
      +                "port",
      +                "protocol",
      +                "username",
      +                "password"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "lists": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "activation_note": {
      +                "type": "string"
      +              },
      +              "city": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "countries": {
      +                "anyOf": [
      +                  {
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "country": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "created_at": {
      +                "type": "string"
      +              },
      +              "credentials": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": {},
      +                    "properties": {
      +                      "host": {
      +                        "type": "string"
      +                      },
      +                      "password": {
      +                        "type": "string"
      +                      },
      +                      "port": {
      +                        "maximum": 9007199254740991,
      +                        "minimum": -9007199254740991,
      +                        "type": "integer"
      +                      },
      +                      "protocol": {
      +                        "type": "string"
      +                      },
      +                      "username": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "host",
      +                      "port",
      +                      "protocol",
      +                      "username",
      +                      "password"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "entries": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "format": {
      +                "type": "string"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "isp": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "name": {
      +                "type": "string"
      +              },
      +              "network": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "proxy_id": {
      +                "type": "string"
      +              },
      +              "region": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "rotation_mode": {
      +                "type": "string"
      +              },
      +              "rotation_period_seconds": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "zip": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "proxy_id",
      +              "name",
      +              "rotation_period_seconds",
      +              "rotation_mode",
      +              "format",
      +              "credentials",
      +              "entries",
      +              "activation_note",
      +              "created_at"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "next_renewal_price_cents": {
      +          "anyOf": [
      +            {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "plan_id": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "rotation_url": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "status": {
      +          "enum": [
      +            "provisioning",
      +            "active",
      +            "expired",
      +            "refunded",
      +            "exhausted"
      +          ],
      +          "type": "string"
      +        },
      +        "type": {
      +          "enum": [
      +            "shared",
      +            "dedicated_standard",
      +            "dedicated_premium"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "status",
      +        "data_gb_total",
      +        "data_bytes_used",
      +        "charged_price_cents",
      +        "expires_at",
      +        "gateway",
      +        "lists"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "proxy"
      +  ],
      +  "type": "object"
      +}
  2. Changed2 schema fields changedv1.1.8
    • addedInput schema / properties / proxy_id / description
      Added value: +"prx_... id"
    • addedInput schema / properties / proxy_id / pattern
      Added value: +"^(?:prx_[A-Za-z0-9_-]{1,64}|PRX[A-Za-z0-9]{1,32})$"
  3. First observedv1.1.3

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive/openWorld/non-idempotent, and the description adds substantive context beyond them: charge goes to balance at renewal price, the call is refused uncharged if the price exceeds max_price_cents, and the new price is returned so the user can be re-asked. That price-guardrail behavior is not derivable from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph that front-loads the core action and then layers prerequisites, price guardrail, and refund behavior. Every clause earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering safety, the description supplies exactly what is missing: eligibility windows, billing semantics, and the uncharged-refusal mechanic. Nothing an agent needs to call this correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description ties max_price_cents to its source (next_renewal_price_cents in get_proxy_status) and to the approval workflow, adding meaning beyond the schema's own wording. proxy_id is left to the schema, which is fine.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Extend a proxy by one more period of its plan') and immediately distinguishes the operation from purchase_proxy and topup_proxy by naming the billing basis (renewal price from balance). The add-on effect (GB added for shared proxies) further pins down what this tool uniquely does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete eligibility rules: dedicated proxy must still be active, shared proxy renewable up to 7 days after expiry, and points to get_proxy_status for the price to quote. It stops short of naming sibling alternatives such as topup_proxy or set_proxy_auto_renew when renewal is not desired.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.