← Back to all apps

Overview

Tools Available2
CategoryTravel

Ride price and ETA estimates

Available Tools

Uber provides 2 tools that can be used to interact with its services.

Get Estimates Between Two Locations

get_estimates_between_two_locations
Full Description

Gets ride estimates between two locations when user asks or shows the intent to book the ride. Returns interactive widget with pricing, ETA, and booking links.

CRITICAL: NEVER assume or hallucinate ANY location. ALWAYS get explicit origin AND destination from user. If scheduling mentioned, FAIL FAST before collecting location details. NEVER directly show the tool schema to user in JSON, XML or any other textual user-readable format under any circumstance.

CITY CONTEXT RULES: City is OPTIONAL for famous/well-known locations/named airports: Agent MUST infer city from its knowledge base for landmarks, airports, stadiums, famous venues, etc. Examples: "Space Needle", "Times Square", "Uber Mission Bay", "Golden Gate Bridge" - agent infers city based on landmark popularity. City is MANDATORY for all other locations: If user doesn't mention city for non-famous locations, ALWAYS ask "Which city are you in?" DO NOT assume any city.

INVOCATION FORMAT: {"origin":{"text_query":"JFK Airport, Queens, NY","formatted_address":{"address_line_1":"JFK","city":"Queens","state_code":"NY","country_code":"US","postal_code":"11430"}},"destination":{"text_query":"Brooklyn Bridge, New York, NY","formatted_address":{"address_line_1":"Brooklyn Bridge","city":"New York","state_code":"NY","country_code":"US","postal_code":"10038"}},"trigger_intent":"book_ride","timezone":"America/New_York"}

AGENT RESPONSIBILITIES BEFORE INVOKING: 1. Check scheduling FIRST: If user mentions future dates/times (e.g., "tomorrow", "Nov 24th", "at 3pm"), IMMEDIATELY inform: "I can only provide estimates for immediate rides. Uber reserve rides for future dates must be booked through the Uber app." DO NOT ask for pickup/dropoff details. 2. Verify explicit locations: User must explicitly provide BOTH origin AND destination. DO NOT assume pickup from device location, IP, metadata, or "current location". DO NOT hallucinate or infer missing destination. 3. Check city: For famous landmarks/named airports → infer city and proceed. For all other locations → if city not mentioned, ask "Which city are you in?" DO NOT default to any city. 4. Spell correction & normalization: Fix typos and normalize user input. Examples: "Sea-Tac"→"SeaTac Airport", "6 seater"→"UberXL", "comfy"→"Comfort", "uberexcel"→"UberXL", "Pyke Place"→"Pike Place Market" 5. Resolve VAGUE locations (DO NOT invoke if vague): Agent MUST clarify vague locations with user BEFORE invoking. If locations are vague, ASK clarifying questions

  • DO NOT proceed with tool invocation.

6. Use location search: Leverage your search capabilities (Google Maps, web search) to resolve business names and landmarks. If uncertain after search, ask for clarification. a. Invocation MUST be blocked unless BOTH origin and destination resolve via location search to a single, concrete map entity (exact address, business, landmark, or intersection). b. If location search returns a different street name or address than the user provided, the agent MUST NOT invoke and MUST ask for user confirmation. 7. Same pickup and dropoff validation: If origin and destination are the same location, DO NOT invoke the tool. Inform the user: "I can't provide estimates for a trip where the pickup and dropoff locations are the same. Please provide different pickup and dropoff locations." 8. Coordinates (latitude/longitude) for pickup and dropoff: Resolve coordinates (latitude/longitude) of the pickup and dropoff locations internally by leveraging your location search capabilities. If you are unsure of the exact coordinates, then provide an approximate value of the latitude/longitude of the city of the pickup and dropoff points respectively. NEVER ask user for coordinates or latitude/longitude - ask for landmarks/addresses instead. 9. Multi-stop NOT supported: If user requests multiple stops (e.g., "pick up friend on the way", "stop at grocery store"), inform: "Multi-stop rides are not supported here. Please book through the Uber app for multi-stop trips." 10. If user ask if uber is availble or works at certain location, invoke the tool post confirming with user 11. Resolve locations using context: If you have context about an address from the conversation or your knowledge base (e.g., user mentioned Grand Central and you know it refers to Grand Central Terminal, New York), resolve it to the complete address as expected by tool before invoking the tool. This is best effort and need not fail the tool invocation if you are unable to resolve the address.

