io.usefulapi/optimoroute
REMOTE · OPTIMOROUTE.USEFULAPI.IO · SCANNED OCT 4
Check OptimoRoute routes, orders and driver events, and create orders or start route planning.
Available components
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
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not yet verified: we couldn't confirm whether this endpoint requires it. View diagnostics → Unverified
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 429, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability0
- Transport check failed: declared streamable-http, but the endpoint returned HTTP 429. See how to fix → View diagnostics → Fail
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.
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
claude mcp add --transport http io-usefulapi-optimoroute 'https://optimoroute.usefulapi.io/mcp'
{
"mcpServers": {
"io-usefulapi-optimoroute": {
"url": "https://optimoroute.usefulapi.io/mcp"
}
}
} {
"servers": {
"io-usefulapi-optimoroute": {
"type": "http",
"url": "https://optimoroute.usefulapi.io/mcp"
}
}
} [mcp_servers.io-usefulapi-optimoroute] url = "https://optimoroute.usefulapi.io/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"io-usefulapi-optimoroute": {
"type": "remote",
"url": "https://optimoroute.usefulapi.io/mcp",
"enabled": true
}
}
} openclaw mcp add io-usefulapi-optimoroute --url 'https://optimoroute.usefulapi.io/mcp' --transport streamable-http
mcp_servers:
io-usefulapi-optimoroute:
url: "https://optimoroute.usefulapi.io/mcp" {
"McpServers": {
"io-usefulapi-optimoroute": {
"Transport": "http",
"Url": "https://optimoroute.usefulapi.io/mcp"
}
}
} assistant mcp add io-usefulapi-optimoroute -t streamable-http -u 'https://optimoroute.usefulapi.io/mcp'
{
"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.
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.
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 |
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 →
optimoroute_create_or_update_orders Create or update orders in bulk ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| orders | array | yes | The orders, at most 500. |
No output schema declared.
No examples provided.
optimoroute_create_order Create or update an 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.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptDuplicateOrderNo | boolean | – | Allow CREATE of an order whose orderNo already exists. |
| allowedDateTimes | array | – | Datetime windows in which the service may begin. |
| allowedDates | object | – | Restrict the dates the order may be scheduled, e.g. {"from": "2026-10-01", "to": "2026-10-07"}. |
| allowedWeekdays | array | – | 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. |
| customField1 | string | – | Legacy custom field #1. |
| customField2 | string | – | Legacy custom field #2. |
| customField3 | string | – | Legacy custom field #3. |
| customField4 | string | – | Legacy custom field #4. |
| customField5 | string | – | Legacy custom field #5. |
| customFields | object | – | New-style custom fields keyed by the field key configured in OptimoRoute. |
| date | string | – | Order date, YYYY-MM-DD. |
| duration | number | – | Service time at the location, in minutes. |
| string | – | Customer email for notifications. | |
| id | string | – | OptimoRoute's order id. Takes priority over orderNo when matching. |
| load1 | number | – | Load units #1 (boxes, kg, ...) per your capacity setup. |
| load2 | number | – | Load units #2. |
| load3 | number | – | Load units #3. |
| load4 | number | – | Load units #4. |
| location | object | – | Where the order is serviced. |
| notes | string | – | Notes for the driver's instructions. |
| notificationPreference | string | – | How order-tracking notifications are delivered for this order. |
| operation | string | yes | How to apply the order (see description). |
| orderNo | string | – | Your order number, shown in the web app. Used to match existing orders. |
| phone | string | – | Customer phone number. |
| priority | string | – | L low, M medium (default), H high, C critical. |
| relatedId | string|null | – | id of a related pickup/delivery. |
| relatedOrderNo | string|null | – | orderNo of a related pickup/delivery (set on the second order of the pair). |
| skills | array | – | Required driver skill codes. |
| timeWindows | array | – | When the order can be serviced, e.g. [{"twFrom": "10:00", "twTo": "14:00"}]. |
| type | string | – | D = delivery, P = pickup, T = task. |
| vehicleFeatures | array | – | Required vehicle feature codes. |
No output schema declared.
No examples provided.
optimoroute_get_completion_details Get order 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.
| Name | Type | Req | Description |
|---|---|---|---|
| includeCustomerFeedback | boolean | – | Include the customer's rating and comment, if customer feedback is configured. |
| orders | array | yes | Orders to target, each {"orderNo": "..."} or {"id": "..."}. At most 500. |
No output schema declared.
No examples provided.
optimoroute_get_dispatch_status 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.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Date to check, YYYY-MM-DD. Omit for the live routes' date. |
| includeRouteChanges | boolean | – | Include counts of routes changed since sending. |
No output schema declared.
No examples provided.
optimoroute_get_events Get mobile 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.
| Name | Type | Req | Description |
|---|---|---|---|
| after_tag | string | – | The tag from a previous call; omit to read from the start. |
No output schema declared.
No examples provided.
optimoroute_get_orders 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.
| Name | Type | Req | Description |
|---|---|---|---|
| orders | array | yes | Orders to target, each {"orderNo": "..."} or {"id": "..."}. At most 500. |
No output schema declared.
No examples provided.
optimoroute_get_planning_status 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.
| Name | Type | Req | Description |
|---|---|---|---|
| planningId | integer | yes | The planningId returned by optimoroute_start_planning. |
No output schema declared.
No examples provided.
optimoroute_get_routes Get routes for a date ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Date in YYYY-MM-DD format, e.g. 2026-09-30. |
| driverExternalId | string | – | Only this driver's route (external id). |
| driverSerial | string | – | Only this driver's route (serial number). |
| includeDispatchStatus | boolean | – | Include whether each route was sent to its driver, and changed since. |
| includeRoutePolyline | boolean | – | Include the encoded route polyline (large). |
| includeRouteStartEnd | boolean | – | Include each route's start and end locations. |
| vehicleRegistration | string | – | Only this vehicle's route. |
No output schema declared.
No examples provided.
optimoroute_get_scheduling_info Get an order's 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | OptimoRoute's unique order id. |
| orderNo | string | – | The user-specified order number. |
No output schema declared.
No examples provided.
optimoroute_search_orders 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.
| Name | Type | Req | Description |
|---|---|---|---|
| after_tag | string | – | Cursor from the previous page's after_tag. |
| dateRange | object | – | A date range, e.g. {"from": "2026-09-28", "to": "2026-10-02"}. |
| includeOrderData | boolean | – | Include each order's full data. |
| includeScheduleInformation | boolean | – | Include each order's driver, stop number and scheduled time. |
| orderStatus | array | – | Only orders in these statuses. |
| orders | array | – | Orders to target, each {"orderNo": "..."} or {"id": "..."}. At most 500. |
No output schema declared.
No examples provided.
optimoroute_send_routes Send routes to drivers ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Date in YYYY-MM-DD format, e.g. 2026-09-30. |
| sendNotifications | boolean | – | Also send customer notifications. Default false in this tool. |
No output schema declared.
No examples provided.
optimoroute_start_planning Start route 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.
| Name | Type | Req | Description |
|---|---|---|---|
| balanceBy | string | – | Balance by WT working time or NUM order count. |
| balancing | string | – | OFF best routes; ON balance workload; ON_FORCE balance and use every driver. |
| balancingFactor | number | – | 0.0-1.0, how much balancing outweighs route cost (ON_FORCE only). |
| clustering | boolean | – | Minimize overlap between drivers' routes. |
| date | string | – | Date to plan, YYYY-MM-DD. Ignored if dateRange is set. |
| dateRange | object | – | Plan several days at once (weekly planning). |
| depotTrips | boolean | – | Let drivers return to the depot to reload. |
| depotVisitDuration | integer | – | Minutes spent at a depot visit. |
| includeScheduledOrders | boolean | – | When planning a subset, keep other orders already scheduled on those drivers (default true). |
| lockType | string | – | With CURRENT: NONE allow changes; ROUTES keep planned routes; RESOURCES keep driver per order. |
| midRouteDepotVisits | string | – | Allow mid-route depot visits (needs Dynamic Mid-Route Depots on the account). |
| startWith | string | – | EMPTY (default) plans from scratch; CURRENT starts from existing routes. |
| useDrivers | array | – | Only plan with these drivers. Default: all available drivers. |
| useOrderObjects | array | – | Only plan these orders. Default: all valid orders on the date. |
No output schema declared.
No examples provided.
optimoroute_stop_planning Stop route planning ~54
Stop a running planning (optimization) process by its planningId. OptimoRoute: POST /stop_planning.
| Name | Type | Req | Description |
|---|---|---|---|
| planningId | integer | yes | The planningId returned by optimoroute_start_planning. |
No output schema declared.
No examples provided.
optimoroute_update_completion_details Update order completion status ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| updates | array | yes | The status updates, at most 500. |
No output schema declared.
No examples provided.
optimoroute_update_driver_parameters Update a driver's parameters for a date ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| assignedVehicle | string | – | External id of the vehicle to assign for this date. |
| date | string | yes | Date in YYYY-MM-DD format, e.g. 2026-09-30. |
| enabled | boolean | – | Enable or disable the driver for this date. |
| endAddress | string | – | End address shown on reports (needs end coordinates). |
| endLatitude | number | – | End location latitude (needs endLongitude). |
| endLongitude | number | – | End location longitude (needs endLatitude). |
| externalId | string | yes | The driver's external id from driver administration. |
| startAddress | string | – | Start address shown on reports (needs start coordinates). |
| startLatitude | number | – | Start location latitude (needs startLongitude). |
| startLongitude | number | – | Start location longitude (needs startLatitude). |
| vehicleCapacity1 | integer | – | Vehicle load capacity #1 for this date. |
| vehicleCapacity2 | integer | – | Vehicle load capacity #2. |
| vehicleCapacity3 | integer | – | Vehicle load capacity #3. |
| vehicleCapacity4 | integer | – | Vehicle load capacity #4. |
| workTimeFrom | string | – | Work start, 24-hour HH:MM. |
| workTimeTo | string | – | Work end, 24-hour HH:MM. |
No output schema declared.
No examples provided.
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.