Collection of integration examples connecting various ERP and fleet management systems (Dynamics 365, Geotab, Odoo, NetSuite, Sage X3, Samsara, SAP S/4HANA, Oracle) with TRANSCEND Route Optimization API
This is an examples repository, not a production MCP server. Tools are defined in Python client classes without explicit MCP tool registration. Schemas are partially visible in docstrings and function signatures, but lack formal JSON Schema declarations. Descriptions are present but generic (avg ~150 chars). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Error handling is minimal, most tools just call raise_for_status(). Security concern: login() exposes credentials as parameters. No pagination support despite returning lists. Output schemas are undocumented.
Retrieve open sales orders from Microsoft Dynamics 365 Supply Chain Management via OData v4 Web API. Filters for Released status orders with delivery information.
Update a sales order in Microsoft Dynamics 365 with route optimization results including ETA and costs.
Record route optimization results in Geotab as status data for a device.
Retrieve list of vehicles (devices) from Geotab MyGeotab API. Returns all registered devices in the database.
Retrieve GPS locations (LogRecords) from Geotab for vehicles. Returns the most recent location per device within a time range.
Find fuel stations near a location. Calls TRANSCEND stations API with latitude, longitude, radius, and fuel type.
No formal MCP tool registration visible. Tools are Python methods in client classes, not registered via MCP protocol. Cannot verify tool definitions are exposed to MCP clients.
Credentials exposed as parameters: login() accepts username and password as plain parameters. Secrets must use server-side injection via environment variables or vault, never as tool parameters.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Find parking locations near a coordinate. Calls TRANSCEND POI parking API with latitude, longitude, and search radius.
Calculate toll and fuel costs for a route segment. Calls TRANSCEND tolls/costs API with origin, destination, vehicle, and cargo parameters.
Get traffic danger spots along a route path. Calls TRANSCEND traffic API with route points and minimum danger level.
Get weather information for a location. Calls TRANSCEND weather API with latitude and longitude.
Authenticate against TRANSCEND IAM and get a JWT token. After successful login, the client automatically updates its Authorization header to use the returned JWT Bearer token.
Retrieve sales orders from Oracle NetSuite via SuiteTalk REST Web Services. Queries pending orders with shipping address information.
Update a sales order in Oracle NetSuite with route optimization results including ETA and cost information.
Retrieve customer (partner) address and coordinates from Odoo for delivery location mapping.
Retrieve pending sales orders from Odoo ERP in 'sale' state (confirmed but not yet delivered).
Update a sales order in Odoo with route optimization results including ETA, distance, and cost information.
Optimize a delivery route. Calls TRANSCEND route optimization API with origin, stops, and destination. If multiple stops are provided, chains consecutive point-to-point calls to build a multi-stop route.
Output schemas undocumented. No formal declaration of what fields are returned by any tool. LLMs cannot plan downstream calls or extract required data without knowing response structure.
No pagination support. List tools (get_sales_orders, get_devices, get_locations) accept 'limit' but no offset/cursor or total_count. Large result sets will blow context windows.
Minimal error handling. Tools call raise_for_status() but provide no recovery guidance. Errors do not tell LLMs what to do next or whether to retry.