Skip to main content
Glama

ipvolt Proxy Toolkit

An MCP server for finding reviewed proxy documentation, generating tested configuration examples and diagnosing structured proxy failures. The public tools run locally against a bundled catalog. They do not need an API key or access to an ipvolt proxy account.

The toolkit is separate from ipvolt's commercial proxy service, which is not open yet. It does not provision proxies, buy traffic, access account data or configure another agent's network route.

Availability

Version 0.1.0 provides four local tools using a bundled public catalog. Check release status for verified npm availability, the hosted endpoint and registry listings. Source builds work independently of those distribution channels. Registry metadata in server.json describes the intended release and is not evidence that a channel is live.

Related MCP server: GAIIA Expert Proxy (MCP Server)

Tools

Tool

What it does

Availability

search_proxy_docs

Search reviewed guides and articles; return canonical links, excerpts and a content revision.

Hosted and local

get_proxy_doc

Retrieve a named document or section in bounded chunks, with revision-bound continuation cursors.

Hosted and local

generate_proxy_config

Return an exact-version HTTPS GET template with local environment placeholders. It does not execute code.

Hosted and local

diagnose_proxy_error

Interpret structured observations such as CONNECT407, TLS failure or an ambiguous timeout; state uncertainty and retry boundaries.

Hosted and local

check_proxy_route

Make one bounded request through an explicitly configured local proxy to the fixed ipvolt echo endpoint.

Local, explicitly enabled

For example, search with {"query":"curl proxy","topic":"setup"}, then retrieve {"documentId":"/guides/curl-proxy-setup"}. Generate a synchronous HTTPX example with {"client":"httpx","version":"0.28.1"}. Diagnose a proxy authentication failure with {"client":"httpx","version":"0.28.1","phase":"proxy_connect","status":407}. A 407 observation points to proxy authentication; it does not establish whether a password, account state or access policy is responsible.

Use short topic queries and structured observations. Supply credentials only through your local environment when you execute a generated example or enable the local diagnostic. Never send credentials, private URLs or raw logs as tool arguments.

Build and connect locally

Requires Node.js 24 or newer and npm. From the repository directory:

npm ci
npm run build
npm run check:content
node dist/transports/stdio.js --version

For a client that accepts a mcpServers configuration, use an absolute path to the compiled entry:

{
  "mcpServers": {
    "ipvolt": {
      "command": "node",
      "args": ["/absolute/path/to/proxy-toolkit-mcp/dist/transports/stdio.js"]
    }
  }
}

The default local server exposes four tools, sends no telemetry and makes no network requests. A client may send tool results to its own model provider. The server cannot control that client's data handling.

For the npm distribution, use the pinned package version after confirming its availability in release status:

{
  "mcpServers": {
    "ipvolt": {
      "command": "npx",
      "args": ["--yes", "@ipvolt/proxy-toolkit-mcp@0.1.0"]
    }
  }
}

Exact real-application and protocol results are recorded in client compatibility.

Tested configuration examples

Client

Version

Tested interface

curl

8.22.0

Command line, macOS/OpenSSL

Requests

2.34.2

Session, Python 3.14.7

HTTPX

0.28.1

Synchronous Client, Python 3.14.7

Playwright

1.63.0

APIRequestContext, Node 24.20.0

Templates use an HTTP proxy with HTTPS CONNECT, verify destination TLS, disable redirects and automatic retries, and print status or a bounded failure category. The destination and proxy remain local TARGET_URL and PROXY_URL variables. Requests and HTTPX timeouts are phase/inactivity budgets; they are not total job deadlines. Playwright's example uses its request API, buffers the response and is intended for small diagnostic targets. It does not configure browser navigation.

The exact matrix was executed against controlled authenticated proxies and HTTPS origins. See fixture method and evidence. Other versions, proxy protocols and platforms are not claimed to have been tested. Review generated code before executing it against an authorized destination.

Optional local route diagnostic

Set IPVOLT_ENABLE_ROUTE_CHECK=1 and provide the private IPVOLT_PROXY_URL through your MCP client's local secret environment. Invoke check_proxy_route with {"profile":"default"}. The tool accepts no proxy URL, credential or destination argument. Enabling it performs no request until the tool is called.

