Spoke Dispatch MCP by usefulapi
Server Details
Read Spoke Dispatch plans, stops, routes and drivers; create and optimize plans; send routes.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Score is being calculated.
Available Tools
23 toolsspoke_create_planCreate planInspect
WRITE: create a new route plan for a date (no stops yet, nothing is sent to drivers). Optionally assign drivers (up to 50, they must be active and share the plan's depot) and a depot (default: the team's main depot). Does not optimize or distribute. POST /plans.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| depot_id | No | Depot id ('abc' or 'depots/abc'). | |
| starts_on | Yes | Plan date, yyyy-mm-dd (Spoke rejects dates too far in the past or future). | |
| driver_ids | No | Driver ids ('abc' or 'drivers/abc'). |
spoke_create_stopCreate stopInspect
WRITE: add one stop to a writable (not yet distributed) plan. Needs an address (text fields or latitude+longitude). The recipient's phone/e-mail are stored on the stop and Spoke may contact the recipient later when the route runs; nothing is sent now. For many stops use spoke_import_stops. POST /plans/{planId}/stops.
| Name | Required | Description | Default |
|---|---|---|---|
| stop | Yes | ||
| plan_id | Yes |
spoke_distribute_planDistribute plan to driversDestructiveInspect
WRITE (SENDS TO REAL PEOPLE): distribute an optimized plan, which immediately sends each driver of the plan their route on their phone (push notification / message) and locks the plan for edits. Cannot be undone. Only for a plan with 1-10 drivers, and only after the user has explicitly said to send the routes: set confirm_send_to_drivers to true. POST /plans/{planId}:distribute.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | ||
| confirm_send_to_drivers | Yes | Must be true: confirms the user asked to send the routes to the plan's drivers now. |
spoke_get_depotGet depotRead-onlyInspect
One depot by id. GET /depots/{depotId}.
| Name | Required | Description | Default |
|---|---|---|---|
| depot_id | Yes | Depot id, e.g. 'abc' or 'depots/abc'. |
spoke_get_driverGet driverRead-onlyInspect
One driver by id. Contains personal data. GET /drivers/{driverId}.
| Name | Required | Description | Default |
|---|---|---|---|
| driver_id | Yes | Driver id, e.g. 'abc' or 'drivers/abc'. |
spoke_get_operationGet operationRead-onlyInspect
One operation, e.g. the optimization started by spoke_optimize_plan: poll until done is true. GET /operations/{operationId}.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes | Operation id, e.g. 'abc' or 'operations/abc'. |
spoke_get_planGet planRead-onlyInspect
One plan: title, start date, depot, driver ids, route ids, whether it is distributed/writable, optimization state and route overrides. GET /plans/{planId}.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan id, e.g. 'abc123' or 'plans/abc123'. |
spoke_get_routeGet routeRead-onlyInspect
One route: title, driver, stop count and state (distributed, started, completed, recipients notified). GET /routes/{routeId}.
| Name | Required | Description | Default |
|---|---|---|---|
| route_id | Yes | Route id, e.g. 'abc' or 'routes/abc'. |
spoke_get_stopGet stopRead-onlyInspect
One stop of a plan with address, recipient, timing, ETA, route and delivery outcome (attempted, succeeded, notes, photo/signature links). Contains personal data. GET /plans/{planId}/stops/{stopId}.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | ||
| stop_id | Yes | Stop id, e.g. 'xyz' or 'plans/abc/stops/xyz'. |
spoke_get_unassigned_stopGet unassigned stopRead-onlyInspect
One unassigned stop by id. Contains personal data. GET /unassignedStops/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| unassigned_stop_id | Yes | Id, e.g. 'abc' or 'unassignedStops/abc'. |
spoke_import_stopsImport stopsInspect
WRITE: add up to 100 stops to a writable (not yet distributed) plan in one request (better geocoding than one at a time; Spoke limits imports to 30 requests a minute). Returns the created stop ids and any failures. Recipient contact data is stored on the stops; nothing is sent now. POST /plans/{planId}/stops:import.
| Name | Required | Description | Default |
|---|---|---|---|
| stops | Yes | ||
| plan_id | Yes |
spoke_list_custom_stop_propertiesList custom stop propertiesRead-onlyInspect
The team's custom stop property definitions (ids and names). Their ids are the keys of customProperties on stops. Needs a subscription that includes custom properties (HTTP 403 otherwise). GET /team/customStopProperties.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
spoke_list_depotsList depotsRead-onlyInspect
List depots (start/end addresses, working hours, vehicle type, max stops), up to 20 per page. Use the ids when creating plans. GET /depots.
| Name | Required | Description | Default |
|---|---|---|---|
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| max_page_size | No | Results per page, 1-20 (default 20). |
spoke_list_driversList driversRead-onlyInspect
List the team's drivers (name, e-mail/phone, active flag, depots, route overrides), up to 50 per page. Contains personal data. GET /drivers.
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | Only active (true) or inactive (false) drivers. | |
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| max_page_size | No | Results per page, 1-50 (default 50). |
spoke_list_operationsList operationsRead-onlyInspect
List long-running operations (plan optimizations): type, done flag, who started it, result (optimized and skipped stops), up to 20 per page. GET /operations.
| Name | Required | Description | Default |
|---|---|---|---|
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| max_page_size | No | Results per page, 1-20 (default 20). |
spoke_list_plansList plansRead-onlyInspect
List route plans (a plan = one day's delivery job: date, depot, drivers, routes), newest first, in pages of up to 20. Filter with e.g. {"title":"Monday run"} or {"startsGte":"2026-10-01"}. GET /plans.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Only plans with this title. | |
| filter | No | Extra filter fields as documented by Spoke (name -> value), e.g. {"startsGte":"2026-10-01"}. | |
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| max_page_size | No | Results per page, 1-20 (default 10). | |
| starts_on_or_after | No | Only plans starting on or after this date (yyyy-mm-dd). |
spoke_list_plan_stopsList plan stopsRead-onlyInspect
List the stops of a plan, in pages of up to 10. Stops include recipient names, phones, e-mails and addresses (personal data): page only as far as needed. GET /plans/{planId}/stops.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | ||
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| max_page_size | No | Results per page, 1-10 (default 10). | |
| recipient_external_id | No | Only stops whose recipient has this external id. |
spoke_list_routesList routesRead-onlyInspect
List routes (one driver's run of a plan: stop count, driver, distributed/started/completed state), up to 20 per page. GET /routes.
| Name | Required | Description | Default |
|---|---|---|---|
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| max_page_size | No | Results per page, 1-20 (default 20). | |
| starts_on_or_after | No | Only routes of plans starting on or after this date (yyyy-mm-dd). |
spoke_list_route_stopsList route stopsRead-onlyInspect
List the stops of one route in driving order, in pages of up to 10. Contains personal data: page only as far as needed. GET /routes/{routeId}/stops.
| Name | Required | Description | Default |
|---|---|---|---|
| route_id | Yes | ||
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| max_page_size | No | Results per page, 1-10 (default 10). | |
| recipient_external_id | No | Only stops whose recipient has this external id. |
spoke_list_unassigned_stopsList unassigned stopsRead-onlyInspect
List stops that are not on any plan yet (the inbox of imported orders), in pages of up to 20 (default 20). Contains personal data. GET /unassignedStops.
| Name | Required | Description | Default |
|---|---|---|---|
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| max_page_size | No | Results per page, 1-20 (default 20). |
spoke_optimize_planOptimize planDestructiveInspect
WRITE: start the route optimization of a plan (orders and assigns its stops to its drivers). Rewrites the plan's routes if it was optimized before, and uses Spoke's optimization quota (30 per minute, 100 per 10 minutes). Does NOT send anything to drivers. Returns an operation: poll spoke_get_operation until done. Needs at least one driver and one stop. POST /plans/{planId}:optimize.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes |
spoke_search_stopsSearch stopsRead-onlyInspect
Search all stops of the team (planned, unassigned, past) by keyword and/or Spoke's filter language, up to 20 per page. Example filter: address.countryCode = "DE" and deliveryInfo.attempted = false. Filterable: planId, routeId, type, activity, notes, address., createdAt, recipient.name/email/phone/externalId, deliveryInfo.state/attempted/succeeded, orderInfo.. Results include personal data. The search index lags real time by a short while. GET /stops:search.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Spoke filter expression, e.g. createdAt >= "2026-10-01T00:00:00Z" and address ~= "London". | |
| keyword | No | Fuzzy full-text keywords. | |
| page_token | No | Page token: pass the previous reply's nextPageToken (with the same other arguments) for the next page. | |
| sort_field | No | ||
| sort_order | No | ||
| max_page_size | No | Results per page, 1-20 (default 20). |
spoke_update_planUpdate planDestructiveInspect
WRITE: change a plan's title, date, drivers and/or depot. Only the fields you pass change, but driver_ids REPLACES the plan's whole driver list. Fails if the plan is not writable (already distributed). Nothing is sent to drivers. PATCH /plans/{planId}.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| plan_id | Yes | ||
| depot_id | No | ||
| starts_on | No | ||
| driver_ids | No | The complete new driver list (replaces the old one). |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
23 tool updates
- First observed
spoke_create_plan - First observed
spoke_create_stop - First observed
spoke_distribute_plan - First observed
spoke_get_depot - First observed
spoke_get_driver - First observed
spoke_get_operation - First observed
spoke_get_plan - First observed
spoke_get_route - First observed
spoke_get_stop - First observed
spoke_get_unassigned_stop - First observed
spoke_import_stops - First observed
spoke_list_custom_stop_properties - First observed
spoke_list_depots - First observed
spoke_list_drivers - First observed
spoke_list_operations - First observed
spoke_list_plan_stops - First observed
spoke_list_plans - First observed
spoke_list_route_stops - First observed
spoke_list_routes - First observed
spoke_list_unassigned_stops - First observed
spoke_optimize_plan - First observed
spoke_search_stops - First observed
spoke_update_plan
Related MCP Connectors
- VepathosOAuthcom.vepathos
Import orders, manage your fleet, and generate optimized last-mile delivery routes at scale.
Read Shipday orders, carriers and delivery status; create orders and assign drivers.
141Read Track-POD orders, routes, drivers, vehicles and proof of delivery; create orders.
161Agentic-AI route optimization for delivery fleets, capacity- and time-window-safe.
Related MCP Servers
- FlicenseAqualityBmaintenancePlans and optimizes last-mile delivery routes with capacity and time-window constraints, offering tools for managing deliveries, vehicles, routes, and what-if scenarios.10-
- AlicenseAqualityCmaintenanceLets MCP clients read a delivery route planning and driver dispatch team's plans, stops, routes, drivers, depots, and optimization operations, and when writes are enabled, create plans, import stops, optimize routes, and distribute them.12MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with SmartRoutes route optimization and dispatch tools, allowing users to manage orders, vehicles, and plans via natural language.MIT
- FlicenseAqualityCmaintenanceEnables AI agents to query orders, manage routes, track drivers, and analyze delivery performance on the FleetSync last-mile delivery platform through natural language.18-
Glama MCP Gateway
Add one secure layer between your agents and this server.