Skip to main content
Glama

Rivian MCP

Ask Claude or ChatGPT about your Rivian and its recorded drives. Host the recorder in your Cloudflare account, or use the local version for live vehicle data. Tool results go to the AI app you connect. See data handling.

It only reads from Rivian. It sends no commands to your vehicle and changes no settings. This project is unofficial and not affiliated with or endorsed by Rivian.

Claude showing a recorded drive with its route on a map, distance, speed and elevation

Self-host on Cloudflare

You need:

  • A free Cloudflare account. See cost and removal.

  • A free GitHub account. The Deploy button asks you to connect it, and Cloudflare keeps your copy of the project there.

  • Your Rivian email and password, and the phone or email that gets Rivian's one-time code.

To skip GitHub, deploy from a terminal with Node.js 24.

1. Deploy

Deploy to Cloudflare

  1. Select the button and sign in to Cloudflare.

  2. Connect your GitHub account when asked.

  3. On Create and deploy, keep the suggested names and select Deploy.

  4. In the Worker's Settings, then Build, clear Enable Preview Builds.

See the setup guide for screenshots and account sign-up.

The first Rivian account that signs in becomes the owner. Connect right after you deploy.

Cloudflare creates the storage and starts the server. It shows your address:

https://rivian-mcp.<your-name>.workers.dev

Add /mcp to get your connector address:

https://rivian-mcp.<your-name>.workers.dev/mcp

2. Connect Claude

Works on claude.ai and in the Claude desktop and mobile apps.

  1. Open Settings, then Connectors, then Add custom connector.

  2. Name it Rivian and paste your connector address.

  3. Select Add, then Connect.

  4. Sign in with your Rivian email and password, then enter the one-time code Rivian sends you.

Recording starts as soon as you are signed in. In a new chat, ask "Is the recorder running?"

ChatGPT and Codex work too: Connect ChatGPT, Connect Codex.

What you can ask

  • "Show my last drive."

  • "List my drives this week."

  • "Show my stats for the last 30 days."

  • "Show my charging sessions."

  • "Export my last drive for Roadbook."

  • "What's my battery level?"

  • "Is there a software update available?"

  • "Are all the doors locked?"

Take your drives to Roadbook

Export your route, places and stats for Roadbook, an electric road-trip planner. Importing requires a Roadbook connector with an import_drive tool. Check its availability and privacy settings before sending a drive. See the export format.

Tools

Tool

What it does

show_drive

One drive with its route map and speed, energy and elevation charts

show_stats

Totals and efficiency for a period, with every route on one map

show_charging

Charging sessions with energy added, power and battery level curves

list_drives

Drives with places, local times, energy, elevation and quality

get_drive

One drive as a GeoJSON Feature with the route and all stats

export_drive

One drive or a date range as a Roadbook payload, GeoJSON or GPX

recorder_status

Whether the recorder is signed in and connected

rivian_get_user_info

Your account, vehicles and software versions

rivian_get_vehicle_state

Live battery, doors, tires, location, climate and OTA status

rivian_get_ota_status

Current and available software versions

rivian_get_charging_session

Active charging session

rivian_get_charging_history

Past charging sessions with energy, cost and location

rivian_get_charging_schedule

Your charging schedule

rivian_get_drivers_and_keys

Drivers and their phone keys and key fobs

Cost, updates, where your data lives and how to remove it are in docs/cloudflare.md.

Related MCP server: Tesla Tessie MCP Server

Run it locally

The npm package provides a CLI and a local MCP server. Both query your vehicle while they are running; neither records drives. You need Node.js 24 or newer.

CLI

npx rivian-mcp ota    # software update status
npx rivian-mcp stats  # full vehicle state

Or install it globally:

npm install -g rivian-mcp
rivian ota
rivian stats

The CLI reads RIVIAN_EMAIL and RIVIAN_PASSWORD from the environment, or asks for them. Password and one-time-code prompts require an interactive terminal.

Local MCP server

claude mcp add rivian \
  -e RIVIAN_EMAIL=your@email.com \
  -e RIVIAN_PASSWORD=your-password \
  -- npx rivian-mcp

Add to ~/.claude.json or your project's .mcp.json:

{
  "mcpServers": {
    "rivian": {
      "command": "npx",
      "args": ["-y", "rivian-mcp"],
      "env": {
        "RIVIAN_EMAIL": "your@email.com",
        "RIVIAN_PASSWORD": "your-password"
      }
    }
  }
}

Rivian asks for a one-time code on every new sign-in:

  1. Ask Claude, "Log in to Rivian."

  2. Rivian sends a code to your phone or email.

  3. Tell Claude, "The code is 123456."