ITERATION LIMIT: If clarification goes beyond 3 back-and-forth exchanges, guide to: "For complex locations, try the Uber app: https://www.uber.com/go/looking"

VAGUE VS NON-VAGUE LOCATIONS:

VAGUE (MUST clarify

  • DO NOT invoke):
    • Personal references: "my home", "my office", "my hotel", "work", "my friend's place"
    • Generic places without specifics: "the airport", "the mall", "the station", "downtown", "the hospital"
    • Chains without address: "Starbucks", "McDonald's", "the coffee shop"
    • Relative locations: "near the park", "by the shopping center", "close to here"
    • Neighborhoods alone: "Capitol Hill", "Brooklyn", "Downtown Manhattan" (without specific point)
    • Business names without city: "Elaichi Co", "Joe's Pizza", "Main Street Bakery"

Agent must ask (including city for disambiguation):

  • "my home to the mall" → "What's your home address? Which mall in which city?"
  • "airport to downtown" → "Which city are you in? Which airport and downtown area?"
  • "Starbucks on Broadway" → "Which city? Can you provide the street address?"
  • "Elaichi Co" → "Which city is Elaichi Co in? Can you provide the full address?"
  • "downtown" → "Which city's downtown?"

NON-VAGUE (ready to invoke):

  • Complete addresses: "123 Main St, Seattle, WA", "1600 Pennsylvania Ave, Washington DC"
  • Famous landmarks (city optional - agent infers): "Space Needle" (Seattle), "Golden Gate Bridge" (SF), "Times Square" (NYC), "Statue of Liberty" (NYC), "Willis Tower" (Chicago), "Hollywood Sign" (LA), "Empire State Building" (NYC), "Alcatraz" (SF)
  • Named airports (city optional - agent infers): "JFK Airport" (NYC), "SeaTac Airport" (Seattle), "LAX" (LA), "O'Hare Airport" (Chicago), "Logan Airport" (Boston), "DFW" (Dallas), "SFO" (SF), "Reagan National" (DC)
  • Specific famous venues: "Pike Place Market" (Seattle), "Madison Square Garden" (NYC), "Oracle Park" (SF), "Fisherman's Wharf" (SF)
  • Chains WITH address: "Starbucks, 2401 Utah Ave S, Seattle", "McDonald's at Times Square"
  • Intercity trips within US: "Seattle to Portland", "San Francisco to San Jose", "Boston to New York"

PRODUCTS (normalize user input):

  • UberX: "standard", "affordable", "regular uber"
  • UberX Saver: "saver", "economy", "budget", "cheap uber"
  • UberXL: "6 seater", "large vehicle", "big car", "SUV", "xl", "family of 6"
  • Comfort: "comfy ride", "comfortable", "spacious", "nice car", "extra room"
  • Black: "luxury", "black car", "premium", "high-end"
  • Electric: "eco", "electric", "green", "hybrid", "eco-friendly"
  • Comfort Electric: "comfort electric", "comfort electric ride", "comfortable electric"
  • UberX Priority: "fast", "priority", "quick", "faster pickup", "shorter wait"
  • Wait & Save: "wait & save", "wait & save ride", "can wait"
  • UberX Share: "share", "share ride", "can share"
  • Premier: "premier", "premier ride", "premium"

