Ride Booking Category Add-ons
This page describes what a ride booking category MCP server provides on Alexa+, and the data your tool responses must contain so Alexa can render visuals on headed devices (devices with a screen, such as Echo Show).
Overview
When you create your MCP add-on, you declare the ride booking category by choosing ride-booking as the category option in the Alexa AI CLI. Everything else about building, submitting, and certifying your add-on is the same as any other MCP add-on.
Declaring the ride booking category gives your add-on two benefits:
- Smarter arbitration. The platform can route ride-related requests (for example, "I want a ride") directly to your add-on without requiring the user to say your provider's name. Additional smarter arbitration based on the customer's account linking, preferences, and usage history is coming soon.
- Visual experiences on headed devices. When your tool responses contain the required data described below, Alexa can render rich cards (maps, ride options, checkout flows) on headed devices.
How visual rendering works
Your tool responses can be structured or unstructured, but we recommend using structured responses to aid Alexa's comprehension and accuracy. Because Alexa needs to understand your response to extract the right data, use clear, descriptive field names for the required information described below.
Key rules:
- All image URLs must be publicly reachable HTTP or HTTPS URLs. The device fetches images directly, so URLs that require authentication or resolve to internal/private hosts may fail silently and the visual may not render.
- If a tool response is missing any of the required data for a given capability, Alexa may skip that visual. Your spoken or text response still reaches the customer normally.
- Optional fields may be omitted freely. The visual can still render without them.
- You don't build or call anything extra. Alexa renders the visual automatically from the data you return in your tool response.
Worked example
Suppose your get_ride_estimates tool returns the following (JSON or plain text both work):
{
"provider": "Acme Rides",
"rides": [
{
"type": "Standard",
"fare": "$12.50",
"eta": "12 min",
"distance": "4.8 mi",
"image": "https://cdn.example.com/rides/standard.png"
},
{
"type": "XL",
"fare": "$18.00",
"eta": "14 min",
"distance": "4.8 mi",
"image": "https://cdn.example.com/rides/xl.png"
}
]
}
Alexa reads the provider name plus two ride types with names, fares, durations, distances, and images, and can then render the ride comparison card on the screen. If the image URL were missing on any ride type, the visual may be skipped (per the missing-data rule above), but the spoken response would still be delivered.
Capabilities with automatic visual rendering
You are free to build and bring additional tools and capabilities of your own. The capabilities listed below are the ones Alexa currently provides automatic visual rendering for on headed devices.
They are listed in the order of a typical ride-booking journey.
Confirming a pickup or drop-off location
Renders location suggestion cards when a place search returns multiple candidates, allowing the user to select the correct one.
Required data:
| Field | Required | Description | Example |
|---|---|---|---|
| Provider name | Yes | The ride-hailing provider. | Acme Rides |
| List of candidate locations | Yes | Two or more location options. | — |
Each candidate location must include:
| Field | Required | Description | Example |
|---|---|---|---|
| Name | Yes | The human-readable name of the place. | Central Library |
| Address | Yes | The full postal address as a single string (street, city, state, postal code). | 400 Pine St, Seattle, WA 98101 |
Getting ride estimates (comparing ride types)
Renders ride-type comparison cards showing two or more ride options side by side. Use this when the response contains two or more distinct ride types to compare. If only a single ride type is returned, use the checkout capability instead.
Required data:
| Field | Required | Description | Example |
|---|---|---|---|
| Provider name | Yes | The ride-hailing provider. | Acme Rides |
| Two or more ride types | Yes | Each containing the fields below. | — |
Each ride type must include:
| Field | Required | Description | Example |
|---|---|---|---|
| Name or label | Yes | The ride type name. | Standard |
| Fare or cost | Yes | The fare amount, including currency symbol. | $12.50 |
| Estimated trip duration | Yes | The estimated duration as a string. | 12 min |
| Trip distance | Yes | A string with units; never a bare number. Include the unit so the value displays without guessing the unit system. | 4.8 mi |
| Ride-type image | Yes | A publicly reachable image URL (HTTP or HTTPS). Recommended size: 800×600 px (4:3). | https://cdn.example.com/rides/standard.png |
Reviewing a ride before booking (checkout)
Renders the ride estimate checkout card with a route map, pickup/drop-off details, and payment information so the user can review before confirming.
Required data:
| Field | Required | Description | Example |
|---|---|---|---|
| Provider name | Yes | The ride-hailing provider. | Acme Rides |
| Pickup address | Yes | The pickup location address. You can provide it as a single line, or as a primary line with an optional secondary line for a suite, unit, floor, or terminal. | 400 Pine St, Seattle, WA 98101 |
| Drop-off address | Yes | The drop-off location address, in the same format as the pickup address. | 1200 5th Ave, Seattle, WA 98101 |
| Selected ride type | Yes | The chosen ride type name. | Standard |
| Fare | Yes | The fare amount including currency symbol. | $12.50 |
| Estimated trip time | Yes | The estimated duration as a string. | 14 min |
| Distance | Yes | A string with units; never a bare number. Include the unit so the value displays without guessing the unit system. | 4.8 mi |
| Payment card last four | Yes | The last four digits of the payment card. | 4242 |
| Ride-type image | Yes | A publicly reachable image URL (HTTP or HTTPS). Recommended size: 800×600 px (4:3). | https://cdn.example.com/rides/standard.png |
| Payment-card image | Yes | A publicly reachable image URL (HTTP or HTTPS) for the payment card brand logo. Recommended size: 240×150 px. | https://cdn.example.com/cards/brand.png |
| Route-map image | Yes | A publicly reachable image URL (HTTP or HTTPS) for the route map. Recommended size: 1024×768 px (4:3). | https://cdn.example.com/maps/route123.png |
Booking a ride (confirmation)
Renders a booking confirmation card with a ride status tracker after the ride is successfully booked.
Required data:
| Field | Required | Description | Example |
|---|---|---|---|
| Provider name | Yes | The ride-hailing provider. | Acme Rides |
| Order ID | Yes | The booking order identifier. | RIDE-8F3A21 |
| Ride-type image | Yes | A publicly reachable image URL (HTTP or HTTPS). | https://cdn.example.com/rides/standard.png |
| Route-map image | Yes | A publicly reachable image URL (HTTP or HTTPS). | https://cdn.example.com/maps/route123.png |
Tracking a ride (ride details)
Renders a ride details card based on the current ride status across the ride lifecycle (driver assigned, en route, arriving, and so on).
Required data:
| Field | Required | Description | Example |
|---|---|---|---|
| Provider name | Yes | The ride-hailing provider. | Acme Rides |
| Pickup address | Yes | The pickup location address. You can provide it as a single line, or as a primary line with an optional secondary line for a suite, unit, floor, or terminal. | 400 Pine St, Seattle, WA 98101 |
| Drop-off address | Yes | The drop-off location address, in the same format as the pickup address. | 1200 5th Ave, Seattle, WA 98101 |
| Vehicle image | Yes | A publicly reachable image URL (HTTP or HTTPS). | https://cdn.example.com/vehicles/sedan.png |
| Route-map image | Yes | A publicly reachable image URL (HTTP or HTTPS). | https://cdn.example.com/maps/route123.png |
| Driver name | No | The assigned driver's name. | Jordan |
| Vehicle make/model | No | The make and model. | Toyota Camry |
| License plate | No | The vehicle license plate. | 7ABC123 |
Redirecting to the provider's app (fallback)
Sends a mobile push notification redirecting the user to the provider's native app. This fires when a feature is unsupported on the current device or when a tool returns an error.
Required data:
| Field | Required | Description | Example |
|---|---|---|---|
| Provider name | Yes | The ride-hailing provider. | Acme Rides |
| Error message | Yes | A user-friendly, non-technical message for display to the customer; no stack traces or internal details. | We couldn't find a ride right now. Please try again in a moment. |
| Deep-link URL | No | A URL that opens the provider's app so the user can continue; may be an app-scheme deep link or an HTTPS universal link. | acmerides://ride/abc123 |
Choosing between providers (coming soon)
When the user has not named a specific provider and more than one ride-booking add-on is linked to their account, Alexa can render a provider-selection visual with provider logos so the user can choose. This visual is rendered entirely from platform configuration and requires no data from your MCP server.
Related topics
Last updated: Jul 13, 2026

