MCP server providing weights and measures conversion tools and resources
This server provides three well-defined conversion tools with clear names, good descriptions, and complete input schemas. All tools follow the verb_noun naming pattern (convert_unit, get_conversion_factor, list_units). Descriptions are substantive (150-200 chars), exceeding the 10-char minimum and within the 10-1024 baseline. Input parameters have types and descriptions. However, output schemas are not formally documented in the code, they are returned as JSON strings without explicit schema declarations. Error handling is good (validates inputs, returns helpful messages with available options), but does not classify errors as retryable/user-fixable/fatal. The server lacks tool annotations (readOnlyHint, destructiveHint, idempotentHint) that would signal to agents these are safe, read-only operations. Resources are well-structured but ancillary to the core tools.
Convert a value from one unit of measurement to another. Supports weight (avoirdupois, troy, apothecaries', metric), length (imperial/US, metric), and volume (US fluid, imperial fluid, metric) conversions.
Get the conversion factor between two units of measurement. Returns the multiplier needed to convert from one unit to another.
List all available units for conversion, optionally filtered by category.
Output schemas not formally documented. Tools return JSON strings, but the structure of those JSON objects is not declared in the tool definition. LLMs cannot plan downstream tool calls without knowing what fields to expect.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are missing. All three tools are read-only and idempotent, but this is not signaled in the schema. Agents should know these are safe to retry and do not modify state.
Error messages do not classify errors as retryable vs. user-fixable. When convert_unit receives an invalid unit, it returns available units but does not indicate whether the agent should retry or ask the user to clarify.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Parameter constraints (enums for category in list_units) are not declared as JSON Schema enums. The description says 'weight, length, or volume' but the parameter type is a bare string with no enum constraint. LLMs may hallucinate invalid values.