Connect Hermes to Wheelbase
Set up in minutes
Choose where it runs
On your computer through your own Hermes, or hosted in the cloud. The rest of setup adapts to your choice:

Pick what it can do in Wheelbase
A preset of real Wheelbase operations. Each one becomes a tool the agent can call, and it can't touch anything outside the list.

Connect Wheelbase
One sign-in. The agent acts through your account, scoped to the operations you picked.
Add your personal MCP link
The last step mints a private MCP URL for this agent and walks you through exactly this, with your real link filled in. The page flips to Connected the moment your Hermes first calls in. Hermes connects when it next starts a session.
1. Run this in your terminal
2. Answer no when asked if the server requires authentication — the link itself is the key
<your-link> is your personal server URL — setup mints it for you.
Tools Hermes gets
Wheelbase
25 toolsGet current credential. Returns the identity and metadata for the credential authenticating this request. Useful for verifying an integration is wired up correctly ("is my token being accepted, and as whom?"). No scope required.
Search listings. Returns a page of listings matching the supplied filters. Backed by an eventually-consistent search index; use GET /v1/listings/{id} for source-of-truth state.
Get listing detail. Returns source-of-truth detail for a single listing. Use this for read-modify-write flows — the search index is eventually consistent. Dealer credentials (with `owner_ids`) can only view listings in their own fleet; other listings return 404 (same as if the listing didn't exist, to avoid confirming other dealers' listing IDs). Marketplace credentials (empty `owner_ids`) can view any listing.
Update a listing. Partially update a listing. Only whitelisted fields (`name`, `description`, `price_per_day`, `instant_book`) are accepted; anything else is silently dropped. The authenticated user must have owner-equivalent rights on the listing.
List a listing's add-ons. Returns the optional add-ons bookable on this listing (account-wide and listing-specific, filtered to what applies at its location and vehicle type). Apply them via `addons: [{id, quantity}]` on POST /v1/quotes or booking create/update. Required items (prep fees etc.) are attached to bookings automatically and are not listed here.
Get a listing's availability. Returns the date ranges that cannot be booked within the window — existing bookings, owner blocks, and turnaround buffer days, merged into anonymous ranges. Dates not listed are available. This reads the booking source of truth (not the search index) and reflects the same rules booking creation enforces.
List a listing’s insurance options. The insurance/protection options (tiers) offered on a listing — price per day, deductible, coverage summary, and feature list. Dealer credentials get dealer-priced options; other credentials get marketplace pricing.
Get a quote. Returns a non-destructive full price breakdown for a listing and date range. Quote calculation does not reserve availability or create a booking.
List bookings. Returns bookings the credential participates in — either as renter (bookings where renter_id = credential user_id) or as owner (bookings on rentals in the credential's owner_ids).
Create a booking. Creates a booking in `negotiating` status. Send an `Idempotency-Key` header to make retries safe — repeating a request with the same key returns the original response instead of creating a duplicate booking. Without the header, every request creates a new booking. Payment collection (Stripe client_secret) is not yet wired here; a dedicated endpoint will be added for that.
Get a booking. Returns a single booking. Only accessible to the renter or the owner of the associated listing.
Modify a booking. Partially update a booking. Only dates, guests, discount code, and insurance can be modified. Go api rejects updates once a booking is confirmed — you'll see a 400 with an upstream reason.
Approve a booking. Approves the booking from the calling credential's side (renter if user_id = renter_id, owner otherwise). Both sides approving triggers payment capture / confirmation. **Sending a quote:** when a dealer creates a booking on behalf of a customer and then calls approve, the platform marks the owner side approved and emails the customer their quote with a link to review and pay. Include `reason` to add a personal message to that email and the conversation thread.
Decline a booking. Declines a pre-confirmation booking. Returns 409 if the booking is already confirmed (use /cancel instead).
Cancel a booking. Cancels a confirmed booking. Returns 409 if the booking has not been confirmed (use /decline instead). Cancellation may trigger refund logic per the listing's cancel policy.
Create a shareable checkout link. Mints a single-use-style deep link the customer can open without a password — resolving it signs them in and lands them on the booking's checkout or payment step. Send it through your own channel (SMS, email). Only available when the booking's customer is one of **your** customers (`managed_by: "dealer"`) — marketplace customers have their own accounts and cannot be signed in via links. Links expire after ~3 days; mint a fresh one per send. Typical flow for a dealer-sent quote: create the booking → `POST /{id}/approve` with `notify: false` → create a `payment` link → send it to the customer yourself.
List a booking's documents. Returns the booking's documents: platform-generated PDFs (receipt, contract, e-sign receipt, departure/return forms) and uploaded files (driver documents, message attachments). Fetch on demand — availability of generated documents changes with booking state (e.g. the receipt appears once the booking is approved).
List a booking's payments. Returns the booking's money movement, newest first, in two groups: - `payments` — the customer timeline: settled charges and refunds plus scheduled/pending future charges (e.g. the remainder auto-charge). `scheduled: true` entries carry a `due_date`; refund entries carry `original_payment_id`. - `payouts` — money paid out to your account for this booking, with expected/actual bank deposit dates. Complements the `payment` block on booking detail: that block is the summary (total paid / balance / plan); this is the itemized history behind it.
Get a booking's message thread. Returns the full renter conversation attached to a booking, oldest message first. Authors are normalized to renter/dealer/system. Reading does NOT mark the thread read in the Wheelbase dashboard.
Search customers. Searches the dealer's customers — both dealer-managed records and marketplace guests who have booked with the dealer. Marketplace customers (`managed_by: "marketplace"`) have `email` and `phone` masked (empty strings) in search results, regardless of booking history. Use `GET /v1/customers/{id}` to read contact info once a confirmed booking exists.
Create a customer. Creates a dealer-managed customer. Find-or-create semantics by email: if a customer with this email already exists in your account, that record is updated and returned instead of creating a duplicate. Created customers are `managed_by: "dealer"` and fully editable. You cannot create a customer using your own account email.
Get a customer. Returns a single customer. Dealer-managed customers (`managed_by: "dealer"`) return all fields. Marketplace customers are only readable when they have an interaction with your account (booking or conversation) — otherwise 404 — and their `email`/`phone` are populated only once a confirmed booking exists. `birthdate` is never available for marketplace customers.
Update a customer. Partially update a dealer-managed customer. Marketplace customers (`managed_by: "marketplace"`) are managed by the marketplace and cannot be edited — attempts return 403.
List locations. Returns the dealer's pickup/drop-off locations with address and weekly hours. Use the ids with the `location_ids` filters on vehicle/booking reports and customer search — and to tie a booking or vehicle to its pickup location's hours.
List message threads. Returns the credential's renter message threads, newest activity first. Each row carries the follow-up signals — last_message_at, last_message_author, unread — so a queue can skip renters who already replied. Reading threads does NOT mark them read in the Wheelbase dashboard.
About Hermes
Frequently asked questions
More ways to connect
More tools for Hermes
Use Wheelbase with other agents
Open your Hermes agent in one click.
NoClick runs Hermes for you with Wheelbase wired in as tools. Connect your account and run.