four tools, and a wallet that says no

Your agent gets four verbs, not a thousand tool definitions. The catalog is data those verbs return, so adding capability number 1,301 needs no change on your side.

discover

Hybrid search over capability cards. Only live capabilities come back — a card you can see is a card that works, because anything without a human-verified worked example never reaches this response.

discover
> discover("search the web and scrape a page")apify.voyager.booking-reviews-scraper · $0.0028/result · liveapify.voyager.booking-scraper · $0.0070/result · liveakta.company-news · $0.0140/call · live

inspect

The full contract for one capability: input schema, output shape, common errors — and a human-verified worked example. Models learn from the example far more reliably than from JSON Schema, which is why it is mandatory rather than decorative.

inspect
> inspect("apify.voyager.booking-reviews-scraper")worked_example.input → the exact input a human ran and verifiedworked_example.output → the exact shape it returned

run

One metered execution: estimate, hold, execute, capture — and release the remainder. A failed run releases its whole hold, so billed-on-success falls out for free rather than being a policy we promise.

run
> run("apify.voyager.booking-reviews-scraper", { … })estimate $0.0028 · hold placed succeeded · captured $0.0028 · 412ms

wallet

One prepaid balance in dollars. Your agent asks what it can afford; the confirm threshold is the gate above which a run waits for you instead of spending. Default $1, and you set it.

wallet
> wallet()balance $14.00 · held $1.59 · available $12.41confirm_threshold $1.00

errors teach

Every error carries a corrected example. This is an execution-reliability decision, not a politeness one — an agent that can fix its own call does not need you.

a teaching error
{ "error": "invalid_input", "message": "missing \"handle\"", "hint": "example: {\"handle\": \"openai\"}" }

acting on your own data

Some capabilities act through an account you own. Your agent hits 409 connection_required, you grant access once in the dashboard, and it proceeds. scrollport routes the call and never sees the provider’s credentials.

$0.0100/requesta routing fee that scales with our proxy cost, never with the value of your records.

try it

your terminal
> npx scrollport setup