wheel-size-mcp
MCP server providing LLM agents access to the Wheel Fitment API for vehicle wheel and tire compatibility data.
Catalog navigation: list makes, models, years, generations, modifications/trims, and regions.
Vehicle fitment lookup: get OEM wheel/tire specs for a specific vehicle (make/model/year/trim).
Reverse searches: find vehicles compatible with a rim, metric tire size, or high-flotation (LT) tire size.
Fitment checks: verify whether a rim, tire, or HF tire fits a specific vehicle in one call.
Upstep calculator: compute plus/minus sizing alternatives for a wheel/tire combo.
Classified/e-commerce tools: find tires for a rim, vehicles for a rim, vehicles for a tire, vehicles for rim+tire packages, and drill down into trims.
Spec metadata utility: get computed geometry, population stats, and fitment hints for a spec.
Pre-built workflow prompts: vehicle fitment lookup, rim compatibility check, product card generation.
Engine and powertrain data included with modification/search results.
Runs over stdio or as a remote HTTP MCP server; configurable via environment variables.
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., "@wheel-size-mcpWhat are the OEM wheel specs for a 2024 Toyota Camry?"
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.
wheel-size-mcp
The official MCP server for the Wheel Fitment API — built and maintained by Wheel-Size.com, the API provider. Gives LLM agents access to vehicle wheel and tire compatibility data.
Ask your AI assistant things like:
"What are the OEM wheel specs for a 2024 Toyota Camry?"
"Which vehicles fit 5x114.3 18x8 ET35 rims?"
"Calculate plus-size options for 225/50R17 on 7Jx17 ET40"
"Generate a product card for this wheel showing all compatible vehicles"
Quick Start
1. Get an API key
Sign up at developer.wheel-size.com and copy your API key.
2. Set the API key in your shell
Add to your ~/.zshrc (or ~/.bashrc):
export WHEELSIZE_API_KEY="your-api-key-here"Then reload your shell: source ~/.zshrc
3. Add to your AI client
Choose your client below — each config block is copy-paste ready.
Claude Code
claude mcp add wheel-size-api -- uvx wheel-size-mcpOr add to .mcp.json in your project root:
{
"mcpServers": {
"wheel-size-api": {
"command": "uvx",
"args": ["wheel-size-mcp"],
"env": {
"WHEELSIZE_API_KEY": "${WHEELSIZE_API_KEY}"
}
}
}
}Claude Desktop
Add to claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"wheel-size-api": {
"command": "uvx",
"args": ["wheel-size-mcp"],
"env": {
"WHEELSIZE_API_KEY": "your-api-key-here"
}
}
}
}Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"wheel-size-api": {
"command": "uvx",
"args": ["wheel-size-mcp"],
"env": {
"WHEELSIZE_API_KEY": "your-api-key-here"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"wheel-size-api": {
"command": "uvx",
"args": ["wheel-size-mcp"],
"env": {
"WHEELSIZE_API_KEY": "your-api-key-here"
}
}
}
}Zed
Add to your Zed settings.json (Cmd+, → Open Settings):
{
"context_servers": {
"wheel-size-api": {
"command": {
"path": "uvx",
"args": ["wheel-size-mcp"],
"env": {
"WHEELSIZE_API_KEY": "your-api-key-here"
}
}
}
}
}4. Restart your client
The MCP server starts automatically when the client launches.
Related MCP server: perplexity-mcp
Remote Server (Streamable HTTP)
Besides stdio, the server can run as a standalone HTTP service — useful for hosting one shared instance instead of installing Python on every machine:
wheel-size-mcp --transport http --port 8000The MCP endpoint is served at http://127.0.0.1:8000/mcp/. Point HTTP-capable clients at it:
{
"mcpServers": {
"wheel-size-api": {
"url": "http://127.0.0.1:8000/mcp/"
}
}
}Security: the server binds to 127.0.0.1 by default. The WHEELSIZE_API_KEY lives on the server side, so anyone who can reach the port consumes your API quota — expose it beyond localhost (--host 0.0.0.0) only behind a reverse proxy that handles authentication.
Available Tools (22)
Catalog — vehicle lookup
Tool | Description |
| List all manufacturers. Start here. |
| Models for a make (e.g. Toyota → Camry, Corolla…). |
| Available years for a make/model. |
| Generations for a make/model (alternative to years). |
| Trims for a specific vehicle (e.g. 2.0i, 3.0 V6…). |
| Market regions (USDM, EUDM, JDM…). |
Search — fitment data
Tool | Description |
| OEM wheel/tire specs for a vehicle. Requires |
| Find vehicles compatible with a rim (exact specs or min/max ranges). |
| Find vehicles by metric tire size, with speed/load/staggered filters and refinement facets. |
| Find vehicles by high-flotation (LT) inch size (e.g. 31x10.50R15). |
| "Will these rims fit my 2020 Civic?" — one-call fitment check. |
| Same for a metric tire size. |
| Same for a high-flotation tire size. |
| Plus/minus sizing calculator: asymmetric diameter range ( |
Classified — product cards for e-commerce
Tool | Description |
| Compatible tire sizes for a rim spec. |
| Vehicles that fit a given rim (geometric 2D filtering). |
| Drill down into trims for a specific generation. |
| Vehicles that use a specific tire size. |
| Drill down into trims for a generation that uses the tire. |
| Vehicles compatible with a rim + tire combo. |
| Drill down into trims for a rim + tire package. |
Utility
Tool | Description |
| Computed geometry, population stats, and intelligence hints for any spec. |
Engine and Powertrain Data
Since the API release of 2026-09-15, every modification row returned by ws_list_modifications, ws_search_by_vehicle and the ws_check_*_fitment_for_vehicle tools carries two sibling blocks:
engine— the legacy block{fuel, capacity, type, power, code}, unchanged.engine.poweris the headline figure whose source depends on the electrification level (combustion engine for combustion-only cars and mild hybrids, system power for full/plug-in hybrids and EVs).engine.fuelis a display string; group and filter on the powertrain fuel codes instead.powertrain—combustion_engine,electrification_level,primary_fuel,secondary_fuel,engine_power,system_power,engine_power_secondary,motors.ws_search_by_vehiclereturns the block as the API sends it ({kW, PS, hp}power objects,{code, title}fuel refs); the list and fitment-check tools return a compact summary (hp figures, fuel codes,motors [{axle, hp, code}]) to stay within token limits.
Absence words in enums and fuel codes are data, not errors: not_applicable (cannot apply — a BEV has no engine), not_reported (applies, not recorded yet), unknown (neither electrification tier nor fuel recorded). engine_power is the combustion engine alone and is the figure most other vehicle-data providers publish as "power" (on bi-fuel vehicles it may still be the higher of the engine's two ratings while engine_power_secondary is being filled in); system_power is the manufacturer-declared total of the whole powertrain, normally null outside full/plug-in hybrids and EVs with a motor on each axle, and must never be reconstructed by adding engine and motor figures.
The fuel filter of ws_list_modifications takes fuel codes (biodiesel_blend, cng, diesel, e100, electric, ethanol_blend, flex_fuel, h2, hybrid, lpg, petrol, petrol_cng, petrol_lpg); one value matches the legacy engine.fuel, the primary fuel or the secondary fuel, and a real code read from powertrain.primary_fuel / secondary_fuel can be passed straight back. Older spellings such as natural-gas are still accepted; the absence words (not_applicable, not_reported, unknown) and anything else are a 400 error.
MCP Prompts
Pre-built workflow prompts that guide LLM agents through multi-step operations:
Prompt | Description |
| Complete catalog→search chain for a vehicle description |
| Metadata→classified flow for rim compatibility |
| E-commerce product card workflow for wheels/packages |
Environment Variables
Variable | Required | Default | Description |
| Yes | — | API key from developer.wheel-size.com |
| No |
| API base URL |
| No | — | Host header override (only needed for local Docker routing) |
| No |
|
|
| No |
| Bind address for http transport (same as |
| No |
| Port for http transport (same as |
API Terms of Service
Search tools (ws_search_by_vehicle, ws_search_by_rim, ws_search_by_tire, ws_search_by_hf_tire, the ws_check_*_fitment_for_vehicle checks) and classified tools (ws_find_*) must be initiated by real users per API Terms of Usage. Do not call them in autonomous agent loops or for bulk data generation. Catalog tools, utility tools and ws_calculate_upsteps have no such restriction.
Evals
tests/test_questions.json contains 89 natural-language questions across 12 categories (catalog navigation, fitment lookups, reverse searches, fitment checks, upstep calculation, e-commerce product cards, spec metadata, multi-step workflows, edge cases, tool selection). Each entry includes expected_tools, optional expected_params / expected_params_search, and a free-text tests note.
evals/run_evals.py feeds these questions to a real Claude model with the MCP tools attached, records which tools it calls with which parameters, and grades them against the expectations — catching regressions in tool descriptions and server instructions:
# needs ANTHROPIC_API_KEY and a reachable Wheel Fitment API; costs money
uv sync --group evals
uv run --group evals python evals/run_evals.py # all questions
uv run --group evals python evals/run_evals.py -n 10 # smoke run
uv run --group evals python evals/run_evals.py --category catalog_flow
uv run --group evals python evals/run_evals.py --json report.json --min-pass 0.8Grading is deterministic (no LLM judge): every expected tool must be called (multiset — repeats counted, extra navigation calls allowed), and some single call must carry the expected parameters. Questions without machine-checkable expectations are reported as SKIP and excluded from the pass rate. The default model is pinned (claude-sonnet-5) so pass-rate history stays comparable; override with --model.
The eval runner is not part of pytest or CI — it bills the Anthropic API. The grading logic itself is unit-tested in CI (tests/test_eval_grading.py). ToS note: every question simulates a user-initiated request, so the search-tool restriction is respected.
Development
# Install dev dependencies
uv sync --dev
# Unit tests (no API needed — this is what CI runs)
uv run pytest -m "not integration"
# Full test suite (requires a private API instance, see note below)
uv run pytest
# Lint
uv run ruff check .
# Run server (stdio)
wheel-size-mcpNote on tests: integration tests run against a private test instance of the API and auto-skip when it is unreachable. External contributors should rely on the unit suite (pytest -m "not integration"), which mocks all HTTP and is what CI runs on every push and pull request.
Available Tools
21 toolsws_calculate_upstepsSearch (user-initiated only)ARead-onlyIdempotent
Calculate plus/minus sizing alternatives for a wheel/tire combo.
Given OEM wheel specs, returns safe replacement sizes at different plus/minus levels (e.g. +1, +2 = larger rim with lower-profile tire). Tighten do_max for "without changing the overall diameter" requests.
This is a calculator tool — can be called freely without user initiation.
| Name | Required | Description | Default |
|---|---|---|---|
| s_max | No | Max section width difference, % (default 10) | |
| steps | No | Plus/minus steps (default +2) | |
| do_max | No | Max overall diameter difference, % (default 5). Use 2-3 to keep speedo accurate. | |
| rim_width | Yes | OE rim width in inches | |
| rim_offset | Yes | OE rim offset in mm | |
| aspect_ratio | Yes | OE tire aspect ratio | |
| rim_diameter | Yes | OE rim diameter in inches | |
| section_width | Yes | OE tire section width in mm |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'can be called freely without user initiation' yet the annotation title says 'user-initiated only' – a direct contradiction that misleads the agent about when the tool can be invoked. This is an annotation contradiction.
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, front-loaded with the core purpose, and each of its four sentences adds functional detail or usage nuance. There is no filler 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?
The description covers the tool's purpose, example usage, parameter tuning, and invocation policy. Combined with an output schema and 100% parameter schema coverage, it is fairly complete, though it does not address edge cases or provide explicit alternatives among siblings.
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 covers all 8 parameters, but the description adds meaningful semantics by explaining the plus/minus concept and specifically advising to tighten do_max for 'without changing the overall diameter' requests, which goes beyond the schema's raw limits.
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 'Calculate plus/minus sizing alternatives for a wheel/tire combo' – a specific verb and resource. This distinguishes it from sibling search/check tools and effectively communicates the tool's core function.
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 explains the use case ('Given OEM wheel specs...') and provides guidance on parameter tuning ('Tighten do_max...'). It also notes it can be called freely without user initiation, but does not explicitly contrast with sibling tools or state 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.
ws_check_hf_tire_fitment_for_vehicleSearch (user-initiated only)ARead-onlyIdempotent
Check whether a high-flotation (LT) tire size fits a specific vehicle.
Answers "do 31x10.50R15 tires fit my 2000 Chevy Blazer?" in one call: returns the vehicle's modifications (trims) where this HF tire size appears as a documented fitment. An EMPTY result means no documented fitment for that combination. Inch-based HF sizes only — for metric sizes use ws_check_tire_fitment_for_vehicle.
The API has no year parameter, so 'year' is filtered MCP-side against each modification's production range (start_year/end_year); each row echoes its range so near-misses can be explained.
IMPORTANT: This is a Search method — only call when a user explicitly requests a fitment check. Do not call in autonomous loops.
| Name | Required | Description | Default |
|---|---|---|---|
| make | Yes | Make slug (e.g. 'chevrolet'). Use ws_list_makes to find valid slugs. | |
| mode | No | Axle mode | |
| year | No | Model year — filters to modifications in production that year | |
| limit | No | Results per page | |
| model | Yes | Model slug (e.g. 'blazer'). Use ws_list_models to find valid slugs. | |
| offset | No | Pagination offset | |
| region | No | Region slug(s) (e.g. ['usdm'] or ['eudm', 'audm']). | |
| rim_diameter | Yes | Rim diameter in inches (e.g. 15) | |
| section_width | Yes | Tire section width in inches (e.g. 10.5) | |
| overall_diameter | Yes | Overall tire diameter in inches (e.g. 31 for 31x10.50R15) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context: an empty result means 'no documented fitment,' the year parameter is filtered MCP-side against production ranges with each row echoing its range, and the API has no year parameter. These details go beyond the annotations and help the agent correctly interpret responses and edge cases.
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 well-structured and front-loaded: it states the primary purpose first, then gives an example, then explains empty results and year filtering, and concludes with a usage warning. Every sentence earns its place; no redundant filler. At about 120 words, it is appropriately sized for the tool's complexity.
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 10 parameters, an output schema, and the presence of sibling tools, this description is exceptionally complete. It covers scope (inch-based HF only), edge-case semantics (empty result), year filtering behavior, and the exact alternative tool for metric sizes. The existence of an output schema means return-value details are not required, so the description covers all necessary 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?
Schema description coverage is 100%, so baseline is 3. The description adds meaningful semantics beyond the schema: it explains the inch-based nature of the tire dimensions, gives a concrete mapping (e.g., '31 for 31x10.50R15'), and details how the year parameter behaves (MCP-side filtering against production ranges). This enriches the parameter definitions enough to earn a 4.
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 opens with a specific verb and resource: 'Check whether a high-flotation (LT) tire size fits a specific vehicle.' It includes a concrete example ('do 31x10.50R15 tires fit my 2000 Chevy Blazer?') and explicitly distinguishes from the sibling tool ws_check_tire_fitment_for_vehicle by noting 'Inch-based HF sizes only — for metric sizes use ws_check_tire_fitment_for_vehicle.' This gives clear, unambiguous purpose.
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 explicitly states when to use this tool vs alternatives: 'Inch-based HF sizes only — for metric sizes use ws_check_tire_fitment_for_vehicle.' It also provides an important usage constraint: 'only call when a user explicitly requests a fitment check. Do not call in autonomous loops.' This fully clarifies the intended invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_check_rim_fitment_for_vehicleSearch (user-initiated only)ARead-onlyIdempotent
Check whether specific rims fit a specific vehicle (make + model, optionally year).
Answers "will 5x114.3 17x7 ET40 rims fit my 2020 Honda Civic?" in one call: returns the vehicle's modifications (trims) where this rim appears as a documented fitment. An EMPTY result means no documented fitment for that combination — the rim is likely incompatible or undocumented.
The API has no year parameter, so 'year' is filtered MCP-side against each modification's production range (start_year/end_year); each row echoes its range so near-misses can be explained.
Prefer this over ws_search_by_rim + ws_search_by_vehicle comparison when the user names a specific vehicle.
IMPORTANT: This is a Search method — only call when a user explicitly requests a fitment check. Do not call in autonomous loops.
| Name | Required | Description | Default |
|---|---|---|---|
| cb | No | Centre bore in mm (e.g. 64.1) | |
| make | Yes | Make slug (e.g. 'honda'). Use ws_list_makes to find valid slugs. | |
| mode | No | Axle mode | |
| year | No | Model year — filters to modifications in production that year | |
| limit | No | Results per page | |
| model | Yes | Model slug (e.g. 'civic'). Use ws_list_models to find valid slugs. | |
| offset | No | Pagination offset | |
| region | No | Region slug(s) (e.g. ['usdm'] or ['eudm', 'audm']). | |
| rim_width | Yes | Rim width in inches (e.g. 7) | |
| rim_offset | No | Rim offset ET in mm (e.g. 40) | |
| bolt_pattern | Yes | Bolt pattern of the rim (e.g. '5x114.3') | |
| rim_diameter | Yes | Rim diameter in inches (e.g. 17) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond annotations: an EMPTY result means no documented fitment, year is filtered MCP-side with each row echoing its production range, and each row is a modification/trim where the rim appears. It adds meaningful context without contradicting the readOnlyHint and idempotentHint annotations.
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 well-structured into short paragraphs, immediately front-loading the core purpose. Every sentence serves a purpose: example, empty-result semantics, year-filter behavior, and usage guidance. There is no redundancy or filler.
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 output schema exists, the description still explains the meaning of results (modifications with fitment, empty result semantics) and edge cases (near-misses due to year). With 12 parameters and several sibling tools, the description is sufficient for an agent to select and call this tool confidently.
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 100%, so the baseline is 3. The description adds value by explaining that the 'year' parameter is filtered against start_year/end_year and that rows echo the range for near-miss explanation. It also provides a concrete example of how parameters combine, though it does not delve into each parameter 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 starts with 'Check whether specific rims fit a specific vehicle', a specific verb+resource combination, and illustrates with a concrete example question. It distinguishes itself from sibling tools by explicitly recommending this over ws_search_by_rim + ws_search_by_vehicle and from tire fitment tools by name.
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 explicitly states when to use this tool: 'Prefer this over ws_search_by_rim + ws_search_by_vehicle comparison when the user names a specific vehicle.' It also gives a clear exclusion: 'only call when a user explicitly requests a fitment check. Do not call in autonomous loops.' This provides excellent decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_check_tire_fitment_for_vehicleSearch (user-initiated only)ARead-onlyIdempotent
Check whether a specific tire size fits a specific vehicle (make + model, optionally year).
Answers "do 225/45R17 tires fit my 2020 Honda Civic?" in one call: returns the vehicle's modifications (trims) where this tire size appears as a documented fitment. An EMPTY result means no documented fitment for that combination. Metric sizes only.
The API has no year parameter, so 'year' is filtered MCP-side against each modification's production range (start_year/end_year); each row echoes its range so near-misses can be explained.
Prefer this over ws_search_by_tire + ws_search_by_vehicle comparison when the user names a specific vehicle.
IMPORTANT: This is a Search method — only call when a user explicitly requests a fitment check. Do not call in autonomous loops.
| Name | Required | Description | Default |
|---|---|---|---|
| make | Yes | Make slug (e.g. 'honda'). Use ws_list_makes to find valid slugs. | |
| mode | No | Axle mode | |
| year | No | Model year — filters to modifications in production that year | |
| limit | No | Results per page | |
| model | Yes | Model slug (e.g. 'civic'). Use ws_list_models to find valid slugs. | |
| offset | No | Pagination offset | |
| region | No | Region slug(s) (e.g. ['usdm'] or ['eudm', 'audm']). | |
| aspect_ratio | Yes | Tire aspect ratio (e.g. 45) | |
| rim_diameter | Yes | Rim diameter in inches (e.g. 17) | |
| section_width | Yes | Tire section width in mm (e.g. 225) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context: it returns modifications/trims, empty result means no documented fitment, metric sizes only, and the MCP-side year filtering with production range echo. No contradictions.
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 multi-sentence but every sentence earns its place: functional summary, concrete example, return behavior, API caveat, sibling comparison, and a usage warning. It is well-structured and front-loaded with the core purpose.
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 and the existence of an output schema, the description covers all necessary behavioral aspects: return semantics, empty result interpretation, year filtering logic, and the user-initiated constraint. An agent has enough context 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 100%, so the baseline is 3. The description adds context beyond the schema, such as explaining that 'year' is filtered MCP-side against production ranges, and clarifying metric size expectations. This meaningfully helps the agent understand parameter interactions.
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 a specific verb+resource: 'Check whether a specific tire size fits a specific vehicle (make + model, optionally year)' and gives a concrete example question. It also distinguishes from siblings by recommending this over ws_search_by_tire + ws_search_by_vehicle when the user names a specific vehicle.
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?
Explicit when-to-use guidance is provided: 'Prefer this over ws_search_by_tire + ws_search_by_vehicle comparison when the user names a specific vehicle.' It also includes an exclusion: 'only call when a user explicitly requests a fitment check. Do not call in autonomous loops.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_find_tires_for_rimClassified (user-initiated only)ARead-onlyIdempotent
Find compatible tire sizes for a given rim specification.
Returns tire sizes (e.g. '245/70R17') with the number of vehicle generations that use each tire on this rim. Set diameter_range to also include tires for ±N inch rim diameters.
Useful for tire product recommendations on wheel product pages.
| Name | Required | Description | Default |
|---|---|---|---|
| cb | No | Centre bore diameter in mm | |
| fd | No | Wheel fastener thread diameter in mm (e.g. 12 for M12) | |
| sort | No | Sort: name (A-Z), fitment (closest FS delta first), load (heaviest first) | |
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| bs_push | No | Backspace push tolerance in mm (default 2) | |
| fs_poke | No | Frontspace poke tolerance in mm (default 2) | |
| rim_width | Yes | Rim width in inches | |
| rim_bst_to | No | Backspace tolerance upper bound in mm (default 2) | |
| rim_offset | Yes | Rim offset in mm | |
| bolt_pattern | Yes | Bolt pattern (e.g. '5x114.3') | |
| od_tolerance | No | Overall diameter tolerance fraction (default 0.01) | |
| ow_tolerance | No | Overall width tolerance fraction (default 0) | |
| rim_bst_from | No | Backspace tolerance lower bound in mm (default 2) | |
| rim_diameter | Yes | Rim diameter in inches | |
| diameter_range | No | Widen rim diameter search ±N inches (0 = exact match) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds valuable context about the output shape (tire sizes with generation counts) and the behavior of diameter_range, which goes beyond the raw annotations.
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 three short, focused sentences with the main action front-loaded. No fluff, and every sentence adds value: what it does, what it returns, and a usage example.
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 16 parameters and the presence of an output schema, the description adequately covers the core purpose and output. It explains the key optional behavior (diameter_range) and the primary use case. It lacks explicit mention of required parameters, but those are clearly indicated in the schema, so this is not a major gap.
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 100%, so the schema fully documents all parameters. The description only highlights diameter_range, but the schema already explains it ('Widen rim diameter search ±N inches'). This meets the baseline but does not add deeper meaning 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 starts with 'Find compatible tire sizes for a given rim specification,' which uses a specific verb and resource, clearly distinguishing it from sibling tools like ws_find_vehicles_for_rim. The return value (tire sizes with generation counts) is also stated.
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 mentions 'Useful for tire product recommendations on wheel product pages,' providing a clear context for when to use it. However, it does not explicitly list alternatives or cases where other tools (e.g., ws_find_vehicles_for_rim) would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_find_vehicle_modifications_for_packageClassified (user-initiated only)ARead-onlyIdempotent
Drill down into individual trims for a generation from ws_find_vehicles_for_package.
PREREQUISITES — call ws_find_vehicles_for_package first to get:
make, model, generation slugs (from the results)
Use the same rim AND tire parameters and tolerances as the parent search
Returns per-vehicle rows with OEM wheel specs (rim, tire) and fitment deltas vs the searched rim + tire package. Completes the e-commerce chain: package search → generations → specific trims.
| Name | Required | Description | Default |
|---|---|---|---|
| cb | No | Centre bore diameter in mm | |
| fd | No | Wheel fastener thread diameter in mm (e.g. 12 for M12) | |
| make | Yes | Make slug from ws_find_vehicles_for_package results | |
| sort | No | Sort: name (A-Z), fitment (closest FS delta first), load (heaviest first) | |
| limit | No | Results per page | |
| model | Yes | Model slug from ws_find_vehicles_for_package results | |
| offset | No | Pagination offset | |
| bs_push | No | Backspace push tolerance in mm (default 2) | |
| fs_poke | No | Frontspace poke tolerance in mm (default 2) | |
| rim_width | Yes | Rim width in inches | |
| generation | Yes | Generation slug from ws_find_vehicles_for_package results | |
| rim_bst_to | No | Backspace tolerance upper bound in mm (default 2) | |
| rim_offset | Yes | Rim offset in mm | |
| aspect_ratio | Yes | Tire aspect ratio | |
| bolt_pattern | Yes | Bolt pattern (e.g. '5x114.3') | |
| od_tolerance | No | Overall diameter tolerance fraction (default 0.01) | |
| ow_tolerance | No | Overall width tolerance fraction (default 0) | |
| rim_bst_from | No | Backspace tolerance lower bound in mm (default 2) | |
| rim_diameter | Yes | Rim diameter in inches | |
| section_width | Yes | Tire section width in mm | |
| diameter_range | No | Widen rim diameter search ±N inches (0 = exact match) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which cover the safety profile. The description adds meaningful behavioral context beyond those: it returns 'per-vehicle rows with OEM wheel specs and fitment deltas' and positions the tool as completing the e-commerce chain. This enriches the annotation data without contradicting it.
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 with a clear one-sentence summary followed by a PREREQUISITES bullet list and a return-value summary. It is appropriately sized for a tool with 21 parameters and a defined workflow, but it could be slightly tighter—some phrasing (e.g., 'Completes the e-commerce chain') is rhetorical rather than purely informative.
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 an output schema and rich annotations present, the description doesn't need to enumerate return fields. It covers the key contextual aspects: prerequisites, parameter inheritance, return content, and the place in the workflow. It might benefit from a brief note on pagination or error conditions, but those are not essential given the schema and 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?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining that make/model/generation slugs must come from the parent search and that rim/tire parameters and tolerances should be the same as the parent search. This guidance helps the agent correctly populate parameters that would otherwise be ambiguous even with schema descriptions.
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 begins with 'Drill down into individual trims for a generation from ws_find_vehicles_for_package,' which clearly identifies the tool's specific verb ('drill down'), resource ('individual trims'), and its relationship to the sibling tool. It also distinguishes it from the parent search tool by describing the downstream step in the fitment workflow.
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 explicitly states prerequisites ('call ws_find_vehicles_for_package first'), tells the user to extract make/model/generation slugs from parent results, and instructs to 'Use the same rim AND tire parameters and tolerances as the parent search.' This gives clear, actionable when-to-use guidance and also implies when not to use the tool (e.g., if the parent hasn't been called or if you lack generation results).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_find_vehicle_modifications_for_rimClassified (user-initiated only)ARead-onlyIdempotent
Drill down into individual trims for a generation from ws_find_vehicles_for_rim.
PREREQUISITES — call ws_find_vehicles_for_rim first to get:
make, model, generation slugs (from the results)
Use the same rim parameters and tolerances as the parent search
Returns per-vehicle rows with OEM wheel specs (rim, tire, frontspace, backspace) and fitment deltas vs the searched rim.
| Name | Required | Description | Default |
|---|---|---|---|
| cb | No | Centre bore diameter in mm | |
| fd | No | Wheel fastener thread diameter in mm (e.g. 12 for M12) | |
| make | Yes | Make slug from ws_find_vehicles_for_rim results | |
| sort | No | Sort: name (A-Z), fitment (closest FS delta first), load (heaviest first) | |
| limit | No | Results per page | |
| model | Yes | Model slug from ws_find_vehicles_for_rim results | |
| offset | No | Pagination offset | |
| bs_push | No | Backspace push tolerance in mm (default 2) | |
| fs_poke | No | Frontspace poke tolerance in mm (default 2) | |
| rim_width | Yes | Rim width in inches | |
| generation | Yes | Generation slug from ws_find_vehicles_for_rim results | |
| rim_bst_to | No | Backspace tolerance upper bound in mm (default 2) | |
| rim_offset | Yes | Rim offset in mm | |
| bolt_pattern | Yes | Bolt pattern (e.g. '5x114.3') | |
| od_tolerance | No | Overall diameter tolerance fraction (default 0.01) | |
| ow_tolerance | No | Overall width tolerance fraction (default 0) | |
| rim_bst_from | No | Backspace tolerance lower bound in mm (default 2) | |
| rim_diameter | Yes | Rim diameter in inches | |
| diameter_range | No | Widen rim diameter search ±N inches (0 = exact match) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and idempotent hints, the description discloses the prerequisite dependency on a prior search and outlines the return data (per-vehicle rows with OEM wheel specs and fitment deltas). This adds valuable behavioral context without contradicting annotations.
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, with a front-loaded main sentence and a bulleted list of prerequisites. Every sentence earns its place, and the section on what it returns is clear and without fluff.
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 high parameter count and complexity, the description covers the essential workflow: prerequisites, parent search references, and return data. It does not explain every parameter or pagination, but the 100% schema coverage and output schema fill the gaps. Slight room for more detail on how 'trims' differ from 'modifications' but not critical.
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 100%, so parameters are well-documented. The description adds value by instructing the caller to reuse the same rim parameters and tolerances as the parent search, which is not stated in the schema. This ties the many parameters together logically.
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: 'Drill down into individual trims for a generation from ws_find_vehicles_for_rim.' It identifies the specific verb ('drill down'), the resource ('individual trims for a generation'), and distinguishes itself from the parent search tool by referencing it directly.
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 explicit prerequisites: call ws_find_vehicles_for_rim first to obtain make, model, and generation slugs, and use the same rim parameters and tolerances as the parent search. This gives clear context on when to use the tool, though it does not mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_find_vehicles_for_packageClassified (user-initiated only)ARead-onlyIdempotent
Find vehicles compatible with a rim + tire package.
Most precise classified search — considers both physical wheel fitment (backspace) and tire size compatibility simultaneously. Use sort='fitment' to put the closest matches first.
For e-commerce combo/bundle product pages. To drill into a specific generation, use ws_find_vehicle_modifications_for_package.
| Name | Required | Description | Default |
|---|---|---|---|
| cb | No | Centre bore diameter in mm | |
| fd | No | Wheel fastener thread diameter in mm (e.g. 12 for M12) | |
| sort | No | Sort: name (A-Z), fitment (closest FS delta first), load (heaviest first) | |
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| bs_push | No | Backspace push tolerance in mm (default 2) | |
| fs_poke | No | Frontspace poke tolerance in mm (default 2) | |
| rim_width | Yes | Rim width in inches | |
| rim_bst_to | No | Backspace tolerance upper bound in mm (default 2) | |
| rim_offset | Yes | Rim offset in mm | |
| aspect_ratio | Yes | Tire aspect ratio | |
| bolt_pattern | Yes | Bolt pattern (e.g. '5x114.3') | |
| od_tolerance | No | Overall diameter tolerance fraction (default 0.01) | |
| ow_tolerance | No | Overall width tolerance fraction (default 0) | |
| rim_bst_from | No | Backspace tolerance lower bound in mm (default 2) | |
| rim_diameter | Yes | Rim diameter in inches | |
| section_width | Yes | Tire section width in mm | |
| diameter_range | No | Widen rim diameter search ±N inches (0 = exact match) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds behavioral context by explaining that it 'considers both physical wheel fitment (backspace) and tire size compatibility simultaneously' and suggests using sort='fitment' for closest matches, which goes beyond schema details and provides useful insight into tool 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 compact, with the first sentence stating the core purpose, the second paragraph adding a key behavioral differentiator and sort tip, and the third providing usage context and an alternative. Every sentence adds value, and the structure is front-loaded, making it easy for an agent to quickly grasp the tool's role.
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 and 100% parameter description coverage, the description does not need to explain return values or every parameter. It covers purpose, usage context, sibling distinction, and behavior, which is sufficient for an agent to select and invoke the tool correctly. The e-commerce use case and the alternative guidance make it contextually 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 100% parameter coverage, so the baseline is 3. The description does not add new parameter semantics beyond what the schema already provides; for instance, the sort='fitment' hint is already described in the schema's sort parameter enumeration. Thus no extra value beyond the schema is present.
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: 'Find vehicles compatible with a rim + tire package.' It also distinguishes from siblings by noting it is the 'Most precise classified search' and explicitly contrasts with ws_find_vehicle_modifications_for_package, making the verb+resource+scope specific and non-ambiguous.
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?
It provides explicit usage context: 'For e-commerce combo/bundle product pages.' and an alternative: 'To drill into a specific generation, use ws_find_vehicle_modifications_for_package.' This clearly tells the agent when to use this tool versus a sibling, satisfying the when/when-not/alternatives criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_find_vehicles_for_rimClassified (user-initiated only)ARead-onlyIdempotent
Find vehicle generations compatible with a given rim via geometric backspace calculations.
Unlike ws_search_by_rim (which does direct 1:1 wheel pair matching), this endpoint uses advanced 2D geometric filtering based on frontspace/backspace calculations to determine physical fitment. This yields broader results — any vehicle where the rim physically fits the wheel housing, even if this exact spec isn't in the OEM database.
Returns make/model/generation with fitment deltas (frontspace/backspace), load capacity, and OEM ratio ranges. Use sort='fitment' to put the closest matches first on product pages.
Note: in some cases spacers or special bolts/nuts may be required. Always verify rims don't interfere with brake calipers or extend beyond the wheel arch.
For e-commerce product pages: "This wheel fits: BMW X5, Audi Q7..." To drill into a specific generation, use ws_find_vehicle_modifications_for_rim.
| Name | Required | Description | Default |
|---|---|---|---|
| cb | No | Centre bore diameter in mm | |
| fd | No | Wheel fastener thread diameter in mm (e.g. 12 for M12) | |
| sort | No | Sort: name (A-Z), fitment (closest FS delta first), load (heaviest first) | |
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| bs_push | No | Backspace push tolerance in mm (default 2) | |
| fs_poke | No | Frontspace poke tolerance in mm (default 2) | |
| rim_width | Yes | Rim width in inches | |
| rim_bst_to | No | Backspace tolerance upper bound in mm (default 2) | |
| rim_offset | Yes | Rim offset in mm | |
| bolt_pattern | Yes | Bolt pattern (e.g. '5x114.3') | |
| od_tolerance | No | Overall diameter tolerance fraction (default 0.01) | |
| ow_tolerance | No | Overall width tolerance fraction (default 0) | |
| rim_bst_from | No | Backspace tolerance lower bound in mm (default 2) | |
| rim_diameter | Yes | Rim diameter in inches | |
| diameter_range | No | Widen rim diameter search ±N inches (0 = exact match) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, lowering the bar, but the description adds meaningful behavioral context: results are broader than the OEM database (any physical fit), and warns that spacers or special bolts/nuts may be required and that rims must be verified against brake calipers and wheel arches. These are non-obvious behaviors not captured by annotations.
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 well-structured and appropriately sized for a complex tool: a clear opening sentence, a contrast with a sibling, return-value summary, usage tip, practical caveat, and a pointer to follow-up tool. Every sentence earns its place, and the front-loading makes it scannable.
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 high parameter count (16) and the presence of an output schema, the description covers all necessary context: purpose, differentiation from ws_search_by_rim, result contents, real-world usage, safety caveats, and a next-step pointer. The output schema handles return values, so the description's focus on functional context is sufficient.
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 schema already provides 100% parameter coverage with descriptions for all 16 parameters, so the baseline is 3. The description adds only limited extra semantics, such as explaining that fitment deltas (frontspace/backspace) relate to geometric calculations and highlighting sort='fitment', but it doesn't systematically elaborate on required parameters or tolerance options. It does provide some conceptual context (frontspace/backspace) that helps interpret bs_push/fs_poke and rim_bst_to/from, but not enough to push above baseline.
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 opens with a specific verb+resource: 'Find vehicle generations compatible with a given rim via geometric backspace calculations.' It clearly distinguishes from ws_search_by_rim by explaining the difference between direct 1:1 matching and advanced 2D geometric filtering, and states what the tool returns (make/model/generation, fitment deltas, load capacity). This is unambiguous and differentiates from siblings.
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?
Usage guidance is explicit: it contrasts with ws_search_by_rim, describes when this broader fitment search is appropriate, gives a concrete e-commerce use case ('This wheel fits: BMW X5, Audi Q7...'), and directs users to ws_find_vehicle_modifications_for_rim for drilling into a specific generation. Also provides a sort tip ('Use sort='fitment' to put the closest matches first').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_find_vehicles_for_tireClassified (user-initiated only)ARead-onlyIdempotent
Find vehicle generations that use a specific tire size.
Simplest classified search — matches tire dimensions only, no bolt pattern or backspace filtering.
For e-commerce: "This tire fits: Honda Civic, Toyota Camry..."
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| aspect_ratio | Yes | Tire aspect ratio | |
| rim_diameter | Yes | Rim diameter in inches | |
| section_width | Yes | Tire section width in mm |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral context: it matches only tire dimensions and intentionally omits bolt pattern/backspace filtering, which is useful beyond the annotations.
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 short and front-loaded with the core purpose, followed by clarifying details and a use-case example. Every sentence adds value without unnecessary repetition.
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 simple read-only search tool, a complete output schema, and full schema parameter coverage, the description is sufficient. It clearly explains the scope and the e-commerce use case, leaving no critical 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?
Schema description coverage is 100%, with each parameter carrying its own description. The description adds minimal new parameter semantics—it only reinforces that the three required tire dimensions are the focus. This is adequate but does not go 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 uses a specific verb and resource: 'Find vehicle generations that use a specific tire size.' It clearly distinguishes itself from sibling tools by noting it is the 'simplest classified search' and that it matches tire dimensions only, with no bolt pattern or backspace filtering.
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 gives clear context for when to use this tool: when you have a tire size and want to find compatible vehicles. It hints at alternatives by explicitly excluding bolt pattern and backspace filtering, which contrasts with rim-focused sibling tools, though it does not name specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_get_spec_metadataUtility (freely callable)ARead-onlyIdempotent
Get computed geometry, population stats, and hints for a wheel/tire spec.
Auto-detects mode from parameters:
rim: rim_diameter + rim_width (optionally rim_offset)
tire: section_width [mm] + aspect_ratio + rim_diameter
hf_tire: overall_diameter + section_width [inches] + rim_diameter
package: rim + tire params combined
Use before search or classified calls to understand whether a spec is common or unusual, what tolerances to use, and what to expect.
This is a utility tool — can be called freely without user initiation.
| Name | Required | Description | Default |
|---|---|---|---|
| cb | No | Centre bore in mm (e.g. 71.6). Passed to suggested classified params. | |
| rim_width | No | Rim width in inches (e.g. 8.0) | |
| rim_offset | No | Offset ET in mm (e.g. 45). Enables geometry. | |
| aspect_ratio | No | Tire aspect ratio (e.g. 45) | |
| bolt_pattern | No | Bolt pattern (e.g. '5x114.3'). Narrows population stats. | |
| rim_diameter | No | Rim diameter in inches (e.g. 18) | |
| section_width | No | Tire section width. Metric tires: mm (95-405, e.g. 225). HF tires (when overall_diameter is set): inches (4.5-14, e.g. 12.5). | |
| overall_diameter | No | Overall tire diameter in inches (e.g. 33). HF mode. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context: it auto-detects the mode based on provided parameters and lists the specific parameter combinations for each mode. This goes beyond the schema and annotations by explaining the tool's operating logic, though it could further detail what computed geometry includes or how hints are derived.
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 well-structured and concise. It leads with the purpose, then uses a bulleted list to specify auto-detect modes, followed by usage guidance and a note on free callability. Every sentence adds value, and the formatting improves scannability. There is no redundancy or fluff.
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 (8 optional parameters, multiple modes), the description provides complete context: what it computes, how to use it, when to use it, and that it is freely callable. The output schema exists, so return values are documented elsewhere. The description fully compensates for the ambiguity caused by having no required parameters and multiple modes.
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 100%, so the schema already documents each parameter. The description adds significant meaning by explaining how parameters interact: rim mode, tire mode, hf_tire mode, and package mode. For example, it clarifies that section_width is in mm for metric tires but inches for HF tires, and that rim_offset is optional. This mode logic is essential for correct invocation and is not fully captured in 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 tool's function: 'Get computed geometry, population stats, and hints for a wheel/tire spec.' This is a specific verb+resource with clear scope. It distinguishes itself from sibling search/check tools by explicitly positioning it as a pre-processing utility, and the auto-detected modes further clarify its unique role.
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 explicitly states when to use the tool: 'Use before search or classified calls to understand whether a spec is common or unusual, what tolerances to use, and what to expect.' It also notes it can be called freely without user initiation, which is a clear usage guideline. This is highly actionable and distinguishes it from sibling tools that perform searches or fitment checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_list_generationsCatalog (freely callable)ARead-onlyIdempotent
List generations for a make/model.
Returns generation slugs, names, platform codes, and production spans. Alternative to ws_list_years for models with many generations (e.g. BMW 3 Series). After getting a generation, use ws_list_modifications with the generation slug.
| Name | Required | Description | Default |
|---|---|---|---|
| make | Yes | Make slug | |
| year | No | Filter by year | |
| model | Yes | Model slug | |
| region | No | Region slug(s) (e.g. ['eudm']). Filter generations sold in these regions. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the concrete output fields (generation slugs, names, platform codes, production spans) and the hierarchical relationship to ws_list_modifications, exceeding the baseline for annotation-covered safety profile.
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?
Four sentences, each earning its place: purpose, return values, alternative context, and next step. Front-loaded with the core action, no fluff.
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, clear annotations, complete schema, and presence of an output schema, the description covers purpose, return data, usage context, and follow-up action, making it fully self-contained.
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 100%, so the baseline is 3. The description does not elaborate on parameter semantics beyond what the schema provides, but it doesn't need to since the schema is explicit.
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 lists generations for a make/model, with specific return values (slugs, names, platform codes, production spans). It distinguishes itself from ws_list_years by noting it's an alternative for models with many generations.
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?
Provides explicit guidance: use as an alternative to ws_list_years for multi-generational models, and follow up with ws_list_modifications using the generation slug. This gives both when-to-use and workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_list_makesCatalog (freely callable)ARead-onlyIdempotent
List all vehicle manufacturers (makes).
Returns slugs and names for all car brands in the database.
Common starting point for vehicle fitment lookups, but not the only one — ws_list_years can also be called first (without params) to start from year.
After getting a make slug, use ws_list_models to find models.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Translate names (e.g. 'ru'). name_en keeps the English original. | |
| year | No | Filter by year (e.g. 2024) | |
| brands | No | Only these make slugs (e.g. ['toyota', 'nissan']). For curated storefronts. | |
| region | No | Region slug(s) (e.g. ['usdm', 'jdm']). Filter makes sold in these regions. | |
| brands_exclude | No | Exclude these make slugs (e.g. ['geely', 'great-wall']). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description mentions return content (slugs and names) but output schema likely covers this. Annotations already declare readOnly and idempotent, so description adds little beyond workflow context; no contradictions.
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?
Three sentences, front-loaded purpose, then alternative and next step; no filler.
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, optional parameters fully described in schema, output schema present, and annotations covering safety, the description provides sufficient context for selection and 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?
Schema covers 100% of parameters with descriptions, so description needn't explain them; it adds workflow context but no param specifics.
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?
Clearly states it lists all vehicle manufacturers (makes) and returns slugs and names, distinguishing itself from sibling list tools like ws_list_years and ws_list_models by describing its role as a starting point.
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?
Explicitly says it is a common starting point but not the only one, naming ws_list_years as an alternative entry point, and instructs to use ws_list_models after obtaining a make slug.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_list_modelsCatalog (freely callable)ARead-onlyIdempotent
List models for a given make.
Returns model slugs, names, and production year ranges.
Can be filtered by year to narrow results (e.g. "which Toyota models existed in 2020?").
After getting a model slug, use ws_list_years or ws_list_generations next.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Translate names (e.g. 'ru'). name_en keeps the English original. | |
| make | Yes | Make slug (e.g. 'toyota'). Use ws_list_makes to find valid slugs. | |
| year | No | Filter by year | |
| region | No | Region slug(s) (e.g. ['usdm']). Filter models sold in these regions. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds non-redundant behavioral context: the result shape (slugs, names, year ranges), the ability to filter by year, and a suggested next step. No contradiction with annotations.
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?
Three short sentences front-load the core purpose, then add filtering and next-step guidance. Every sentence earns its place with no filler.
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 simple read-only catalog tool with a full input schema, output schema, and rich annotations, the description plus schema fully covers when and how to use it. The next-step hint completes the workflow 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?
Schema coverage is 100% and all parameters have descriptions, so the baseline is 3. The description adds a clarifying example for the year filter and emphasizes 'make' but does not materially enhance lang/region 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 opens with a specific action and object: 'List models for a given make.' It clarifies the output (model slugs, names, production year ranges) and positions the tool within the ws_list_* family, distinguishing it from makes/years/generations 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?
It provides clear usage context with a concrete year-filter example and explicitly recommends downstream tools ('use ws_list_years or ws_list_generations next'). It stops short of describing exclusions or direct alternative list-model tools, but the workflow guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_list_modificationsCatalog (freely callable)ARead-onlyIdempotent
List modifications (trims) for a specific vehicle.
Returns trim names, engine specs, and production years. One of year or generation is required. Filter by power via horsepower (exact ±2.7 hp) or horsepower_min/max (e.g. "trims over 300 hp" → horsepower_min=300). After getting a modification slug, use ws_search_by_vehicle for fitment data.
| Name | Required | Description | Default |
|---|---|---|---|
| fuel | No | Fuel type filter (e.g. 'diesel', 'electric', 'hybrid', 'petrol') | |
| lang | No | Translate names (e.g. 'ru'). name_en keeps the English original. | |
| make | Yes | Make slug | |
| trim | No | Fuzzy engine/trim name search (e.g. '2.0T', 'V6') | |
| year | No | Model year | |
| model | Yes | Model slug | |
| region | No | Region slug(s) (e.g. ['usdm'] or ['eudm', 'audm']). Multiple regions give a more comprehensive view. | |
| generation | No | Generation slug (alternative to year) | |
| horsepower | No | Horsepower (±2.7 hp band, e.g. 150) | |
| trim_level | No | Case-insensitive trim level (e.g. 'EX-L', 'Touring', 'Sport') | |
| horsepower_max | No | Maximum horsepower | |
| horsepower_min | No | Minimum horsepower (e.g. 300) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context such as the ±2.7 hp tolerance for horsepower, the constraint that year or generation is required, and the note that returned slug leads to fitment data. No contradictions with annotations.
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 four sentences, front-loaded with the core purpose, then returns data, constraints, and an example. Every sentence contributes meaningful guidance without repetition or fluff.
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 12 parameters, 2 required, and an output schema, the description covers the essential decision points: what the tool returns, required inputs, filtering options, and the next step. It is sufficient for an agent to select and invoke the tool correctly without additional 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?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying horsepower filtering ('exact ±2.7 hp' and the min/max relationship), and emphasizing the year/generation requirement. This enriches the agent's understanding of how to combine 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 begins with a specific verb and resource: 'List modifications (trims) for a specific vehicle.' It clearly states the returned data (trim names, engine specs, production years) and distinguishes itself from sibling ws_search_by_vehicle by pointing to that tool for fitment data after obtaining a slug.
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 gives explicit usage guidance: 'One of year or generation is required' and provides a concrete filtering example for horsepower. It also names the next logical tool (ws_search_by_vehicle) for fitment data. It does not explicitly state when not to use the tool compared to other listing tools, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_list_regionsCatalog (freely callable)ARead-onlyIdempotent
List all market regions where vehicles are sold.
Returns region slugs and display names (e.g. usdm=USA, eudm=Europe, jdm=Japan). Use region slugs to filter results in other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false. The description adds valuable context about the return format (slugs and display names) and the fact that it returns 'all' regions, which is not obvious from annotations. It doesn't contradict any annotation.
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?
Two clean sentences: the first states the core purpose, the second explains the output format and usage. No wasted words, and the most important information is 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's simplicity (0 params, output schema present, strong annotations), the description is complete. It tells the agent exactly what it returns and how to use it downstream. No significant gaps for a catalog tool.
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?
This tool has zero parameters, so the baseline is 4. The description adds no parameter-specific information, but none is needed. The schema is empty and fully covered.
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 'List all market regions where vehicles are sold' with a specific verb and resource, and explicitly distinguishes this from sibling list tools by focusing on region slugs and display names. It is unambiguous and helpful.
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?
Provides clear guidance that region slugs from this tool are used to filter results in other tools, implying when to call it. It doesn't explicitly name alternative tools, but the context of sibling list tools makes the intended usage evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_list_yearsCatalog (freely callable)ARead-onlyIdempotent
List available years, optionally filtered by make and model.
Can be called without params to get all years globally — this makes it an alternative starting point for navigation (Scenario 3: years first). Can also be called with make only to get years for that brand (Scenario 2).
After getting a year, use ws_list_modifications to get trims.
| Name | Required | Description | Default |
|---|---|---|---|
| make | No | Make slug | |
| model | No | Model slug | |
| region | No | Region slug(s) (e.g. ['usdm']). Filter years available in these regions. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds behavioral context by explaining that calling without params yields global data and that it can serve as a navigation root, which is beyond the structured annotations. It does not mention auth or rate limits, but these are not expected given the annotations.
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 three short paragraphs: main purpose, two usage scenarios, and a next-step pointer. Every sentence earns its place, with no filler. The structure is front-loaded with the core function and then provides clear usage instructions.
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 simple list tool with 3 optional parameters, an output schema, and safety annotations, the description is complete. It explains both primary invocation modes, and the existing output schema covers the return format. The description, schema, and annotations together provide sufficient context for an agent to select and invoke this tool 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 100%, so the baseline is 3. The description adds some meaning by explaining the 'with make only' pattern and the global no-param case, but it does not elaborate on individual parameters (especially region, which is only in the schema). Since the schema already describes each parameter, the description adds minimal extra semantic value beyond call 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 opens with a specific verb+resource: 'List available years, optionally filtered by make and model.' This clearly states the tool's function and distinguishes it from sibling list tools by focusing on years as the output. It also mentions two distinct call patterns (global and filtered), reinforcing purpose.
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 gives explicit usage guidance: 'Can be called without params to get all years globally' and 'Can also be called with make only to get years for that brand', framing it as an alternative starting point for navigation. It also directs the user to ws_list_modifications after obtaining a year, indicating next steps in a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_search_by_hf_tireSearch (user-initiated only)ARead-onlyIdempotent
Find vehicles compatible with a high-flotation (LT) tire size.
HF tires use inch-based sizing like 31x10.50R15: overall diameter x section width R rim diameter, all in inches. Common on trucks, SUVs, and offroad vehicles. For metric sizes (e.g. 225/45R17) use ws_search_by_tire instead.
IMPORTANT: This is a Search method — only call when a user explicitly requests a tire compatibility search. Do not call in autonomous loops.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Axle mode | |
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| region | No | Region slug(s) (e.g. ['usdm'] or ['eudm', 'audm']). | |
| rim_diameter | Yes | Rim diameter in inches (e.g. 15) | |
| section_width | Yes | Tire section width in inches (e.g. 10.5) | |
| overall_diameter | Yes | Overall tire diameter in inches (e.g. 31 for 31x10.50R15) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds a meaningful behavioral guardrail with 'only call when a user explicitly requests... Do not call in autonomous loops,' which is not present in annotations. It also clarifies the HF tire sizing convention. It doesn't discuss pagination or auth, but those are covered by schema and annotations.
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. The first sentence states the purpose, the second paragraph explains the sizing format and points to an alternative, and the final paragraph delivers a critical usage constraint. Every sentence earns its place 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?
Given the rich schema, annotations, and output schema, the description is complete enough. It covers purpose, usage context, size format, alternative tool, and an explicit user-initiated constraint. There is no additional context needed for this read-only search tool.
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 100%, so the schema already describes all parameters. The description adds value by explaining the HF sizing format ('overall diameter x section width R rim diameter, all in inches') and giving the concrete example 31x10.50R15, which helps the agent understand how the three required parameters relate to each other.
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 opens with a specific verb and resource: 'Find vehicles compatible with a high-flotation (LT) tire size.' It clearly distinguishes this tool from ws_search_by_tire by explicitly stating that metric sizes should use the other tool. The reference to trucks, SUVs, and offroad vehicles further contextualizes the purpose.
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 explicit when-to-use guidance: only when a user explicitly requests a tire compatibility search. It also gives a direct alternative: 'For metric sizes (e.g. 225/45R17) use ws_search_by_tire instead.' It explicitly warns against autonomous loops, which is a clear usage boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_search_by_rimSearch (user-initiated only)ARead-onlyIdempotent
Find vehicles compatible with given rim specs via direct 1:1 wheel pair matching.
Uses a direct mapping of existing wheel pair data to vehicle specs — returns only vehicles where this exact rim (or close offset) appears in the database as an OEM or documented fitment. Does NOT calculate whether the rim would physically fit based on wheel housing geometry.
Diameter and width accept either an exact value (rim_diameter, rim_width) or a min/max range pair — e.g. "18-19 inch, ET30-45" → rim_diameter_min=18, rim_diameter_max=19, rim_offset_min=30, rim_offset_max=45. One of exact or range is required per dimension.
IMPORTANT: This is a Search method — only call when a user explicitly requests a rim compatibility search. Do not call in autonomous loops.
For e-commerce product cards, use ws_find_vehicles_for_rim instead — it uses geometric backspace calculations for broader, physics-based matching.
| Name | Required | Description | Default |
|---|---|---|---|
| cb | No | Centre bore in mm (e.g. 64.1) | |
| fd | No | Wheel fastener thread diameter in mm (e.g. 12 for M12) | |
| mode | No | Axle mode | |
| limit | No | Results per page | |
| cb_max | No | Range search: max centre bore | |
| cb_min | No | Range search: min centre bore | |
| offset | No | Pagination offset | |
| region | No | Region slug(s) (e.g. ['usdm'] or ['eudm', 'audm']). | |
| rim_width | No | Exact rim width in inches (e.g. 8) | |
| rim_offset | No | Rim offset in mm | |
| bolt_pattern | Yes | Bolt pattern (e.g. '5x114.3') | |
| rim_diameter | No | Exact rim diameter in inches (e.g. 18) | |
| rim_width_max | No | Range search: max width | |
| rim_width_min | No | Range search: min width (use with _max) | |
| rim_offset_max | No | Range search: max offset | |
| rim_offset_min | No | Range search: min offset | |
| rim_diameter_max | No | Range search: max diameter | |
| rim_diameter_min | No | Range search: min diameter (use with _max) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral detail: it states the tool does NOT calculate physical fit based on wheel housing geometry, and explains that it relies on direct mapping of existing fitments. This is beyond the annotations and helps set expectations.
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 moderately long but well-structured: purpose, methodology, parameter usage, then an IMPORTANT usage note, and finally a sibling alternative. Every sentence adds value, though the parameter explanation could be condensed slightly.
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 18 parameters, an output schema, and detailed annotations, the description covers purpose, methodology, limitations, parameter combinations, and explicit usage constraints. It appropriately leaves return format details to the output schema and achieves a complete picture for this complex tool.
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 schema provides 100% parameter descriptions, and the description adds valuable combinatorial semantics: exact values vs. min/max range pairs, with the requirement that 'one of exact or range is required per dimension.' However, this rule is explicitly applied to diameter and width, not clearly extended to offset or centre bore, leaving a minor ambiguity despite 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 tool 'Find vehicles compatible with given rim specs via direct 1:1 wheel pair matching.' It uses a specific verb ('find'), identifies the resource ('vehicles compatible with rim specs'), and explains the matching method, distinguishing it from other search tools.
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?
Explicit guidance is given: 'only call when a user explicitly requests a rim compatibility search. Do not call in autonomous loops.' It also names an alternative, ws_find_vehicles_for_rim, for e-commerce contexts, making the when-to-use and when-not-to-use very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_search_by_tireSearch (user-initiated only)ARead-onlyIdempotent
Find vehicles compatible with a given tire size (metric).
The response includes 'facets' (per-value car counts for speed_symbol, load_index, region, fitment — use them to offer refinements) and 'summary' (feature counts like runflat/winter + physical tire data). Echo a facet value back as a filter to drill down.
IMPORTANT: This is a Search method — only call when a user explicitly requests a tire compatibility search. Do not call in autonomous loops.
This tool accepts metric sizes only. For high-flotation (LT) tires with inch-based sizing (e.g. 31x10.50R15), use ws_search_by_hf_tire.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Axle mode | |
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| region | No | Region slug(s) (e.g. ['usdm'] or ['eudm', 'audm']). | |
| fitment | No | square = same size all around, staggered = rear differs from front | |
| load_index | No | Load index(es), OR-combined (e.g. [91, 94]). Counts in facets.load_index. | |
| aspect_ratio | Yes | Tire aspect ratio (e.g. 55) | |
| rim_diameter | Yes | Rim diameter in inches (e.g. 17) | |
| speed_symbol | No | Speed rating(s), OR-combined (e.g. ['V', 'W']). Counts in facets.speed_symbol. | |
| section_width | Yes | Tire section width in mm (e.g. 225) | |
| load_index_max | No | Maximum load index | |
| load_index_min | No | Minimum load index (e.g. 91) | |
| speed_symbol_max | No | Maximum speed rating | |
| speed_symbol_min | No | Minimum speed rating (e.g. 'V' = V or faster) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the user-initiated-only constraint and warns against autonomous loops, which is behavioral information beyond the annotations' readOnly/idempotent hints. It also describes the response structure (facets and summary) and how to use facets for refinement, providing useful behavioral context.
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 organized into clear sections with a main purpose, response explanation, important usage warning, and alternative tool mention. While it is relatively detailed, each part serves a distinct purpose and provides necessary guidance.
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 (14 parameters, output schema, sibling alternatives), the description covers the core functionality, response usage, and selection criteria. It adequately orients the agent to when and how to use the tool, and the output schema covers return 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?
The input schema already documents all 14 parameters with descriptions, so the baseline is 3. The description adds context by specifying that metric sizes are required and by explaining how facet values can be echoed as filters, which complements 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 tool finds vehicles compatible with a given metric tire size, using a specific verb and resource. It explicitly distinguishes from sibling tools like ws_search_by_hf_tire for high-flotation tires, and the title indicates user-initiated search.
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 explicitly states this is a Search method that should only be called when a user explicitly requests a tire compatibility search, and warns against autonomous calls. It also names the alternative tool for high-flotation tires, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_search_by_vehicleSearch (user-initiated only)ARead-onlyIdempotent
Get wheel and tire fitment data for a specific vehicle.
REQUIRED parameter combination:
Either 'modification' OR 'region' (to narrow fitment results)
Either 'year' OR 'generation' (to identify the vehicle) — not required when 'modification' is provided
PREREQUISITES — you MUST have valid slugs before calling:
make: lowercase slug from ws_list_makes (e.g. 'toyota', 'land-rover')
model: lowercase slug from ws_list_models (e.g. 'camry', '3-series')
modification or region: from ws_list_modifications / ws_list_regions
year or generation: from ws_list_years / ws_list_generations (skip when modification is provided)
NOTE: this endpoint accepts only ONE region (unlike other tools)
Do NOT guess these values. Call the prerequisite tools first.
Returns OEM and optional wheel/tire specs including rim diameter, width, offset, bolt pattern, tire sizes, and tire pressure. Each wheel has setup='symmetric' (same front/rear) or 'staggered' (different).
IMPORTANT: This is a Search method — only call when a user explicitly requests fitment information. Do not call in autonomous loops.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Translate make/model/region names (e.g. 'ru'). | |
| make | Yes | Make slug (e.g. 'toyota'). Use ws_list_makes to find valid slugs. | |
| year | No | Model year | |
| limit | No | Results per page | |
| model | Yes | Model slug (e.g. 'camry'). Use ws_list_models to find valid slugs. | |
| offset | No | Pagination offset | |
| region | No | Single region slug (e.g. 'usdm'). Only ONE region allowed here. | |
| generation | No | Generation slug (alternative to year). From ws_list_generations. | |
| detail_level | No | 'concise' = key specs only, 'full' = all wheel/tire details | concise |
| modification | No | Modification slug from ws_list_modifications. Alternative to region. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it specifies that only ONE region is accepted (unlike other tools), explains the setup values ('symmetric' vs 'staggered'), and notes that year is not required when modification is provided. These details enrich the agent's understanding of the tool's behavior without contradicting annotations.
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 well-structured with a clear opening purpose statement, labeled prerequisite sections, and a final usage warning. Every sentence serves a purpose—no fluff. It is longer than average, but the complexity of the tool (10 parameters with conditional dependencies) justifies the length. The front-loaded purpose and clear formatting make it easy to scan.
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 (10 parameters, 2 required, multiple conditional combinations) and the presence of an output schema, the description covers all necessary ground: prerequisites, parameter combination rules, a region limitation, return value highlights (OEM specs, symmetric/staggered), and explicit user-initiation constraint. The presence of an output schema means return values need not be exhaustively described. It is fully sufficient for an agent to select and invoke the tool 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 100%, so each parameter is already documented. However, the description adds critical cross-parameter semantics that the schema cannot convey: the required combination of modification OR region, year OR generation (with year skipped when modification is given), and the single-region restriction. This adds significant interpretive value beyond the schema definitions, though individual parameter meaning is already fully covered.
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 opens with a specific verb+resource+scope: 'Get wheel and tire fitment data for a specific vehicle.' This clearly distinguishes it from sibling tools like ws_search_by_rim and ws_search_by_tire. The title 'Search (user-initiated only)' reinforces the scope of when it should be used, and the description explicitly states its role as a Search method, making purpose unmistakable.
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 explicit usage guidelines: it details the required parameter combinations (modification OR region, year OR generation, with exceptions), requires prerequisite slugs from list tools, and clearly states 'Do NOT guess these values.' It also gives an explicit exclusion: 'only call when a user explicitly requests fitment information. Do not call in autonomous loops.' This goes beyond simple context and provides clear when-to-use and when-not-to-use guidance, distinguishing it from alternatives.
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.
21 tool updates
v0.5.1- First observed
ws_calculate_upsteps - First observed
ws_check_hf_tire_fitment_for_vehicle - First observed
ws_check_rim_fitment_for_vehicle - First observed
ws_check_tire_fitment_for_vehicle - First observed
ws_find_tires_for_rim - First observed
ws_find_vehicle_modifications_for_package - First observed
ws_find_vehicle_modifications_for_rim - First observed
ws_find_vehicles_for_package - First observed
ws_find_vehicles_for_rim - First observed
ws_find_vehicles_for_tire - First observed
ws_get_spec_metadata - First observed
ws_list_generations - First observed
ws_list_makes - First observed
ws_list_models - First observed
ws_list_modifications - First observed
ws_list_regions - First observed
ws_list_years - First observed
ws_search_by_hf_tire - First observed
ws_search_by_rim - First observed
ws_search_by_tire - First observed
ws_search_by_vehicle
TDQS
Scored across 21 tools
Several tools have overlapping purposes, such as ws_search_by_rim and ws_find_vehicles_for_rim both finding vehicles for a rim, and ws_search_by_tire and ws_find_vehicles_for_tire both finding vehicles by tire size. The detailed descriptions help differentiate the algorithms, but the three parallel families (search, find, check) could still confuse an agent when choosing the right tool.
All tools share a ws_ prefix and follow a verb-noun pattern (list_, search_by_, check_, find_). Minor deviations like calculate_upsteps and get_spec_metadata don't break the overall predictability, and the find_ family's use of '_for_' is consistent.
With 21 tools, the set is on the heavy side. Many are specialized variants (HF tire versions, drill-down tools) that could potentially be consolidated, though each does serve a distinct purpose in the wheel/tire fitment domain.
The tool set provides thorough coverage of vehicle navigation, fitment searches, direct check tools for specific vehicles, plus/minus sizing calculations, and e-commerce package finding. The only notable gap is the inability to list all modifications for a model without specifying year or generation, but the navigation workflow handles this via ws_list_years.
Maintenance
Related MCP Connectors
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
- LovableOAuthdev.lovable
Official MCP server for Lovable, the AI-powered full-stack app builder.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Official MCP server for OmniDimension. Drive voice agents, dispatch calls, and run bulk campaigns.
Related MCP Servers
- AlicenseAqualityCmaintenanceOfficial MCP server for the Perplexity API Platform, enabling AI assistants to perform real-time web search, reasoning, and deep research using Sonar models.421,818 npmMIT
- AlicenseAqualityDmaintenanceOfficial MCP server for Perplexity API Platform, enabling AI assistants with real-time web search, reasoning, and research capabilities through Sonar models and the Search API.421,818 npmMIT
- AlicenseAqualityBmaintenanceOfficial BoltPatternHQ MCP Server for instant automotive wheel fitment, PCD, center bore, and offset reference data.312 npmMIT
- AlicenseBqualityCmaintenanceOfficial MCP server for ZapifyAPI, providing AI agents access to 32 tools across image conversion, text analysis, network diagnostics, developer utilities, and data conversion.324 npmMIT