Authenticate by sending a JSON-RPC POST to https://{server}.geotab.com/apiv1 with method Authenticate, passing your database name, user, and password; the response contains a credentials object with a sessionId.
Retrieve trips by calling the Get method with typeName set to Trip; filter by deviceSearch (vehicle ID) and fromDate and toDate parameters to scope the query.
Each Trip record now includes Odometer (returned in metres) and EngineHours (returned in seconds) directly on the object; convert units as needed for display.
For raw engine data such as RPM, fuel consumption, coolant temperature, and fault codes, call Get with typeName StatusData or FaultData, filtered by deviceSearch and date range.
For continuous high-volume synchronization, use the Data Feed API instead of repeated Get calls; initialize with GetFeed and a fromVersion token, then poll for incremental LogRecord, StatusData, FaultData, and Trip events.
Handle pagination using the results limit and offset parameters on Get; the API defaults vary by server version, so always paginate explicitly.
Known gotchas
Odometer values on the Trip object are in metres, not kilometres or miles; EngineHours values are in seconds, not hours — both are common unit-conversion mistakes.
The sessionId expires after a period of inactivity; implement re-authentication logic and retry on auth failure rather than caching credentials long-term.
The server subdomain (e.g., my.geotab.com vs. my123.geotab.com) varies per database instance and is returned during authentication; always use the server returned in the Authenticate response rather than hardcoding a hostname.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp