Fleetkeep
Server Details
Review fleet actions, search vehicles and inspect maintenance dates and reminder delivery history.
- Status
- Healthy
- Uptime
- 95.2% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
The three tools have mostly distinct roles: fleet-wide action triage, single-vehicle action detail, and vehicle search. The main possible confusion is between the fleet action brief and vehicle action detail, since both return maintenance/compliance actions, but their scopes are clearly stated.
Names are readable and mostly follow a verb_noun style: get_fleet_action_brief and get_vehicle_action_detail use get_, while search_vehicles uses search_. This is a minor deviation justified by the different operation type, not a problematic inconsistency.
Three tools is slightly thin but reasonable for a narrowly scoped read-only fleet action triage surface. Each tool serves a distinct layer: fleet overview, vehicle drilldown, and search.
The read-only tools cover fleet-level actions, per-vehicle detail, and vehicle search, but there is no way to update compliance dates, schedule or close maintenance, or manage reminders. The explicit coverage limits and lack of totals also create notable dead ends for fleet-wide claims.
Available Tools
3 toolsget_fleet_action_briefGet fleet action briefARead-onlyIdempotentInspect
Return the top 20 MOT, tax, insurance, service and open maintenance actions across up to 300 non-archived vehicles. Compliance actions include overdue dates and the next 30 days; all open maintenance remains visible, with dates beyond 30 days classified as open. Larger fleets examine the first 300 non-archived vehicles by registration and report incomplete coverage with an unknown total. Check coverage before making fleet-wide claims. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| actions | Yes | |
| coverage | Yes | |
| data_notice | Yes | |
| generated_at | Yes | |
| servicing_context | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, closed-world), the description discloses the substantive behavioral traits: a 300-vehicle cap sampled by registration order, an 'incomplete coverage with an unknown total' signal for larger fleets, and the rule that maintenance dates beyond 30 days are classified as open rather than dropped. That is exactly the truncation and completeness context an agent needs to avoid overstating fleet-wide results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope, category list and coverage caveat are front-loaded, and the closing 'Read-only' merely repeats the annotation. A few clauses are dense, but almost every sentence carries information the agent cannot get from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. The description covers the category set, the date windows, the sampling cap and the coverage caveat, leaving only the `limit` parameter's semantics and any ordering rationale unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single `limit` parameter has no description, so the description carries the burden. Saying 'top 20' implies the default and cap, but it never explains that `limit` can be lowered below 20 (maximum 20, minimum 1) or what truncating it does to the ranking.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns the top MOT, tax, insurance, service and open maintenance actions across a fleet of up to 300 non-archived vehicles. That is clearly distinguishable from get_vehicle_action_detail (per-vehicle) and search_vehicles (search), though neither sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is one explicit usage condition — 'Check coverage before making fleet-wide claims' — which tells the agent when the result is not authoritative. However, there is no guidance on when to prefer this brief over get_vehicle_action_detail or search_vehicles, and no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehicle_action_detailGet vehicle action and reminder detailARead-onlyIdempotentInspect
Return up to 20 actions and the latest 20 reminder records for one owned vehicle. These lists are not exhaustive; open_maintenance_count is the exact open-maintenance total. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| vehicle_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| detail | Yes | |
| data_notice | Yes | |
| servicing_context | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the trailing 'Read-only.' adds nothing new. The description does earn credit elsewhere: it discloses hard caps (20 actions, 20 reminders), warns the lists are truncated, and points to open_maintenance_count as the only exact total — behavioral traits an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the return contents followed by the truncation caveat and the exactness escape hatch. The final 'Read-only.' is redundant with annotations and is the one sentence that does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return fields needn't be enumerated, and the description correctly focuses on the non-obvious part: that the lists are partial and that open_maintenance_count is authoritative. The only gap is the lack of any statement about invalid or unauthorized vehicle_id behavior for a single-required-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter and schema description coverage is 0%, so the description must carry the semantics. It adds the meaningful ownership constraint ('one owned vehicle'), implying the caller must have access to that vehicle_id, but says nothing about the UUID format or what happens for an unowned or invalid ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Return') and precise resources ('actions and the latest 20 reminder records') scoped to 'one owned vehicle', which clearly separates it from the fleet-level sibling get_fleet_action_brief. It stops short of explicitly naming that sibling, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one owned vehicle' implies this is the per-vehicle drill-down used after picking a vehicle via search_vehicles, but no when-to-use or when-not-to-use guidance is given and neither sibling is named. Usage is implied rather than instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_vehiclesSearch vehicles, MOT and maintenanceARead-onlyIdempotentInspect
Search owned vehicles with exact open-maintenance counts and earliest maintenance dates. Returns at most the requested limit, not a total match count. Narrow the query if the limit is reached. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| vehicles | Yes | |
| data_notice | Yes | |
| servicing_context | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description nonetheless adds a genuinely useful behavioral fact not present in the structured fields: results are capped at the requested limit and no total match count is returned, with the recommended remedy. Ordering of results and cost/latency behavior remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what is returned and then the limit caveat. Minimal waste; the trailing "Read-only." merely restates the readOnlyHint annotation and could be dropped, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (two optional params) and has an output schema, so return values need not be described. However, the title advertises MOT and maintenance coverage while the description never explains how a query reaches those domains, leaving the core retrieval semantics underspecified for what is billed as a multi-domain search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for two parameters. It explains the limit's truncation semantics well, but says nothing about what the query string searches across (vehicle name, registration, MOT status, maintenance terms), which is the main semantic gap an agent would face.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Search owned vehicles" gives a specific verb and resource, and the description adds what is special about the result set (exact open-maintenance counts, earliest maintenance dates). It does not differentiate itself from the siblings get_fleet_action_brief and get_vehicle_action_detail, so an agent must infer that this is the list/search entry point rather than the detail or briefing view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage directive is "Narrow the query if the limit is reached," which addresses result truncation rather than tool selection. There is no statement of when to prefer this tool over the two sibling tools or what a query string actually matches, so the usage context is only implied by the name and title.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
get_fleet_action_brief2 fields changed- added
Output schema / properties / servicing_contextAdded value: +{ + "additionalProperties": false, + "properties": { + "definitions": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "evidence_rules": { + "additionalProperties": { + "const": false, + "type": "boolean" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "evidence_statuses": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "schedule_matches_requiring_review": { + "items": { + "enum": [ + "needs_review", + "unsupported" + ], + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "definitions", + "evidence_rules", + "schedule_matches_requiring_review", + "evidence_statuses" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "generated_at", - "data_notice", - "count", - "coverage", - "actions" -]New value: +[ + "servicing_context", + "generated_at", + "data_notice", + "count", + "coverage", + "actions" +]
- Changed
get_vehicle_action_detail2 fields changed- added
Output schema / properties / servicing_contextAdded value: +{ + "additionalProperties": false, + "properties": { + "definitions": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "evidence_rules": { + "additionalProperties": { + "const": false, + "type": "boolean" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "evidence_statuses": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "schedule_matches_requiring_review": { + "items": { + "enum": [ + "needs_review", + "unsupported" + ], + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "definitions", + "evidence_rules", + "schedule_matches_requiring_review", + "evidence_statuses" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "data_notice", - "detail" -]New value: +[ + "servicing_context", + "data_notice", + "detail" +]
- Changed
search_vehicles2 fields changed- added
Output schema / properties / servicing_contextAdded value: +{ + "additionalProperties": false, + "properties": { + "definitions": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "evidence_rules": { + "additionalProperties": { + "const": false, + "type": "boolean" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "evidence_statuses": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "schedule_matches_requiring_review": { + "items": { + "enum": [ + "needs_review", + "unsupported" + ], + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "definitions", + "evidence_rules", + "schedule_matches_requiring_review", + "evidence_statuses" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "data_notice", - "count", - "vehicles" -]New value: +[ + "servicing_context", + "data_notice", + "count", + "vehicles" +]
3 tool updates
- First observed
get_fleet_action_brief - First observed
get_vehicle_action_detail - First observed
search_vehicles
Publisher details
- Operator
- Studea Limited · Publisher source
- Operator website
- https://fleetkeep.co.uk/ · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://fleetkeep.co.uk/developers · Publisher source
- Trust center
- Not available
- Restrictions
- An active fleet plan and OAuth authorisation through a supported registered client are required. This listing exposes three read-only tools. Broader API and CLI permissions are separate. · Publisher source
Related MCP Connectors
Look up shop customers, vehicles, work orders and parts, and create orders or book appointments.
Search customers, manage quotes, work orders, action items, and calendar events for your business
Read your own vehicles' OBD-II scans, fault codes, telemetry and trips stored in OBD Vault.
Read Fleetio vehicles, work orders, service, issues, inspections, fuel, parts; log issues, meters.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables managing personal vehicle history including mileage, maintenance, expenses, reminders, and document references through MCP tools and resources, all stored locally in SQLite.1MIT
- FlicenseAqualityBmaintenanceEnables fleet management through natural language, providing tools to list vehicles, retrieve live status, trips, and fuel data from Cartrack's Fleet API, and synchronize daily and monthly reports to Google Sheets.4-
- FlicenseAqualityBmaintenanceEnables MCP clients to retrieve audited New Zealand vehicle records with full evidence, provenance, confidence, conflict state, revision history, and exact source observations through read-only tools.6-
- AlicenseBqualityDmaintenanceFleet management in your assistant — vehicles, routes, drivers and HOS compliance over Samsara's public API.214MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.