The local server adds rivian_login and rivian_submit_otp for this step. The CLI and the local server share the session in ~/.rivian-mcp/session.json. It is reused for up to 90 days.

Support

If you are thinking about getting a Rivian, my referral code gets you benefits on your purchase and supports this project:

Get a Rivian R1 with referral benefits

Development

git clone https://github.com/zentered-studios/rivian-mcp.git
cd rivian-mcp
npm ci
npm run typecheck
npm run lint
npm test
npm run build
npx wrangler deploy --dry-run

Use Node.js 24 or newer. Tests use fixtures, mocked requests and an in-memory SQLite database; they do not need Rivian credentials or a Cloudflare account. The dry run builds the Worker and embedded views without deploying.

For local Worker development, run npm run worker:dev and apply the schema with npx wrangler d1 migrations apply DB --local. No .dev.vars file is required. To pin the owner, create an ignored .dev.vars containing RIVIAN_EMAIL="you@example.com". Hosted AI connectors need a publicly reachable HTTPS Worker; localhost is for development.

Register live queries in src/tools.ts and local login tools in src/mcp-server.ts. Recorder tools belong in worker/src/mcp.ts; embedded views belong in worker/ui/. Add a regression test for behavior changes. Rivian access must remain read-only apart from authentication.

See tool-call examples for JSON arguments.

Claude Code plugin

The plugin documents the Rivian API fields, authentication and formatters for Claude Code.

claude /plugin marketplace add zentered-studios/rivian-mcp
claude /plugin install rivian-mcp@rivian-ai

References

Available Tools

9 tools
rivian_get_charging_historyA
Read-only

List charging history newest first, with energy, cost, duration and location.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of newest sessions to show. Defaults to 25.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the ordering guarantee and the returned field set, but says nothing about auth requirements, result volume, or how far back history goes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and resource, with no filler or redundancy. Every clause (ordering, returned fields) carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the payload fields (energy, cost, duration, location), so an agent knows what it gets back. Handling of truncation or pagination beyond 'limit' is left unstated, which is the only real gap for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'limit' parameter is fully documented in the schema, including its default of 25. The description does not mention the parameter at all, so it adds nothing beyond the schema — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List charging history') plus the ordering and the fields returned, which cleanly separates it from the singular rivian_get_charging_session. It does not, however, explicitly name that sibling or contrast scope, so differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'History, newest first' implies past sessions rather than the live session, which gives an agent a usable hint. But there is no explicit when-to-use statement, no exclusion, and no pointer to rivian_get_charging_session for current-session data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rivian_get_charging_scheduleA
Read-only

Get the days and times your vehicle is scheduled to charge.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful distinction that this returns the configured schedule rather than a live session, but says nothing about auth needs or return shape. With annotations carrying the safety burden, this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler and no redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read tool with no output schema, the description conveys the essential return content (days and times). It could mention that it reflects the vehicle's configured charge schedule versus live state, but for this complexity level it is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to explain or compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (charging schedule) and clarifies the payload as the scheduled days and times, which cleanly separates it from collected siblings like get_charging_session and get_charging_history. It does not explicitly name those siblings, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no contrast with the charging_session/charging_history siblings, and no prerequisites (e.g., auth or vehicle-online requirement) stated. The agent must infer all context from the resource name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rivian_get_charging_sessionA
Read-only

Get the active charging session, including available power, battery level, time remaining and cost.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful detail that this targets the currently active session and lists returned data, but says nothing about behavior when no session is active, auth requirements, or latency/rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the key qualifier ('active') and return payload front-loaded. Nothing is wasted, though it is minimal enough that it could have absorbed one routing clause at no cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with no output schema, the description usefully enumerates the returned fields (power, battery level, time remaining, cost). The only gap is not stating what happens when there is no active session.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The listed return fields are a small bonus but are not parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (active charging session) and enumerates the returned fields, which distinguishes it from the history and schedule siblings. It never names those siblings explicitly, so the differentiation is inferential 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'active' implies this is for the current session rather than past sessions or schedules, which is weak implicit guidance. There is no explicit when-to-use, when-not-to-use, or pointer to rivian_get_charging_history / rivian_get_charging_schedule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rivian_get_drivers_and_keysA
Read-only

