36 tools, one delivery cycle
Every tool maps to a REST endpoint and returns JSON with a next_action. Discovery tools need no key. Money is in integer cents. Errors come back as text with the error code and a hint about which tool to call next.
Discovery
Free and unauthenticated. Use these first to check feasibility and show the human a price.
check_coverageCheck coverageno keyTells 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.
- Inputs
- address (string) or lat + lng (numbers)
- Returns
- covered, area {slug, name, currency, timezone}, nearest_area, resolved address
list_service_areasList service areasno keyLaunch cities with country, currency, timezone, centre, radius, launch phase and the minimum price. Use it to explain coverage or pick a city before quoting.
- Inputs
- none
- Returns
- service_areas[]
get_quoteGet a delivery quoteno keyPrices a delivery from one pickup to one or more drop-offs. Geocodes addresses, routes the trip, applies size, urgency, vehicle and live surge, and guarantees the driver floor. Returns a quote_id valid for 15 minutes plus the full breakdown and ETAs, so the agent can show the human the price before spending anything.
- Inputs
- pickup (stop), dropoffs[] (1–8 stops), items[] (description, size_class S/M/L/XL, category), urgency asap|today|scheduled, scheduled_at, vehicle_class
- Returns
- quote {id, client_price_cents, driver_pay_cents, currency, eta_pickup_min, eta_dropoff_min, breakdown, expires_at, resolved stops}
list_intercity_lanesIntercity lanesno keyLists 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.
- Inputs
- none
- Returns
- lanes[] {slug, from, to, currency, distance_km, transit_min, sample_prices {express, standard, shared}, next_departures[]}, pricing (tiers, multipliers, advance and cancellation percentages)
get_intercity_quoteIntercity quoteno keyPrices a city-to-city delivery with a dedicated driver or a shared lane run. The pickup must be in a launch city and the last drop-off inside, or within 80 km of, another launch city in the same country. Applies tiered per-km rates, a deadhead allowance for the driver's return, tolls, declared-value insurance and the speed multiplier, then returns the quote_id, departure and arrival estimates and the 40% driver advance schedule.
- Inputs
- pickup (stop), dropoffs[] (1–3 stops), items[] (with optional value_cents for insurance), speed express|standard|shared, scheduled_at, vehicle_class car|suv|van|truck
- Returns
- quote {id, service_kind: intercity, intercity {lane_slug, speed, departure_at, arrival_by, transit_min, milestones}, client_price_cents, driver_pay_cents, breakdown.intercity {tiers, deadhead, tolls, insurance}}
get_platform_statsPlatform statsno keyLive counts: drivers signed up, on shift now, service areas, deliveries, agents connected, founding-driver signups. Useful for status pages or sanity checks.
- Inputs
- none
- Returns
- stats
Account
Self-serve signup, balance, deposits and keys. Everything here needs an API key except signup.
signupCreate account and API keyno keyCreates an organisation for an agent, app or business and returns an API key exactly once, plus a $20 welcome credit. Store the key as RENTADRIVER_API_KEY and restart the MCP server.
- Inputs
- name, email, kind agent|app|business, agent_framework (optional)
- Returns
- organization_id, api_key (shown once), wallet_balance_cents
check_account_statusAccount statusAPI keyConfirms the configured key works and returns the account name, plan, wallet balance, spending caps and which capabilities are enabled (card deposits, x402). Without a key it reports what still works (quotes).
- Inputs
- none
- Returns
- account, capabilities
get_wallet_balanceWallet balanceAPI keyCurrent balance in cents with the last 50 ledger entries (deposits, holds, releases, captures, tips, refunds).
- Inputs
- none
- Returns
- wallet {balance_cents, currency, ledger[]}
create_wallet_depositDeposit by cardAPI keyCreates a Stripe Checkout session for a card deposit and returns the URL a human must open to pay. The wallet is credited when payment completes.
- Inputs
- amount_cents (≥ 500)
- Returns
- checkout_url, session_id, expires_at
create_x402_depositDeposit USDC via x402API keyAgent-native funding without a card. Returns x402 v2 payment requirements for USDC on Base; sign them with an x402 client and retry the REST endpoint with the payment header to credit the wallet. Returns not-enrolled while the account is outside early access.
- Inputs
- amount_cents (≥ 100)
- Returns
- payment_required, endpoint, requirements or credited_cents
set_spending_controlsSpending controlsAPI keyCaps what the account can spend per delivery and per rolling 24 hours. The API refuses any create_delivery above the cap. Pass null to clear a cap.
- Inputs
- spending_cap_per_delivery_cents, daily_cap_cents
- Returns
- controls
list_api_keysList API keysAPI keyLists the account's keys with prefix, name, last use and revocation state. Full keys are never returned.
- Inputs
- none
- Returns
- keys[]
create_api_keyCreate API keyAPI keyIssues an additional key (max 10 active) for another agent or environment. The key is shown once.
- Inputs
- name (optional)
- Returns
- key, prefix, id
revoke_api_keyRevoke API keyAPI keyPermanently deactivates a key. You cannot revoke the key you are calling with.
- Inputs
- key_id
- Returns
- revoked
Deliveries
Create, fund, read and manage deliveries. All mutating tools are idempotent when you pass idempotency_key.
create_deliveryCreate a deliveryAPI keyBooks a delivery from a quote_id or directly from pickup and drop-offs. With fund=true (default) the price is held from the wallet and dispatch starts immediately. dryRun=true validates, prices and checks caps and funds without creating anything. Prohibited items are refused. Returns the delivery with next_action.
- Inputs
- quote_id or pickup + dropoffs[], items[], urgency, scheduled_at, vehicle_class, instructions, contingency {if_no_answer, if_closed, max_wait_minutes}, external_ref, idempotency_key, webhook_url, metadata, fund, dryRun
- Returns
- delivery {id, short_code, status, next_action, price_cents, stops[], tracking_url}
create_store_pickupStore pickup and deliveryAPI keyShortcut 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. Sets sensible proof and instructions for you.
- Inputs
- store_address, order_reference, store_phone, dropoff_address, recipient_name, recipient_phone, item_description, size_class, instructions, dryRun
- Returns
- delivery
create_batchCreate several deliveriesAPI keySubmits up to 25 create_delivery payloads in one call and returns a per-item result, so one bad address does not fail the batch.
- Inputs
- deliveries[] (create_delivery payloads)
- Returns
- results[] {ok, delivery | error}
fund_deliveryFund a deliveryAPI keyHolds the price from the wallet for a delivery created with fund=false, or retries funding after a deposit. Moves the delivery to dispatching (or funded if scheduled).
- Inputs
- delivery_id
- Returns
- status, delivery
get_deliveryGet a deliveryAPI keyFull delivery record by id or short code: status, next_action, stops with statuses, driver summary and live position while active, ETAs, proof summary, timestamps.
- Inputs
- delivery_id (uuid or RD-XXXXXXX)
- Returns
- delivery
list_deliveriesList deliveriesAPI keyPages through the account's deliveries, newest first. Filter by status ('active' or a comma list) and creation time.
- Inputs
- status, since (ISO), limit, offset
- Returns
- deliveries[], total
track_deliveryTrack a deliveryAPI keyCompact live view for polling: status, next_action, ETAs, driver first name and position, per-stop progress, last event and the SSE stream URL. Poll every 30–60 seconds while active.
- Inputs
- delivery_id
- Returns
- tracking
get_delivery_eventsDelivery timelineAPI keyEvery event on the delivery in order: created, funded, dispatching, offers_sent, assigned, each driver step, delivered, confirmed, paid, plus messages and location pings.
- Inputs
- delivery_id
- Returns
- events[]
update_deliveryUpdate a deliveryAPI keyChanges instructions, contingency rules, the drop-off contact or the window while the job is in progress. The driver is notified.
- Inputs
- delivery_id, instructions, contingency, dropoff_contact {contact_name, contact_phone}, window_end, metadata
- Returns
- delivery
cancel_deliveryCancel a deliveryAPI keyCancels and releases the hold. Free before a driver is assigned; after assignment and before pickup, 30% of driver pay is charged as compensation. Not possible after pickup: use create_return instead.
- Inputs
- delivery_id, reason
- Returns
- delivery
create_returnCreate a return legAPI keyBooks 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.
- Inputs
- delivery_id
- Returns
- delivery (the return)
Driver communication
Messages go to the assigned driver's app and are answered in the same thread.
send_message_to_driverMessage the driverAPI keySends a message to the assigned driver as a push notification and in-app thread. Only works once a driver is assigned.
- Inputs
- delivery_id, body (≤ 2000 chars)
- Returns
- message id
get_delivery_messagesRead messagesAPI keyThe full message thread between your account and the driver for one delivery, oldest first.
- Inputs
- delivery_id
- Returns
- messages[]
Proof and settlement
Verify the outcome, then release or dispute the payment.
get_proof_of_deliveryProof of deliveryAPI keySigned photo URLs (valid one hour), signature image, recipient name, OTP result, coordinates and timestamps for the delivery and each stop.
- Inputs
- delivery_id
- Returns
- proof, stops[]
confirm_deliveryConfirm deliveryAPI keyConfirms a delivered job, captures the held funds and releases the driver's pay. If you never call it, the delivery auto-confirms 24 hours after delivery.
- Inputs
- delivery_id
- Returns
- delivery (status paid)
open_disputeOpen a disputeAPI keyFreezes the funds and asks a human to review the proof. Available on delivered, confirmed, failed and returned deliveries within 48 hours. Optional evidence URLs.
- Inputs
- delivery_id, reason, evidence[] (urls)
- Returns
- dispute_id, status
tip_driverTip the driverAPI keyAdds a tip from the wallet after delivery. 100% goes to the driver.
- Inputs
- delivery_id, amount_cents (≥ 50)
- Returns
- tip_cents
rate_driverRate the driverAPI key1–5 stars with an optional comment. Ratings feed dispatch priority and driver tiers.
- Inputs
- delivery_id, stars, comment
- Returns
- ok
Webhooks
Prefer webhooks or the SSE stream over polling for long-running agents.
register_webhookRegister a webhookAPI keyRegisters a URL for delivery.* events (or a subset). Returns the HMAC signing secret once; every POST carries X-RentADriver-Signature with a timestamp.
- Inputs
- url, events[] (default delivery.*)
- Returns
- webhook, secret
list_webhooksList webhooksAPI keyActive webhooks on the account.
- Inputs
- none
- Returns
- webhooks[]
delete_webhookDelete a webhookAPI keyDeactivates a webhook. Queued deliveries to it stop.
- Inputs
- webhook_id
- Returns
- ok
Resources and prompts
delivery://{id}A delivery by id or short code as JSON, for clients that prefer resources over tool calls.
coverage://{area}Coverage details for one service area; the list shows every launch city.
openapi://specThe full REST OpenAPI document, for agents that want to call endpoints directly.
prompt: plan_deliveryWalks the agent through coverage, quote, create, track and confirm for one delivery. Arguments: pickup, dropoff, item, deadline.
Setup
{
"mcpServers": {
"rentadriver": {
"command": "npx",
"args": ["-y", "rentadriver-mcp"],
"env": { "RENTADRIVER_API_KEY": "rd_live_YOUR_KEY" }
}
}
}Env: RENTADRIVER_API_KEY, RENTADRIVER_API_URL (default https://api.rentadriver.ai). Quotes and coverage work without a key.