Connect Fleetio to Claude: Track Fuel, Faults & Inspections
from the team behind Truto
Fleetio in Claude, in about a minute.
The best way to connect Fleetio to Claude is Elaichi: connect Fleetio to Elaichi once, then add Elaichi to Claude as a connector. Two steps, about a minute, with a 14‑day free trial and no credit card required.
- No credit card required
- 500+ connectors
- Credentials vaulted, never read back
-
Start your free trial
14 days free, no credit card required.
-
Connect Fleetio
Once, in Elaichi. Claude never gets more access than you have.
-
Add Elaichi to Claude
In Claude, open Customize, then Connectors, press Add and paste the URL. Sign in and approve.
https://api.elaichi.ai/mcp
Building Fleetio into your own product? This guide is for you.
Connect Fleetio to Claude using a managed MCP server. This guide covers how to generate documentation-driven tools, handle Fleetio's nested schemas and rate limits, and execute complex fleet workflows using natural language.
The developer guide
Learn how to dynamically generate a secure MCP server to connect Fleetio to Claude. Automate vehicle inspections, fuel logging, and fault tracking without writing custom code.
If your team needs to connect Fleetio to Claude to automate vehicle inspections, log fuel entries, or manage diagnostic faults, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's tool calls and the Fleetio REST API. You can either build and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL.
If your team uses ChatGPT, check out our guide on /connect-fleetio-to-chatgpt-manage-vehicle-service-schedules/ or explore our broader architectural overview on /connect-fleetio-to-ai-agents-automate-parts-purchase-orders/.
Giving a Large Language Model (LLM) read and write access to a specialized fleet management system like Fleetio is an engineering challenge. You have to handle API key lifecycles, map massive JSON schemas for nested objects (like vehicles, meters, and service line items) to MCP tool definitions, and deal with strict validation rules. Every time Fleetio updates an endpoint or deprecates a field, you have to update your server code, redeploy, and test the integration.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Fleetio, connect it natively to Claude Desktop, and execute complex fleet management workflows using natural language.
The Engineering Reality of the Fleetio API
A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, the reality of implementing it against specialized B2B APIs is painful. Fleetio is built to manage massive physical assets, maintenance schedules, and supply chains. Its API reflects that physical-world complexity.
If you decide to build a custom Fleetio MCP server, here are the specific integration challenges you will face:
Nested Relationships and Strict Schema Validation
You cannot simply "log fuel" or "record maintenance" with a flat JSON object. Creating a fuel entry requires the vehicle ID, date, volume, and explicitly nested meter_entry_attributes to ensure the vehicle's odometer stays in sync. Creating a service entry requires nesting service_entry_line_items. An LLM has no intuition for this. Your MCP server must present a strictly validated JSON schema to Claude so it knows exactly how to construct these multi-layered payloads.
State Machine Enforcement
Fleetio enforces rigid state machines for operational records. For example, Issues and Work Orders are not just strings you update via a generic PATCH request. You must interact with explicit lifecycle endpoints. An issue must be moved through specific states using tools like fleetio_issues_resolve or fleetio_issues_close. If Claude tries to resolve an issue by updating a generic status text field, the API will reject it.
Rate Limits and Bulk API Requirements
Fleetio heavily rate-limits rapid sequential writes. If you ask an AI agent to update the meter readings for 200 vehicles, the agent might attempt to execute 200 rapid sequential POST requests. Fleetio will return HTTP 429 Too Many Requests.
A critical architectural note: Truto does not retry, throttle, or apply backoff on rate limit errors. When an upstream API like Fleetio returns a 429, Truto passes that error directly back to the caller (your LLM agent). However, Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. It is the responsibility of the caller - your agent framework or LLM orchestration layer - to read these headers and implement the correct retry and backoff logic, or ideally, instruct the LLM to use Fleetio's Bulk API for large operations.
Generating a Fleetio MCP Server
Truto's MCP architecture is documentation-driven. Instead of hand-coding tool definitions, Truto derives them dynamically from the integration's defined endpoints and JSON schemas. A tool only appears in the MCP server if it has a corresponding documentation record, ensuring that Claude only sees well-curated, AI-ready operations.
You can generate an MCP server for your connected Fleetio account in two ways: via the Truto UI or via the REST API.
Method 1: Via the Truto UI
This is the fastest method for internal operational teams.
- Log into your Truto dashboard and navigate to the integrated account page for your Fleetio connection.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration (e.g., restricting access to specific methods like
reador applying tag filters likemaintenance). - Copy the generated secure MCP server URL. (e.g.,
https://api.truto.one/mcp/a1b2c3d4...)
Method 2: Via the API
For engineering teams building multi-tenant AI products, you can generate MCP servers programmatically. Truto generates a cryptographically hashed token stored at the edge, binding the URL exclusively to that specific tenant's Fleetio instance.
curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Fleetio Maintenance Agent",
"config": {
"methods": ["read", "write", "custom"],
"tags": ["vehicles", "maintenance", "fuel"]
}
}'The response will contain the url required by Claude.
Connecting the MCP Server to Claude
Once you have the Truto MCP URL, you can connect it to Claude in seconds. Because the Truto MCP token encapsulates the tenant context, authentication, and tool filtering, the URL is entirely self-contained. No local proxy or middleware is required.
Method A: Via the Claude UI (or ChatGPT)
If you are using Claude's web interface or ChatGPT's custom connectors:
- Open Settings -> Integrations (or Connectors in ChatGPT).
- Click Add MCP Server.
- Give it a descriptive name like "Fleetio Operations".
- Paste the Truto MCP URL and click Add.
- The client will perform a JSON-RPC handshake and instantly populate Claude's tool palette with Fleetio operations.
Method B: Via the Claude Desktop Config File
If you are configuring Claude Desktop locally for development, you can add the server using the standard Server-Sent Events (SSE) transport provided by the open-source MCP SDK.
Open your claude_desktop_config.json file (typically located at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS) and add the following:
{
"mcpServers": {
"fleetio-truto": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"--url",
"https://api.truto.one/mcp/YOUR_TRUTO_MCP_TOKEN"
]
}
}
}Restart Claude Desktop. The hammer icon will appear in your chat bar, indicating that the tools have successfully loaded.
Hero Tools for Fleetio
When Claude connects to the Fleetio MCP server, it receives a flat namespace of heavily documented operations. Here are the highest-leverage tools available for fleet automation.
list_all_fleetio_vehicles
Retrieves active vehicles from your fleet. This tool supports complex filtering, allowing the agent to query by VIN, license plate, status ID, or group ID. It returns a dense payload containing current meter values, ownership status, and physical specs.
"Find the vehicle with license plate 'CA-9921' and tell me its current primary meter reading and assigned driver."
create_a_fleetio_service_entry
Logs a completed service event against a vehicle. Crucially, this schema requires completed_at, vehicle_id, and meter_entry_attributes. The LLM uses the schema descriptions to correctly structure this nested data.
"Log a completed service entry for the Ford F-150 (vehicle ID 8492). The service was done today. Update its meter to 45,200 miles."
create_a_fleetio_fault
Records a diagnostic trouble code (DTC) or telematics alert against a vehicle. The agent must map the fault to an existing fault rule code. For high-volume telematics ingestion, you should instruct the LLM to route data to the Bulk API instead.
"The telematics system just reported a P0300 misfire code for vehicle ID 1120. Create a fault record for this vehicle immediately."
create_a_fleetio_fuel_entry
Logs a fueling event. The schema ensures Claude asks for required fields like volume (gallons/liters) and the nested meter reading to properly calculate fuel economy metrics.
"Driver JohnSmith just fueled up vehicle 44. He put in 18.5 US gallons and the odometer is currently at 112,450 miles. Record this fuel entry."
fleetio_issues_resolve
A custom state-machine tool. Instead of generic updates, this explicitly moves an open issue into the resolved state, marking the underlying problem as fixed.
"Find the open issue regarding the broken taillight on vehicle 881 and mark it as resolved."
get_single_fleetio_work_order_by_id
Fetches the complete hierarchy of a work order, including all nested line items, parts costs, labor costs, and VMRS codes. Essential for auditing repair spend.
"Pull up work order #WO-1092 and break down the total labor costs versus parts costs."
To view the complete inventory of available tools, schemas, and required parameters, visit the Fleetio integration page.
Workflows in Action
MCP servers transform Claude from a passive chatbot into an active system operator. Because Truto normalizes the inputs into a flat JSON-RPC structure, the LLM can chain multiple tools together to resolve complex operational tasks in a single prompt.
Workflow 1: The Telematics Fault & Service Dispatch
The Prompt:
"A driver just reported a check engine light on vehicle license plate 'TX-88A2'. Check if there are any existing open faults for this vehicle. If not, log a new fault for 'Engine Warning', create a new open issue, and draft a work order for our internal shop to inspect it."
How Claude executes this:
list_all_fleetio_vehicles: Claude queries the vehicles endpoint with the filterlicense_plate=TX-88A2to extract the internalvehicle_id.list_all_fleetio_faults: Claude queries the faults endpoint using the retrievedvehicle_idand filters for an open status to avoid duplicating alerts.create_a_fleetio_fault: Finding no existing fault, Claude posts a new fault record mapping to the engine warning rule.create_a_fleetio_issue: Claude generates an open issue describing the problem, linking it to the vehicle.create_a_fleetio_work_order: Claude drafts a pending work order assigned to the internal vendor ID, attaching the issue ID as a reference.
sequenceDiagram
participant User as Fleet Manager
participant Claude as Claude Desktop
participant MCP as Truto MCP Server
participant Fleetio as Fleetio API
User->>Claude: "Report check engine for TX-88A2..."
Claude->>MCP: Call list_all_fleetio_vehicles (plate filter)
MCP->>Fleetio: GET /vehicles?license_plate=TX-88A2
Fleetio-->>MCP: Returns vehicle_id 943
MCP-->>Claude: Returns vehicle_id 943
Claude->>MCP: Call create_a_fleetio_fault
MCP->>Fleetio: POST /faults (vehicle_id 943)
Fleetio-->>MCP: Success (201)
Claude->>MCP: Call create_a_fleetio_issue
MCP->>Fleetio: POST /issues
Fleetio-->>MCP: Returns issue_id 5012
Claude->>MCP: Call create_a_fleetio_work_order
MCP->>Fleetio: POST /work_orders (linking issue_id 5012)
Fleetio-->>MCP: Success (201)
MCP-->>Claude: Tools executed successfully
Claude-->>User: "I have logged the fault, created issue #5012, and drafted the work order."Workflow 2: End-of-Week Fuel & Meter Reconciliation
The Prompt:
"I need to log fuel for vehicle #8822. The receipt shows 24.2 gallons. The current odometer is 82,100 miles. Log the fuel entry, ensure the meter is updated, and tell me the calculated fuel economy based on the last fill-up."
How Claude executes this:
create_a_fleetio_fuel_entry: Claude constructs a payload containing thevehicle_id, theus_gallons(24.2), and the nestedmeter_entry_attributeswith the value82100.- Analysis: The Fleetio API natively computes the fuel economy (e.g., MPG) based on the distance traveled since the previous fuel entry and returns this in the response payload.
- Response generation: Claude parses the API response, confirming the record creation and reading the returned
mpg_usmetric to output a conversational summary to the user.
Security and Access Control
Exposing an industrial asset management system like Fleetio to an autonomous agent requires strict governance. Truto implements security at the token level, ensuring the edge-distributed MCP server only exposes what you explicitly allow.
- Method Filtering: Configure the MCP server to only allow
readoperations (likegetandlist). This prevents the LLM from hallucinating adeletecommand against a critical vehicle record. - Tag Filtering: Restrict the server to specific resource tags. For example, configure the token to only expose tools tagged with
fuelandmeters, hiding financial integrations or purchase orders from the AI. - Expiration Controls (
expires_at): Generate ephemeral MCP servers for temporary access. Set an ISO datetime, and Truto will automatically clean up the edge storage and database records when the time expires, instantly revoking AI access. - Secondary Authentication (
require_api_token_auth): For enterprise deployments, you can mandate that the client application passes a valid Truto API token in theAuthorizationheader alongside the MCP URL, ensuring that leaked URLs cannot be exploited.
Summary
Connecting Fleetio to Claude opens up massive operational efficiencies for fleet managers, mechanics, and dispatchers. By relying on a managed MCP server architecture, you eliminate the overhead of writing point-to-point integration code, managing OAuth states, and maintaining JSON schemas. Truto handles the translation layer, allowing your engineers to focus on building better AI reasoning workflows rather than chasing undocumented API breaking changes.
FAQ
- What is the easiest way to connect Fleetio to Claude?
- The best way to connect Fleetio to Claude is Elaichi: connect Fleetio to Elaichi once, then add Elaichi to Claude as a connector. Two steps, about a minute, with a 14-day free trial and no credit card required.
- How does Truto handle Fleetio API rate limits?
- Truto passes HTTP 429 rate limit errors directly back to the caller (the AI agent). It normalizes the upstream rate limit data into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). Your agent framework is responsible for implementing retry and backoff logic.
- Can I prevent Claude from deleting Fleetio records?
- Yes. When generating the MCP server in Truto, you can use Method Filtering to restrict the tools to 'read' or 'write' operations, explicitly omitting destructive methods like 'delete'.
- How do I connect the Fleetio MCP server to Claude Desktop?
- You can add the Truto MCP URL directly via the Claude Desktop Settings -> Integrations UI, or manually add it to the claude_desktop_config.json file using the @modelcontextprotocol/server-sse package.
- Does Truto support Fleetio's nested payloads for fuel and service entries?
- Yes. Truto dynamically generates JSON schemas from Fleetio's API documentation, ensuring Claude understands how to correctly structure nested objects like meter_entry_attributes.