ISO 286-1:2010 dimensional tolerance oracle. Computes hole and shaft deviation limits (EI/ES, ei/es), fundamental tolerance IT values, and fit type (clearance/transition/interference) from the standard formulas and tables. It also computes linear 1D dimension-chain bounds with worst-case and RSS intervals.
Four well-named, domain-specific tools with clear descriptions and complete input schemas. Tool names follow verb_noun pattern (tolerance_it, tolerance_limits, tolerance_fit_analyze, tolerance_stackup). All descriptions are substantive (50 - 150 chars) and explain what the tool computes. Input parameters have types and descriptions. However, output schemas are not documented in the visible code, only inferred from test files. No error handling guidance, no parameter constraints (enums, ranges), and no recovery hints. Missing tool annotations (readOnlyHint, idempotentHint). Composition is sound: each tool does one thing; no overlapping responsibilities.
Analyze fit type (clearance/transition/interference) and compute clearance/interference bounds for a hole-shaft pair
Compute fundamental tolerance IT value for a given grade and nominal diameter
Compute hole and shaft deviation limits (EI/ES, ei/es) for a tolerance class and nominal diameter
Compute linear 1D dimension-chain bounds using worst-case and RSS (root-sum-square) methods
Output schemas not documented. Tool descriptions explain inputs but not return structure. LLMs cannot plan downstream calls or extract required fields without seeing what each tool returns.
No parameter constraints (enums, ranges, patterns). E.g., 'grade' accepts integer 1 - 12 but no min/max declared; 'hole_class' and 'shaft_class' accept free-form strings with no enum of valid ISO 286-1 classes (H7, g6, etc.). LLMs will hallucinate invalid values.
No error handling guidance. Tools do not document what happens on invalid inputs (e.g., grade=15, nominal_diameter_mm=-5, invalid tolerance class). No recovery hints for LLMs.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 79 | 2026-07-28+ | v2 |
Tool annotations missing. No readOnlyHint, idempotentHint, or destructiveHint declared. All tools are read-only and idempotent, but this is not signaled to the MCP client.
Parameter descriptions lack format/constraint hints. E.g., 'nominal_diameter_mm' says 'Nominal diameter in millimeters' but does not specify valid range (e.g., 0.5 - 500 mm per ISO 286-1). LLMs cannot validate inputs without explicit bounds.