Proxy Config Skill logo

Proxy Config Skill

Community
zeenie-ai
proxy-config-skill

Configure residential proxy providers and make proxied HTTP requests with geo-targeting.

Overview

Publisherzeenie-ai
RepositoryOpenCompany
Skill nameproxy-config-skill
Stars
995
Forks
151
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by zeenie-ai on GitHub. Read the source before you install it.

Installation

Install the Proxy Config Skill AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/zeenie-ai/OpenCompany/tree/main/server/skills/web_agent/proxy-config-skill
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/zeenie-ai/OpenCompany.git /tmp/OpenCompany
mkdir -p .claude/skills
cp -r /tmp/OpenCompany/server/skills/web_agent/proxy-config-skill .claude/skills/proxy-config-skill
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Proxy Config Skill in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Proxy Config Skill on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Proxy Config Skill is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Proxy Configuration Skill

You manage residential proxy providers. Providers are configured with a JSON url_template that controls how geo/session parameters are encoded into the proxy URL.

Setup Workflow

To add a new proxy provider, make these tool calls in order:

Step 1: Add the provider

Call proxy_config with operation: "add_provider". The url_template field is a JSON string.

Most residential proxy providers use username-based parameter encoding with dash separators. Use this default template unless the provider docs show otherwise:

proxy_config({
  "operation": "add_provider",
  "name": "smartproxy",
  "gateway_host": "gate.smartproxy.com",
  "gateway_port": 7777,
  "url_template": "{\"param_field\":\"username\",\"username_prefix\":\"{username}\",\"username_param_separator\":\"-\",\"param_separator\":\"-\",\"param_keys\":{\"country\":\"country-{v}\",\"city\":\"city-{v}\",\"state\":\"state-{v}\",\"session_id\":\"session-{v}\",\"session_duration\":\"sessTime-{v}\"},\"country_case\":\"lower\",\"city_separator\":\"_\"}"
})

Step 2: Set credentials

proxy_config({
  "operation": "set_credentials",
  "name": "smartproxy",
  "username": "the_username",
  "password": "the_password"
})

Step 3: Test

proxy_config({
  "operation": "test_provider",
  "name": "smartproxy"
})

If test returns "success": true, the provider is ready. If it fails, check credentials and gateway host/port.

Making Proxied Requests

Once a provider is configured:

proxy_request({
  "url": "https://example.com/page",
  "proxyCountry": "US"
})

The system auto-selects the best healthy provider. To force a specific one:

proxy_request({
  "url": "https://example.com/page",
  "proxyProvider": "smartproxy",
  "proxyCountry": "US",
  "sessionType": "sticky"
})

url_template Reference

The url_template JSON controls how the system builds the proxy URL. It determines how username/password strings are constructed with geo and session parameters.

Fields:

  • param_field: Where params go. "username" (80% of providers), "password", or "none".
  • username_prefix: Template for username base. {username} is replaced with actual username.
  • username_param_separator: Separator between username and first param (e.g. "-").
  • param_separator: Separator between params (e.g. "-").
  • param_keys: Object mapping param names to format strings. {v} is replaced with the value.
    • country: e.g. "country-{v}" produces country-us
    • city: e.g. "city-{v}" produces city-new_york
    • state: e.g. "state-{v}" produces state-california
    • session_id: e.g. "session-{v}" produces session-abc123
    • session_duration: e.g. "sessTime-{v}" produces sessTime-10
  • country_case: "lower" or "upper" for country codes.
  • city_separator: Replaces spaces in city/state names (e.g. "_" makes new_york).

Result for username encoding with country US: http://myuser-country-us:mypass@gate.provider.com:7777

Result for password encoding with country US: http://myuser:mypasscountry-us@gate.provider.com:7777

Common Provider Templates

DataImpulse (username-based, dash separator)

Gateway: gw.dataimpulse.com:823

json
{"param_field":"username","username_prefix":"{username}","username_param_separator":"__","param_separator":"__","param_keys":{"country":"country-{v}","city":"city-{v}","session_id":"session-{v}","session_duration":"sessionduration-{v}"},"country_case":"lower","city_separator":"_"}

Decodo/Smartproxy (username-based, dash separator)

Gateway: gate.smartproxy.com:7777

json
{"param_field":"username","username_prefix":"{username}","username_param_separator":"-","param_separator":"-","param_keys":{"country":"country-{v}","city":"city-{v}","state":"state-{v}","session_id":"session-{v}","session_duration":"sessTime-{v}"},"country_case":"lower","city_separator":"_"}

Bright Data (username-based, dash separator)

