Upper Route Planner MCP by usefulapi
io.usefulapi/upper-route-planner · v1.0.0 · MCP 2025-06-18
Read Upper drivers and stops; create and optimize routes, assign drivers, share routes to the app.
Reachability
reachable
checked 2026-10-26 05:30 UTC
Registry status active
Tools pinned 12
5618a9d8484c
Tools last changed
unchanged since first capture 2026-10-26
Repo last push 2026-10-26
as of 2026-10-26
GitHub stars 0
as of 2026-10-26
Provenance
Registry namespace io.usefulapi
(domain verified by the official registry)
Repository
github.com/m190/usefulapi-mcp
Remote endpoints
https://upper-route-planner.usefulapi.io/mcp (streamable-http)
Observed changes
| When (UTC) | Event | Detail |
|---|---|---|
| 2026-10-26 05:30 | first capture | 12 tools pinned |
Pinned tool definitions (12)
| Tool | Description |
|---|---|
| upper_list_drivers | List the active drivers on the Upper team that owns the API token: id, name, email and phone. Use the ids with upper_assign_drivers and upper_share_route_to_drivers. GET /ext-get-drivers. |
| upper_list_stops | List the team's stops in optimized order: address, coordinates, contact, time window, duration, status, route_id and custom ids. Pass route_id for one route (optionally scheduled=true/false); pass unscheduled=true (without route_id) for... |
| upper_get_optimization_status | Check whether a route is optimized: status is optimized, pending (still running) or not_optimized, plus the queue_id of the last job. Poll this after upper_optimize_route. GET /ext-optimization-status. |
| upper_get_custom_fields | The workspace's five stop custom-field slots (custom1 - custom5: type, label, enabled, required) and which are enabled. Needs the Custom fields feature in the Upper plan. GET /ext-get-custom-fields. |
| upper_get_capacity_fields | The workspace's five capacity-field slots (capacity1 - capacity5: label, unit, enabled) used for load planning. GET /ext-get-capacity-fields. |
| upper_create_route | WRITE: create a new, empty route (name, date, optimization preference, units, pickup sequencing, service time). Omitted settings fall back to the account's defaults. Returns the new route_id; add stops with upper_create_stop. Calling it... |
| upper_update_route | WRITE: change settings of an existing route (name, date, optimize_for, units, pickup_settings, service_time). Only the fields you pass change. POST /ext-update-route. |
| upper_create_stop | WRITE: create a stop. The address is geocoded by Upper. Pass route_id to put it on a route (the route must not be active/in progress; an optimized route is flagged for re-optimization); omit it for an unscheduled stop. Calling it twice... |
| upper_update_stop | WRITE: change an existing stop; only the fields you pass change. A new address is re-geocoded (city/state/zipcode you pass with it are ignored); city/state/zipcode apply only without an address. Passing route_id moves the stop to that... |
| upper_assign_drivers | WRITE: assign one or more drivers (ids from upper_list_drivers) to a route, replacing the route's drivers. Every id must be an active driver on the team. If the route was already optimized it is reset to unoptimized (needs_optimization:... |
| upper_optimize_route | WRITE: start optimizing a route's stop order. The route needs at least one stop and one assigned driver (upper_assign_drivers). It runs asynchronously: this returns status pending and a queue_id, then poll upper_get_optimization_status.... |
| upper_share_route_to_drivers | WRITE: push a route to the drivers' mobile app NOW, which sends each driver a notification. Without driver_ids the route's assigned drivers are used; with them, every id must be an active driver on the team. Sending twice notifies... |
Get alerted when this changes.
Email the moment io.usefulapi/upper-route-planner drifts, dies, or revives.
Status badge
[](https://toolpin.dev/servers/io.usefulapi/upper-route-planner)
Maintain this server? Add the badge to your README. It links your users to this live status page.