AgentPay - The economic-intelligence layer for AI agents — an x402 gateway that prices, caps, and receipts agent data spend. 17 free tools + verified_route, the buyer-side x402 trust oracle. USDC on Base or Stellar.
Drift inferred · capture-to-capture
tool count over time
tools
-
crypto_news
currencies (e.g. "ETH,BTC"), filter
-
defi_tvl
protocol (optional, e.g. "uniswap")
-
dune_query
query_id, limit, fast_only
-
fear_greed_index
limit (days of history, default 1)
-
funding_rates
asset (optional)
-
gas_tracker
—
-
market_snapshot
—
-
open_interest
symbol (BTC, ETH…)
-
orderbook_depth
symbol (e.g. ETHUSDT)
-
pre_trade_check
symbol, size_usd, side, token_address?
-
session_create
agent_address, max_spend, label
-
token_market_data
token_a, token_b
-
token_price
symbol (BTC, ETH, SOL…)
-
token_security
contract_address, chain
-
url_reader
url
-
verified_route
need, budget_usd?, chain?
-
wallet_balance
address, chain (ethereum/stellar)
-
web_search
query
-
whale_activity
token, min_usd (default 100k)
-
yield_scanner
token, chain (optional), min_tvl
analyzed commit d2e1814 · analyzer v33 · 1w ago
skills & prompt files 3
danger signals3
- suspicious endpoint 8.8.8.8 romudille-bit-agentpay-d2e1814/tests/test_routes_tools.py :380
"endpoint": "https://8.8.8.8/tool", - suspicious endpoint 169.254.169.254 (cloud metadata) romudille-bit-agentpay-d2e1814/tests/test_routes_tools.py :492
"https://169.254.169.254/latest/meta-data/", - suspicious endpoint 8.8.8.8 romudille-bit-agentpay-d2e1814/tests/test_supabase.py :1138
"endpoint": "https://8.8.8.8/tool",
code files: 145
filesystem 27
- fs (weak) romudille-bit-agentpay-d2e1814/agent/budget_demo.py :304
with open(out, "w") as f: - fs (weak) romudille-bit-agentpay-d2e1814/agent/week2_test.py :186
with open(out, "w") as f: - fs romudille-bit-agentpay-d2e1814/gateway/routes/discovery.py :113
import pathlib as _pathlib - fs romudille-bit-agentpay-d2e1814/gateway/routes/infra.py :11
from pathlib import Path - fs romudille-bit-agentpay-d2e1814/gateway/routes/tools.py :1353
# closed on it. This path deliberately fails open (None falls - fs (weak) romudille-bit-agentpay-d2e1814/tests/test_agentpay_sdk.py :1275
import pathlib - fs (weak) romudille-bit-agentpay-d2e1814/tests/test_analyst_degrades.py :78
import pathlib - fs (weak) romudille-bit-agentpay-d2e1814/tests/test_radar.py :10
import pathlib - fs (weak) romudille-bit-agentpay-d2e1814/tests/test_stacks_derive_key.py :5
import pathlib - fs (weak) romudille-bit-agentpay-d2e1814/tests/test_stacks_sdk.py :27
from pathlib import Path - fs (weak) romudille-bit-agentpay-d2e1814/tests/test_stacks_tx.py :25
from pathlib import Path - fs (weak) romudille-bit-agentpay-d2e1814/tests/test_verified_route.py :10
import pathlib
show 15 more
- fs romudille-bit-agentpay-d2e1814/tools/agentpay_usage.py :52
with open(path) as fh: - fs romudille-bit-agentpay-d2e1814/tools/audit_exchange_wallets.py :29
from pathlib import Path - fs romudille-bit-agentpay-d2e1814/tools/census_multi_provider.py :232
with open(path) as fh: - fs (weak) romudille-bit-agentpay-d2e1814/tools/demo.py :40
with open(env_path, "r") as fh: - fs romudille-bit-agentpay-d2e1814/tools/export_abandoned_legacy.py :39
with open(path) as fh: - fs romudille-bit-agentpay-d2e1814/tools/index_bazaar.py :33
with open(env_path) as fh: - fs romudille-bit-agentpay-d2e1814/tools/index_bazaar_tool.py :39
with open(env_path) as fh: - fs (weak) romudille-bit-agentpay-d2e1814/tools/multichain_demo.py :41
with open(p) as fh: - fs romudille-bit-agentpay-d2e1814/tools/payer_depth.py :551
with open(out, "w") as fh: - fs romudille-bit-agentpay-d2e1814/tools/probe_cmc_settle.py :24
for _line in open(os.path.join(ROOT, ".env")): - fs romudille-bit-agentpay-d2e1814/tools/probe_fuchss_report.py :26
for _line in open(os.path.join(ROOT, ".env")): - fs romudille-bit-agentpay-d2e1814/tools/search_pricing_baseline.py :50
with open(path) as fh: - fs romudille-bit-agentpay-d2e1814/tools/set_wallet.py :84
with open(path, "r") as fh: - fs (weak) romudille-bit-agentpay-d2e1814/tools/strategy_spec_demo.py :24
for _line in open(os.path.join(ROOT, ".env")): - fs romudille-bit-agentpay-d2e1814/tools/verify_ledger_legs.py :37
with open(path) as fh:
network 58
- net (weak) romudille-bit-agentpay-d2e1814/agent/budget_demo.py :23
import httpx - net romudille-bit-agentpay-d2e1814/agentpay/_client.py :25
import httpx - net romudille-bit-agentpay-d2e1814/agentpay/_wallet.py :12
import httpx - net romudille-bit-agentpay-d2e1814/agentpay/client.py :5
import httpx - net romudille-bit-agentpay-d2e1814/agents/analyst/listing_keepalive.py :43
import urllib.parse - net romudille-bit-agentpay-d2e1814/agents/analyst/run.py :83
import urllib.request - net romudille-bit-agentpay-d2e1814/agents/analyst/strategy.py :46
import urllib.parse - net romudille-bit-agentpay-d2e1814/agents/prober/probe.py :25
from urllib.parse import urlsplit - net romudille-bit-agentpay-d2e1814/agents/prober/run.py :51
import urllib.request - net romudille-bit-agentpay-d2e1814/agents/prober/self_audit.py :26
import urllib.error - net romudille-bit-agentpay-d2e1814/db/migrate.py :13
import httpx - net romudille-bit-agentpay-d2e1814/gateway/base.py :29
import httpx
show 28 more
- net romudille-bit-agentpay-d2e1814/gateway/main.py :21
import httpx - net romudille-bit-agentpay-d2e1814/gateway/mcp_server.py :27
import httpx - net romudille-bit-agentpay-d2e1814/gateway/radar.py :26
import urllib.parse - net romudille-bit-agentpay-d2e1814/gateway/radar_settle.py :26
import httpx - net romudille-bit-agentpay-d2e1814/gateway/routes/discovery.py :18
import httpx - net romudille-bit-agentpay-d2e1814/gateway/routes/faucet.py :18
import httpx - net romudille-bit-agentpay-d2e1814/gateway/routes/ledger.py :38
import httpx - net romudille-bit-agentpay-d2e1814/gateway/routes/tools.py :28
import socket - net romudille-bit-agentpay-d2e1814/gateway/services/depth_refresh.py :29
import urllib.parse - net romudille-bit-agentpay-d2e1814/gateway/services/leg_verifier.py :51
import httpx - net romudille-bit-agentpay-d2e1814/gateway/services/probe_rollup.py :35
import httpx - net romudille-bit-agentpay-d2e1814/gateway/services/supabase.py :29
import httpx - net romudille-bit-agentpay-d2e1814/gateway/services/tools_runtime.py :17
import httpx - net romudille-bit-agentpay-d2e1814/gateway/stacks.py :27
import httpx - net romudille-bit-agentpay-d2e1814/gateway/stellar.py :11
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_agentpay_sdk.py :19
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_base.py :18
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_get_params.py :13
from urllib.parse import parse_qs, urlsplit - net (weak) romudille-bit-agentpay-d2e1814/tests/test_ledger.py :451
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_leg_verifier.py :225
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_sdk_settlement_header.py :17
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_stacks_gateway.py :27
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_stacks_sdk.py :29
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_stacks_stale_nonce_requote.py :11
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_stellar.py :36
import httpx - net (weak) romudille-bit-agentpay-d2e1814/tests/test_supabase.py :30
import httpx - net romudille-bit-agentpay-d2e1814/tools/agentpay_usage.py :26
import urllib.request - net romudille-bit-agentpay-d2e1814/tools/audit_exchange_wallets.py :26
import urllib.parse
18 more not shown — this panel samples each group; the count above is the real total.
secrets 27
- secrets (weak) romudille-bit-agentpay-d2e1814/agent/budget_demo.py :45
AGENT_SECRET = os.getenv("STELLAR_SECRET_KEY") or os.getenv("TEST_AGENT_SECRET_KEY", "") - secrets (weak) romudille-bit-agentpay-d2e1814/agent/week2_test.py :41
AGENT_SECRET = os.getenv("STELLAR_SECRET_KEY") or os.getenv("TEST_AGENT_SECRET_KEY", "") - secrets romudille-bit-agentpay-d2e1814/agentpay/_wallet.py :310
secret_key=os.environ["STELLAR_SECRET"], - secrets romudille-bit-agentpay-d2e1814/agents/analyst/run.py :376
target = (os.environ.get("FLAGSHIP_TARGET_TOKEN", "").strip() or "BNB").upper() - secrets romudille-bit-agentpay-d2e1814/agents/prober/run.py :328
secret = os.environ.get("FLAGSHIP_INGEST_SECRET", "") - secrets romudille-bit-agentpay-d2e1814/db/migrate.py :21
SUPABASE_KEY = os.environ["SUPABASE_KEY"] # required from env; never hardcode (a key was leaked in git history - rotate + set in Railway) - secrets (weak) romudille-bit-agentpay-d2e1814/examples/stacks_m1_demo.py :93
payer = os.environ.get("STACKS_AGENT_KEY", "").strip() - secrets romudille-bit-agentpay-d2e1814/gateway/mcp_server.py :40
STELLAR_SECRET_KEY = os.environ.get("STELLAR_SECRET_KEY", "") - secrets romudille-bit-agentpay-d2e1814/tools/agentpay_usage.py :177
key = os.environ.get("SUPABASE_KEY") - secrets romudille-bit-agentpay-d2e1814/tools/audit_exchange_wallets.py :55
key = os.environ.get("ETHERSCAN_API_KEY", "") - secrets romudille-bit-agentpay-d2e1814/tools/bazaar_tx.py :17
import getpass - secrets romudille-bit-agentpay-d2e1814/tools/census_multi_provider.py :334
url, key = os.environ.get("SUPABASE_URL"), os.environ.get("SUPABASE_KEY")
show 15 more
- secrets (weak) romudille-bit-agentpay-d2e1814/tools/demo.py :356
stellar_secret = os.environ.get("STELLAR_SECRET", "").strip() - secrets romudille-bit-agentpay-d2e1814/tools/dune_tool.py :39
api_key = os.environ.get("DUNE_API_KEY", "") - secrets romudille-bit-agentpay-d2e1814/tools/export_abandoned_legacy.py :70
url, key = os.environ.get("SUPABASE_URL"), os.environ.get("SUPABASE_KEY") - secrets romudille-bit-agentpay-d2e1814/tools/index_bazaar_tool.py :84
or os.environ.get("FLAGSHIP_BASE_KEY") - secrets (weak) romudille-bit-agentpay-d2e1814/tools/multichain_demo.py :118
or os.environ.get("STELLAR_MAINNET_SECRET") - secrets romudille-bit-agentpay-d2e1814/tools/payer_depth.py :365
url, key = os.environ.get("SUPABASE_URL"), os.environ.get("SUPABASE_KEY") - secrets romudille-bit-agentpay-d2e1814/tools/probe_cmc_settle.py :35
base = (os.environ.get("FLAGSHIP_BASE_KEY") - secrets romudille-bit-agentpay-d2e1814/tools/probe_fuchss_report.py :37
base = (os.environ.get("FLAGSHIP_BASE_KEY") - secrets romudille-bit-agentpay-d2e1814/tools/purge_prober_false_negatives.py :45
SUPABASE_KEY = os.environ.get("SUPABASE_KEY", "") - secrets romudille-bit-agentpay-d2e1814/tools/reindex_bazaar.py :13
import getpass - secrets romudille-bit-agentpay-d2e1814/tools/search_pricing_baseline.py :104
url, key = os.environ.get("SUPABASE_URL"), os.environ.get("SUPABASE_KEY") - secrets romudille-bit-agentpay-d2e1814/tools/set_wallet.py :14
import getpass - secrets romudille-bit-agentpay-d2e1814/tools/stacks_derive_key.py :19
import getpass - secrets (weak) romudille-bit-agentpay-d2e1814/tools/strategy_spec_demo.py :44
if not os.environ.get("FLAGSHIP_BASE_KEY"): - secrets romudille-bit-agentpay-d2e1814/tools/sync_402index.py :37
INDEX_TOKEN = os.environ.get("INDEX402_TOKEN", "") # empty = read-only mode
declared dependencies 5
- stellar-sdk@>=10.0.0
- httpx@>=0.27.0
- python-dotenv@>=1.0.0
- eth-account@>=0.11.0
- x402@>=0.1.0
perm:untrusted 1
- untrusted (weak) romudille-bit-agentpay-d2e1814/tools/demo.py :162
tools_list = requests.get(TOOLS_URL, timeout=15).json().get("tools", [])