List drivers, phone keys and key fobs with access to your vehicle.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The description restates the read-only listing but adds no behavioral context beyond that — no auth requirement, no indication of result size, ordering, or what happens with vehicles that have no keys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the verb and all three resource types front-loaded. No filler, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list with no output schema, the description covers the essential 'what'. It omits only minor context such as the auth prerequisite and whether returned key/driver identifiers feed other calls.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a scopeless, full-list call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and three concrete resources (drivers, phone keys, key fobs) scoped to 'your vehicle'. That is far more informative than the sibling get_* tools' resources, though it doesn't explicitly contrast itself with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource being listed — an agent can infer this is the tool for enumerating vehicle access holders — but there is no explicit when-to-use, prerequisite (e.g., login/token), or alternative routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rivian_get_ota_statusA
Read-only

Get the installed software version and any available update.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and external-state profile is covered. The description adds that the result covers both the installed version and available updates, but says nothing about freshness, caching, or whether the vehicle must be online.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; every word contributes to identifying the resource and the returned content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with no output schema, naming the returned content (installed version + available update) is what an agent most needs. Minor gaps remain around staleness/refresh behavior and account prerequisites, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter semantics to document and none are misrepresented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb ('Get') and a specific resource pair (installed software version and available OTA update), which is clearly distinct from sibling read tools like get_vehicle_state or get_charging_schedule. It does not explicitly name or contrast with any sibling, keeping it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative-tool guidance is given. The only usage signal is implicit in the resource name, which matches the 'no guidance' band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rivian_get_user_infoA
Read-only

Get your account details, vehicles and software versions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description usefully enumerates the returned data categories, but adds nothing about auth requirements, freshness, or partial-failure behavior for a read that crosses account, vehicle, and software domains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. Every word contributes to identifying the resource returned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description carries the burden of describing the return payload and does so by naming the three data categories. Adequate for a simple read tool, though it could note whether results are scoped to the authenticated account only.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There is no parameter behavior for the description to clarify.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and names the resources returned (account details, vehicles, software versions), which lets an agent distinguish it from state-focused siblings like rivian_get_vehicle_state. It stops short of explicitly naming which sibling to use instead for vehicle-specific reads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, and none of the sibling tools are referenced. The agent must infer that this is the account-level entry point rather than, say, rivian_get_drivers_and_keys.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rivian_get_vehicle_stateB
Read-only

Get vehicle state: battery, range, doors, windows, tires, location, climate, seat heating and ventilation, steering wheel heat, software versions, security and trailer status.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertiesNoSpecific properties to check. Leave empty for a full status report.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, externally-dependent read. The description adds genuine value by listing the telemetry domains returned, but omits behavioral realities such as authentication requirements, whether the read wakes the vehicle, latency, or partial-availability of fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the verb and scope first, followed by a dense but relevant field enumeration; there is no filler or restatement of the title. The trailing laundry list is serviceable, though it reads as a dump rather than a structured breakdown.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single optional parameter, full schema coverage, safety annotations, and no output schema, the description carries the burden of describing return content — and the field enumeration does that reasonably well. It stops short of explaining the no-argument full-report behavior (left to the schema) or the failure modes when the vehicle is unreachable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one optional parameter, so the baseline is 3. The enumerated field list implicitly hints at valid property names that could be passed in 'properties', but the description gives no syntax, expected casing, or examples beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Get vehicle state') and enumerates the data domains covered — battery, range, doors, windows, tires, location, climate, seat heat, software versions, security, trailer. That scope is distinct from the sibling tools (charging, OTA, drivers/keys, user info), but the description never names an alternative to draw the boundary explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says what is returned but nothing about when to call this versus rivian_get_user_info, rivian_get_ota_status, or the charging siblings. No prerequisites (e.g. requiring a completed login), no mention of vehicle-awake/offline conditions, and no guidance that the empty-property call is the full-report path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rivian_loginA

Sign in to Rivian. If Rivian sends a verification code to your phone or email, submit it with rivian_submit_otp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false); they do not describe the interactive, multi-step nature of this flow. The description adds real value by disclosing that a second OTP call may be needed, but it doesn't say what credentials are used, whether a browser is opened, or what state is established on success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and followed immediately by the conditional follow-up. No filler, nothing redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description covers the essential flow, but for an auth entry point it leaves real questions open: where the credentials come from, whether the call blocks waiting for the OTP, and what a successful login enables for the sibling read tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema carries no parameter semantics for the description to supplement. Baseline 4 applies; there is nothing in the description that misleads about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Sign in to Rivian" is a specific verb+resource that an agent can immediately distinguish from the read-only sibling tools like rivian_get_vehicle_state. It doesn't explicitly say it is the entry point of the auth flow for the other tools, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It routes the agent correctly by naming rivian_submit_otp and the exact condition that selects it (Rivian sends a verification code). It doesn't state prerequisites such as required credentials or session prerequisites, but it gives clear usage context with no real alternative to confuse the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rivian_submit_otpA

