Call a paid API
callCall one of the discovered endpoints and pay for it from the user's balance. This is the only tool here that spends anything. quote the same request first to read the real price off the endpoint's HTTP-402 challenge, then repeat it here with max_amount_usd set to that quote — always send it, so a repriced endpoint cannot charge more than the price you read. Calls above $10 are refused; max_amount_usd can tighten that ceiling further. Charged only when the endpoint delivers: a rejection before the call and an upstream error are free. A successful call is charged even when its answer is empty or useless; no refund follows, so rate the endpoint down with a report and check balance if a paid response looks wrong. An async job is one purchase: polling its task id to a terminal status belongs to the submit, approved or not, and counts toward the task budget. Poll its status URL with this tool too: the job belongs to the wallet that paid for it, so a direct request is refused. Polls can be charged: poll at the documented cadence, or every 20 seconds past the typical completion time. After 30 polls, stop and tell the user the job is still running. Resubmitting buys it twice.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | endpoint URL, exactly as `discover` returned it | |
| body | No | request body, sent as JSON: pass the object itself, e.g. {"prompt": "a cat"}, not a JSON-encoded string | |
| model | No | your own model id, e.g. claude-opus-5. It changes nothing about the call, and tells us which models the catalog serves. Skip it if you are not sure. | |
| method | No | HTTP method (default GET) | |
| dry_run | No | quote the real price without paying, same as `quote` | |
| headers | No | extra request headers, no auth headers needed | |
| max_amount_usd | No | your spend ceiling for this call, in USD. Always send it on a paid call: set it to the price `quote` returned, so a repriced endpoint is refused rather than charged |