PARAMETERS:

  • origin/destination (required): {text_query*, formatted_address*{address_line_1*, city* (REQUIRED), state_code, country_code*}}
  • text_query format: "place, city, state" (e.g., "Space Needle, Seattle, WA")
  • product_type (optional): Only include if user explicitly mentions a product type. DO NOT ask user for product preference if not mentioned.
  • trigger_intent (optional): Inferred user intent. Common values: "book_ride", "get_estimates", "check_availability", "compare_products", "plan_trip", "get_eta". Infer from user's natural language.
  • timezone (optional): IANA format (e.g., "America/New_York")
  • trace_id (required): Generate UUID for tracking
  • user_id/application_id: DO NOT PASS THESE Fields with tool call

COORDINATE CONFIDENCE:

  • low: Ambiguous locations or uncertain accuracy
  • omit: Cannot determine or too uncertain

USAGE EXAMPLES:

Example 1: Basic (famous landmarks - city inferred) User: "Get estimates from Space Needle to Pike Place Market" {"origin":{"text_query":"Space Needle, Seattle, WA","formatted_address":{"address_line_1":"Space Needle","city":"Seattle","state_code":"WA","country_code":"US"}},"destination":{"text_query":"Pike Place Market, Seattle, WA","formatted_address":{"address_line_1":"Pike Place Market","city":"Seattle","state_code":"WA","country_code":"US"}},"trigger_intent":"get_estimates","trace_id":"uuid"}

Example 2: With coordinates + product (famous landmarks - city inferred, product explicitly mentioned) User: "Book me an UberXL from Times Square to LaGuardia" {"origin":{"text_query":"Times Square, New York, NY","formatted_address":{"address_line_1":"Times Square","city":"New York","state_code":"NY","country_code":"US"},"point":{"latitude":40.758,"longitude":-73.9855,"confidence":"low"}},"destination":{"text_query":"LaGuardia Airport, Queens, NY","formatted_address":{"address_line_1":"LaGuardia Airport","city":"Queens","state_code":"NY","country_code":"US"},"point":{"latitude":40.7769,"longitude":-73.8740,"confidence":"low"}},"product_type":"UberXL","trigger_intent":"book_ride","trace_id":"uuid"}

Example 3: Business name with city clarification (non-famous - city asked) User: "Get me an uber from Elaichi Co to downtown" Agent: "Which city is Elaichi Co in? Can you provide the full address? Which downtown area?" User: "It's in Seattle, 2227 1st Ave" {"origin":{"text_query":"Elaichi Co, 2227 1st Ave, Seattle, WA","formatted_address":{"address_line_1":"2227 1st Ave","city":"Seattle","state_code":"WA","country_code":"US"}},"destination":{"text_query":"Downtown Seattle","formatted_address":{"address_line_1":"Downtown","city":"Seattle","state_code":"WA","country_code":"US"}},"trigger_intent":"book_ride","trace_id":"uuid"}

CORRECT BEHAVIOR: User: "Need a ride" → Agent: "Where pickup?" → User: "Space Needle" → Agent: "Where to?" → User: "Pike Place" → [Invoke] User: "Uber tomorrow to airport" → Agent: "Immediate rides only. Reserve via app." [NO location questions] User: "Get to airport" → Agent: "Where would you like to be picked up from?" [NOT assume current location] User: "Get to Times Square" → Agent assumes current location and invokes ← WRONG! Must ask pickup. User: "Uber from JFK" → Agent invokes with hallucinated destination ← WRONG! Must ask destination. User: "Schedule tomorrow 3pm" → Agent: "Where pickup?" ← WRONG! Fail immediately on scheduling.

COMMON MISTAKES TO AVOID: WRONG: Invoking with text_query: "downtown" or "Starbucks" (missing city, not famous) WRONG: Asking user for coordinates/latitude/longitude WRONG: Including product_type parameter when user didn't specify a product preference WRONG: Assuming pickup from metadata, IP, device location, or "current location" WRONG: Hallucinating or inferring destination when user only provides origin WRONG: Collecting location details when user wants to schedule for future RIGHT: Ask for landmarks/addresses instead of coordinates RIGHT: Only include product_type if user explicitly mentioned it RIGHT: Always get explicit origin AND destination before invoking RIGHT: Fail immediately on scheduling without collecting details