The check uses an HTTP CONNECT proxy and verified destination TLS to request only https://mcp.ipvolt.com/egress, with a random nonce. It has a ten-second total deadline, no redirect or direct fallback, one active request, bounded headers/body and cancellation cleanup. The HTTP connection to the proxy is not encrypted; HTTP proxy authentication can be observed on that first hop. Use a trusted network or a local tunnel appropriate to your setup.

Success reports the exit address seen by that one echo request. It does not prove anonymity, country, proxy type, ownership, or the routing of a browser, shell, SDK or other agent tool. It consumes a small amount of proxy bandwidth. The echo service receives the request's exit address; application access logging is disabled. Diagnostic debug/TLS settings that could expose credentials or weaken verification are rejected.

The diagnostic requires the hosted echo service to be available. Check release status before enabling it. Controlled fixture checks do not claim a successful request through a live supplier.

Hosted service

The planned remote URL is https://mcp.ipvolt.com/mcp, using Streamable HTTP. It exposes the four public tools without signup or an API key. The local route diagnostic is omitted and direct attempts to call it are rejected. No proxy configuration is accepted by this service.

For a local development instance:

IPVOLT_MCP_PUBLIC_URL=http://127.0.0.1:3040/mcp npm start

The process binds to loopback. Production configuration and coordinated rollback are documented in deployment instructions. Default bounds are 32 KiB request bodies, 8 KiB headers, 16 concurrent requests and 120 requests per minute per observed peer address. Exact browser origins are allowlisted. Reverse-proxy address headers are trusted only with an explicitly configured loopback proxy that overwrites them.

Hosted metrics contain only the tool name, success/error status, duration and toolkit version. Tool arguments, result bodies, credentials and exit addresses are not logged. Rate limiting retains temporary keyed address hashes for up to 60 seconds; local stdio usage is untracked. Machine endpoints use noindex and remain separate from the public website's consent-controlled analytics.

Maintain and verify

npm run typecheck
npm run build
npm test
npm run check:content
npm run check:manifest
npm run check:package
python3 -m unittest discover -s deploy -p 'test_*.py' -v

check:package inspects the actual npm tarball, installs it in a temporary consumer directory and discovers/calls all four tools with the current and legacy protocol paths. check:content -- --live compares every bundled Markdown document to its public canonical export; it performs only those allowlisted public reads.

The runtime does not crawl the website. A maintainer exports only the reviewed public guide/blog catalogs from a verified website source using scripts/export-content.ts, reviews the resulting diff and publishes a new immutable package version. Drafts and private operational applications are outside that allowlist. Bundle and document SHA-256 values make source changes observable.

Code is MIT licensed. Bundled editorial content has a separate content license. Support belongs in the repository's issue tracker; omit credentials and private logs from reports.

Available Tools

4 tools
diagnose_proxy_errorDiagnose a proxy errorA
Read-onlyIdempotent
Inspect

Use structured client/version, phase, status or exception observations to identify possible causes and the next check. Returns uncertainty and retry boundaries. Do not send raw logs, URLs or credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
phaseYes
clientYes
methodNounknown
statusNoObserved HTTP status; identify its responding layer separately.
versionYes
exceptionNoNormalized category, not raw exception text. HTTPX ConnectError alone does not establish a TLS error.
responseSourceNoUse target/proxy only when established by response provenance, not merely the status code.unknown
retryAfterSecondsNoParsed bounded Retry-After delay, if actually observed. Never submit the raw header.
requestMayHaveBeenSentNoWhether this target request may already have reached the application. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
retryYes
clientYes
sourcesYes
summaryYes
versionYes
evidenceYes
candidatesYes
uncertaintyYes
rulesRevisionYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real value by disclosing the output character ('returns uncertainty and retry boundaries') and an input-hygiene constraint that annotations cannot express.

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?

Three short sentences, each earning its place: what to supply, what comes back, and what not to supply. Front-loaded with the actionable instruction and free of padding.

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

Completeness4/5

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

