Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.usefulapi/optimoroute

REMOTE · OPTIMOROUTE.USEFULAPI.IO · SCANNED OCT 4

Check OptimoRoute routes, orders and driver events, and create orders or start route planning.

18 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security46
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Tool Safety0
  • Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Capabilities0
  • Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified

Unverified: 5 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

Install

How do I install the io.usefulapi/optimoroute MCP server?

io.usefulapi/optimoroute is a hosted endpoint at https://optimoroute.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · optimoroute.usefulapi.io

# add to Claude Code
claude mcp add --transport http io-usefulapi-optimoroute 'https://optimoroute.usefulapi.io/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "io-usefulapi-optimoroute": {
      "url": "https://optimoroute.usefulapi.io/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "io-usefulapi-optimoroute": {
      "type": "http",
      "url": "https://optimoroute.usefulapi.io/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.io-usefulapi-optimoroute]
url = "https://optimoroute.usefulapi.io/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-optimoroute": {
      "type": "remote",
      "url": "https://optimoroute.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add io-usefulapi-optimoroute --url 'https://optimoroute.usefulapi.io/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  io-usefulapi-optimoroute:
    url: "https://optimoroute.usefulapi.io/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "io-usefulapi-optimoroute": {
      "Transport": "http",
      "Url": "https://optimoroute.usefulapi.io/mcp"
    }
  }
}
# add to Vellum
assistant mcp add io-usefulapi-optimoroute -t streamable-http -u 'https://optimoroute.usefulapi.io/mcp'
// mcp.json
{
  "mcpServers": {
    "io-usefulapi-optimoroute": {
      "type": "http",
      "url": "https://optimoroute.usefulapi.io/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Oct 26 −57
    • Endpoint reachability: reachable → not serving MCP ▼ security
    • Tool safety: pass → unverified ▼ security
    • HTTPS: pass → unverified ▼ security
    • Authorization: pass → unverified ▼ security
    • Transport: pass → fail ▼ security
    • Capabilities: fail → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
  • 2 Oct 26 +42
    • Authorization: unverified → pass ▲ security
    • Injection markers: unverified → pass ▲ security
    • First check of Judged manipulation: pass security
    • MCP protocol: unverified → fail ▼ functional
    • Tool coverage: unverified → 100 ▲ functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: 100 functional
    • First check of Tool coverage: 100 functional
  • 1 Oct 26 +5
    • HTTPS: unverified → pass ▲ security
  • 30 Sept 26 +10
    • Transport: fail → pass ▲ security
    • Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes. security
  • 29 Sept 26 18

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Oct 2026 · Probed https://optimoroute.usefulapi.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=usefulapi.io CN=WE1,O=Google Trust Services,C=US 13 Sept 2026 12 Dec 2026 ECDSA 256 ECDSA-SHA256 d9be3287b0fde9630e825ba1f79bff3f
SANs: usefulapi.io, *.usefulapi.io
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of optimoroute.usefulapi.io. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
usefulapi.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Inconclusive

We could not reach the endpoint well enough to judge its authorisation posture.

Result Inconclusive
HTTP status 429
Header Value
x-frame-options SAMEORIGIN
referrer-policy same-origin

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://optimoroute.usefulapi.io/mcp HTTP error 429
http (plaintext) http://optimoroute.usefulapi.io/mcp Inconclusive 429
MCP tools · 15 exposed · ~2,944 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
optimoroute_create_or_update_orders ~129

Create, update or replace up to 500 orders in one call. No geocoding here: each location must be an existing locationNo or carry latitude+longitude (+ locationNo, address or locationName). Per order, operation MERGE/SYNC/CREATE/UPDATE works as in optimoroute_create_order; by default an order matched by id or orderNo is updated with only the fields sent, otherwise created. Returns a per-order success list. OptimoRoute: POST /create_or_update_orders.

NameTypeReqDescription
ordersarrayyesThe orders, at most 500.

No output schema declared.

No examples provided.

optimoroute_create_order ~705

Create one order, or update an existing one, with address geocoding. operation: CREATE (new; errors if orderNo exists), UPDATE (existing only), MERGE (create or update only the fields you send — safest for edits), SYNC (create or REPLACE all fields with what you send). CREATE/SYNC/MERGE of a new order need date, type, location and orderNo or id. A location is either an existing locationNo alone, an address to geocode, or latitude+longitude+locationName. OptimoRoute: POST /create_order.

NameTypeReqDescription
acceptDuplicateOrderNoboolean–Allow CREATE of an order whose orderNo already exists.
allowedDateTimesarray–Datetime windows in which the service may begin.
allowedDatesobject–Restrict the dates the order may be scheduled, e.g. {"from": "2026-10-01", "to": "2026-10-07"}.
allowedWeekdaysarray–Weekdays the order may be scheduled on. Default: all.
assignedTo––Force the order onto one driver, e.g. {"serial": "102"} or {"externalId": "444"}. null clears it.
customField1string–Legacy custom field #1.
customField2string–Legacy custom field #2.
customField3string–Legacy custom field #3.
customField4string–Legacy custom field #4.
customField5string–Legacy custom field #5.
customFieldsobject–New-style custom fields keyed by the field key configured in OptimoRoute.
datestring–Order date, YYYY-MM-DD.
durationnumber–Service time at the location, in minutes.
emailstring–Customer email for notifications.
idstring–OptimoRoute's order id. Takes priority over orderNo when matching.
load1number–Load units #1 (boxes, kg, ...) per your capacity setup.
load2number–Load units #2.
load3number–Load units #3.
load4number–Load units #4.
locationobject–Where the order is serviced.
notesstring–Notes for the driver's instructions.
notificationPreferencestring–How order-tracking notifications are delivered for this order.
operationstringyesHow to apply the order (see description).
orderNostring–Your order number, shown in the web app. Used to match existing orders.
phonestring–Customer phone number.
prioritystring–L low, M medium (default), H high, C critical.
relatedIdstring|null–id of a related pickup/delivery.
relatedOrderNostring|null–orderNo of a related pickup/delivery (set on the second order of the pair).
skillsarray–Required driver skill codes.
timeWindowsarray–When the order can be serviced, e.g. [{"twFrom": "10:00", "twTo": "14:00"}].
typestring–D = delivery, P = pickup, T = task.
vehicleFeaturesarray–Required vehicle feature codes.

No output schema declared.

No examples provided.

optimoroute_get_completion_details ~140

Get the completion status of up to 500 orders (unscheduled, scheduled, on_route, servicing, success, failed, rejected, cancelled) with service start/end times and positions, proof-of-delivery form data (notes, signature and photo URLs, barcodes), the tracking URL and optionally customer feedback. Read-only despite using POST. OptimoRoute: POST /get_completion_details.

NameTypeReqDescription
includeCustomerFeedbackboolean–Include the customer's rating and comment, if customer feedback is configured.
ordersarrayyesOrders to target, each {"orderNo": "..."} or {"id": "..."}. At most 500.

No output schema declared.

No examples provided.

optimoroute_get_dispatch_status ~107

Have the routes (and customer notifications) for a date been sent to drivers, when, and are they the live routes? Optionally counts routes added, modified or removed since sending. Omit date for the currently live date. OptimoRoute: GET /get_dispatch_status.

NameTypeReqDescription
datestring–Date to check, YYYY-MM-DD. Omit for the live routes' date.
includeRouteChangesboolean–Include counts of routes changed since sending.

No output schema declared.

No examples provided.

optimoroute_get_events ~118

Read driver-app events for the live routes — on_duty, off_duty, start_route, end_route, start_service, success, failed, rejected, start_time_changed — up to 500 per call. Pass the returned tag as after_tag next time to get only newer events; remainingEvents says whether more are waiting. Events can arrive out of order when devices were offline. OptimoRoute: GET /get_events.

NameTypeReqDescription
after_tagstring–The tag from a previous call; omit to read from the start.

No output schema declared.

No examples provided.

optimoroute_get_orders ~109

Fetch full order data (location, time windows, assignment, loads, skills, contact) for up to 500 orders by orderNo or id. Each result has its own success flag; missing orders come back with ERR_ORD_NOT_FOUND rather than failing the call. Read-only despite using POST. OptimoRoute: POST /get_orders.

NameTypeReqDescription
ordersarrayyesOrders to target, each {"orderNo": "..."} or {"id": "..."}. At most 500.

No output schema declared.

No examples provided.

optimoroute_get_planning_status ~80

Check a planning (route optimization) run started with optimoroute_start_planning: status N new, R running, C cancelled, F finished, E error, plus percentageComplete. OptimoRoute: GET /get_planning_status.

NameTypeReqDescription
planningIdintegeryesThe planningId returned by optimoroute_start_planning.

No output schema declared.

No examples provided.

optimoroute_get_routes ~195

Get the planned routes for one date: per driver/vehicle the duration, distance, loads and the ordered list of stops with scheduled times. Optionally filter to one driver or vehicle and include the encoded polyline, start/end locations and dispatch status. OptimoRoute: GET /get_routes.

NameTypeReqDescription
datestringyesDate in YYYY-MM-DD format, e.g. 2026-09-30.
driverExternalIdstring–Only this driver's route (external id).
driverSerialstring–Only this driver's route (serial number).
includeDispatchStatusboolean–Include whether each route was sent to its driver, and changed since.
includeRoutePolylineboolean–Include the encoded route polyline (large).
includeRouteStartEndboolean–Include each route's start and end locations.
vehicleRegistrationstring–Only this vehicle's route.

No output schema declared.

No examples provided.

optimoroute_get_scheduling_info ~90

Is this order scheduled, and if so on which driver/vehicle, at which stop number and time, plus the live ETA from the routes sent to drivers. Give orderNo or id. OptimoRoute: GET /get_scheduling_info.

NameTypeReqDescription
idstring–OptimoRoute's unique order id.
orderNostring–The user-specified order number.

No output schema declared.

No examples provided.

optimoroute_search_orders ~224

Find orders in a date range (at most 35 days) or by a list of orderNo/id, optionally filtered by status (e.g. failed, rejected, unscheduled), with order data and/or scheduling info. Up to 500 per page; pass the returned after_tag with the SAME other parameters to get the next page. Read-only despite using POST. OptimoRoute: POST /search_orders.

NameTypeReqDescription
after_tagstring–Cursor from the previous page's after_tag.
dateRangeobject–A date range, e.g. {"from": "2026-09-28", "to": "2026-10-02"}.
includeOrderDataboolean–Include each order's full data.
includeScheduleInformationboolean–Include each order's driver, stop number and scheduled time.
orderStatusarray–Only orders in these statuses.
ordersarray–Orders to target, each {"orderNo": "..."} or {"id": "..."}. At most 500.

No output schema declared.

No examples provided.

optimoroute_send_routes ~155

Dispatch the routes for a date to the drivers' mobile app (the web app's Send Routes). This makes that date the live routes and CANNOT be unsent. sendNotifications defaults to FALSE here (OptimoRoute's own default is true); set it true only when you mean to email/SMS customers per the account's Order Tracking settings. Returns ERR_NOTHING_TO_SEND if nothing changed since the last send. Confirm with optimoroute_get_dispatch_status. OptimoRoute: POST /send_routes.

NameTypeReqDescription
datestringyesDate in YYYY-MM-DD format, e.g. 2026-09-30.
sendNotificationsboolean–Also send customer notifications. Default false in this tool.

No output schema declared.

No examples provided.

optimoroute_start_planning ~403

Start OptimoRoute's route optimization for a date (or a dateRange for weekly planning, if the plan allows). With the default startWith EMPTY, existing routes for that date are REPLACED; use startWith CURRENT (+ lockType) to keep them. Returns a planningId — poll it with optimoroute_get_planning_status, then read the result with optimoroute_get_routes. Can be cancelled with optimoroute_stop_planning. OptimoRoute: POST /start_planning.

NameTypeReqDescription
balanceBystring–Balance by WT working time or NUM order count.
balancingstring–OFF best routes; ON balance workload; ON_FORCE balance and use every driver.
balancingFactornumber–0.0-1.0, how much balancing outweighs route cost (ON_FORCE only).
clusteringboolean–Minimize overlap between drivers' routes.
datestring–Date to plan, YYYY-MM-DD. Ignored if dateRange is set.
dateRangeobject–Plan several days at once (weekly planning).
depotTripsboolean–Let drivers return to the depot to reload.
depotVisitDurationinteger–Minutes spent at a depot visit.
includeScheduledOrdersboolean–When planning a subset, keep other orders already scheduled on those drivers (default true).
lockTypestring–With CURRENT: NONE allow changes; ROUTES keep planned routes; RESOURCES keep driver per order.
midRouteDepotVisitsstring–Allow mid-route depot visits (needs Dynamic Mid-Route Depots on the account).
startWithstring–EMPTY (default) plans from scratch; CURRENT starts from existing routes.
useDriversarray–Only plan with these drivers. Default: all available drivers.
useOrderObjectsarray–Only plan these orders. Default: all valid orders on the date.

No output schema declared.

No examples provided.

optimoroute_stop_planning ~54

Stop a running planning (optimization) process by its planningId. OptimoRoute: POST /stop_planning.

NameTypeReqDescription
planningIdintegeryesThe planningId returned by optimoroute_start_planning.

No output schema declared.

No examples provided.

optimoroute_update_completion_details ~96

Set the completion status of up to 500 orders (e.g. mark success, failed or cancelled from an external system), optionally with service start/end times. Each time takes unixTimestamp, utcTime or localTime. Reversible by setting the status again. Returns a per-order success list. OptimoRoute: POST /update_completion_details.

NameTypeReqDescription
updatesarrayyesThe status updates, at most 500.

No output schema declared.

No examples provided.

optimoroute_update_driver_parameters ~339

Change one driver's setup for one date: enable/disable, work hours, assigned vehicle, vehicle capacities, start/end location. WARNING: any existing route for that driver on that date is UNSCHEDULED; re-run planning afterwards. Start/end locations also apply to future optimizations. OptimoRoute: POST /update_driver_parameters.

NameTypeReqDescription
assignedVehiclestring–External id of the vehicle to assign for this date.
datestringyesDate in YYYY-MM-DD format, e.g. 2026-09-30.
enabledboolean–Enable or disable the driver for this date.
endAddressstring–End address shown on reports (needs end coordinates).
endLatitudenumber–End location latitude (needs endLongitude).
endLongitudenumber–End location longitude (needs endLatitude).
externalIdstringyesThe driver's external id from driver administration.
startAddressstring–Start address shown on reports (needs start coordinates).
startLatitudenumber–Start location latitude (needs startLongitude).
startLongitudenumber–Start location longitude (needs startLatitude).
vehicleCapacity1integer–Vehicle load capacity #1 for this date.
vehicleCapacity2integer–Vehicle load capacity #2.
vehicleCapacity3integer–Vehicle load capacity #3.
vehicleCapacity4integer–Vehicle load capacity #4.
workTimeFromstring–Work start, 24-hour HH:MM.
workTimeTostring–Work end, 24-hour HH:MM.

No output schema declared.

No examples provided.

Common questions

What is the io.usefulapi/optimoroute MCP server?

io.usefulapi/optimoroute is an MCP server listed in the public MCP registry as io.usefulapi/optimoroute. Check OptimoRoute routes, orders and driver events, and create orders or start route planning. This page covers its hosted endpoint (https://optimoroute.usefulapi.io/mcp).

Is the io.usefulapi/optimoroute MCP server safe to use?

io.usefulapi/optimoroute scores 18 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.usefulapi/optimoroute MCP server expose?

io.usefulapi/optimoroute exposes 15 tools: optimoroute_get_routes, optimoroute_get_orders, optimoroute_search_orders, optimoroute_get_scheduling_info, optimoroute_get_completion_details, and 10 more. Their descriptions and schemas cost roughly 2,944 tokens of context every time the server is loaded.

Does the io.usefulapi/optimoroute MCP server require authentication?

Its publisher declares no required credentials for io.usefulapi/optimoroute. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

Is the io.usefulapi/optimoroute MCP server still maintained?

io.usefulapi/optimoroute is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.