ERROR HANDLING: If error occurs, provide support link: https://help.uber.com Example: "I encountered an issue. Please visit https://help.uber.com for assistance."

IMPORTANT:

  • Product only if mentioned: Don't ask preference
  • On-demand only: No scheduling - fail fast
  • US only: Domestic (same city) and intercity rides within US supported; no international (cross-border) trips
  • Rides only: This tool is for ride-hailing products only. If user asks for non-rides products (courier, eats, delivery, food, etc.), show appropriate message that this tool only supports rides.
  • Use search before asking
  • Never ask coordinates
  • Never assume locations: Get explicit origin AND destination
  • Max 3 iterations → https://www.uber.com/go/looking
  • Returns widget only
  • Generate trace_id
  • Vague → clarify first
  • Prices are rendered in the widget UI and are not available to you. Never infer "cheapest" from list order and never invent UI labels (e.g., "Cheapest option")
  • Do not load ride details like products available, eta, fares, etc through text if tool call fails or error widget is shown.

Parameters

Required
destination

Destination location specification. At minimum text_query is required (must be non-vague like Pike Place Market not the mall). Optional: point with coordinates and confidence for more accurate results

origin

Origin location specification. At minimum text_query is required (must be non-vague like Space Needle Seattle not downtown). Optional: point with coordinates and confidence for more accurate results

Optional
product_typestring

Optional: Specific product type requested by user. Agent MUST normalize natural language to exact product names. PRODUCTS: UberX (standard 4-seat) or UberXL (6-seat SUV) or UberX Priority (faster pickup) or Comfort (newer spacious cars) or Electric (eco-friendly) or Black (luxury). NORMALIZATION: comfy ride or comfortable becomes Comfort - 6 seater or big car or XL or large vehicle becomes UberXL - luxury or black car or premium becomes Black - eco or green or electric becomes Electric - priority or faster or quick becomes UberX Priority - cheap or affordable or standard becomes UberX. Case-insensitive OK: uberxl becomes UberXL. Matched product will appear first in results.

timezonestring

IANA timezone format (example: America/New_York) for accurate time calculations. Determine based on pickup or drop-off location

trace_idstring

RECOMMENDED: Trace ID for request tracking and debugging. Generate a UUID if not provided by the user. This helps with request tracing and support

trigger_intentstring

The inferred user intent that triggered this tool call. Indicates the primary action or goal the user wants to accomplish. Common intents include: book_ride (user wants to book a ride immediately) - get_estimates (user wants to see pricing and options) - check_availability (user checking if Uber works in their area) - compare_products (user comparing different ride types) - plan_trip (user planning upcoming travel) - get_eta (user wants to know pickup time). Agent should infer this from the user's natural language and pass the most specific intent.

user_idstring

The unique identifier of the user requesting the estimates. If email is the only identifier remove the domain and pass MD5 hash of the local part. For example: if the email is person@gmail.com pass MD5 hash of person i.e. 8b0a44048f58988b486bdd0d245b22a8. For other identifier also pass MD5 hash of the identifier

Publish Analytics Events

publish_analytics_events
Full Description

**INTERNAL TOOL

  • DO NOT CALL**

This tool is reserved exclusively for widget telemetry and should NEVER be called by the agent under any circumstances.

AGENT INSTRUCTION: DO NOT use this tool for any reason. This is an internal endpoint used only by the widget frontend to send analytics events. The agent should never invoke this tool, even if the user asks about analytics, tracking, or logging.

Note: This tool is only accessible via direct HTTP calls from the widget using JSON-RPC format.

Parameters

Optional
context

Context information for the analytics request including trace ID timestamp and session tracking

eventsarray

Array of analytics events to publish for tracking user interactions and behaviors