An output schema exists, so return values need not be enumerated, and the description still signals the uncertainty/retry-boundary framing. Combined with annotation coverage and reasonably documented enum fields, an agent has enough to invoke it correctly, though the exclusion from sibling tools remains unstated.

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

Parameters3/5

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

Schema coverage is 56%, and the description names only four of nine inputs (client, version, phase, status/exception) without adding format or interpretation detail. The schema's own field descriptions (normalized exception category, response provenance, bounded Retry-After) do the heavy lifting, so this is adequate but not compensatory.

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

Purpose4/5

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

States a specific verb (identify possible causes and the next check) on a specific resource (proxy errors) using named inputs. It is clearly distinguishable from doc-search and config-generation siblings, though it never names them explicitly.

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

Usage Guidelines3/5

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

Gives strong input guidance ('use structured client/version, phase, status or exception observations') and a negative constraint ('do not send raw logs, URLs or credentials'), which effectively tells the agent when this tool is inappropriate. However, it never contrasts with search_proxy_docs, get_proxy_doc, or generate_proxy_config, so the routing decision is left implicit.

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

generate_proxy_configGenerate a tested proxy configurationA
Read-onlyIdempotent
Inspect

Generate an HTTPS GET example for an exact tested curl, Requests, HTTPX or Playwright APIRequestContext version. Credentials and target are local environment placeholders. It does not execute the example or configure other agent tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient whose exact tested configuration to generate.
versionYesExact tested version matching the client. Other versions are unsupported.
protocolNoHTTP proxy with HTTPS CONNECT. Other proxy protocols are not tested.http
timeoutSecondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeYes
clientYes
sourcesYes
summaryYes
versionYes
behaviorYes
languageYes
protocolYes
interfaceYes
environmentYes
limitationsYes
testedRuntimeYes
templateRevisionYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, and the description is consistent with them. It adds genuinely useful context beyond the annotations: the output is a non-executed example, credentials/target are local placeholders, and no other agent tooling is touched. It does not mention what the generated snippet looks like structurally, but with a rich output schema that is acceptable.

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?

Three short sentences, front-loaded with the core action, followed by the placeholder caveat and the non-execution boundary. No filler or repetition of the tool name or title.

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

Completeness4/5

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

An output schema exists, so return values need not be described. The description covers the generation-only nature, the exact-version constraint, and placeholder semantics. It leaves unstated what the snippet actually contains (headers, env var wiring), but that is a minor gap for a simple generation tool.

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

Parameters3/5

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

Schema coverage is 75%, so the schema already documents client, version, and protocol. The description reinforces the key constraint that version must match the client and only exact tested versions work, but it adds no detail on protocol or timeoutSeconds beyond what the schema states. Baseline 3 fits.

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

Purpose4/5

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

States a specific verb (Generate) and resource (HTTPS GET example / proxy configuration) and names the exact client families covered. It implicitly separates itself from siblings like search_proxy_docs and diagnose_proxy_error because generation is a distinct action, but it never names an alternative explicitly.

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

Usage Guidelines3/5

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

The description implies usage context through 'exact tested ... version' and adds scope exclusions ('does not execute the example or configure other agent tools'). It stops short of saying when to pick this over search_proxy_docs or get_proxy_doc, so guidance remains inferred rather than stated.

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

get_proxy_docRead a reviewed proxy documentA
Read-onlyIdempotent
Inspect

Read a bounded chunk or named section using a document ID returned by search_proxy_docs. Follow nextCursor to continue; cursors are bound to the content revision.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
sectionNo
documentIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
chunkYes
documentYes
markdownYes
sectionsYes
nextCursorYes
provenanceYes
totalChunksYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower, and the description adds genuinely useful behavior: reads are bounded, and cursors are bound to the content revision (so a revision change invalidates them). It stops short of describing chunk size limits or what happens with an invalid/expired cursor.

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?

