Obtain an OAuth 2.0 access token by posting your client_id and client_secret to https://auth.uber.com/oauth/v2/token with grant_type=client_credentials and scope=eats.deliveries
POST to https://api.uber.com/v1/customers/{customer_id}/delivery_quotes with pickup and dropoff addresses, phone numbers, and manifest details to receive a quote with fee and dropoff_eta
Record the quote_id and note the expires field — the quote is valid for 15 minutes
POST to https://api.uber.com/v1/customers/{customer_id}/deliveries referencing the quote_id along with contact info and manifest; this creates the delivery
Store the returned delivery UUID for status polling or webhook correlation
Subscribe to delivery webhooks or poll GET /v1/customers/{customer_id}/deliveries/{delivery_id} for status updates
Known gotchas
Quotes expire after 15 minutes; if the user takes too long to confirm checkout, the quote_id will be rejected at delivery creation and you must re-quote with fresh parameters
customer_id is your Uber Direct account identifier issued during onboarding, not an end-user ID — do not confuse these
Uber Direct requires partner onboarding through Uber's enterprise sales channel before production credentials are issued; direct self-signup is not available for all markets
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp