teslamate-mcp
Summary: A read-only MCP server that connects AI assistants to TeslaMate's PostgreSQL database, exposing report tools for vehicle, battery, charging, driving, and efficiency analysis.
Vehicle info: basic car details (VIN, model, firmware), current real-time status, and software update history.
Battery: health summary, degradation over time, daily usage patterns, and tire pressure weekly trends.
Charging: all-sessions summary plus charging totals grouped by location and most-visited locations.
Driving: monthly summaries, daily driving patterns, longest drives, per-day drive summaries, and lifetime distance/efficiency.
Efficiency: efficiency by month and temperature, average efficiency by temperature, and unusual power-consumption anomaly detection.
Schema scope: the 18 tools here are all read-only, take no input parameters, and return arrays of result rows; the README also advertises charts, trips, fast charging, timeline, search, custom SQL, and opt-in cost writes not present in this schema.
Connects to a PostgreSQL database containing TeslaMate data to retrieve and analyze Tesla vehicle information.
Allows querying Tesla vehicle data from a TeslaMate database, providing access to vehicle information, driving statistics, charging data, battery health, efficiency metrics, and location analytics.
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-mcpwhat's my current battery health?"
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 Server
Connect your AI assistant to your TeslaMate data. This is a Model Context Protocol (MCP) server. It reads your TeslaMate PostgreSQL database. It gives MCP clients (Claude Desktop, Cursor, and others) 57 tools, 11 prompts, and interactive charts.
Documentation · Tool reference · Configuration · Deployment
What you can ask
"Is my battery really degrading?" — the server estimates usable capacity in kWh from your charging sessions.
"How much range do I lose while parked?" — the server finds vampire drain between drives.
"Show the route of my longest drive." — the server returns the GPS track, with an interactive map on chart-capable clients.
"Compare my driving this month with last month." — one call returns both windows, per metric.
"Can I reach Ankara (450 km) at 5°C without charging?" — the server estimates the arrival battery % from your own drives at that temperature.
"Why isn't my car sleeping?" — the server reads TeslaMate's state log and lists the periods the car stayed awake while parked.
"What did my car do on Saturday?" — one call returns the drives, charges, and parked time in order.
Related MCP server: Prometheus MCP Server
Highlights
47 SQL report tools. Battery capacity and degradation, sleep and state history, a timeline of each day, trips, range estimates, fast-charging speeds, charging costs (with estimates for missing ones) and fuel savings, elevation, vampire drain, geofences, driving patterns, routes, and search tools for drives and charging sessions.
8 interactive charts (MCP Apps). Charging curves (one session, or several overlaid), battery degradation, drive and trip maps with elevation profiles, a monthly or yearly activity dashboard, a map of visited places, and consumption against temperature. On clients without chart support, the same tools return plain rows.
Guidance for the assistant. MCP instructions and 11 prompts map questions to tools, and
get_unit_preferenceslets the assistant answer in the units set in TeslaMate.Typed inputs and outputs. Each report tool declares its parameters and result columns in a
.tomlfile. The server validates the declarations at startup. Parameters bind as SQL placeholders, never as string concatenation.Safe custom SQL.
run_sqlruns yourSELECTinside a PostgreSQLREAD ONLYtransaction, with timeouts and a row cap. The transaction always rolls back.Optional cost writes, with confirmation. One opt-in tool writes charging costs. A column-scoped database grant limits what it can touch. Clients with MCP elicitation show a confirmation dialog first.
Local-time reports. Set
REPORT_TIMEZONEand daily, weekly, and monthly buckets follow your local midnight.Two transports. Run
teslamate-mcp stdiofor local clients. Runteslamate-mcp httpfor remote clients, with bearer-token auth and a/healthprobe.
Requirements
TeslaMate with its PostgreSQL database.
Python 3.11+ for a local install, or Docker for a server install.
Quick start — local (stdio)
Install:
git clone https://github.com/cobanov/teslamate-mcp.git cd teslamate-mcp cp env.example .env # set DATABASE_URL uv syncAdd the server to your MCP client. Example for Claude Desktop or Cursor:
{ "mcpServers": { "teslamate": { "command": "uv", "args": ["--directory", "/path/to/teslamate-mcp", "run", "teslamate-mcp", "stdio"] } } }
Quick start — Docker
cp env.example .env # set DATABASE_URL, and set AUTH_TOKEN for remote use
docker compose up -dThe MCP endpoint is http://localhost:8888/mcp. The health probe is http://localhost:8888/health. It runs a SELECT 1 against the database and returns 503 when the database is unreachable.
A multi-arch image (linux/amd64, linux/arm64) is published to GHCR on each release:
docker run --rm -e DATABASE_URL=... -p 8888:8888 ghcr.io/cobanov/teslamate-mcp:latestDeploy on Unraid, behind Cloudflare
You can reach this server from claude.ai, Claude Desktop, and mobile — with OAuth login and with no open ports on your home network.
The Unraid + Cloudflare deployment guide shows the full path:
Run the container on Unraid with the included Community Apps template.
Publish it through a Cloudflare Tunnel. No inbound firewall rules are necessary.
Put a Cloudflare Zero Trust MCP Server Portal in front. The portal handles OAuth for Claude clients and sends the bearer token upstream.
The guide includes the exact dashboard fields, verification commands for each phase, and a troubleshooting table.
The portal rewrites
ui://resource URIs, so the interactive charts (show_*tools) do not render through it. To get them, connect Claude through Cloudflare Access directly. The guide's direct connection section shows how.
Tools
Each report tool accepts optional filters: car_name everywhere, plus days, limit, and thresholds where they apply. A call with no arguments returns the full report.
Tools return metric values (km, km/h, °C, bar, m) and rated range. get_unit_preferences reads the units chosen in TeslaMate's settings (km or mi, °C or °F, bar or psi, rated or ideal range) so the assistant can convert when it answers; the charts stay metric.
The server also sends MCP instructions: how to read units, time zones and costs, and which tool answers which kind of question.
Reports (22)
Group | Tools |
Vehicle |
|
Battery |
|
Driving |
|
Efficiency |
|
Charging |
|
Insights (8)
Tool | What it returns |
| Usable capacity in kWh, estimated from charging sessions (energy added ÷ SOC gained), per month and car |
| Range lost while parked between drives; gaps that contain a charge do not count |
| kWh added vs kWh drawn per car, split into AC and DC |
| Charging totals per TeslaMate geofence, plus an "Ungeofenced" group |
| Share of samples above 80% and below 20% state of charge |
| The last N days vs the N days before, one row per metric |
| A month by day or a year by month: drives, distance, consumption, charging, and cost per bucket, empty days included |
| "Will I make it?": energy and battery % a drive of a given distance takes, from this car's own drives at a similar temperature (optionally motorway drives only), with a conservative figure and the arrival battery % |
Timeline and car state (3)
TeslaMate logs whether each car is online, asleep, or offline. get_current_car_status reads that log too, and reports whether the car is driving, charging, online, asleep, or offline right now.
Tool | What it returns |
| What the car did, in order: drives, charges, the time parked between them, and software updates, with places, battery %, kWh, and cost; answers "what did my car do on Saturday?" |
| Per car and local day: hours online, asleep, and offline, driving and charging hours, idle awake hours (online while parked and not charging), and wake-ups |
| The online periods that kept the car awake while parked, longest first, with where it was parked; answers "why isn't my car sleeping?" |
Search and detail (5)
Tool | What it returns |
| Drives filtered by date range, location text, distance, and car; sortable |
| Charging sessions filtered by date range, location, energy, and car |
| Full statistics for one drive |
| GPS track points for one drive, downsampled |
| Power and SOC curve for one charging session, downsampled |
Costs (3)
A session with no cost recorded counts as unknown, not free: averages per kWh use only the sessions that have a cost, and each report says how many sessions lack one.
Tool | What it returns |
| Costs grouped by month, location, or car, with the number of sessions that have no cost |
| An estimated cost for each session with none: free Supercharging, a price you give, the geofence tariff, what you paid at the same place, or the typical price for that charger type |
| What the same distance would have cost in fuel, against what charging cost, per car |
Trips (3)
TeslaMate ends a drive every time the car parks, so a road trip with a WC break and a charging stop is several drives. The trip tools merge a car's consecutive drives while each stop in between stays short: up to max_stop_minutes (default 30) without charging, or max_charging_stop_minutes (default 120) when a charging session happened during the stop. Overnight stops end a trip.
Tool | What it returns |
| One row per trip: legs, stops and charging stops, distance, driving vs stopped time, moving speed, battery % at start and end, kWh added on the way; filter by date, car, distance, legs, or a place the trip passed through |
| One trip's timeline: each drive, and each stop with where and how long, plus kWh and battery % for charging stops |
| GPS track of a whole trip across its drives, downsampled, with the stop before each leg |
Fast charging (3)
A session is DC when a sample came from a fast charger, or had no AC phases while power flowed; a Tesla-branded fast charger is a Supercharger.
Tool | What it returns |
| DC sessions with peak power, average power, average power across 20–80% (the fair comparison), minutes from 20% to 80%, whether the battery heater ran, and cost |
| The same per location and charger type: which fast chargers are fastest and cheapest for your car |
| Power against battery % for several sessions, for overlaying their curves |
Charts (8)
show_charging_curve, show_charging_curve_comparison, show_battery_degradation, show_drive_route, show_trip_route, show_activity_report, show_visited_places, and show_efficiency_vs_temperature are the chart versions of their get_* tools. On chart-capable clients they draw an interactive chart in the conversation. On other clients they return the same rows as the get_* tool. The route and trip maps draw the track over a low-detail basemap (Esri gray canvas, light or dark to match the client); the trip map also marks every stop, with charging stops highlighted. Both maps draw an elevation profile under the track; hovering it finds the place on the map. show_activity_report is a monthly or yearly dashboard, show_visited_places maps where the car parks (sized by arrivals, charging places highlighted), and show_efficiency_vs_temperature plots every drive's consumption against outside temperature with the 5 °C average. Set MAP_TILES=false to keep the maps fully offline.
Custom (2)
get_database_schema— lists all tables, shows the columns of one table, and re-reads the schema when you passrefresh=true.run_sql— runs one customSELECTorWITH … SELECT.
Prompts (11)
Ready-made workflows that name the tools to call, in order: status_report, summarize_driving, analyze_battery_health, analyze_charging, find_anomalies, weather_efficiency, diagnose_sleep, plan_trip, review_trip, monthly_recap, and charging_costs_and_savings. With cost writes on, backfill_costs_from_receipts joins them.
Cost writes (opt-in, off by default)
Set ENABLE_CHARGING_WRITES=true to register set_charging_cost(charging_process_id, cost). It sets the cost of one charging session. This is the same field that the TeslaMate UI edits. A backfill_costs_from_receipts prompt guides the receipt-matching workflow.
Give the database role write access to that single column only:
GRANT UPDATE (cost) ON charging_processes TO teslamate_ro;This grant is the security boundary. The tool cannot write anything else. On clients with MCP elicitation, the user confirms each write in a dialog. run_sql stays read-only in all cases.
Configuration
The server reads all settings from environment variables. It also reads a .env file. Only DATABASE_URL is required.
Variable | Default | Purpose |
| required |
|
| empty | Turns on bearer auth for the HTTP endpoint |
| empty | Cloudflare Access team domain; accepts Access-verified requests |
| empty | Audience tag of that Access application (set with the above) |
|
| HTTP bind host |
|
| HTTP bind port |
|
| Minimum pool connections |
|
| Maximum pool connections |
|
|
|
|
| Tighter |
|
| Most rows |
|
| IANA timezone for report buckets |
|
| Basemap under the route, trip, and places maps (Esri tiles) |
|
| Registers |
|
| Python log level |
|
| Starlette debug mode; keep off in production |
Generate a bearer token:
uv run teslamate-mcp gen-tokenAdd your own query
No code change is necessary. The server finds new queries at startup.
Put a
SELECTinsrc/teslamate_mcp/queries/your_query.sql.Add
your_query.tomlnext to it:name = "get_your_data" description = "What this returns, units, grouping, and available filters." [[params]] # optional: typed tool arguments name = "car_name" type = "string" # string | integer | number | boolean description = "Case-insensitive substring match on the car's name." [[params]] name = "limit" type = "integer" description = "Maximum number of rows returned." default = 10 minimum = 1 maximum = 100 [[output]] # optional: one entry per result column name = "car_name" type = "string"Write parameters as
%(car_name)splaceholders in the SQL. Do not build SQL from strings. Cast the first use of each placeholder, for example%(limit)s::int. Write a literal%as%%. The reserved%(tz)splaceholder bindsREPORT_TIMEZONE.Restart the server. The registry validates the pair and registers the tool. Run
teslamate-mcp list-toolsto confirm.
The startup validation rejects a query when a declared parameter is missing from the SQL, or when the SQL uses an undeclared parameter.
Security
run_sqlruns in aREAD ONLYtransaction that always rolls back. Timeouts and a row cap apply.Connect with a
SELECT-only PostgreSQL role, not TeslaMate's ownteslamateuser. TeslaMate's Compose makes that user a superuser, and a read-only transaction still lets a superuser read server files throughrun_sql. SECURITY.md has theCREATE ROLEsnippet.The maps' basemap tiles are fetched from Esri by the viewer's browser, which reveals the rough area being viewed.
MAP_TILES=falseturns this off.The HTTP transport compares bearer tokens with a timing-safe function. Behind Cloudflare Access, it can instead verify the signed
Cf-Access-Jwt-Assertion(signature, issuer, audience, expiry).Report vulnerabilities through private security advisories. See SECURITY.md.
Development
uv sync # install with dev dependencies
uv run ruff check src tests # lint
uv run ruff format src tests # format
uv run pytest # database tests need Docker or TESLAMATE_TEST_DATABASE_URL (a scratch database)License
MIT — see LICENSE.
Available Tools
18 toolsget_all_charging_sessions_summaryB
Get the summary of all charging sessions for each car. Returns charging statistics including total sessions, energy consumed, and costs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return content (charging statistics) but lacks details on permissions, rate limits, data freshness, or error handling. For a tool with no annotations, this is a significant gap in transparency, though it does specify what data is returned.
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 highly concise and front-loaded, consisting of two sentences that directly state the purpose and return value without any fluff. Every sentence earns its place by providing essential information efficiently, making it easy for an agent to parse quickly.
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 has 0 parameters, 100% schema coverage, and an output schema exists, the description is relatively complete. It explains what the tool does and what it returns, which is sufficient for a simple read operation. However, it could improve by adding more behavioral context, such as data scope or limitations, to fully compensate for the lack of annotations.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate, but it could have mentioned any implicit filters or defaults. Since there are no parameters, a baseline of 4 is applied, as the description doesn't need to compensate for schema gaps.
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's purpose: 'Get the summary of all charging sessions for each car' specifies the verb (get) and resource (charging sessions summary), and distinguishes it from siblings like get_charging_by_location or get_daily_battery_usage_patterns. However, it doesn't explicitly differentiate from all siblings, such as get_total_distance_and_efficiency, which might also involve summaries.
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 doesn't mention any prerequisites, exclusions, or specific contexts, such as comparing it to get_charging_by_location for location-based data or get_daily_battery_usage_patterns for time-based insights. This leaves the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_average_efficiency_by_temperatureB
Get the average efficiency by temperature for each car. Helps understand how temperature affects vehicle efficiency.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes a read operation ('Get') but doesn't mention any behavioral traits such as data freshness, rate limits, authentication needs, or what 'average efficiency' entails (e.g., units, calculation method). The description is too vague to fully inform an agent about how the tool behaves beyond its basic purpose.
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 two concise sentences that are front-loaded with the core purpose. Every word earns its place: the first sentence states what the tool does, and the second provides context without redundancy. There's no wasted text or unnecessary elaboration.
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 complexity (a read operation with no parameters) and the presence of an output schema, the description is minimally adequate. It states the purpose but lacks details on behavioral aspects like data sources or limitations. With no annotations and an output schema, the description should ideally provide more context about what 'average efficiency' means or how results are structured, but it's not entirely incomplete.
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 0 parameters, and schema description coverage is 100%. The description doesn't need to explain parameters, and it appropriately doesn't mention any. A baseline of 4 is applied since no parameters exist, and the description doesn't incorrectly suggest otherwise.
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's purpose: 'Get the average efficiency by temperature for each car.' It specifies the verb ('Get'), resource ('average efficiency by temperature'), and scope ('for each car'). However, it doesn't explicitly differentiate from sibling tools like 'get_efficiency_by_month_and_temperature' or 'get_total_distance_and_efficiency', which prevents a perfect score.
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 implied usage context: 'Helps understand how temperature affects vehicle efficiency.' This suggests when to use the tool (for temperature-efficiency analysis) but doesn't explicitly state when not to use it or name alternatives among the many sibling tools. No explicit guidance on prerequisites or comparisons is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_basic_car_informationB
Get the basic car information for each car. Returns VIN, model, firmware version, and other vehicle details.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the return fields (VIN, model, firmware version, and other vehicle details) but lacks behavioral context such as whether this is a read-only operation, if it requires authentication, rate limits, or how data is sourced (e.g., from a database vs. live API). For a tool with no annotations, this is a significant gap in transparency.
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 concise and front-loaded, stating the purpose and return values in two clear sentences without unnecessary details. However, it could be slightly more structured by explicitly separating purpose from output, but it's efficient and earns 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 tool has 0 parameters, 100% schema coverage, and an output schema exists (so return values needn't be explained), the description is minimally complete. It covers purpose and hints at output but lacks behavioral context (e.g., read-only nature, data freshness), which is a gap for a tool with no annotations. It's adequate but not fully comprehensive.
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 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add param info, which is appropriate, but it could have noted the lack of inputs more explicitly. Baseline for 0 params is 4, as it adequately handles the absence of parameters.
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's purpose: 'Get the basic car information for each car' specifies the verb ('Get') and resource ('basic car information'), and it distinguishes from siblings by focusing on static vehicle details rather than dynamic metrics like status, charging, or driving patterns. However, it doesn't explicitly contrast with all siblings (e.g., 'get_current_car_status' might overlap in some details), keeping it from a perfect score.
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 doesn't mention prerequisites, context (e.g., for initial setup vs. ongoing monitoring), or compare to siblings like 'get_current_car_status' for real-time data, leaving the agent to infer usage based on purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_battery_degradation_over_timeB
Get the battery degradation over time for each car. Tracks battery health metrics and capacity changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions tracking battery health metrics and capacity changes, which implies a read-only operation, but doesn't specify data freshness, time range defaults, aggregation methods, or output format. This leaves significant behavioral gaps for a tool that likely returns time-series data.
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 appropriately concise with two clear sentences that directly address the tool's purpose. It avoids unnecessary elaboration while maintaining readability, though it could be slightly more front-loaded by combining concepts more efficiently.
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 complexity (tracking degradation over time), the presence of an output schema helps, but the description lacks sufficient context about what 'over time' means (e.g., daily, monthly, all-time), how data is aggregated, or what specific metrics are included. With no annotations and minimal behavioral details, it's adequate but has clear gaps.
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 zero parameters with 100% schema description coverage, so the schema fully documents the input requirements. The description doesn't need to explain parameters, and it appropriately avoids redundant information, earning a baseline score of 4 for parameter-free tools.
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's purpose with specific verbs ('get', 'tracks') and resources ('battery degradation over time', 'battery health metrics', 'capacity changes'). It distinguishes from some siblings like 'get_battery_health_summary' by focusing on temporal trends rather than summary statistics, though it doesn't explicitly differentiate from all potential alternatives.
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 doesn't mention prerequisites, timing considerations, or compare it to siblings like 'get_battery_health_summary' or 'get_daily_battery_usage_patterns', leaving the agent to infer usage context independently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_battery_health_summaryB
Get the battery health summary for each car. Provides current battery health status and statistics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 the tool 'provides current battery health status and statistics' which suggests a read-only operation, but doesn't specify format, scope (all cars vs filtered), response structure, or any limitations. For a tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
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 perfectly concise with two sentences that each add value. The first sentence states the core purpose, the second adds important detail about what's provided. No wasted words, no redundancy, and front-loaded with the main 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 has 0 parameters, 100% schema coverage, and an output schema exists, the description is reasonably complete for its purpose. However, with no annotations and multiple sibling tools in the same domain, it should ideally provide more context about when this summary tool is appropriate versus other battery-related tools. The existence of an output schema means the description doesn't need to explain return values.
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 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters since none exist. Baseline for 0 parameters with full schema coverage is 4, as the description correctly avoids redundant parameter information.
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 ('Get') and resource ('battery health summary for each car'), specifying it provides status and statistics. It distinguishes from siblings like 'get_battery_degradation_over_time' by focusing on current status rather than historical trends. However, it doesn't explicitly differentiate from all battery-related tools like 'get_daily_battery_usage_patterns'.
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. With multiple battery-related siblings (get_battery_degradation_over_time, get_daily_battery_usage_patterns), there's no indication of when this summary tool is preferred over more specific battery tools. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_charging_by_locationB
Get the charging by location for each car. Shows charging patterns and statistics grouped by location.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states what the tool returns ('charging patterns and statistics grouped by location') but doesn't disclose whether this is a read-only operation, whether it requires authentication, rate limits, data freshness, or error conditions. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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 appropriately concise with two sentences that each add value. The first sentence states the core purpose, and the second adds context about what's shown. There's no wasted verbiage or repetition. However, it could be slightly more front-loaded by combining the two ideas more tightly.
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 that the tool has no parameters, has an output schema (which handles return values), and relatively simple functionality, the description is reasonably complete. It explains what data is retrieved and how it's organized. However, for a tool with no annotations, it should ideally provide more behavioral context about the operation's characteristics and limitations.
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 zero parameters with 100% schema description coverage, so the baseline is 4. The description doesn't need to explain parameters since none exist, and it appropriately focuses on what the tool returns rather than parameter semantics.
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's purpose: 'Get the charging by location for each car' specifies the verb (get) and resource (charging by location). It distinguishes from siblings by focusing on location-based charging patterns rather than summaries, efficiency, or other metrics. However, it doesn't explicitly differentiate from 'get_most_visited_locations' which might overlap conceptually.
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 mentions 'Shows charging patterns and statistics grouped by location' but doesn't indicate when this is preferable to other charging-related tools like 'get_all_charging_sessions_summary' or location-related tools like 'get_most_visited_locations'. No explicit when/when-not statements or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_car_statusB
Get the current car status for each car. Returns real-time vehicle status including location, battery level, and state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'real-time vehicle status' and lists data types (location, battery level, state), but doesn't disclose behavioral traits like rate limits, authentication needs, data freshness, or whether it returns all cars or requires filtering. For a tool with zero annotation coverage, this is a significant gap in transparency.
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 appropriately sized and front-loaded: the first sentence states the core purpose, and the second adds key details about return values. Both sentences earn their place by clarifying scope and data types. It could be slightly more structured by explicitly separating purpose from output details.
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 has 0 parameters, 100% schema coverage, and an output schema exists, the description is reasonably complete. It explains what the tool does and hints at return values, though it could better address behavioral aspects like real-time constraints. The output schema likely covers return details, reducing the need for extensive description.
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 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter semantics beyond the schema, but with no parameters, a baseline score of 4 is appropriate as there's nothing to compensate for.
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's purpose: 'Get the current car status for each car' specifies the verb (get) and resource (car status). It distinguishes from siblings by focusing on real-time status rather than historical summaries or specific metrics like battery degradation or charging sessions. However, it doesn't explicitly contrast with 'get_basic_car_information', which might overlap.
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 doesn't mention prerequisites, timing considerations (e.g., real-time vs. cached data), or compare to siblings like 'get_basic_car_information' or 'get_total_distance_and_efficiency'. Usage is implied by the real-time focus but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_battery_usage_patternsB
Get the daily battery usage patterns for each car. Analyzes battery consumption patterns throughout the day.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'Analyzes battery consumption patterns,' implying a read-only operation, but doesn't cover critical aspects like data freshness, rate limits, authentication needs, or output format. This leaves significant gaps in understanding how the tool behaves in practice.
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 front-loaded and efficient, using two concise sentences that directly state the tool's purpose and analysis scope without any redundant or unnecessary information. Every sentence earns its place by contributing to understanding the tool's function.
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 complexity (implied analysis of patterns), no annotations, and an output schema present, the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits, usage context, or what the output entails, relying on the output schema to fill in return values. This leaves room for improvement in completeness.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds no parameter information, which is appropriate here, but it doesn't compensate for any gaps since there are none. A baseline of 4 is applied as it meets the requirement for a tool with no parameters.
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's purpose with a specific verb ('Get') and resource ('daily battery usage patterns for each car'), and distinguishes it from siblings like 'get_daily_driving_patterns' by focusing on battery consumption rather than driving. However, it doesn't explicitly differentiate from all siblings, such as 'get_battery_health_summary' or 'get_unusual_power_consumption', which might overlap in battery-related analysis.
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 mentions analyzing 'battery consumption patterns throughout the day' but doesn't specify contexts, prerequisites, or exclusions, leaving the agent to infer usage from the purpose alone without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_driving_patternsB
Get the daily driving patterns for each car. Shows driving habits and patterns by day of week and time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s]' data, implying a read-only operation, but doesn't clarify aspects like authentication needs, rate limits, data freshness, or whether it aggregates historical data. The description adds minimal context beyond the basic purpose, missing key behavioral traits for a tool with no annotation support.
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 two concise sentences that efficiently convey the tool's purpose and output focus. The first sentence states the action and resource, and the second elaborates on the data's nature. There is no wasted language, and it is front-loaded with the core functionality.
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 has 0 parameters, 100% schema coverage, and an output schema, the description is minimally adequate. It explains what the tool does and the type of data returned, but with no annotations and many sibling tools, it lacks guidance on usage and behavioral details. The output schema likely covers return values, so the description's focus on semantics is sufficient, but overall completeness is limited by the missing context for selection and operation.
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 0 parameters with 100% description coverage, so no parameter documentation is needed. The description doesn't discuss parameters, which is appropriate given the schema's completeness. It adds value by explaining the output's focus on 'driving habits and patterns by day of week and time', which helps the agent understand the return data's structure beyond what the output schema might provide.
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's purpose: 'Get the daily driving patterns for each car' specifies the verb (get) and resource (daily driving patterns for each car). It distinguishes from siblings by focusing on driving habits by day/time, unlike tools for charging, efficiency, or battery health. However, it doesn't explicitly differentiate from 'get_daily_battery_usage_patterns' or 'get_drive_summary_per_day', which might overlap in scope.
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 mentions 'driving habits and patterns by day of week and time' but doesn't specify use cases, prerequisites, or exclusions. With many sibling tools (e.g., 'get_daily_battery_usage_patterns', 'get_drive_summary_per_day'), the lack of explicit comparison leaves the agent guessing about the best choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drive_summary_per_dayB
Get the drive summary per day for each car. Provides daily driving statistics including distance, duration, and efficiency.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states what data is returned but doesn't cover critical aspects like whether this is a read-only operation, authentication requirements, rate limits, or how data is formatted (e.g., aggregated vs. raw). This is inadequate for a tool with no annotation coverage.
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 extremely concise and front-loaded: two sentences that directly state the tool's purpose and what it provides, with no wasted words. Every sentence adds value by clarifying the scope and content of the summary.
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 has no parameters, an output schema exists, and no annotations are provided, the description is minimally adequate. It explains what data is returned but lacks context on behavioral traits like safety or performance. With output schema handling return values, the description meets basic needs but could improve by addressing usage scenarios.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's output semantics, which aligns with the baseline for zero-parameter tools.
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's purpose: 'Get the drive summary per day for each car' with specific details about what statistics are included (distance, duration, efficiency). It distinguishes itself from siblings like 'get_daily_driving_patterns' by focusing on summary statistics rather than patterns, though the differentiation could be more explicit.
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 doesn't mention prerequisites, timing considerations, or how it differs from similar tools like 'get_daily_driving_patterns' or 'get_monthly_driving_summary,' leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_efficiency_by_month_and_temperatureB
Get the efficiency by month and temperature for each car. Analyzes how seasonal temperature changes affect vehicle efficiency.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions analysis but doesn't specify whether this is a read-only operation, if it requires authentication, what data format is returned, or any performance characteristics. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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 efficiently structured in two sentences: the first states the core functionality, and the second adds analytical context. Every sentence earns its place without redundancy or unnecessary elaboration, making it appropriately front-loaded and 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 the tool's complexity (analysis of efficiency by month and temperature) and the presence of an output schema, the description is minimally adequate. It explains what the tool does but lacks details on behavioral traits, usage context, or output interpretation. With no annotations and rich sibling tools, it should provide more guidance to be fully complete.
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 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to compensate for any parameter gaps, and it appropriately doesn't mention parameters. A baseline of 4 is applied since no parameters exist.
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's purpose with a specific verb ('Get') and resource ('efficiency by month and temperature for each car'), and adds analytical context ('Analyzes how seasonal temperature changes affect vehicle efficiency'). However, it doesn't explicitly differentiate from siblings like 'get_average_efficiency_by_temperature' or 'get_total_distance_and_efficiency', which prevents a perfect score.
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. With multiple sibling tools related to efficiency and temperature analysis, there's no indication of specific use cases, prerequisites, or comparisons to tools like 'get_average_efficiency_by_temperature' or 'get_monthly_driving_summary'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_longest_drives_by_distanceB
Get the longest drives by distance for each car. Lists the longest trips taken with details about distance and duration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the tool 'lists' trips with details, implying a read-only operation, but doesn't cover critical aspects like data freshness, pagination, error conditions, or performance characteristics. This is inadequate for a tool with zero annotation coverage.
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 efficiently structured in two sentences: the first states the core purpose, and the second adds clarifying details about output content. Every sentence adds value without redundancy, making it appropriately concise and front-loaded.
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 has an output schema (which handles return values) and no parameters, the description's coverage of purpose and output details is minimally adequate. However, with no annotations and behavioral gaps, it doesn't fully address the tool's operational context, leaving room for improvement in guiding the agent.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not adding unnecessary information beyond what the schema already provides.
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's purpose: 'Get the longest drives by distance for each car' specifies the verb (get) and resource (longest drives by distance), with additional context about listing trips with distance and duration details. It distinguishes from siblings by focusing on longest trips rather than summaries, averages, or other metrics, though it doesn't explicitly name alternatives.
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 mentions 'for each car' but doesn't specify prerequisites, context, or exclusions compared to sibling tools like get_drive_summary_per_day or get_total_distance_and_efficiency, leaving the agent to infer usage based on purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_monthly_driving_summaryB
Get the monthly driving summary for each car. Provides monthly statistics for distance, energy usage, and costs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what data is provided (monthly statistics) but does not cover aspects like read-only nature, performance, error handling, or data freshness. For a tool with no annotations, this leaves significant gaps in understanding its 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 concise and well-structured with two sentences: the first states the purpose, and the second elaborates on the statistics provided. Every sentence adds value without redundancy, making it front-loaded and efficient.
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 has no parameters, an output schema exists, and no annotations, the description is minimally adequate. It explains what the tool returns (monthly statistics for distance, energy usage, costs) but lacks details on output structure or behavioral context. With an output schema, the description need not explain return values in depth, but it could benefit from more context on usage or limitations.
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 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description does not need to add parameter semantics beyond the schema, and it appropriately focuses on the tool's output. A baseline score of 4 is applied as it handles the lack of parameters 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 tool's purpose: 'Get the monthly driving summary for each car' specifies the verb (get) and resource (monthly driving summary), and 'Provides monthly statistics for distance, energy usage, and costs' elaborates on the content. However, it does not explicitly differentiate from siblings like 'get_daily_driving_patterns' or 'get_total_distance_and_efficiency', which reduces clarity.
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, context, or exclusions, nor does it reference sibling tools for comparison. Usage is implied by the purpose but lacks explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_most_visited_locationsB
Get the most visited locations for each car. Shows frequently visited places with visit counts and durations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 output content ('frequently visited places with visit counts and durations') but doesn't cover critical aspects like whether this requires authentication, rate limits, data freshness, or how 'most visited' is calculated (e.g., time range, threshold). For a tool with no annotation coverage, this leaves significant gaps.
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 two concise sentences that efficiently convey the core functionality and output details. Every word earns its place: the first sentence states the purpose, and the second elaborates on the output format. No wasted text or 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?
Given zero parameters, 100% schema coverage, and an output schema exists, the description doesn't need to explain parameters or return values. However, as a data retrieval tool with no annotations, it should ideally mention behavioral aspects like authentication needs or data scope (e.g., time range). The description is minimally adequate but lacks context for safe, effective 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 tool has zero parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on what the tool returns. A baseline of 4 is applied for zero-parameter tools when the schema is fully descriptive.
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's purpose: 'Get the most visited locations for each car' specifies the verb (get) and resource (most visited locations per car). It distinguishes from siblings by focusing on location visitation patterns rather than charging, efficiency, or other metrics. However, it doesn't explicitly differentiate from potential location-related siblings like 'get_charging_by_location'.
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 doesn't mention prerequisites, timing considerations, or compare to sibling tools that might overlap in scope (like 'get_charging_by_location' for location data). The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_software_update_historyB
Get the software update history for each car. Tracks firmware updates and version changes over time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves historical data, implying a read-only operation, but does not clarify aspects like authentication needs, rate limits, data freshness, or error handling. This is a significant gap for a tool with no annotation coverage.
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 appropriately sized and front-loaded, consisting of two concise sentences that directly state the tool's purpose and scope without any redundant information. Every sentence earns its place by adding clarity.
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 complexity (simple data retrieval with no parameters) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks behavioral details (e.g., permissions, limitations) that would be helpful since no annotations are provided, making it incomplete for optimal agent 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 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds value by explaining what data is retrieved ('software update history for each car' and 'tracks firmware updates and version changes over time'), which provides context beyond the empty 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 tool's purpose with a specific verb ('Get') and resource ('software update history for each car'), and specifies what it tracks ('firmware updates and version changes over time'). However, it does not explicitly differentiate from sibling tools, which are all data retrieval tools but focus on different car metrics like charging, efficiency, or driving patterns.
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 mentions what the tool does but does not specify contexts, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name alone among many sibling data-fetching tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tire_pressure_weekly_trendsB
Get the tire pressure weekly trends for each car. Monitors tire pressure changes and patterns by week.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Monitors tire pressure changes and patterns by week,' which implies a read-only, monitoring function, but doesn't specify details like data format, time ranges, error handling, or authentication needs. For a tool with zero annotation coverage, this leaves significant behavioral gaps, such as whether it requires specific permissions or how it handles missing data.
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 concise and front-loaded: the first sentence states the core purpose, and the second adds context. Both sentences earn their place by clarifying the tool's function and monitoring aspect. It avoids redundancy and is appropriately sized for a no-parameter tool, though it could be slightly more structured with bullet points or examples.
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 complexity (simple, no parameters) and the presence of an output schema, the description is somewhat complete but has gaps. It explains what the tool does but lacks behavioral details like data scope or usage context. The output schema likely covers return values, reducing the need for that in the description, but without annotations, more context on monitoring behavior would improve completeness.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, which is appropriate here. Since there are no parameters, the baseline score is 4, as the description doesn't need to compensate for any schema gaps and aligns with the schema's simplicity.
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's purpose: 'Get the tire pressure weekly trends for each car.' It specifies the verb ('Get'), resource ('tire pressure weekly trends'), and scope ('for each car'), which is specific and actionable. However, it doesn't explicitly distinguish this tool from potential siblings like 'get_current_car_status' or 'get_daily_driving_patterns', which might also involve tire pressure or car monitoring, so it doesn't fully achieve sibling differentiation.
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 mentions 'Monitors tire pressure changes and patterns by week,' which implies a monitoring context, but doesn't specify use cases, prerequisites, or exclusions. Without explicit when/when-not instructions or named alternatives, the agent lacks clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_total_distance_and_efficiencyB
Get the total distance and efficiency for each car. Provides lifetime statistics for distance traveled and energy efficiency.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states what the tool does ('Get... statistics') but lacks critical behavioral details: it doesn't specify if this is a read-only operation, whether it requires authentication, how data is returned (e.g., format, pagination), or any rate limits. For a tool with zero annotation coverage, this is a significant gap in transparency.
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 appropriately concise with two sentences that directly state the tool's function and scope ('lifetime statistics'). It's front-loaded with the core purpose, and every sentence adds value without redundancy. Minor improvement could be made by integrating the two sentences more tightly, but it's efficient overall.
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 low complexity (0 parameters) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and siblings offering similar data, it lacks completeness in behavioral context (e.g., safety, performance) and usage differentiation. It meets basic needs but leaves gaps for an agent to operate effectively in this crowded toolset.
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 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description adds no parameter information, which is appropriate here. Baseline is 4 for 0 parameters, as no compensation is needed, and the description doesn't introduce confusion about inputs.
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's purpose: 'Get the total distance and efficiency for each car' with the verb 'Get' and resources 'distance and efficiency for each car'. It distinguishes from siblings by specifying 'lifetime statistics', unlike tools focused on daily/monthly patterns or specific conditions. However, it doesn't explicitly differentiate from all siblings (e.g., 'get_basic_car_information' might overlap).
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 mentions 'lifetime statistics', which implies a broad historical scope, but doesn't specify use cases, prerequisites, or exclusions compared to siblings like 'get_monthly_driving_summary' or 'get_efficiency_by_month_and_temperature'. Without explicit when/when-not instructions, the agent must infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unusual_power_consumptionB
Get the unusual power consumption for each car. Identifies anomalies in power usage that might indicate issues.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s]' data and identifies anomalies, implying a read-only operation, but doesn't clarify aspects like whether it requires authentication, how anomalies are defined (e.g., thresholds, algorithms), rate limits, or what 'unusual' means contextually. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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 highly concise and front-loaded, consisting of two clear sentences that directly state the tool's function and added value (anomaly identification). Every word earns its place without redundancy or fluff, making it easy for an agent to parse quickly.
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 has 0 parameters, 100% schema coverage, and an output schema exists (so return values are documented elsewhere), the description is minimally adequate. It explains what the tool does but lacks details on behavioral traits (e.g., how anomalies are detected) and usage context. For a diagnostic tool with no annotations, it should provide more guidance on interpretation or limitations to be fully complete.
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 0 parameters with 100% coverage, so there's no need for parameter documentation in the description. The description appropriately avoids discussing parameters, focusing instead on the tool's purpose. A baseline of 4 is applied as it doesn't add unnecessary param info, but it doesn't reach 5 since it doesn't enhance schema understanding (which is already complete).
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's purpose with a specific verb ('Get') and resource ('unusual power consumption for each car'), and adds context about identifying anomalies. It distinguishes itself from siblings by focusing on power consumption anomalies rather than summaries, averages, or other metrics. However, it doesn't explicitly differentiate from all possible siblings (e.g., 'get_battery_health_summary' might overlap in detecting issues).
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 mentions identifying anomalies 'that might indicate issues,' which implies a diagnostic context, but doesn't specify prerequisites, timing, or compare it to other tools like 'get_battery_health_summary' or 'get_current_car_status' that might also flag problems. Without explicit when-to-use or when-not-to-use instructions, the agent must infer usage.
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 tool update
v1.0.0- Added
get_total_distance_and_efficiency
17 tool updates
- First observed
get_all_charging_sessions_summary - First observed
get_average_efficiency_by_temperature - First observed
get_basic_car_information - First observed
get_battery_degradation_over_time - First observed
get_battery_health_summary - First observed
get_charging_by_location - First observed
get_current_car_status - First observed
get_daily_battery_usage_patterns - First observed
get_daily_driving_patterns - First observed
get_drive_summary_per_day - First observed
get_efficiency_by_month_and_temperature - First observed
get_longest_drives_by_distance - First observed
get_monthly_driving_summary - First observed
get_most_visited_locations - First observed
get_software_update_history - First observed
get_tire_pressure_weekly_trends - First observed
get_unusual_power_consumption
TDQS
Scored across 18 tools
Most tools have distinct purposes focusing on different aspects of Tesla vehicle data (charging, driving, battery, efficiency, locations, etc.), though some like 'get_battery_degradation_over_time' and 'get_battery_health_summary' could potentially overlap in scope, and 'get_daily_driving_patterns' and 'get_drive_summary_per_day' might be confused for similar daily analyses. Descriptions help clarify, but there is minor ambiguity in a few cases.
All tool names follow a consistent 'get_' prefix with descriptive snake_case nouns, such as 'get_all_charging_sessions_summary' and 'get_current_car_status'. This uniform pattern makes the tool set predictable and easy to navigate, with no deviations in naming conventions.
With 18 tools, the count is slightly high but reasonable for a comprehensive Tesla data analytics server, covering various metrics like charging, driving, battery, and efficiency. It might feel a bit heavy, but each tool appears to serve a specific purpose within the domain, avoiding redundancy.
The tool set provides extensive coverage for analyzing Tesla vehicle data, including real-time status, historical trends, charging patterns, driving habits, battery health, efficiency metrics, and anomaly detection. There are no obvious gaps; it supports a full lifecycle of data retrieval and analysis without dead ends for the stated purpose.
Maintenance
Related MCP Connectors
MCP server wrapping the Tesla Fleet API and TeslaMate API
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that connects to the Tesla Fleet API, allowing AI assistants like Claude to control Tesla vehicles and access vehicle information through natural language commands.19MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI assistants to query Prometheus metrics, discover available data, and analyze system performance through natural language interactions.545 npmMIT
- 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 gradedqualityDmaintenanceMCP server for PostgreSQL, MySQL, and SQLite that gives AI assistants secure database access via the Model Context Protocol.33 npm5MIT