Two sentences, both load-bearing: the first states what is read and where the ID comes from, the second covers pagination and cursor invalidation. Front-loaded and waste-free.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description adequately covers the fetch-then-continue workflow plus cursor lifecycle. The remaining gap is the section-vs-cursor relationship and cursor expiry behavior for a 3-parameter tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load. It explains that documentId comes from search results and that cursor is a continuation token, which is meaningful, but the 'section' parameter is only named—no naming convention, case sensitivity, or interaction with cursor is given, even though the schema constrains its length to 160 chars.

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 precise verb+resource ('Read a bounded chunk or named section') and identifies the document ID source, which cleanly separates it from search_proxy_docs. An agent can tell immediately this is the follow-up fetch step rather than a search or config tool.

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?

Explicitly ties usage to a prior search_proxy_docs call that produced the document ID, and gives the continuation rule ('Follow nextCursor to continue'). It does not state when to prefer a section read over a cursor read, so it falls short of full when/when-not guidance.

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

search_proxy_docsSearch reviewed proxy documentationB
Read-onlyIdempotent
Inspect

Find reviewed ipvolt public guides and articles. Returns canonical document IDs, excerpts and content revision. Submit a short topic query, never credentials or logs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
topicNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes
provenanceYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already establish the read-only, idempotent, non-destructive, closed-world profile, so the bar is lower. The description still adds value the annotations do not: it names what comes back (canonical document IDs, excerpts, content revision) and imposes a security constraint against submitting credentials or logs.

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

Conciseness4/5

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

Two tightly packed sentences with the core action front-loaded and no filler. The return-value sentence is mildly redundant given an output schema exists, keeping it just below a 5.

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

Completeness3/5

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

Annotations cover safety and an output schema covers return shape, so the remaining burden is small. Still, an agent gets no routing rule against get_proxy_doc and no guidance on the topic enum or result-limit behavior, which are the practical decisions when calling a search tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, and it only partially does. The query parameter's intent is hinted at ('short topic query'), but 'limit' and the five-value 'topic' enum are never mentioned, leaving two of three parameters undocumented anywhere.

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

Purpose4/5

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

The description states a specific verb and resource ('Find reviewed ipvolt public guides and articles'), which is clearly distinguishable from the config-generation and error-diagnosis siblings. It stops short of naming get_proxy_doc as the tool for retrieving a full document by ID, so sibling differentiation against the closest alternative is only implicit.

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

Usage Guidelines2/5

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

The only usage direction is input hygiene ('Submit a short topic query, never credentials or logs'), which constrains what to type rather than when to choose this tool over get_proxy_doc. There is no stated condition, prerequisite, or alternative for a multi-result search versus a single-document lookup.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observeddiagnose_proxy_error
    • First observedgenerate_proxy_config
    • First observedget_proxy_doc
    • First observedsearch_proxy_docs

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation5/5

Each tool occupies a distinct phase of a support workflow: discovery (search_proxy_docs), retrieval (get_proxy_doc), generation (generate_proxy_config), and troubleshooting (diagnose_proxy_error). The search/retrieve pair is explicitly linked via document IDs and cursors, and generate vs. diagnose are clearly separated by intent. No two tools could be mistaken for one another.

Naming Consistency5/5

All four tools use a consistent verb_noun snake_case pattern with a stable 'proxy' domain prefix (search_proxy_docs, get_proxy_doc, generate_proxy_config, diagnose_proxy_error). The verb choice matches the action in every case, and the only variation (docs vs. doc) is a natural plural/singular distinction.

Tool Count4/5

Four tools is a tight, well-scoped set that covers the core workflow without redundancy, which fits a focused proxy guidance toolkit. It sits at the thin end of the range, since broader operations like listing available client versions or documents are absent, but nothing feels padded or missing at the task level.

Completeness4/5

Search-plus-retrieve covers the documentation lifecycle, and generate/diagnose address the two main user actions (writing config, fixing errors), so agents have a path through the domain. Minor gaps remain: no tool to enumerate supported client/version combinations or to validate a generated example before use.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Local-first CLI + proxy that curates your MCP servers per client from one canonical config, cutting tool-schema tokens ~80% and resolving secret references instead of hardcoding keys.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    A least-privilege enforcement proxy for MCP servers. It sits between MCP clients and upstream servers, enforcing tool policies, hiding denied tools, requiring human approval for risky actions, and providing a structured audit trail.
    MIT