TeslaMate MCP Server
Provides tools to interact with TeslaMate, a self-hosted data logger for Tesla vehicles, enabling health checks, logging suspension/resume, and GPX data retrieval.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TeslaMate MCP Servercheck health of TeslaMate"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
teslamate-mcp
MCP server built from skeleton-mcp that exposes TeslaMate HTTP APIs.
What This Server Exposes
TeslaMate endpoints covered by dedicated tools:
GET /health_checkPUT /api/car/:id/logging/suspendPUT /api/car/:id/logging/resumeGET /drive/:id/gpx
Additional MCP tools:
teslamate_connection_infoteslamate_scope_infoteslamate_list_endpointsteslamate_query_suggestion(query recommendation + schema discovery across all tools)teslamate_api_request(generic passthrough to support all currently available TeslaMate routes)
Related MCP server: ha-dev-tools-mcp
License
MIT
Tool Catalog
Each definition below includes usage boundaries, risk level, prerequisites, input constraints, response shape, and examples.
teslamate_query_suggestion
Purpose: Recommends which TeslaMate MCP tools to call for a natural-language goal and can return schema discovery for all tools.
Use when:
You want a guided sequence before making API calls.
You need a quick catalog of each tool's expected inputs and risk profile.
Do not use when:
You already know the exact tool and inputs to invoke.
Risk: Read-only.
Permissions and prerequisites:
No admin key required.
Parameters:
query(optional, string): natural-language intent such as "export drive gpx" or "suspend logging for car 1".includeSchemas(optional, boolean, defaulttrue): include full per-tool schema discovery output.maxRecommendations(optional, integer, default5, max8): number of ranked recommendations.
Expected response shape:
JSON object with ranked recommendations, rationale, safe usage sequence, and optional full schema discovery.
Recommended prerequisite tools:
None.
Recommended follow-up tools:
teslamate_scope_info,teslamate_connection_info,teslamate_health_check, and the top-ranked recommendation.
Example invocation:
{
"name": "teslamate_query_suggestion",
"arguments": {
"query": "suspend logging for car 1",
"includeSchemas": true,
"maxRecommendations": 4
}
}teslamate_connection_info
Purpose: Returns sanitized MCP and TeslaMate connection/auth configuration status.
Use when:
You need to verify effective transport/auth wiring.
You need a quick preflight check before calling TeslaMate operation tools.
Do not use when:
You need vehicle or drive data.
You need to test TeslaMate API responsiveness (
teslamate_health_checkis better).
Risk: Read-only.
Permissions and prerequisites:
No admin key required.
Server must be running with valid env configuration.
Environment-selection behavior:
Uses default user scope unless
userIdis provided.Returns scope-aware effective config status, never raw secrets.
Parameters:
userId(optional, string): explicit user profile scope.
Expected response shape:
JSON object with transport/auth/config status fields and redacted secret indicators.
Common failure conditions:
Invalid
userIdscope mapping.Server startup misconfiguration.
Recommended prerequisite tools:
teslamate_scope_info
Recommended follow-up tools:
teslamate_health_check,teslamate_list_endpoints
Example invocation:
{ "name": "teslamate_connection_info", "arguments": { "userId": "default" } }teslamate_list_endpoints
Purpose: Lists known TeslaMate routes captured by this MCP server.
Use when:
You need discoverability before invoking
teslamate_api_request.You need to confirm whether a dedicated tool already exists.
Do not use when:
You need live data from TeslaMate.
Risk: Read-only.
Permissions and prerequisites:
No admin key required.
Environment-selection behavior:
Independent of TeslaMate user profile; no
userIdrequired.
Parameters:
None.
Expected response shape:
JSON object/array of endpoint descriptors (method/path and optional notes).
Common failure conditions:
Internal catalog load error (rare).
Recommended prerequisite tools:
None.
Recommended follow-up tools:
teslamate_api_request,teslamate_health_check
Example invocation:
{ "name": "teslamate_list_endpoints", "arguments": {} }teslamate_scope_info
Purpose: Returns the effective scope and profile resolution details for the request.
Use when:
You need to confirm which user profile will be used.
You are debugging default-user fallback behavior.
Do not use when:
You need TeslaMate API payloads.
Risk: Read-only.
Permissions and prerequisites:
No admin key required.
Environment-selection behavior:
Resolves
userIdif provided.Otherwise uses
MCP_CONFIG_DEFAULT_USER_IDfallback behavior.
Parameters:
userId(optional, string): requested user scope.
Expected response shape:
JSON object describing requested scope, resolved scope, and fallback status.
Common failure conditions:
Invalid user scope format.
Missing profile data in multi-user overrides.
Recommended prerequisite tools:
None.
Recommended follow-up tools:
teslamate_connection_info, any operation tool with the sameuserId
Example invocation:
{ "name": "teslamate_scope_info", "arguments": { "userId": "user-123" } }teslamate_health_check
Purpose: Calls
GET /health_checkon the resolved TeslaMate target.Use when:
You need to verify TeslaMate reachability and basic service health.
You want a low-risk connectivity test before mutating calls.
Do not use when:
You need route-specific business data.
Risk: Read-only.
Permissions and prerequisites:
No admin key required.
TeslaMate target must be reachable from the MCP runtime.
Environment-selection behavior:
Uses default scope unless
userIdis provided.
Parameters:
userId(optional, string): route request to a user-specific profile.
Expected response shape:
JSON object with status and response metadata from TeslaMate.
Common failure conditions:
Connection refused/timeouts to TeslaMate base URL.
Invalid auth credentials for selected profile.
Recommended prerequisite tools:
teslamate_scope_info,teslamate_connection_info
Recommended follow-up tools:
teslamate_get_drive_gpx,teslamate_api_request
Example invocation:
{ "name": "teslamate_health_check", "arguments": { "userId": "default" } }teslamate_suspend_logging
Purpose: Calls
PUT /api/car/:id/logging/suspend.Use when:
You intentionally need to pause TeslaMate logging for a specific car.
Do not use when:
You only need read access.
You are uncertain which car is being targeted.
Risk: Mutating, high-impact operational change.
Permissions and prerequisites:
Requires
authorizationKeywhenMCP_ADMIN_AUTH_KEYis configured.Caller should verify target scope and car id first.
Environment-selection behavior:
Uses default scope unless
userIdis provided.
Parameters:
id(required, integer/string): TeslaMate car id.authorizationKey(conditionally required, string): admin mutation guard.userId(optional, string): user profile scope.
Expected response shape:
JSON object with operation result and upstream response metadata.
Common failure conditions:
Missing/invalid
authorizationKey.Unknown car id.
TeslaMate auth or connectivity failure.
Recommended prerequisite tools:
teslamate_scope_info,teslamate_connection_info,teslamate_health_check
Recommended follow-up tools:
teslamate_resume_logging(rollback),teslamate_api_requestfor verification
Safety warnings:
This changes live data-collection behavior.
Confirm car identity and scope before invoking.
Example invocation:
{
"name": "teslamate_suspend_logging",
"arguments": { "id": 1, "authorizationKey": "<admin-key>", "userId": "default" }
}teslamate_resume_logging
Purpose: Calls
PUT /api/car/:id/logging/resume.Use when:
You need to restore TeslaMate logging for a car.
Do not use when:
Logging is already active and no state change is needed.
Risk: Mutating, high-impact operational change.
Permissions and prerequisites:
Requires
authorizationKeywhenMCP_ADMIN_AUTH_KEYis configured.
Environment-selection behavior:
Uses default scope unless
userIdis provided.
Parameters:
id(required, integer/string): TeslaMate car id.authorizationKey(conditionally required, string): admin mutation guard.userId(optional, string): user profile scope.
Expected response shape:
JSON object with operation result and upstream response metadata.
Common failure conditions:
Missing/invalid
authorizationKey.Unknown car id.
TeslaMate auth or connectivity failure.
Recommended prerequisite tools:
teslamate_scope_info,teslamate_health_check
Recommended follow-up tools:
teslamate_api_requestfor post-change verification
Safety warnings:
This changes live data-collection behavior.
Verify scope and target car id before invoking.
Example invocation:
{
"name": "teslamate_resume_logging",
"arguments": { "id": 1, "authorizationKey": "<admin-key>", "userId": "default" }
}teslamate_get_drive_gpx
Purpose: Calls
GET /drive/:id/gpxand returns GPX content/metadata.Use when:
You need a drive export for mapping or archival workflows.
Do not use when:
You need generalized JSON endpoint data.
Risk: Read-only (data retrieval can still expose sensitive location history).
Permissions and prerequisites:
No admin key required.
Caller should be authorized to access route/location data.
Environment-selection behavior:
Uses default scope unless
userIdis provided.
Parameters:
id(required, integer/string): drive id.userId(optional, string): user profile scope.
Expected response shape:
JSON wrapper containing GPX payload and response metadata.
Common failure conditions:
Unknown drive id.
TeslaMate auth failure.
Large payload transfer interruptions.
Recommended prerequisite tools:
teslamate_scope_info,teslamate_health_check
Recommended follow-up tools:
External GPX consumers/parsers
Safety warnings:
GPX data may include precise location traces; handle as sensitive output.
Example invocation:
{ "name": "teslamate_get_drive_gpx", "arguments": { "id": 42, "userId": "default" } }teslamate_api_request
Purpose: Generic TeslaMate passthrough with configurable
method,path,query,body, andheaders.Use when:
You need a TeslaMate route not covered by dedicated tools.
You are iterating quickly on endpoint coverage.
Do not use when:
A dedicated tool already exists and provides stricter validation.
You cannot safely validate mutating request intent.
Risk: Mixed.
Read-only for
GET/HEAD.Mutating/high-risk for
POST/PUT/PATCH/DELETE.
Permissions and prerequisites:
Mutating methods require
authorizationKeywhenMCP_ADMIN_AUTH_KEYis configured.Caller should understand TeslaMate endpoint contract.
Environment-selection behavior:
Uses default scope unless
userIdis provided.Uses selected scope's base URL and auth mode.
Parameters:
method(required, uppercase string): HTTP verb.path(required, string): must be a TeslaMate-relative path beginning with/.query(optional, object): key/value query params.body(optional, object/string): request payload for mutating methods.headers(optional, object): extra request headers.authorizationKey(conditionally required for mutating methods, string).userId(optional, string): user profile scope.
Expected response shape:
JSON object with status, headers subset, and parsed/raw response body.
Common failure conditions:
Invalid method/path.
Missing/invalid
authorizationKeyfor mutating methods.Upstream 4xx/5xx errors.
Request timeout or network failure.
Recommended prerequisite tools:
teslamate_list_endpoints,teslamate_scope_info,teslamate_connection_info
Recommended follow-up tools:
Use dedicated tools after confirming recurring endpoint usage
Safety warnings:
Mutating requests can change vehicle/logging state.
Avoid sending secrets in custom headers unless required.
Prefer dedicated tools for high-value operations to reduce operator error.
Example invocations:
{
"name": "teslamate_api_request",
"arguments": {
"method": "GET",
"path": "/health_check",
"userId": "default"
}
}{
"name": "teslamate_api_request",
"arguments": {
"method": "PUT",
"path": "/api/car/1/logging/suspend",
"authorizationKey": "<admin-key>",
"userId": "default"
}
}Environment
Copy .env.example to .env and set at least:
TESLAMATE_BASE_URL(defaulthttp://127.0.0.1:4000)TESLAMATE_AUTH_MODE(none,bearer, orbasic)TESLAMATE_BEARER_TOKENif using bearer authTESLAMATE_BASIC_USERNAMEandTESLAMATE_BASIC_PASSWORDif using basic auth
Optional security control for mutating MCP operations:
MCP_ADMIN_AUTH_KEY
Multi-user TeslaMate routing:
MCP_CONFIG_DEFAULT_USER_IDsets the default profile (defaultwhen unset).TESLAMATE_USER_OVERRIDES_JSONis a JSON object keyed by user id with per-user TeslaMate overrides.For HTTP mode with Vault token auth, authenticated token metadata
userIdis used as request scope automatically.
Example TESLAMATE_USER_OVERRIDES_JSON:
{
"default": {
"baseUrl": "http://teslamate-default:4000",
"authMode": "none"
},
"user-123": {
"baseUrl": "http://teslamate-user-123:4000",
"authMode": "bearer",
"bearerToken": "token-for-user-123"
}
}HTTP auth modes and sources:
MCP_HTTP_AUTH_MODEsupportstoken,oauth2, orboth.MCP_HTTP_TOKEN_SOURCE=envkeeps static tokens fromMCP_HTTP_AUTH_TOKENS.MCP_HTTP_TOKEN_SOURCE=vaultvalidates bearer tokens from Vault token index and can resolve authenticateduserId.MCP_HTTP_VAULT_TOKEN_INDEX_PATH,MCP_HTTP_VAULT_TOKEN_DEFAULT_USER_ID,MCP_HTTP_VAULT_TOKEN_REQUIRED_SCOPES,MCP_HTTP_VAULT_TOKEN_REQUIRED_AUDIENCE,MCP_HTTP_VAULT_TOKEN_CACHE_TTL_MSconfigure Vault token verification.MCP_HTTP_OAUTH2_INTROSPECTION_URL,MCP_HTTP_OAUTH2_CLIENT_ID,MCP_HTTP_OAUTH2_CLIENT_SECRET,MCP_HTTP_OAUTH2_REQUIRED_SCOPES,MCP_HTTP_OAUTH2_REQUIRED_AUDIENCE,MCP_HTTP_OAUTH2_TIMEOUT_MS,MCP_HTTP_OAUTH2_CACHE_TTL_MSconfigure OAuth2 introspection.
Run
Install dependencies:
npm installStart stdio MCP server:
npm run start:stdioStart HTTP MCP server:
npm run start:httpExternal Services Mode
This project still includes docker-compose.external.yml for app-only runs that point to external services. If you use that mode, configure at least POSTGRES_HOST and VAULT_ADDR in your environment before launching the compose file.
Notes On TeslaMate API Coverage
TeslaMate's native JSON API surface is intentionally small. This MCP includes dedicated tools for all known API-style endpoints and adds teslamate_api_request so new/instance-specific routes can be accessed without waiting for a code change.
Available Tools
9 toolsteslamate_api_requestC
Generic TeslaMate HTTP API call. Supports all available TeslaMate endpoints while enforcing host/auth safeguards.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| query | No | ||
| method | Yes | ||
| userId | No | ||
| headers | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'enforcing host/auth safeguards' but omits critical details such as error handling, response format, rate limits, or side effects. The agent cannot anticipate execution behavior.
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 description is a single vague sentence that under-specifies the tool. It lacks a front-loaded structure; key details like parameters and return values are absent. Conciseness is wasted without substance.
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?
Given the complex tool (7 parameters, nested objects, no output schema, no annotations), the description is completely inadequate. It does not explain how to use the tool, what responses look like, or any constraints. The agent has insufficient information to invoke it correctly.
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 description adds no information about any of the 7 parameters, including required fields like method and path. The agent must rely solely on the schema, which lacks enums or descriptions. This is a critical gap.
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 clearly states it is a generic HTTP API call for TeslaMate, supporting all endpoints with host/auth safeguards. This distinguishes it from sibling tools that are specific (e.g., health check, connection info). However, it could be more explicit about the range of endpoints covered.
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 description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios where sibling tools would be preferred or when to fall back to this generic call. Users must infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teslamate_connection_infoA
Return TeslaMate MCP server and target TeslaMate instance connection details.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states a read operation but adds no further behavioral context (e.g., side effects, safety). For a simple info tool, this is adequate but minimal.
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 description is a single sentence with no wasted words. It is structured and front-loaded with the core action.
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?
Given the tool's simplicity (no parameters, no output schema), the description fully suffices. It clearly explains what the tool returns, completing the context.
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?
The tool has no parameters, and schema coverage is 100%. The description correctly omits parameter details, meeting the baseline expectation.
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 clearly states the tool returns connection details for the TeslaMate MCP server and target instance. It uses a specific verb ('Return') and resource ('connection details'), and it distinguishes itself from sibling tools like 'teslamate_health_check' or 'teslamate_list_endpoints'.
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 description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teslamate_get_drive_gpxC
Fetch a drive GPX export by id from GET /drive/:id/gpx.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| driveId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It implies a read operation via 'Fetch' but discloses no behavioral traits such as authentication requirements, rate limits, data size, or unsafety. For a tool without annotations, this is insufficient.
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 description is a single, coherent sentence with no waste. It is front-loaded with the key information. However, given the sparsity, one could argue it is under-specified rather than concise, but structurally it's clean.
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?
With no output schema, the description does not explain what the GPX export contains (e.g., raw GPS points, metadata). The tool is simple with two params, but for adequate completeness, at least a note on the response format or typical usage would be expected.
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 description adds no meaning beyond the endpoint pattern. 'driveId' and 'userId' are not explained; their types and purposes are left entirely to the schema, which is minimal. For two parameters, this is highly inadequate.
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 clearly states the action (Fetch), the resource (drive GPX export), and references the API endpoint pattern. It distinguishes this tool from siblings like teslamate_connection_info or teslamate_list_endpoints by being specific to GPX exports for a particular drive.
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?
No guidance is provided on when to use this tool versus alternatives, nor are there any contextual or prerequisite hints. The description only states what it does, leaving the agent without strategic direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teslamate_health_checkC
Call TeslaMate health check endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose any behavioral traits such as read-only nature, authentication requirements, or side effects. The agent cannot infer safety or impact from this description alone.
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 description is very concise (one short sentence) but at the expense of informativeness. It is front-loaded but does not provide sufficient content to 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?
Given the lack of output schema, annotations, and parameter explanations, the description is severely incomplete. It does not cover return values, behavior, or any conditions for use.
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?
The input schema has one parameter (userId) with 0% description coverage. The description does not mention or explain the parameter, leaving the agent guessing about its purpose and whether it is needed.
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 clearly states the action ('Call') and the resource ('TeslaMate health check endpoint'), distinguishing it from other tools like connection_info or list_endpoints. However, it could be more specific about what the health check entails.
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?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, typical use cases, or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teslamate_list_endpointsA
List documented/implemented TeslaMate HTTP endpoints exposed by this MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only mentions listing endpoints without stating read-only nature, authentication needs, or output format.
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?
A single, precise sentence with no redundant words; perfectly concise.
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?
Given zero parameters and simple purpose, the description is nearly complete; however, it could specify the output format or scope of endpoints listed.
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?
The input schema has zero parameters (100% coverage), so the description adds no parameter-level detail, but baseline for 0 params is 4; no information is missing.
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 clearly states the verb 'List' and the resource 'documented/implemented TeslaMate HTTP endpoints', uniquely distinguishing it from sibling tools that perform specific actions like connection info or query suggestion.
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 description implies the tool is for discovering available endpoints, but does not explicitly state when to use it over alternatives or provide any exclusions or context cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teslamate_query_suggestionC
Recommend the best TeslaMate MCP tools for a query and optionally return schema discovery for all tools.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| includeSchemas | No | ||
| maxRecommendations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions returning schema discovery but does not explain what that entails (e.g., JSON schemas, markdown?). No mention of side effects, permissions, or performance. For a tool that presumably queries internal definitions, more transparency is needed.
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 description is a single sentence of moderate length, front-loaded with the main action ('Recommend'). Every word contributes to purpose. It is appropriately concise for the tool's simplicity, though adding a brief parameter explanation would not harm conciseness.
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?
Given 3 parameters, no output schema, and no annotations, the description is incomplete. It fails to explain the input parameters' semantics, return format, or how recommendations are generated. An agent would lack critical information to use this tool effectively.
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 coverage is 0% (no parameter descriptions in schema). The description adds limited meaning: it hints that 'query' is a user query, and 'optionally return schema' maps to includeSchemas. However, it does not explain maxRecommendations. For low coverage, the description should compensate more thoroughly.
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 'Recommend the best TeslaMate MCP tools for a query and optionally return schema discovery', which clearly identifies the tool's purpose as a recommendation engine. It distinguishes enough from siblings like teslamate_list_endpoints (which lists endpoints) and teslamate_api_request (which makes raw requests). However, 'schema discovery' is ambiguous—it could be improved by specifying what schema means (e.g., tool definitions).
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?
No explicit guidance on when to use this tool versus siblings. The description implies it's for tool selection, but does not specify scenarios where alternatives (e.g., direct API request) are more appropriate. No 'when not to use' or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teslamate_resume_loggingC
Resume logging for a TeslaMate car id via PUT /api/car/:id/logging/resume.
| Name | Required | Description | Default |
|---|---|---|---|
| carId | Yes | ||
| userId | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'resume logging' without mentioning side effects, required permissions, rate limits, or error handling.
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 description is very short and front-loaded, but conciseness comes at the expense of necessary detail. It is not verbose, but the missing information reduces utility.
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?
Given no output schema, no annotations, and three parameters with no explanation, the description is insufficient for an agent to use the tool correctly. It lacks success/error responses, prerequisites, and parameter details.
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 coverage is 0%, and the description does not explain any of the three parameters (carId, userId, authorizationKey). The agent cannot infer their purpose or constraints beyond the schema.
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 clearly states the action (resume logging) and resource (TeslaMate car id) along with the HTTP method. However, it does not differentiate from sibling tools like teslamate_suspend_logging, which is a closely related operation.
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 description provides no guidance on when to use this tool versus alternatives (e.g., suspend_logging) or any prerequisites such as car status or auth requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teslamate_scope_infoC
Return user scoping metadata used to resolve the TeslaMate target connection.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It does not disclose whether the operation is read-only, has side effects, requires authentication, or what happens if the userId is omitted. The description only states it returns metadata, omitting behavioral traits.
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 description is a single sentence of 12 words, perfectly concise. It is front-loaded with the action 'Return' and the resource. Every word is necessary, with no redundancy.
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?
For a tool with one optional parameter and no output schema, the description should specify what the scoping metadata contains and how userId affects it. It fails to provide enough context for an agent to understand the output or use cases.
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 description does not explain the 'userId' parameter's purpose, format, or effect on results. Without parameter details, the agent cannot use the tool effectively.
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 clearly states the purpose: 'Return user scoping metadata' used to resolve a TeslaMate target connection. The verb 'Return' and resource 'user scoping metadata' are specific. It distinguishes from sibling tools like teslamate_connection_info by focusing on scoping metadata.
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?
No guidance on when to use this tool over siblings or when not to use it. The description implies it is for retrieving scoping metadata, but lacks explicit usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teslamate_suspend_loggingC
Suspend logging for a TeslaMate car id via PUT /api/car/:id/logging/suspend.
| Name | Required | Description | Default |
|---|---|---|---|
| carId | Yes | ||
| userId | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Minimal behavioral disclosure: only that logging is suspended via a PUT request. No mention of effects on existing logs, persistence, reversibility, or any response. With no annotations, this is insufficient for a mutation tool.
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?
Single sentence with no extra words, efficiently stating the action and endpoint. However, it sacrifices necessary detail for brevity.
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?
For a tool with 3 parameters, no output schema, and no annotations, the description is severely incomplete. It lacks parameter semantics, behavioral context, return value info, and usage conditions, making it inadequate for reliable agent invocation.
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?
The description fails to explain any of the 3 parameters (carId, userId, authorizationKey). Schema description coverage is 0%, so the description must compensate, but it only vaguely references 'car id'. This omission leaves the agent unable to understand parameter purposes.
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 clearly states the action (suspend logging) and the resource (TeslaMate car id), with the HTTP method and endpoint. It directly differentiates from the sibling tool 'teslamate_resume_logging' by specifying suspension.
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?
No guidance on when to suspend logging versus resume, or any prerequisites or side effects. The sibling tool exists but no comparison or context for decision-making.
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.
9 tool updates
v0.1.0- First observed
teslamate_api_request - First observed
teslamate_connection_info - First observed
teslamate_get_drive_gpx - First observed
teslamate_health_check - First observed
teslamate_list_endpoints - First observed
teslamate_query_suggestion - First observed
teslamate_resume_logging - First observed
teslamate_scope_info - First observed
teslamate_suspend_logging
TDQS
Scored across 9 tools
All tools have distinct purposes. Even suspend/resume logging are clearly opposite actions. The generic api_request is distinct from the specialized tools. No ambiguity.
All tools follow the consistent pattern 'teslamate_verb_noun' (e.g., teslamate_health_check, teslamate_suspend_logging). The prefix and structure are uniform.
9 tools cover the core functionalities of a TeslaMate integration: connection, health, logging control, drive export, and a generic API. The count is well-scoped and not excessive.
The set includes essential operations and a generic api_request to cover any missing endpoints. However, dedicated tools for common queries like charge data or updates are absent, though the generic tool mitigates this.
Maintenance
Related MCP Connectors
MCP server wrapping the Tesla Fleet API and TeslaMate API
Control your Tesla - wake it, warm it up, unlock and more. Get your developer token at https://Infoseek.ai/mcp. Also requires your own Tesla developer token which is tied to your car/fleet.
An MCP server that provides access to Testiny projects, test cases and test runs
Tailscale device, route, DNS, key, user, and ACL management over MCP and CLI.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server combining TeslaMate historical analytics with Fleet API live data and commands. Works with Claude Code, Claude Desktop, Cursor, and any MCP-compatible client.292MIT
- AlicenseNot gradedqualityCmaintenanceComprehensive development tools for Home Assistant, enabling file management, template testing, entity/state management, service calls, log access, and system information retrieval through MCP.MIT
- AlicenseNot gradedqualityAmaintenanceA Model Context Protocol server for the TeslaFi API that lets MCP clients query live vehicle data, drive and charge history, commute patterns, and optionally send commands.2MIT
- AlicenseCqualityAmaintenanceEnables 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.38MIT