Limits, troubleshooting & FAQ
Limits that apply to agents
An agent is an ordinary API client. Every tool call is one request against the key's rate limits and quotas — nothing is added, nothing is waived.
| Tier | rps (burst) | Monthly API calls | transfer_bytes / month |
|---|---|---|---|
| free | 1 (2) | 300 | 0 |
| starter | 1 (3) | 3,500 | 0 |
| standard | 3 (6) | 70,500 | 5.6 GB × cameras |
| pro | 10 (25) | 990,500 | 10 GB × cameras |
| enterprise | 25 (50) | 14,985,500 | 18 GB × cameras |
Two things are specific to agents:
- One question can be several calls. A multi-step answer (events → track → video) is three requests. On the free plan's 300 calls a month that matters; from Standard up it rarely does — see the pricing page for how the monthly allowance is derived.
get_event_videoand the SD-card tools spendtransfer_bytes— a flat 6 MB per event link, the recording's size per SD-card recall, whether the file is opened or not. Agents that "helpfully" fetch a clip for every event will burn it; ask for a clip when you want one, and preferplay_sd_recording(sub-stream, 5–10 MB) over a full-quality recall (often 300 MB or more).
Common errors
| What the agent reports | Cause | Fix |
|---|---|---|
401 unauthorized / invalid_token | No credentials, a revoked key, or an OAuth token sealed over a key that was since revoked | Check the key in Management › Open API; for OAuth connectors, disconnect and reconnect with the current key — see Rotating the key |
403 insufficient_scope | The tool needs a scope the key (or the OAuth consent) does not carry | Look the tool up in the Tools reference — either your plan does not grant that scope yet, or you left it unchecked on the consent screen. Reconnect and grant it, or issue a key with it |
403 quota_exceeded on get_event_video, play_sd_recording or recall_sd_recording | Monthly transfer_bytes allowance exhausted — the message states the limit in GB | Wait for the monthly reset, prefer sub-stream playback, or move up a plan |
429 with Retry-After | Per-second rate limit or monthly call limit hit | Ask the agent to slow down or retry after the header value; monthly limits reset on the 1st |
409 device_busy on play_sd_recording / recall_sd_recording | The dashcam is already uploading another recording | Wait for the running recall (get_recall_job) or cancel it, then retry |
"confirmation token expired / invalid" on confirm_action | More than 5 minutes passed, the token was altered, or it was issued to a different key | Ask the agent to propose the action again and approve it within 5 minutes |
404 route_not_found | An unsupported path or method reached the API | Update the MCP server if you run the stdio version; the remote server is always current |
Tools whose scope the key lacks are not hidden from the client — they fail
with 403 when called, so the agent can tell you what would be needed rather
than silently doing nothing.
Client quirks
ChatGPT
- Custom connectors require OAuth; a Bearer header cannot be configured. Enable Developer mode under Settings → Connectors first.
- After a key rotation the connector still looks connected; every tool fails with
401until you reconnect. - Write scopes are unchecked by default on the consent screen — if writes fail with
403, that is why.
Claude (claude.ai / Desktop)
- Both OAuth and header mode work. Header mode carries the key's full permissions; OAuth lets you narrow them.
- Claude honors
destructiveHintand may show its own confirmation before callingdelete_*tools — that prompt is in addition to the server-side gate, not instead of it.
Claude Code
claude mcp add --transport http fleeta https://mcp.fleeta.io/ --header "Authorization: Bearer flt_…". Without the header, the OAuth flow runs on first use.claude mcp listshows the connection state.
Cursor
- Header mode only, via
.cursor/mcp.json. Restart the MCP server from Cursor's MCP settings after editing the file.
Local stdio
- Needs Node 18+ and the
FLEETA_API_KEYenvironment variable. Keep the package updated; the remote URL never goes stale.
Any client
- Large answers may carry a
NOTE:line before the JSON. Every tool result is compact JSON. When one exceeds roughly 60,000 characters the server prefixes a single plain-text line saying so, because several clients silently drop or file away an oversized tool result and the model then reports an empty fleet. The data after that line is complete and untruncated. If you parse tool output yourself, take everything from the first{; feeding the whole string toJSON.parsefails when the note is present. The note also tells the model to re-ask with a narrower request — a lowerlimit, apsn, a shorterfrom/torange or agroupId— rather than concluding there is no data. - The server is stateless and answers plain JSON over streamable HTTP. A client that insists on an SSE stream should still work, but the remote URL is the reference path.
- The previous raw AWS Function URL still answers, including tokens issued there, but new setups should use
https://mcp.fleeta.io/.
FAQ
Does MCP cost extra? No. AI access is included in every plan; tool calls count against the same monthly allowance as REST calls.
Can I try it without a dashcam?
Yes — the public flt_test_… sandbox keys work on
the MCP server and return a 12-vehicle demo fleet. Use the key for the tier you
intend to buy, and you will see exactly which tools it unlocks.
Which plan do I need for…? Vehicle status: free. Safety events and trips: Starter. Reports and event video: Standard. Geofences, SD-card recordings, webhooks: Pro. Deleting SD recordings and the audit log: Enterprise. The full matrix is in the Tools reference.
Is my fleet data used to train AI models? Fleeta does not use your data to train any model, and the MCP server stores nothing about your requests beyond the same request log the REST API keeps. What the assistant does with an answer is governed by that product's own data policy — check the settings of the client you use.
Can an agent see other companies' fleets? No. Tenant isolation is enforced per key, at the API, on every call.
Can an agent change something on a vehicle by itself?
No. Every write tool returns a proposal; nothing executes until a person
approves it and the agent calls confirm_action — see the
approval gate.
Can I see what an agent did?
Yes. The API request log in Management › Open API lists every call with the key
that made it, and audit_logs (enterprise) covers key and account events.
Something else? Email Fleeta support with the client you use, the tool name and the error text.