strands-proxmint
Strands Agents tool for Proxmint proxies: let an agent read web pages from residential, datacenter or 4G/5G mobile IPs. Pick the exit country, state, city, ZIP or ASN, and keep one IP for up to two hours when a site needs it.
The agent passes a URL and, optionally, a country, and gets back the final URL, HTTP status, title and the page
as readable text. Requests go straight from your machine to the Proxmint gateway (gw.proxmint.com). Nothing
else sits in between, and bandwidth comes out of your own Proxmint account.
Install
pip install strands-proxmint
Credentials
Create an API key under Settings in the Proxmint dashboard and export it:
export PROXMINT_API_KEY="pmk_..."
The key reads the proxy login for the product you choose (residential by default). You can pass the proxy
login instead, with PROXMINT_USERNAME and PROXMINT_PASSWORD or the username / password arguments.
Use it in an agent
from strands import Agent
from strands_proxmint import proxmint_fetch
agent = Agent(tools=[proxmint_fetch])
agent("What does the front page of example.com say when visited from Germany?")
proxmint_fetch uses the residential product and reads the credentials from the environment. For other
settings, create a ProxmintTools and pass its proxmint_fetch:
from strands import Agent
from strands_proxmint import ProxmintTools
proxmint = ProxmintTools(product="mobile", country="us", city="New York", session_minutes=30)
agent = Agent(tools=[proxmint.proxmint_fetch])
Options on ProxmintTools:
| Option | Default | What it does |
|---|---|---|
api_key |
PROXMINT_API_KEY |
Proxmint API key |
product |
"residential" |
residential, premium-residential, datacenter or mobile |
country |
any | Default exit country (two-letter code) when a call doesn't name one |
state, city, zip_code, asn |
none | Finer targeting; needs country. A call that names another country drops it |
session_minutes |
none | Keep one exit IP across calls for 1 to 120 minutes. Default: a new IP on every call |
output |
"text" |
"text" for readable text, "html" for the raw page |
max_chars |
50000 |
Cut longer pages |
timeout |
60 |
Seconds per request |
You can also call the tool yourself: agent.tool.proxmint_fetch(url="https://example.com", country="de").
Gateway refusals (no bandwidth left, no IP matching the targeting, a blocked site) come back to the agent as an error result with a short message saying what to change.
Good to know
- Web traffic works on destination ports 80, 443, 8080, 8443, 8888 and 8090 (port access).
- A short list of sites, mostly banking and government, is refused by the network (blocked websites).
- City, state, ZIP and ASN targeting meter at 2x on residential, datacenter and mobile (targeting).
- The tool does not run JavaScript. It reads what the server sends.
Full guide: proxmint.com/docs/strands. Pricing: proxmint.com/pricing. Bandwidth is billed per GB and never expires.
Development
uv run --group test pytest
The tests run offline against a stand-in for the gateway.
License
MIT
Metadata
Release files for strands-proxmint 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| strands_proxmint-0.1.0.tar.gz | 10.2 kB | Without provenance | Details for strands_proxmint-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| strands_proxmint-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for strands_proxmint-0.1.0-py3-none-any.whl |
Total release size: 19.6 kB
Release files / strands_proxmint-0.1.0.tar.gz
| Download URL | strands_proxmint-0.1.0.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d12a636f15d1fc446971fdb951ef1ea976446eb5f66dbdf232374090595f9945
|
|
BLAKE2b-256 checksum How to use checksums |
4ea3ecb114a04f0fb19cf366b75823a15d6a3fe2252d90f989b73219b3ed6a3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / strands_proxmint-0.1.0-py3-none-any.whl
| Download URL | strands_proxmint-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
887a13814d64216022b1d465ed467ecb2ea74d074e15b3875f8ea5e4f7922e1b
|
|
BLAKE2b-256 checksum How to use checksums |
5efca5121c36497c5dfa1d7c87bde7a7ca0a0fdba033e01c79f17dc6e3cac060
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for strands-proxmint 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.