Skip to main content
Glama

Review CAD Model

review_cad

Run a deterministic mechanism-fitness review on supplied kernelCAD code or a file. It performs a full evaluation, replaces the active MCP session model on success, and clears that session if evaluation fails. The script may load referenced assets. The review validates the assembly/mate graph and connector placement, samples declared mate limits, optionally checks interference at sampled poses, and reports connector workspace bounds, fitness findings, and a repair mode (none, local-fix, parameter-tune, or topology-redesign). Runs within timeBudgetMs (default 90 s); stages that do not fit are listed in skippedStages and were not checked. Hosted: lib.fromSTEP / fromSTL / meshFromSTL / fromDXF / fromSVG and referenceImage take a direct string literal or a const bound to one (computed expressions are unsupported). They accept "asset:" (from request_upload), an https:// URL or a data: URI as the path.

Input Schema

NameRequiredDescriptionDefault
codeNoInline kernelCAD script source.
fileNoPath to a .kcad.ts script file. Hosted server: cannot read files from your machine — pass `code`, or `project:<slug>` for a saved project.
assemblyNoAssembly name; defaults to the first captured assembly.
designGoalNoOriginal user design prompt or goal. Included in suggestedRepairPrompt so topology-redesign repairs restart from the intended physical design instead of local coordinate nudges.
epsilonMm3NoInterference volume threshold in mm^3. Default 0.01.
timeBudgetMsNoWall-clock budget for the review in ms (default 90000). Once spent, the remaining heavy stages (pose envelope, physical use case, mechanism sweep) are skipped and listed in skippedStages — a partial result instead of a timeout. stageTimingsMs reports where the time went.
combinatorialNoSample all 2^N limit-corner combinations across mates with declared limits. Capped at 8 mates with limits; combine with samplesPerMate for both interior coverage and worst-pose detection. Default false.
samplesPerMateNoPose-envelope samples per declared-limit mate. 1 (default) = corners only; >=3 adds uniform interior points between min and max. Total samples per non-locked mate = samplesPerMate.
trackConnectorsNoOptional connector refs such as ["gripper-plate.tool-tip"] to limit connector workspace reporting.
preserveInterfacesNoExternal mates, connector refs, part names, or behavioral interfaces the repair agent must preserve during redesign.
includeInterferenceNoWhether sampled poses run BREP interference checks. Default true.
includePoseEnvelopeNoWhether to sample declared mate limits. Default true.
physicalUseCaseLevelNoEscalating physical-use-case depth; each level includes the previous. 'reachability': targeted sampling over scalar-limited mates named in actuatorLimits, rejecting contacts that cannot get within criteria.maxSlipMm and multi-contact use cases that cannot satisfy every contact in the same sampled actuator pose (revolute/cylindrical/pin-slot limitsDeg, prismatic limitsMm). 'statics': adds pose-bound quasi-static certification at the exact common-contact samples (conservative friction/capacity, world force and moment balance, finite-difference revolute actuator torque); returns physicalUseCaseStaticCertificates on success. 'reactions': adds exact-pose reaction wrenches through uniquely rooted articulated trees, compared against each loaded mate's declared resultant force/moment envelope, and runs the clevis double-shear / pin-bending / bearing / tear-out / net-section check (minimum factor of safety 2) automatically for mates built with joint.clevis. Defaults to 'reachability' when requirePhysicalUseCase is true.
requirePhysicalUseCaseNoWhen true, articulated assemblies must declare arm.physicalUseCase(...) evidence: loads, contacts, stable parts, and actuator limits.
physicalUseCaseSamplesPerMateNoSamples per scalar-limited actuator mate for physical-use-case contact reachability. Samples revolute/cylindrical/pin-slot limitsDeg and prismatic limitsMm. Default 3; total targeted combinations are capped.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • removedInput schema / properties / gripperAperture
      Removed value: -{
      -  "description": "Optional fingertip connector refs for gripper aperture travel reporting.",
      -  "properties": {
      -    "left": {
      -      "description": "Left fingertip connector ref such as \"left-finger.tip\".",
      -      "type": "string"
      -    },
      -    "right": {
      -      "description": "Right fingertip connector ref such as \"right-finger.tip\".",
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
    • removedInput schema / properties / includePhysicalUseCaseJointReactions
      Removed value: -{
      -  "description": "Derive exact-pose reaction wrenches through uniquely rooted articulated trees and compare every loaded mate against a complete declared resultant force/moment envelope. Implies physical-use-case reachability and statics.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / includePhysicalUseCaseJointStructure
      Removed value: -{
      -  "description": "Run geometry/material clevis double-shear, pin-bending, bearing, tear-out, and net-section checks with minimum factor of safety 2. Unsupported axial or perpendicular-moment load cases remain blockers. Implies joint reactions, statics, and reachability.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / includePhysicalUseCaseReachability
      Removed value: -{
      -  "description": "Run targeted physical-use-case reachability sampling over scalar-limited mates named in actuatorLimits. Reject contacts that cannot get within criteria.maxSlipMm and multi-contact use cases that cannot satisfy every contact in the same sampled actuator pose. Samples revolute/cylindrical/pin-slot limitsDeg and prismatic limitsMm. Defaults to requirePhysicalUseCase.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / includePhysicalUseCaseStatics
      Removed value: -{
      -  "description": "Run opt-in pose-bound quasi-static certification at the exact common-contact samples: conservative friction/capacity, world force and moment balance, and finite-difference revolute actuator torque. Returns physicalUseCaseStaticCertificates on success; sampled linearized failures remain blocking diagnostics.",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / physicalUseCaseLevel
      Added value: +{
      +  "description": "Escalating physical-use-case depth; each level includes the previous. 'reachability': targeted sampling over scalar-limited mates named in actuatorLimits, rejecting contacts that cannot get within criteria.maxSlipMm and multi-contact use cases that cannot satisfy every contact in the same sampled actuator pose (revolute/cylindrical/pin-slot limitsDeg, prismatic limitsMm). 'statics': adds pose-bound quasi-static certification at the exact common-contact samples (conservative friction/capacity, world force and moment balance, finite-difference revolute actuator torque); returns physicalUseCaseStaticCertificates on success. 'reactions': adds exact-pose reaction wrenches through uniquely rooted articulated trees, compared against each loaded mate's declared resultant force/moment envelope, and runs the clevis double-shear / pin-bending / bearing / tear-out / net-section check (minimum factor of safety 2) automatically for mates built with joint.clevis. Defaults to 'reachability' when requirePhysicalUseCase is true.",
      +  "enum": [
      +    "reachability",
      +    "statics",
      +    "reactions"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / physicalUseCaseReachabilitySamplesPerMate
      Removed value: -{
      -  "description": "Samples per scalar-limited actuator mate for physical-use-case contact reachability. Samples revolute/cylindrical/pin-slot limitsDeg and prismatic limitsMm. Default 3; total targeted combinations are capped.",
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • addedInput schema / properties / physicalUseCaseSamplesPerMate
      Added value: +{
      +  "description": "Samples per scalar-limited actuator mate for physical-use-case contact reachability. Samples revolute/cylindrical/pin-slot limitsDeg and prismatic limitsMm. Default 3; total targeted combinations are capped.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
  2. Changed2 schema fields changed
    • removedOutput schema / properties
      Removed value: -{
      -  "assembly": {
      -    "type": "string"
      -  },
      -  "connectorWorkspace": {
      -    "description": "Connector workspace bounds.",
      -    "items": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "diagnostics": {
      -    "items": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "featureCount": {
      -    "type": "number"
      -  },
      -  "fitness": {
      -    "additionalProperties": true,
      -    "description": "Mechanism fitness verdict incl. repairMode.",
      -    "type": "object"
      -  },
      -  "gripperAperture": {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  "interferenceSummary": {
      -    "additionalProperties": true,
      -    "description": "Classified interference counts and pairs: raw, contact-noise, actionable, and capMm3.",
      -    "type": "object"
      -  },
      -  "mechanism": {
      -    "type": "string"
      -  },
      -  "mechanismFailures": {
      -    "items": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "ok": {
      -    "type": "boolean"
      -  },
      -  "physicalUseCaseJointReactionCertificates": {
      -    "description": "Exact-pose parent-on-child joint reaction wrench certificates in N, mm, and Nmm.",
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "poses": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "reactions": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "axialForceN": {
      -                "type": "number"
      -              },
      -              "axisMomentNmm": {
      -                "type": "number"
      -              },
      -              "axisWorld": {
      -                "items": {
      -                  "type": "number"
      -                },
      -                "type": "array"
      -              },
      -              "bendingMomentNmm": {
      -                "type": "number"
      -              },
      -              "childPart": {
      -                "type": "string"
      -              },
      -              "forceWorldN": {
      -                "items": {
      -                  "type": "number"
      -                },
      -                "type": "array"
      -              },
      -              "mateName": {
      -                "type": "string"
      -              },
      -              "momentWorldNmm": {
      -                "items": {
      -                  "type": "number"
      -                },
      -                "type": "array"
      -              },
      -              "parentPart": {
      -                "type": "string"
      -              },
      -              "pointWorldMm": {
      -                "items": {
      -                  "type": "number"
      -                },
      -                "type": "array"
      -              },
      -              "radialForceN": {
      -                "type": "number"
      -              },
      -              "resultantForceN": {
      -                "type": "number"
      -              },
      -              "resultantMomentNmm": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "mateName",
      -              "parentPart",
      -              "childPart",
      -              "pointWorldMm",
      -              "axisWorld",
      -              "forceWorldN",
      -              "momentWorldNmm",
      -              "resultantForceN",
      -              "resultantMomentNmm",
      -              "axialForceN",
      -              "radialForceN",
      -              "axisMomentNmm",
      -              "bendingMomentNmm"
      -            ],
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "useCaseName": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "useCaseName",
      -        "poses",
      -        "reactions"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "physicalUseCaseJointStructuralCertificates": {
      -    "description": "Per-joint declared-envelope and geometry/material clevis strength evidence.",
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "joints": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "envelope": {
      -                "additionalProperties": true,
      -                "type": "object"
      -              },
      -              "mateName": {
      -                "type": "string"
      -              },
      -              "structure": {
      -                "additionalProperties": true,
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "mateName",
      -              "envelope"
      -            ],
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "poses": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "useCaseName": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "useCaseName",
      -        "poses",
      -        "joints"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "physicalUseCaseStaticCertificates": {
      -    "description": "Verified sampled quasi-static certificates with residual wrench, contact forces, and actuator torque evidence.",
      -    "items": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "poseEnvelope": {
      -    "additionalProperties": true,
      -    "description": "Sampled mate-limit pose envelope.",
      -    "type": "object"
      -  },
      -  "rawInterferencePairs": {
      -    "items": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "repairContext": {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  "skippedStages": {
      -    "description": "Stages skipped because timeBudgetMs was spent; their checks did not run.",
      -    "items": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "reason": {
      -          "type": "string"
      -        },
      -        "stage": {
      -          "type": "string"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "stageTimingsMs": {
      -    "additionalProperties": {
      -      "type": "number"
      -    },
      -    "description": "Wall-clock ms per review stage that ran.",
      -    "type": "object"
      -  },
      -  "suggestedRepairPrompt": {
      -    "description": "Structured repair prompt (failure / repair path).",
      -    "type": "string"
      -  },
      -  "validator": {
      -    "additionalProperties": true,
      -    "description": "Assembly/mate-graph validator result.",
      -    "type": "object"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "ok",
      -  "featureCount",
      -  "diagnostics"
      -]
  3. Changed3 schema fields changed
    • addedInput schema / properties / timeBudgetMs
      Added value: +{
      +  "description": "Wall-clock budget for the review in ms (default 90000). Once spent, the remaining heavy stages (pose envelope, physical use case, mechanism sweep) are skipped and listed in skippedStages — a partial result instead of a timeout. stageTimingsMs reports where the time went.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / skippedStages
      Added value: +{
      +  "description": "Stages skipped because timeBudgetMs was spent; their checks did not run.",
      +  "items": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "reason": {
      +        "type": "string"
      +      },
      +      "stage": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / stageTimingsMs
      Added value: +{
      +  "additionalProperties": {
      +    "type": "number"
      +  },
      +  "description": "Wall-clock ms per review stage that ran.",
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / file / description
      Previous value: -"Path to a .kcad.ts script file."New value: +"Path to a .kcad.ts script file. Hosted server: cannot read files from your machine — pass `code`, or `project:<slug>` for a saved project."
  5. Changed10 schema fields changed
    • addedInput schema / properties / includePhysicalUseCaseJointReactions
      Added value: +{
      +  "description": "Derive exact-pose reaction wrenches through uniquely rooted articulated trees and compare every loaded mate against a complete declared resultant force/moment envelope. Implies physical-use-case reachability and statics.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / includePhysicalUseCaseJointStructure
      Added value: +{
      +  "description": "Run geometry/material clevis double-shear, pin-bending, bearing, tear-out, and net-section checks with minimum factor of safety 2. Unsupported axial or perpendicular-moment load cases remain blockers. Implies joint reactions, statics, and reachability.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / includePhysicalUseCaseReachability
      Added value: +{
      +  "description": "Run targeted physical-use-case reachability sampling over scalar-limited mates named in actuatorLimits. Reject contacts that cannot get within criteria.maxSlipMm and multi-contact use cases that cannot satisfy every contact in the same sampled actuator pose. Samples revolute/cylindrical/pin-slot limitsDeg and prismatic limitsMm. Defaults to requirePhysicalUseCase.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / includePhysicalUseCaseStatics
      Added value: +{
      +  "description": "Run opt-in pose-bound quasi-static certification at the exact common-contact samples: conservative friction/capacity, world force and moment balance, and finite-difference revolute actuator torque. Returns physicalUseCaseStaticCertificates on success; sampled linearized failures remain blocking diagnostics.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / physicalUseCaseReachabilitySamplesPerMate
      Added value: +{
      +  "description": "Samples per scalar-limited actuator mate for physical-use-case contact reachability. Samples revolute/cylindrical/pin-slot limitsDeg and prismatic limitsMm. Default 3; total targeted combinations are capped.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / requirePhysicalUseCase
      Added value: +{
      +  "description": "When true, articulated assemblies must declare arm.physicalUseCase(...) evidence: loads, contacts, stable parts, and actuator limits.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / interferenceSummary
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Classified interference counts and pairs: raw, contact-noise, actionable, and capMm3.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / physicalUseCaseJointReactionCertificates
      Added value: +{
      +  "description": "Exact-pose parent-on-child joint reaction wrench certificates in N, mm, and Nmm.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "poses": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "reactions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "axialForceN": {
      +              "type": "number"
      +            },
      +            "axisMomentNmm": {
      +              "type": "number"
      +            },
      +            "axisWorld": {
      +              "items": {
      +                "type": "number"
      +              },
      +              "type": "array"
      +            },
      +            "bendingMomentNmm": {
      +              "type": "number"
      +            },
      +            "childPart": {
      +              "type": "string"
      +            },
      +            "forceWorldN": {
      +              "items": {
      +                "type": "number"
      +              },
      +              "type": "array"
      +            },
      +            "mateName": {
      +              "type": "string"
      +            },
      +            "momentWorldNmm": {
      +              "items": {
      +                "type": "number"
      +              },
      +              "type": "array"
      +            },
      +            "parentPart": {
      +              "type": "string"
      +            },
      +            "pointWorldMm": {
      +              "items": {
      +                "type": "number"
      +              },
      +              "type": "array"
      +            },
      +            "radialForceN": {
      +              "type": "number"
      +            },
      +            "resultantForceN": {
      +              "type": "number"
      +            },
      +            "resultantMomentNmm": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "mateName",
      +            "parentPart",
      +            "childPart",
      +            "pointWorldMm",
      +            "axisWorld",
      +            "forceWorldN",
      +            "momentWorldNmm",
      +            "resultantForceN",
      +            "resultantMomentNmm",
      +            "axialForceN",
      +            "radialForceN",
      +            "axisMomentNmm",
      +            "bendingMomentNmm"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "useCaseName": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "useCaseName",
      +      "poses",
      +      "reactions"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / physicalUseCaseJointStructuralCertificates
      Added value: +{
      +  "description": "Per-joint declared-envelope and geometry/material clevis strength evidence.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "joints": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "envelope": {
      +              "additionalProperties": true,
      +              "type": "object"
      +            },
      +            "mateName": {
      +              "type": "string"
      +            },
      +            "structure": {
      +              "additionalProperties": true,
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "mateName",
      +            "envelope"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "poses": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "useCaseName": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "useCaseName",
      +      "poses",
      +      "joints"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / physicalUseCaseStaticCertificates
      Added value: +{
      +  "description": "Verified sampled quasi-static certificates with residual wrench, contact forces, and actuator torque evidence.",
      +  "items": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  6. Changed3 schema fields changed
    • removedOutput schema / properties / connectorWorkspace / additionalProperties
      Removed value: -true
    • addedOutput schema / properties / connectorWorkspace / items
      Added value: +{
      +  "additionalProperties": true,
      +  "type": "object"
      +}
    • changedOutput schema / properties / connectorWorkspace / type
      Previous value: -"object"New value: +"array"
  7. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "assembly": {
      +      "type": "string"
      +    },
      +    "connectorWorkspace": {
      +      "additionalProperties": true,
      +      "description": "Connector workspace bounds.",
      +      "type": "object"
      +    },
      +    "diagnostics": {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "featureCount": {
      +      "type": "number"
      +    },
      +    "fitness": {
      +      "additionalProperties": true,
      +      "description": "Mechanism fitness verdict incl. repairMode.",
      +      "type": "object"
      +    },
      +    "gripperAperture": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "mechanism": {
      +      "type": "string"
      +    },
      +    "mechanismFailures": {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "ok": {
      +      "type": "boolean"
      +    },
      +    "poseEnvelope": {
      +      "additionalProperties": true,
      +      "description": "Sampled mate-limit pose envelope.",
      +      "type": "object"
      +    },
      +    "rawInterferencePairs": {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "repairContext": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "suggestedRepairPrompt": {
      +      "description": "Structured repair prompt (failure / repair path).",
      +      "type": "string"
      +    },
      +    "validator": {
      +      "additionalProperties": true,
      +      "description": "Assembly/mate-graph validator result.",
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "ok",
      +    "featureCount",
      +    "diagnostics"
      +  ],
      +  "type": "object"
      +}
  8. Changed1 schema field changed
    • addedInput schema / properties / gripperAperture
      Added value: +{
      +  "description": "Optional fingertip connector refs for gripper aperture travel reporting.",
      +  "properties": {
      +    "left": {
      +      "description": "Left fingertip connector ref such as \"left-finger.tip\".",
      +      "type": "string"
      +    },
      +    "right": {
      +      "description": "Right fingertip connector ref such as \"right-finger.tip\".",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  9. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses significant side effects beyond the annotations: it 'replaces the active MCP session model on success, and clears that session if evaluation fails', and that scripts may load referenced assets. It also explains the partial-result contract (stages that don't fit are listed in skippedStages and 'were not checked') and the repair-mode taxonomy, which the annotations (readOnly=false, destructive=false, idempotent=false) do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the session-mutation contract, which are the two things an agent most needs. It is dense and largely earns its length, though the final hosted-asset sentence is a long run-on and some enumeration (repair modes) duplicates output-schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter tool with an output schema and annotations present, the description covers the remaining gaps an agent needs: the session-model side effect, the time-budget/skipped-stages semantics, and hosted-vs-local input limitations. Nothing critical to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 15 parameters in depth, and the description mostly restates that. The one genuinely additive point is the hosted asset-resolution rule for lib.fromSTEP/fromSTL/etc. accepting 'asset:<id>', https URLs, or data URIs — useful but narrow against a very rich schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Run a deterministic mechanism-fitness review on supplied kernelCAD code or a file', then enumerates exactly what the review covers (mate graph, connector placement, mate limits, interference). An agent can distinguish this from siblings like dfm_review, verify, or solve_mates without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this is the tool for a full mechanism-fitness evaluation and explains the cost/tradeoff controls (timeBudgetMs, combinatorial, samplesPerMate). However, it never explicitly contrasts itself with alternatives such as dfm_review, verify, or solve_mates, nor does it state when NOT to use this heavier review.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.