Skip to main content

botsrated (Python)

A pre-payment check for x402 agents. Before your agent pays a seller, it asks BotsRated what it has measured about that seller, using the free GET /v1/preflight route. Paid lookups are opt-in and capped by a budget you set.

BotsRated is in beta. It covers about 4,800 x402 seller hosts on Base, taken from the CDP Bazaar, Agentic.Market, 402index and x402-list. Each host gets an unpaid probe about every 1.8 h, and every receipt is signed.

Status: published on PyPI: botsrated 0.1.3.

pip install botsrated            # free preflight + guard
pip install "botsrated[x402]"    # + x402 SDK hook / paid lookups

Guard an x402 client (free)

from x402 import x402ClientSync
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact import ExactEvmScheme
from botsrated import PrePaymentGuard

client = x402ClientSync()
client.register("eip155:*", ExactEvmScheme(signer=EthAccountSigner(account)))
client.on_before_payment_creation(PrePaymentGuard().x402_hook)

Defaults:

  • A payTo that differs from every payTo BotsRated's own probes saw for the host, on the same network, is blocked. The seller's directory listing alone never confirms a payTo: with no probe observation, a listing match is allowed with a payto_listing_only note and a listing mismatch is blocked.
  • A price above the last observed price on the same route is a warning.
  • A host that is not covered is allowed.
  • Data older than 24 h is allowed.
  • If BotsRated cannot be reached (4 s timeout), the payment is allowed (fail_open).
  • The minimum valid-402 rate is off.

Change these with GuardPolicy(...). Preflight answers are cached for 5 minutes per host.

Opt-in paid lookups with a budget

from x402.http.clients import x402_requests
from botsrated import BotsRatedClient, PrePaymentGuard

session = x402_requests(client)                      # pays x402 challenges
botsrated = BotsRatedClient(budget_usd="0.05", paying_get=session.get)
guard = PrePaymentGuard(botsrated, paid_check_at_or_above_usd=0.25)
client.on_before_payment_creation(guard.x402_hook)

botsrated.check("seller.example")     # $0.001 (first 100/day free)
botsrated.report("seller.example")    # $0.002 (first 10/day free)
botsrated.best("web search")          # $0.01

How paid calls work:

  • Free daily quota: the first 100 /v1/check and 10 /v1/report calls per client per UTC day are served free (200 with charged: false and a free_quota block). The client asks unpaid first, so inside the quota nothing is paid and the budget is untouched; check()/report() also work without a budget until the quota is used up (then paid_disabled). client.last_free_quota shows what is left.
  • Otherwise the client reads the 402 quote unpaid first. It accepts the quote only if every option is exact USDC on Base to BotsRated's payTo 0x7F936f42F46B6c4Cbd3242cF8A1759dfe829E349, at or below the published price.
  • The amount is reserved from the budget before paying. If the paid call fails or raises, it stays counted (the payment may already have settled), so the budget is a hard ceiling.
  • Only a one-shot EIP-3009 payment is signed: an option whose extra holds anything beyond the token's name/version (e.g. assetTransferMethod: permit2, paymentFlow), a maxTimeoutSeconds above 600, or payment extensions in the 402 (e.g. erc20ApprovalGasSponsoring; only the discovery-only bazaar key is tolerated) rejects the quote with terms_rejected before anything is paid.
  • When the guard is registered, it refuses any payment to botsrated.com that the client did not reserve or that carries payment extensions, and strips extensions before the x402 signer runs.

Tests

uv run --with pytest --with respx --with "x402[evm]" pytest

License: MIT. BotsRated reports measurements, not endorsements.

Metadata

Release files for botsrated 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for botsrated 0.1.3
File Size Uploaded Provenance
botsrated-0.1.3.tar.gz 14.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for botsrated 0.1.3
File Interpreter ABI Platform
botsrated-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 26.7 kB

Release files / botsrated-0.1.3.tar.gz

Download URL botsrated-0.1.3.tar.gz
Size 14.3 kB
Tags Source
SHA-256 checksum
How to use checksums
413508e6988b567df9229e9d7c8c7de46fa7f5286416173b4ff665f0f43d2a4b
BLAKE2b-256 checksum
How to use checksums
9faed635cec53983fd73077f21fa9cce4a1d9c895d0328c6bed9454a167ef346
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / botsrated-0.1.3-py3-none-any.whl

Download URL botsrated-0.1.3-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e993ae2ac60653d917a8cf6858980ab08c217dd5875d78f78cfc8313e7bdecf6
BLAKE2b-256 checksum
How to use checksums
080fd675a21f8a054e237b74e86983bc14801ab319eabb54435515f5a522da9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for botsrated 0.1.3

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page