Live · — across —

One balance.
Every tool your agent needs.

OpenTools connects your agent to every tool it needs. It discovers, compares, and runs them at runtime — metered, billed against a single balance, no per-provider keys.

$ set up https://opentools.fulinlabs.com/SKILL.md
Works withClaude CodeCursorCodexClineAny MCP client

How it works

Your agent never touches a provider key. OpenTools sits in the middle and brokers every call.

Your agent
Claude, Cursor, Codex…
OpenTools
discover · inspect · run
Tools
one bill
opentools.discover()

Search the catalog in natural language. Ranked by fit and price.

opentools.inspect()

Read the exact input schema and pricing before you run.

opentools.run()

Execute and pay per call — debited from one balance.

free local fixture · illustrative output
> pnpm demo:free

opentools.discover("preview")
  fixture/preview/{id}   FREE · unverified local fixture

opentools.inspect("fixture", "/preview/{id}", "GET")
  required path: id · quote $0 · daily/per-call caps $0

opentools.run("fixture", "/preview/{id}", { pathParams: { id: "agent-builder" } })
  → { reachedPath: "/v2/preview/agent-builder" }
  run history verified · retry reuses run · billed $0
  balance unchanged · no checkout or on-chain settlement

Reproduce this result with a disposable local database and disabled payments. Run the safe first-outcome demo →

No subscriptions. No lock-in. Just open, metered tools.

Every endpoint publishes its price before you run it. You keep one balance, you see every charge, and you never buy a seat for a tool you use twice a month.

—
—
—
1
balance to manage

Prices are the provider's rate. OpenTools adds a 10% service fee, shown before every run.

Browse the catalog

See all tools →
POSTbudgetatlas/v1/get_dataset_coverage
Report what BudgetAtlas actually holds: covered cities, per-source counts, available lodging date/occupancy cohorts, numeric restaurant-price coverage, blocked collections, and known gaps. Call this before any broad comparison.
Free
POSTbudgetatlas/v1/get_capabilities
Free self-description for agents. Lists the question classes this dataset can answer, with a runnable example argument object per tool, and the questions it cannot answer, each naming the blocker (source not permitted, missing credential, out of scope, not collected) and the prerequisite that would lift it. Coverage figures are read from the database at call time. Call this before spending anything.
Free
POSTbudgetatlas/v1/get_data_freshness
Report how old the data is, per city and for the dataset as a whole: the newest and oldest observation, its age in days against a staleness line you choose, a fresh/aging/stale/empty verdict that names the number behind it, and the last collection run with its status. Call this before quoting a price as current.
Free
POSTbudgetatlas/v1/search_lodging
Search stored lodging price observations for a city, either for exact dates or for a stay length. Returns comparable prices with their original amount and currency, tax status, per-source ratings, evidence-backed amenity signals, provenance, and coverage. These are historical snapshots, not live availability. A priced call is settled only when the response contains observations; a no-data answer (`no_data_reason` set) is returned unbilled, marked by the `X-BUDGETATLAS-BILLED` response header.
$0.002 per call
POSTbudgetatlas/v1/compare_lodging_months
Compare observed nightly lodging rates for one city across the check-in months that were collected, for a single stay length and occupancy. Returns each month's distribution, the like-for-like subset of properties present in every month, and a cheapest month stated only from that subset. Each month is one sampled check-in date, not a monthly average. A priced call is settled only when the response contains observations; a no-data answer (`no_data_reason` set) is returned unbilled, marked by the `X-BUDGETATLAS-BILLED` response header.
$0.002 per call
POSTbudgetatlas/v1/search_restaurants
Find restaurant venues in a city by observed numeric price. Returns the item or range that qualified, its original amount and currency, the FX rate used, venue ratings by source, provenance, and coverage. Venues without a numeric observed price cannot pass a price filter and are reported as a coverage gap instead. A priced call is settled only when the response contains observations; a no-data answer (`no_data_reason` set) is returned unbilled, marked by the `X-BUDGETATLAS-BILLED` response header.
$0.002 per call
POSTbudgetatlas/v1/search_flights
Find observed round-trip fares from European hubs into Southeast Asian cities. Returns the observed fare distribution per route (minimum, quartiles, maximum), how many itineraries it was computed from, the fewest stops and shortest duration seen, and provenance. Fares are whole-trip totals for the whole party and are historical observations, not live availability. Rows marked `provisional` were read before the source's result list settled, so their minimum is biased high. Aggregates only: no itinerary-level fares or booking links are published. A priced call is settled only when the response contains observations; a no-data answer (`no_data_reason` set) is returned unbilled, marked by the `X-BUDGETATLAS-BILLED` response header.
$0.002 per call
POSTbudgetatlas/v1/compare_city_costs
Compare covered cities for a stay of N days, or for exact dates. Returns per-city lodging and meal components, a lodging + meals subtotal, the assumptions and formulas used, observed ranges, sample sizes, source coverage, freshness, and the categories that are explicitly NOT included. This is not a cost-of-living total. A priced call is settled only when the response contains observations; a no-data answer (`no_data_reason` set) is returned unbilled, marked by the `X-BUDGETATLAS-BILLED` response header.
$0.005 per call
+23 more →

Three ways to connect.

Same registry, same balance — whichever your agent speaks.

Skill
One line into your agent's chat.

Drop the OpenTools skill in and your agent learns to discover, inspect, and run tools on its own.

› set up https://opentools.fulinlabs.com/SKILL.md
MCP
Add the remote MCP server.

Point any MCP client at the OpenTools server and get discover/inspect/run as native tools.

› https://opentools.fulinlabs.com/mcp
CLI
Install and run from your terminal.

A single binary to search the catalog, inspect schemas, and execute endpoints.

› npm i -g @aeither/opentools

Built on Base · powered by x402

Turn any API into a paid endpoint.

Paste your server URL. OpenTools discovers your endpoints, puts them in front of agents, and abstracts the crypto checkout behind prepaid credits. You set the price; x402 settles provider payments on Base, and the dashboard tracks every call.

No gateway migrationUsage analyticsDirect Base settlement

Listed unverified until reviewed.

Common questions.