AI-powered fleet intelligence platform with MCP server exposing 9 tools for querying Geotab fleet data, behavioral analysis (FleetDNA), and write-back operations via the Model Context Protocol
GEOPulse defines 9 tools with clear action verbs and domain-specific descriptions. Most tools have proper input schemas with type definitions. However, several critical gaps reduce quality: (1) parameter descriptions are sparse or missing entirely (e.g., 'hours_back' in get_safety_events lacks guidance on valid range); (2) output schemas are completely undocumented, LLMs cannot plan downstream calls or extract fields; (3) error handling is absent from descriptions; (4) no pagination guidance for list-returning tools; (5) query_fleet_data exposes raw SQL, creating injection risk without sanitization guidance. Tool names follow verb_noun convention well (get_*, create_*, find_*). Descriptions are moderately detailed (avg ~120 chars) but lack 'when to use' context and recovery guidance.
WRITE-BACK: Create a coaching alert rule in Geotab. Use for: 'Set up alerts for harsh braking on Driver X'
WRITE-BACK: Create a group in Geotab and assign vehicles. Use for: 'Flag these drivers for coaching'
Returns all drivers/vehicles above a deviation threshold, ranked. Use for: 'Who is acting unlike themselves today?'
Generate a plain-English narrative from fleet data for a specific audience. Use for: converting raw numbers into human-readable insights.
Returns full baseline profile + today's deviation score + weekly delta for a driver/vehicle. Use for: 'Is Driver X behaving normally?'
Returns all vehicles with live positions and FleetDNA deviation scores. Use for: 'What's happening in the fleet right now?'
Output schemas completely undocumented. LLMs cannot infer what fields are returned, breaking tool chaining and forcing wasteful discovery calls.
query_fleet_data accepts raw SQL without documented sanitization or injection prevention. LLMs can be tricked into SQL injection attacks.
Parameter descriptions missing or incomplete. 'hours_back' has no range guidance; 'threshold' lacks explanation of what deviation means; 'data_summary' format is vague.
No pagination or result-limiting guidance. get_fleet_overview and get_fuel_analysis may return unbounded lists, risking context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Returns fuel/distance consumption ranked by driver/vehicle with idle time correlation. Use for: 'Who is burning the most fuel and why?'
Returns exception events grouped by driver for the last N hours. Use for: 'What safety events happened today?'
Execute a SQL query against the DuckDB fleet analytics cache. Tables: driver_baselines, trip_cache, anomaly_log, fleet_rankings. Use for: analytical questions needing custom data slicing.
Error handling absent from tool descriptions. No guidance on retryability, user-fixable errors, or recovery steps for LLM agents.