90trust / 100

Spoke Dispatch MCP by usefulapi

by spoke-dispatch.usefulapi.io in Other

MCP serverPassing, checked 1 h ago

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

https://spoke-dispatch.usefulapi.io/mcp

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
214 ms typical, 214 ms slowest 5%
Last check
1 h ago
Next check
in 6 h

How to call it

Add it to any MCP client that supports remote servers.

{
  "mcpServers": {
    "spoke-dispatch-mcp-by-usefulapi": {
      "type": "http",
      "url": "https://spoke-dispatch.usefulapi.io/mcp"
    }
  }
}

23 tools

  • spoke_list_plans

    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.

  • spoke_get_plan

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

  • spoke_list_plan_stops

    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.

  • spoke_get_stop

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

  • spoke_search_stops

    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, recipien

  • spoke_list_unassigned_stops

    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.

  • spoke_get_unassigned_stop

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

  • spoke_list_drivers

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

  • spoke_get_driver

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

  • spoke_list_depots

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

  • spoke_get_depot

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

  • spoke_list_routes

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

  • spoke_get_route

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

  • spoke_list_route_stops

    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.

  • spoke_list_operations

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

  • spoke_get_operation

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

  • spoke_list_custom_stop_properties

    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.

  • spoke_create_plan

    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.

  • spoke_update_plan

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

  • spoke_create_stop

    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_imp

  • spoke_import_stops

    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 no

  • spoke_optimize_plan

    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: po

  • spoke_distribute_plan

    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 expl

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTime
1 h agoPassed200214 ms