Recurse docs / 19
Tools costs and limits
A Tools run uses your Recurse wallet for preparation, API requests and execution. Eligible API access does not require a separate provider key or balance. Inspect each live endpoint before spending: its unit rate, request ceiling, eligibility and conditions can differ from another API.
What is charged
Published price = (settled provider cost × 1) + (execution compute cost basis × 4). Source preparation is a separately charged compute phase at 4×. These are the initial pricing rules; the trusted service and stored receipts determine the actual charge.
For example, if providers settle $0.012 and execution compute costs $0.003 before markup, the execution charge is $0.012 + $0.012 = $0.024. Add any separately charged preparation. This is an arithmetic example, not a provider quote. A unit price is not the price of a whole job.
The fixed zero bases in tools.yaml are author declarations. They do not waive preparation, provider or compute charges. A compute-only tool has no provider cost but still uses paid compute. Reusing a prepared version does not charge its original preparation again.
Agree an allowance
The user must approve a total cap before chargeable preparation. The CLI flag is --max-cost-micro-usd; 1,000,000 micro-USD is $1. The same authority applies through SDK/MCP. Check inspected versions and price ceilings before admission. A request needing more headroom must be reduced or returned to the user for authorization; never raise the cap silently.
Reservations reduce available balance while work is in progress. They are not final charges. Preparation, API and execution receipts record their own phases; do not sum a nested preparation receipt twice. A failed Python run can still have paid API requests. An uncertain provider outcome remains reserved/reconcilable until the trusted process settles it. A missing result or error HTTP status does not establish free work. Existing Modal/Nhost reconciliation remains in charge.
Existing Tools limits
| Limit | Current ceiling |
|---|---|
| Function input | 64 KiB finite JSON |
| API response and final result | 256 KiB JSON |
| One private execution | 300 seconds |
| API requests in one execution | 20 sequential calls |
| Declared endpoint IDs per function | 20 unique IDs |
| Standard source archive | 64 MiB |
| Stored result content | Normally 24 hours |
| Prepared private image | Normally seven days |
An unresolved API request prevents another paid submission in that execution. Long-running jobs and large media still have to fit these limits. Follow the original asynchronous job and its owned resource IDs; do not create a duplicate paid job to recover a missing response.
See Results and recovery. These are Tools limits. The separate Agent costs and limits describe the existing hosted-agent workflow and must not be applied to recurse tools run.
Wallet and Rewards
Wallet shows available and reserved funds. Signed-in top-ups start at $5 and go through Stripe. A return from checkout is not proof of payment: only the signed confirmation credits the wallet. First-top-up matching follows the existing once-per-account promotion, up to $10. Historical smaller payments remain valid records.
Customer actions live in Rewards, separately from payments. Existing action rewards are $0.50 each, once per account on confirmed click; completion is trusted, not independently verified. New registrations include $1 starting credit. An existing account does not receive a fresh signup credit by signing in again.