Skip to main content
The Volteras MCP server exposes two read-only tools. Neither changes anything in your account, and both only ever see the organization your credential belongs to. You rarely call these yourself. Your AI client picks the tool and fills in the arguments from what you ask it. This page is for when you want to know exactly what the model can see, or you are calling the server from your own code.

get_me

Reports who is calling: the organization the connection is bound to, the portal user acting through it (if any), and the scopes it holds. Any valid token can call it, so it is the quickest way to check a new connection and to find out which scopes are missing. Arguments: none.

Result

object
required
The organization every tool call is bounded to.
object | null
required
The portal user acting through this connection. null when a machine credential is calling.
string
required
user for a person who signed in through the Volteras Portal and is still active in the organization. organization_credential for a machine credential, or for a user token whose person has since left the organization.
string
required
The OAuth client the token was issued to: your AI client’s metadata URL when you signed in, or the client id of an MCP credential.
string[]
required
The scopes granted to this connection. See Scopes.
Example result

list_vehicles

Lists your organization’s connected vehicles, filtered and paged, oldest connection first. By default only vehicles with an active connection are listed and counted. That means a connection_status of CONNECTED, RECONNECTION_REQUIRED or PENDING_DISCONNECTION. Set include_inactive to also see the rest. Scope needed: vehicles:read. Position fields also need location:read.

Arguments

string[]
The fields each vehicle carries. Omit it to get the default set: id, vin, make, model, model_year, registration_plate and connection_status. Only the fields you select appear in the result. See Vehicle fields for the full list.
object[]
Clauses every returned vehicle must satisfy. Clauses are combined with AND.
integer
default:"50"
Maximum number of vehicles in the page. Between 1 and 200.
string
The next_cursor from the previous page. See Paging.
boolean
default:"false"
Also list and count vehicles whose connection is not active: DISCONNECTED, PENDING_CONNECTION and INCOMPATIBLE. A filter on one of these statuses only matches when this is true.

Result

object[]
required
One page of vehicles. Each vehicle carries exactly the fields you selected.
integer
required
How many vehicles match across all pages.
string | null
required
Pass this back as cursor to fetch the next page. null on the last page.
Example result

Vehicle fields

A field you request but whose value is unavailable comes back as null. Every telemetry value has a matching *_at field saying when the vehicle reported it. All timestamps are ISO 8601, in UTC. Units follow our standardized units. vin and registration_plate can be selected but not filtered on. Some values depend on what each vehicle’s connection was granted, not on your credential. These come back as null for vehicles whose connection does not allow them:
  • vin and registration_plate need the connection to grant access to vehicle information.
  • Telemetry and position fields need the connection to grant telemetry access.
A filter on a consent-gated field only matches vehicles whose connection grants that access. So a filter like state_of_charge < 20 never returns a vehicle whose telemetry you cannot see. See Scopes for how connection consent works.

Filter operators

connection_status takes ==, !=, in, isNull and isNotNull, and its values are case-insensitive. A clause using an operator its field does not take is refused with a message listing the operators that field accepts. Timestamp values are ISO 8601 dates or datetimes. A bare date stands for the whole day under == and !=, for the start of the day under < and >=, and for the end of the day under <= and >.
Vehicles below 20% charge, last seen this week

Paging

When a page has a next_cursor, pass it back unchanged as cursor with the same filters, page_size and include_inactive to get the next page. You can change fields between pages. A cursor belongs to one walk through the results. It is refused if any of those arguments change, and it expires one hour after the first page was fetched. In either case, call again without a cursor to start over.

Errors

When a call cannot be answered, the tool returns an error result with a plain sentence explaining why, which your AI client reads and usually acts on. Common ones: A connection without the vehicles:read scope does not see list_vehicles at all: the server leaves it out of the tool list. If your client only shows get_me, call it to see which scopes your connection holds.