Model the menu item with a top-level modifier_groups array, each entry containing an id, min_permitted, and max_permitted selection constraint
For modifier options that themselves have sub-modifiers, include a nested modifier_group_ids array referencing child groups within each option entity
Validate that nesting depth does not exceed the platform maximum (typically two levels for most integrations) before submitting
POST the full menu payload to the Uber Eats Menu API and capture any validation errors returned in the error_details array of the response
If a modifier group exceeds the max_permitted count or has conflicting min/max values, correct and resubmit the affected group only using a PATCH
Confirm the nested structure renders correctly in the Uber Eats consumer app by placing a test order that exercises the nested modifier path
Known gotchas
Uber Eats enforces a flat price model for nested modifiers; price overrides at the nested level may be silently dropped if the integration tier does not support them
Circular modifier group references (group A referencing group B which references group A) will cause the entire menu publish to fail with an opaque error; validate graph acyclicity before submission
Min_permitted greater than zero on a nested modifier group makes the parent option mandatory to configure, which can block order submission if the consumer app does not surface it correctly
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