Complete Rivian sign-in with the verification code sent to your phone or email.

ParametersJSON Schema
NameRequiredDescriptionDefault
otp_codeYesThe verification code

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful context that the code arrives out-of-band via phone/email, but says nothing about failure behavior, code expiry, retry/rate limits, or what successful completion changes (session state).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 14-word sentence with the action front-loaded and zero filler; nothing could be removed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter flow-completion tool with no output schema and annotations covering the safety profile, the description is nearly complete — a user knows what to send and why. It would be fully complete if it named rivian_login as the required predecessor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is documented as 'The verification code'. The description adds only the delivery channel (phone or email) and no format guidance (length, digits vs alphanumeric), so per the high-coverage baseline this sits at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Complete Rivian sign-in') and explains the OTP's origin (phone or email), so an agent understands it is the second step of authentication rather than the initiator. It does not explicitly name rivian_login as the sibling it follows, so differentiation is implied 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Complete Rivian sign-in' and 'the verification code sent to your phone or email' — the agent can infer this runs after a code is issued. There is no explicit when-to-use/when-not, no stated prerequisite tool, and no mention of what to do if the code is missing or expired.

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.

  1. 9 tool updatesv1.9.3
    • Changedrivian_get_charging_history2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Number of newest sessions to show. Defaults to 25.",
        +  "exclusiveMinimum": 0,
        +  "maximum": 9007199254740991,
        +  "type": "integer"
        +}
    • Changedrivian_get_charging_schedule1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedrivian_get_charging_session1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedrivian_get_drivers_and_keys1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedrivian_get_ota_status1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedrivian_get_user_info1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedrivian_get_vehicle_state2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrivian_login1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedrivian_submit_otp2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 6 tool updatesv1.5.4
    • Addedrivian_get_charging_history
    • Addedrivian_get_charging_schedule
    • Changedrivian_get_charging_session3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / vehicle_id
        Removed value: -{
        -  "description": "Vehicle ID from your account info",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "vehicle_id"
        -]
    • Changedrivian_get_drivers_and_keys3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / vehicle_id
        Removed value: -{
        -  "description": "Vehicle ID from your account info",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "vehicle_id"
        -]
    • Changedrivian_get_ota_status3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / vehicle_id
        Removed value: -{
        -  "description": "Vehicle ID from your account info",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "vehicle_id"
        -]
    • Changedrivian_get_vehicle_state2 fields changed
      • removedInput schema / properties / vehicle_id
        Removed value: -{
        -  "description": "Vehicle ID from your account info",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "vehicle_id"
        -]
  3. 7 tool updatesv1.0.0
    • First observedrivian_get_charging_session
    • First observedrivian_get_drivers_and_keys
    • First observedrivian_get_ota_status
    • First observedrivian_get_user_info
    • First observedrivian_get_vehicle_state
    • First observedrivian_login
    • First observedrivian_submit_otp

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Each tool targets a distinct aspect (auth, account, vehicle state, OTA, three charging facets, keys), and descriptions clarify boundaries well. The only mild overlap is rivian_get_user_info vs rivian_get_drivers_and_keys for access/drivers, but the descriptions keep them separable.

Naming Consistency5/5

All tools share the rivian_ prefix and snake_case, with a predictable rivian_get_<noun> pattern for reads and rivian_login/rivian_submit_otp as the clear auth pair. No convention mixing.

Tool Count5/5

Nine tools is well-scoped for a vehicle API client, with each tool covering a meaningful slice (state, charging session/history/schedule, OTA, keys). No filler or redundant entries.

Completeness3/5

The surface is almost entirely read-only: there are no vehicle command tools (lock/unlock, climate, honk) and no way to set or modify the charging schedule, only read it. If read-only is intentional this is minor, but as an apparent Rivian control surface there are notable write/action gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables Claude Desktop to access Tesla vehicle data through the Tessie API. Users can query their car's location, battery level, mileage, driving history, and charging status using natural language.
    5
    9
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides access to Tesla vehicle telemetry data via the Tessie API, enabling real-time monitoring of battery status, charging state, climate controls, location, and other vehicle metrics through 30+ tools with intelligent caching.
    -
  • A
    license
    C
    quality
    A
    maintenance
    Enables reading Tesla vehicle data from a TeslaMate PostgreSQL database, including status, trips, charging, efficiency, weather integration, and more, via 38 tools for MCP-compatible clients like Claude Code.
    38
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol server that connects Claude to your own Kia vehicle through the Kia Owners API, enabling vehicle status, location, odometer, EV charge state, and confirm-gated commands for doors, climate, and charging.
    16
    591 npm
    MIT