Prompts and resources
Three prompts encode the order the tools want to be called in, which is where most mistakes live. find_a_trader_to_copy goes leaderboard to shortlist to flat-stake replay and ends with a recommendation that names its weak points. build_a_rule explores criteria, validates out of sample, and stops if the rule does not hold. audit_my_autopilot reads the copy log and splits what Autopilot skipped into what you can fix and what you cannot. Two resources, rivo://universe and rivo://portfolio, expose the data coverage and your positions and readiness without spending a tool call.
Guardrails on money
- Three affirmations to go live. Turning Autopilot live needs the trade scope on the key,
paper: false, andconfirmLive: truein the same call. Paper is the default and spends nothing. - Dry run by default.
place_orderandsell_positionreturn the quote unlessdryRun: falseis passed deliberately. - Idempotent orders. MCP cannot carry an Idempotency-Key header, so one is derived per call and bucketed to ten minutes. A timed-out retry does not buy twice; a deliberate repeat later still goes through.
- Spend cap. Each trade-scoped key carries a daily spend ceiling that fails closed. Per-follow and per-day Autopilot caps apply on top.
- Readiness before guessing.
get_portfoliowith the readiness section says exactly why a copy cannot run: wallet not ready, account not connected, spend cap reached, missing scope. Every tool description that touches Autopilot points there first. - Create-only strategies. Strategies cannot be edited or deleted through the server, so a confused agent cannot destroy a history you built.
Errors and quota
Every error carries a stable code so an agent can branch on it while the prose changes underneath. The quota is 120 requests per minute per key over a fixed window, shared with REST. sweep is charged per value, compare per rule, compare_traders per trader, and each extra include section on get_trader costs one more. On a 429, wait for the retry-after value rather than looping. See the rate limits and errors pages.
The same thing over REST
Each tool is backed by the same handler as a /v1 endpoint, so anything an assistant can do you can script. The request below is what backtest sends.