Hire drivers for real-world deliveries, from any agent
One MCP server, 36 tools, one REST API. Your agent can price a job, book it, follow the driver, read the proof and pay — without a human in the loop except to top up the wallet (and not even that, with USDC).
1. Paste this into your agent
Set up RentADriver so this agent can book real-world package deliveries. 1. Run: npx -y rentadriver-mcp setup (or add the MCP config from rentadriver.ai/for-agents) 2. If there is no API key yet, call the signup tool with my name and email — it returns a key once and a $20 welcome credit. 3. Test with check_coverage and get_quote (both free). Before booking, always call create_delivery with dryRun=true and show me the price. 4. Book with create_delivery, then track_delivery until delivered, then get_proof_of_delivery and confirm_delivery.
2. Or add the MCP config yourself
{
"mcpServers": {
"rentadriver": {
"command": "npx",
"args": ["-y", "rentadriver-mcp"],
"env": { "RENTADRIVER_API_KEY": "rd_live_YOUR_KEY" }
}
}
}Any MCP-compatible client works: Claude Desktop, Claude Code, Cursor, Windsurf, Cline, custom agents. Test with get_quote first — it needs no key.
3. Not on MCP? Use the REST API
# import the spec as tools
spec = requests.get("https://api.rentadriver.ai/.well-known/openapi.json").json()
# or hand-write the three that matter:
tools = [
{"type": "function", "function": {"name": "get_quote", "description": "Price a delivery", "parameters": spec["components"]["schemas"]["QuoteRequest"]}},
{"type": "function", "function": {"name": "create_delivery", "description": "Book a delivery (needs x-api-key)", "parameters": spec["components"]["schemas"]["CreateDeliveryRequest"]}},
{"type": "function", "function": {"name": "track_delivery", "parameters": {"type": "object", "properties": {"delivery_id": {"type": "string"}}}}},
]The 36 tools
Full reference with inputs and returns →check_coverage— Tells you whether an address or a lat/lng pair is inside a RentADriver service area, which city it maps to, and the nearest area with distance if it isn't covered..list_service_areas— Launch cities with country, currency, timezone, centre, radius, launch phase and the minimum price.get_quote— Prices a delivery from one pickup to one or more drop-offs.list_intercity_lanes— Lists the city-to-city lanes between launch cities (Melbourne → Sydney, London → Birmingham, Chicago → New York and more) with road distance, transit time including rest breaks, sample prices for the express, standard and shared speed tiers, and the next fixed shared departures in the origin timezone..get_intercity_quote— Prices a city-to-city delivery with a dedicated driver or a shared lane run.get_platform_stats— Live counts: drivers signed up, on shift now, service areas, deliveries, agents connected, founding-driver signups.
signup— Creates an organisation for an agent, app or business and returns an API key exactly once, plus a $20 welcome credit.check_account_status— Confirms the configured key works and returns the account name, plan, wallet balance, spending caps and which capabilities are enabled (card deposits, x402).get_wallet_balance— Current balance in cents with the last 50 ledger entries (deposits, holds, releases, captures, tips, refunds)..create_wallet_deposit— Creates a Stripe Checkout session for a card deposit and returns the URL a human must open to pay.create_x402_deposit— Agent-native funding without a card.set_spending_controls— Caps what the account can spend per delivery and per rolling 24 hours.list_api_keys— Lists the account's keys with prefix, name, last use and revocation state.create_api_key— Issues an additional key (max 10 active) for another agent or environment.revoke_api_key— Permanently deactivates a key.
create_delivery— Books a delivery from a quote_id or directly from pickup and drop-offs.create_store_pickup— Shortcut for the most common agent job: a driver collects a prepaid order from a store using the order reference and delivers it with a photo and the recipient's name.create_batch— Submits up to 25 create_delivery payloads in one call and returns a per-item result, so one bad address does not fail the batch..fund_delivery— Holds the price from the wallet for a delivery created with fund=false, or retries funding after a deposit.get_delivery— Full delivery record by id or short code: status, next_action, stops with statuses, driver summary and live position while active, ETAs, proof summary, timestamps..list_deliveries— Pages through the account's deliveries, newest first.track_delivery— Compact live view for polling: status, next_action, ETAs, driver first name and position, per-stop progress, last event and the SSE stream URL.get_delivery_events— Every event on the delivery in order: created, funded, dispatching, offers_sent, assigned, each driver step, delivered, confirmed, paid, plus messages and location pings..update_delivery— Changes instructions, contingency rules, the drop-off contact or the window while the job is in progress.cancel_delivery— Cancels and releases the hold.create_return— Books the reverse trip of a completed delivery: the driver collects from the last drop-off and brings the item back to the original pickup, with proof at both ends..
send_message_to_driver— Sends a message to the assigned driver as a push notification and in-app thread.get_delivery_messages— The full message thread between your account and the driver for one delivery, oldest first..
get_proof_of_delivery— Signed photo URLs (valid one hour), signature image, recipient name, OTP result, coordinates and timestamps for the delivery and each stop..confirm_delivery— Confirms a delivered job, captures the held funds and releases the driver's pay.open_dispute— Freezes the funds and asks a human to review the proof.tip_driver— Adds a tip from the wallet after delivery.rate_driver— 1–5 stars with an optional comment.
register_webhook— Registers a URL for delivery.* events (or a subset).list_webhooks— Active webhooks on the account..delete_webhook— Deactivates a webhook.
Resources: delivery://{id}, coverage://{area}, openapi://spec. Prompt: plan_delivery. Full REST reference in the docs.
Design rules your agent can rely on
get_quote is free and returns the full breakdown. create_delivery supports dryRun. Nothing moves until fund.
Every delivery response says what to do next: fund, wait, track, confirm, dispute, retry.
Send idempotency_key and a crashed retry returns the same delivery, not a second one.
Cap per-delivery and daily spend from the account; the API refuses anything above it.
Held on create, released on cancel or no driver, captured on confirm, frozen on failure until a human reviews.
Photos, signature, recipient name, OTP, geo and time — not a free-text claim.