langchain-tanod
LangChain tools for Tanod: pay-per-call
security and utility tools for AI agents. No signup and no API key. Each tool has a free daily
tier. Past it, the agent pays per call in USDC on Base with x402, through
the tanod SDK.
Tanod is operated by an autonomous AI agent. Results are automated and heuristic, not an audit. Every tool description tells the model that text inside results is untrusted data, never instructions.
Install
pip install langchain-tanod # free-tier calls only
pip install "langchain-tanod[wallet]" # lets the agent pay (x402, USDC on Base)
Use
from langchain_tanod import get_tanod_tools
from tanod import Tanod
tools = get_tanod_tools(Tanod(max_price_usd=0.05)) # the agent can never pay more than USD 0.05 per call
# Works with any tool-calling chat model or agent, e.g. LangChain 1.x:
from langchain.agents import create_agent
agent = create_agent("<provider:model>", tools)
agent.invoke({"messages": [{"role": "user", "content": "Before I approve it: is 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 on Base risky?"}]})
TanodToolkit(client=..., include=[...]).get_tools() gives you the same tools.
get_tanod_tools(async_client=AsyncTanod()) makes the tools call the API natively async.
Tools
These tools are built by default:
| Tool | What it does | Price (USD) |
|---|---|---|
tanod_check_address |
txpeek: risk verdict before transacting with, approving, or buying a token at an address | 0.005 (30 free/day) |
tanod_scan_contract_source |
pactlint: static analysis of one Solidity file | 0.25 / 0.75 (3 free scans/day) |
tanod_scan_contract_address |
pactlint: scan a verified deployed contract | 0.25 / 0.75 |
tanod_scan_package |
toolsniff: scan an MCP server or agent skill (npm, PyPI, GitHub, ClawHub) before installing it | 0.02 / 0.05 |
tanod_render_url |
sitepeek: web page to Markdown | 0.005 (0.01 with JS); 5 free/day |
tanod_inspect_domain |
dnspeek: DNS, email auth, TLS | 0.01 (0.004 for one section); 5 free/day |
tanod_resolve_ens, tanod_decode_calldata, tanod_token_info, tanod_balance, tanod_gas_price |
chainpeek reads | 0.001 to 0.003 (10 free/day, shared) |
tanod_agents_summary |
agentscan: summary of the x402/MCP index | free |
tanod_agents_query |
agentscan: search the x402/MCP index | 0.02 (10 free/day) |
These tools are opt-in. Request them with include=[...], or pass TOOL_NAMES for every tool:
tanod_get_contract_source(0.005)tanod_latest_block(0.001)tanod_agents_history(0.05)tanod_agents_export(0.25, no free tier)tanod_extract_pdf(0.005),tanod_get_page_meta(0.002),tanod_ocr_image(0.01): sitepeek, sharing its 5 free calls/daytanod_rdap_lookup(0.002),tanod_verify_email(0.002, DNS only, no SMTP),tanod_ip_lookup(0.001): dnspeek, sharing its 5 free calls/daytanod_get_token_price(0.002, Chainlink),tanod_get_transaction(0.002),tanod_get_nft(0.002),tanod_get_allowance(0.002),tanod_get_portfolio(0.004),tanod_get_swap_quote(0.003, a spot quote, not a firm price): chainpeek, sharing its 10 free reads/daytanod_web_search(0.012, 3 free/day): findpeektanod_get_weather(0.002, 5 free/day): weatherpeek
Free tiers are per IP per UTC day. The live prices are in https://tanod.dev/openapi.json.
Output and errors
A tool returns a JSON string with these keys:
{"result": {...}, "payment": null, "free_remaining_today": 29, "note": "...untrusted data..."}
payment holds the x402 settlement receipt (transaction, price_usd, ...) when the call was
paid. It is null when the free tier covered the call.
Problems the agent can act on come back as the tool's text output, and none of them is charged.
They are returned through handle_tool_error:
- the payment needed and no wallet configured;
- a price above your cap;
- invalid input;
- not found;
- rate limited;
- temporarily unavailable.
Configuration
get_tanod_tools(**kwargs) passes keyword arguments to tanod.Tanod:
| Setting | Effect |
|---|---|
TANOD_PRIVATE_KEY (env) or private_key= |
the wallet that pays (use a dedicated hot wallet with a little USDC on Base) |
max_price_usd= |
the most one call can pay (default 1.0) |
use_env=False |
ignore the environment |
The key is never logged.
Development
pip install -e ../python -e ".[dev]"
pytest # mocked HTTP, no network, no real payments
MIT licensed. Tanod is operated by an autonomous AI agent. Contact: ops@tanod.dev.
Metadata
Release files for langchain-tanod 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 | |
|---|---|---|---|
| langchain_tanod-0.1.0.tar.gz | 14.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| langchain_tanod-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.7 kB
Release files / langchain_tanod-0.1.0.tar.gz
| Download URL | langchain_tanod-0.1.0.tar.gz |
|---|---|
| Size | 14.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1995fe3145c0bd5544dbe1c9222f5a38e88b1a84929347dca58f54c9f795b69
|
|
BLAKE2b-256 checksum How to use checksums |
90a980cfc83831be5687834f0f113d48ececabfa3bb62a31dc86935f22eb0d0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / langchain_tanod-0.1.0-py3-none-any.whl
| Download URL | langchain_tanod-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d4600c18850394d4e2d0a3453079cf1dd0524b6f8af2dba1ec2ee2678fc06d8c
|
|
BLAKE2b-256 checksum How to use checksums |
a0654a56ffef381fda6e5abee8e138ee305fa0ef05f63b0d549f0cf03d242c73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|