Skip to main content
Glama

Spoke Dispatch MCP by usefulapi

Server Details

Read Spoke Dispatch plans, stops, routes and drivers; create and optimize plans; send routes.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
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 tools
spoke_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
depot_idNoDepot id ('abc' or 'depots/abc').
starts_onYesPlan date, yyyy-mm-dd (Spoke rejects dates too far in the past or future).
driver_idsNoDriver 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stopYes
plan_idYes
spoke_distribute_planDistribute plan to drivers
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
confirm_send_to_driversYesMust be true: confirms the user asked to send the routes to the plan's drivers now.
spoke_get_depotGet depot
Read-only
Inspect

One depot by id. GET /depots/{depotId}.

ParametersJSON Schema
NameRequiredDescriptionDefault
depot_idYesDepot id, e.g. 'abc' or 'depots/abc'.
spoke_get_driverGet driver
Read-only
Inspect

One driver by id. Contains personal data. GET /drivers/{driverId}.

ParametersJSON Schema
NameRequiredDescriptionDefault
driver_idYesDriver id, e.g. 'abc' or 'drivers/abc'.
spoke_get_operationGet operation
Read-only
Inspect

One operation, e.g. the optimization started by spoke_optimize_plan: poll until done is true. GET /operations/{operationId}.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYesOperation id, e.g. 'abc' or 'operations/abc'.
spoke_get_planGet plan
Read-only
Inspect

One plan: title, start date, depot, driver ids, route ids, whether it is distributed/writable, optimization state and route overrides. GET /plans/{planId}.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYesPlan id, e.g. 'abc123' or 'plans/abc123'.
spoke_get_routeGet route
Read-only
Inspect

One route: title, driver, stop count and state (distributed, started, completed, recipients notified). GET /routes/{routeId}.

ParametersJSON Schema
NameRequiredDescriptionDefault
route_idYesRoute id, e.g. 'abc' or 'routes/abc'.
spoke_get_stopGet stop
Read-only
Inspect

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
stop_idYesStop id, e.g. 'xyz' or 'plans/abc/stops/xyz'.
spoke_get_unassigned_stopGet unassigned stop
Read-only
Inspect

One unassigned stop by id. Contains personal data. GET /unassignedStops/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
unassigned_stop_idYesId, 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stopsYes
plan_idYes
spoke_list_custom_stop_propertiesList custom stop properties
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

spoke_list_depotsList depots
Read-only
Inspect

List depots (start/end addresses, working hours, vehicle type, max stops), up to 20 per page. Use the ids when creating plans. GET /depots.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
max_page_sizeNoResults per page, 1-20 (default 20).
spoke_list_driversList drivers
Read-only
Inspect

List the team's drivers (name, e-mail/phone, active flag, depots, route overrides), up to 50 per page. Contains personal data. GET /drivers.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeNoOnly active (true) or inactive (false) drivers.
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
max_page_sizeNoResults per page, 1-50 (default 50).
spoke_list_operationsList operations
Read-only
Inspect

List long-running operations (plan optimizations): type, done flag, who started it, result (optimized and skipped stops), up to 20 per page. GET /operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
max_page_sizeNoResults per page, 1-20 (default 20).
spoke_list_plansList plans
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOnly plans with this title.
filterNoExtra filter fields as documented by Spoke (name -> value), e.g. {"startsGte":"2026-10-01"}.
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
max_page_sizeNoResults per page, 1-20 (default 10).
starts_on_or_afterNoOnly plans starting on or after this date (yyyy-mm-dd).
spoke_list_plan_stopsList plan stops
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
max_page_sizeNoResults per page, 1-10 (default 10).
recipient_external_idNoOnly stops whose recipient has this external id.
spoke_list_routesList routes
Read-only
Inspect

List routes (one driver's run of a plan: stop count, driver, distributed/started/completed state), up to 20 per page. GET /routes.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
max_page_sizeNoResults per page, 1-20 (default 20).
starts_on_or_afterNoOnly routes of plans starting on or after this date (yyyy-mm-dd).
spoke_list_route_stopsList route stops
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
route_idYes
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
max_page_sizeNoResults per page, 1-10 (default 10).
recipient_external_idNoOnly stops whose recipient has this external id.
spoke_list_unassigned_stopsList unassigned stops
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
max_page_sizeNoResults per page, 1-20 (default 20).
spoke_optimize_planOptimize plan
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
spoke_search_stopsSearch stops
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoSpoke filter expression, e.g. createdAt >= "2026-10-01T00:00:00Z" and address ~= "London".
keywordNoFuzzy full-text keywords.
page_tokenNoPage token: pass the previous reply's nextPageToken (with the same other arguments) for the next page.
sort_fieldNo
sort_orderNo
max_page_sizeNoResults per page, 1-20 (default 20).
spoke_update_planUpdate plan
Destructive
Inspect

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
plan_idYes
depot_idNo
starts_onNo
driver_idsNoThe complete new driver list (replaces the old one).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 23 tool updates
    • First observedspoke_create_plan
    • First observedspoke_create_stop
    • First observedspoke_distribute_plan
    • First observedspoke_get_depot
    • First observedspoke_get_driver
    • First observedspoke_get_operation
    • First observedspoke_get_plan
    • First observedspoke_get_route
    • First observedspoke_get_stop
    • First observedspoke_get_unassigned_stop
    • First observedspoke_import_stops
    • First observedspoke_list_custom_stop_properties
    • First observedspoke_list_depots
    • First observedspoke_list_drivers
    • First observedspoke_list_operations
    • First observedspoke_list_plan_stops
    • First observedspoke_list_plans
    • First observedspoke_list_route_stops
    • First observedspoke_list_routes
    • First observedspoke_list_unassigned_stops
    • First observedspoke_optimize_plan
    • First observedspoke_search_stops
    • First observedspoke_update_plan

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.