Africa's first open-standard MCP server for ride-hailing. Enables AI agents to search, book, and manage rides via the Model Context Protocol.
Server has solid naming conventions (all tools start with action verbs like search_, get_, book_, cancel_, estimate_, update_, add_) and comprehensive parameter schemas using Zod with type definitions and descriptions. Tool descriptions are present and reasonably detailed (100-200 chars), clearly explaining what each tool does. However, there are critical gaps: (1) Output schemas are NOT documented, responses are wrapped in generic JSON.stringify() with no structured schema definition, forcing LLMs to parse unstructured text; (2) Tool descriptions lack guidance on when to use one tool vs another (e.g., search_rides vs estimate_fare distinction unclear); (3) No pagination support for search_rides despite potentially large result sets; (4) Parameter constraints could be more explicit (e.g., coordinates should document valid ranges); (5) Error handling returns JSON-wrapped error messages but lacks recovery guidance or error classification (retryable vs fatal); (6) No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk levels (WRITE, REVERSIBLE, READ_ONLY); (7) Security: passenger phone numbers are exposed in parameters and responses, sensitive data handling not documented.
Add an intermediate stop to an active ride. Returns updated fare and total estimated duration.
Book a ride. Returns booking confirmation with ride ID, driver details, and ETA.
Cancel a booked ride. Returns cancellation confirmation and any applicable fees.
Get a fare estimate without booking. Returns price range, distance, and estimated duration.
Convert a place name or address to coordinates. Useful when user gives location names like 'Eko Hotel' instead of coordinates.
Get real-time status of a booked ride. Returns driver location, ETA, and current status.
Output schemas not documented. All tools return JSON.stringify(result, null, 2) with no explicit schema definition. LLMs cannot know what fields to expect, forcing unstructured parsing and increasing hallucination risk.
No tool annotations (destructiveHint, readOnlyHint, idempotentHint). Tools have risk levels (READ_ONLY, WRITE, REVERSIBLE) defined in metadata but not surfaced via MCP tool annotations, limiting agent's ability to reason about safety.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Get available ride types and their descriptions for a given city.
Search for available rides between two locations. Returns fare estimates, ETAs, and available vehicle types.
Update an active ride. Can change destination or update driver notes. Returns updated fare if destination changed.
Error handling lacks recovery guidance and classification. Errors return JSON with {error: true, message} but do not distinguish retryable (network) from user-fixable (invalid ride_id) from fatal errors. Agents cannot plan recovery.
No pagination for search_rides despite potentially large result sets. If multiple drivers available, returning all could blow context window. Needs limit, offset, and total_count in response.
Sensitive data (passenger phone numbers) exposed in tool parameters and returned in responses. No documentation on PII handling or data minimization. Phone numbers should be collected server-side or masked in responses.
search_rides and estimate_fare have overlapping intent (both provide fare info). Descriptions don't clarify when to use one vs the other. estimate_fare should explicitly say 'Use this before booking when you only want a quote; use search_rides to see available drivers.'
Parameter coordinate ranges not documented. Latitude/longitude should specify valid ranges (-90 to 90, -180 to 180) and geographic scope (Africa only?). LLMs may pass invalid coordinates.
No confirmation/dry-run pattern for irreversible operations (book_ride, cancel_ride). Agents can accidentally book rides or cancel them without user confirmation. Should support optional 'confirm' parameter or separate confirm_booking tool.