Gateway: brd.superproxy.io:22225

json
{"param_field":"username","username_prefix":"{username}","username_param_separator":"-","param_separator":"-","param_keys":{"country":"country-{v}","city":"city-{v}","state":"state-{v}","session_id":"session-{v}"},"country_case":"lower","city_separator":"_"}

IPRoyal (password-based)

Gateway: geo.iproyal.com:12321

json
{"param_field":"password","username_prefix":"{username}","param_separator":"_","param_keys":{"country":"country-{v}","city":"city-{v}","session_id":"session-{v}","session_duration":"sessionduration-{v}"},"country_case":"lower","city_separator":"_"}

Custom/Generic (no encoding)

For providers that don't encode params in credentials:

json
{"param_field":"none"}

If Provider Uses Unfamiliar Format

Use python_code to reverse-engineer the template from the provider's example URL:

python
import json

# Example from provider docs:
# Username: user123-cc-US-city-NewYork-sess-abc123
# Password: pass456
# Host: proxy.example.com:8080

template = {
    "param_field": "username",
    "username_prefix": "{username}",
    "username_param_separator": "-",
    "param_separator": "-",
    "param_keys": {
        "country": "cc-{v}",
        "city": "city-{v}",
        "session_id": "sess-{v}"
    },
    "country_case": "upper",
    "city_separator": ""
}

# Verify it produces the right URL
username = "user123"
params = []
params.append(template["param_keys"]["country"].replace("{v}", "US"))
params.append(template["param_keys"]["city"].replace("{v}", "NewYork"))
params.append(template["param_keys"]["session_id"].replace("{v}", "abc123"))
param_str = template["param_separator"].join(params)
result = f"{username}{template['username_param_separator']}{param_str}"
print(f"Built username: {result}")
assert result == "user123-cc-US-city-NewYork-sess-abc123", f"Mismatch: {result}"

output = json.dumps(template)
print(f"Template: {output}")

Then pass the output as the url_template string to proxy_config(add_provider).

All proxy_config Operations

OperationRequired ParametersDescription
list_providersnoneList all configured providers
add_providername, gateway_host, gateway_port, url_templateAdd a new provider
update_providername + any fields to changeUpdate existing provider
remove_providernameDelete a provider
set_credentialsname, username, passwordStore proxy credentials
test_providernameTest via httpbin.org/ip
get_statsnoneUsage statistics
add_routing_ruledomain_patternRoute domains to specific providers
list_routing_rulesnoneList all routing rules
remove_routing_rulerule_idDelete a routing rule

Optional fields for add_provider/update_provider: enabled (bool), priority (int, lower=preferred), cost_per_gb (float).

proxy_request Parameters

ParameterRequiredDefaultDescription
urlyesTarget URL
methodnoGETHTTP method
headersnoJSON string of headers
bodynoRequest body string
proxyProvidernoautoProvider name
proxyCountrynoISO country code (US, GB, DE)
sessionTypenorotatingrotating or sticky
timeoutno30Seconds
maxRetriesno3Retry with failover

Transparent Proxy on HTTP Nodes

The httpRequest and httpScraper nodes have built-in proxy support. Set useProxy: true and the proxy service handles everything -- provider selection, geo-targeting, and session type are all managed from the proxy service configuration (provider priorities, routing rules, default country).

When the AI Agent uses http_request as a tool, it can set useProxy: true in the tool arguments. No other proxy fields needed.

When to use which:

  • Use http_request with useProxy: true for proxied requests (simple, proxy service handles routing)
  • Use proxy_request tool only when you need explicit control over retries and failover

Notes

  • Always run test_provider after setting up a new provider
  • If the user does not know their credentials, they need to get them from their proxy provider dashboard
  • If test fails: check credentials, gateway host/port, and that the url_template matches the provider's format
  • Use proxy_status to check provider health before making requests
  • sessionType: "sticky" keeps the same IP across requests (good for scraping sessions)
  • sessionType: "rotating" gets a new IP each request (good for anonymity)

Frequently asked questions

What does the Proxy Config Skill AI skill do?

Configure residential proxy providers and make proxied HTTP requests with geo-targeting.

Why use Proxy Config Skill on TypingMind?

Because you install it once and use it with any model. Proxy Config Skill is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Proxy Config Skill in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/zeenie-ai/OpenCompany/tree/main/server/skills/web_agent/proxy-config-skill. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Proxy Config Skill?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Proxy Config Skill?

As many as you like. As long as a model supports skills, you can use Proxy Config Skill with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Proxy Config Skill AI skill free?

Yes. It is published on GitHub by zeenie-ai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