Skip to main content
Glama

Verify Design

verify
Read-only

Use this when you need to check a design against a rule set. One verifier, selected by check:

  • 'assembly' — mate-aware assembly validator on the active session (run evaluate_script first).

  • 'urdf' — structural validity of a .urdf file ({ urdf_path }).

  • 'dfm' — print-readiness gates declared by dfmSpec() ({ file | code }).

  • 'dfm-preflight' — sheet-metal flat pattern vs a job-shop's ordering rules ({ vendor, material, thicknessIn|thicknessMm, ... }). Returns the vendor's catalog source pages as sources; when disclosure is present, show it with those links.

  • 'swept-collision' — sweep declared joint range(s) and report colliding poses.

  • 'reachable' — inverse-kinematics reachability for an end-effector ({ tip_link, target_position, ... }).

  • 'fastener-installation' — measured explicit catalog-screw installation stations on lowered assembly BREP ({ file | code, fasteners:[{ part, against, engagementPart?, minEngagementMm?, maxProtrusionMm? }], toleranceMm?, angleToleranceDeg? }). Reports annular bearing gap, bore axis/diameter/overlap and receiver geometric engagement/protrusion. Unknown or zero coverage cannot pass. Simplified threads do not certify torque, preload or strength.

  • 'mounting-holes' — fastened mates expose matching hole diameters on both sides.

  • 'load-capacity' — will it hold? Closed-form Euler-Bernoulli beam check ({ loads, materials, ... }), or mode:'fea' to solve the script's feaStudy (quadratic-tet FEA, CalculiX) — both return { ok, safetyFactor, elements[{ partName, stressPa, yieldPa, safetyFactor }], failures[], diagnostics }; fea adds the threshold, the stress regions as @kc[...] faces with their location, and fea { peakStressPa, maxDisplacementMm, meshTrusted, peakAtSupportPa, refinement }; it refines the mesh automatically until the stress is trusted (refine: false for one solve).

  • 'static-hold' — gravitational holding torque/force at a sampled pose grid vs each actuated joint's declared actuator capacity ({ joint?, pose?, gravity?, min_torque_margin_pct?, range_samples? }).

  • 'body-likeness' — publish gate for organic/car bodies: cheap AABB↔wheel checks plus required agent still verdicts (side-body-over-wheels, side-cabin-aft, rear-haunch, ortho-proportions-vs-reference). Pass { body_bbox | code/file+body_feature_id, wheels?, cabin_bbox?, still_verdicts?, require_stills? }. Full CV silhouette matching is NOT implemented — agents must inspect ortho PNGs/Studio and supply still_verdicts before claiming success. All params except check are check-specific and forwarded verbatim; each check fails closed on its own missing required params.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dxfNocheck:'dfm-preflight' — path to a DXF file.
codeNoInline kernelCAD script source (same checks as `file`).
fileNoPath to a .kcad.ts script (assembly/dfm/dfm-preflight/swept-collision/reachable/mounting-holes/load-capacity/static-hold). Hosted server: cannot read files from your machine — pass `code`, or `project:<slug>` for a saved project.
modeNocheck:'load-capacity' — 'beam' (default), 'stub', or 'fea' (solve the script's feaStudy; needs the CalculiX + gmsh toolchain).
poseNocheck:'static-hold' — explicit pose (joint name -> deg/mm) or array of poses; omit to sample a grid across the evaluated joint's range.
seedNocheck:'reachable' — numeric IK seed pose (joint name -> deg/mm).
checkYesWhich verification to run.
jointNocheck:'swept-collision' — joint to sweep; omit to sweep every declared joint. check:'static-hold' — joint to evaluate; omit to evaluate every joint with a declared actuator.
loadsNocheck:'load-capacity' — partName -> { force?: [Fx,Fy,Fz] N, torque?: [Tx,Ty,Tz] N*m }.
rangeNocheck:'swept-collision' — [lower, upper, step] in joint-native units.
studyNocheck:'load-capacity' mode:'fea' — feaStudy name (default: the last declared one).
refineNocheck:'load-capacity' mode:'fea' — one automatic finer pass (0.75x element size) when the stress is untrusted, inside the element budget (default true); false solves once at the study's meshSize.
vendorNocheck:'dfm-preflight' — vendor SKU (required for that check).
wheelsNocheck:'body-likeness' — wheel centres + tire radii [{ center:[x,y,z], radius }].
gravityNocheck:'static-hold' — gravity vector, m/s^2, world frame (default [0, 0, -9.81]).
serviceNocheck:'dfm-preflight' — service.
assemblyNoAssembly name; defaults to the first captured assembly.
heatmapsNocheck:'load-capacity' mode:'fea' — also render stress heatmap PNGs (default false).
materialNocheck:'dfm-preflight' — material SKU (required for that check).
tip_linkNocheck:'reachable' — end-effector part name (required for that check).
body_bboxNocheck:'body-likeness' — body AABB { min:[x,y,z], max:[x,y,z] } in mm.
fastenersNocheck:'fastener-installation' — explicit named stations; empty means no coverage.
featureIdNocheck:'dfm-preflight' — FeatureId to scope to.
materialsNocheck:'load-capacity' — partName -> material declaration.
mesh_sizeNocheck:'load-capacity' mode:'fea' — element size override, mm.
urdf_pathNocheck:'urdf' — path to the .urdf file.
cabin_bboxNocheck:'body-likeness' — optional cabin/greenhouse AABB for automated cabin-aft.
length_axisNocheck:'body-likeness' — wheelbase axis (default 'x').
thicknessInNocheck:'dfm-preflight' — material thickness in inches.
thicknessMmNocheck:'dfm-preflight' — material thickness in millimeters.
toleranceMmNocheck:'fastener-installation' — linear tolerance, default .05 mm.
prefer_solverNocheck:'reachable' — force the IK path ('auto' default).
range_samplesNocheck:'static-hold' — grid density per evaluated joint when `pose` is omitted (default 9).
max_iterationsNocheck:'reachable' — numeric-path iteration cap.
refreshCatalogNocheck:'dfm-preflight' — force vendor catalog refresh.
require_stillsNocheck:'body-likeness' — require still_verdicts (default true).
still_verdictsNocheck:'body-likeness' — agent ortho still checklist [{ code, passed, finding, view? }]. Required codes: side-body-over-wheels, side-cabin-aft, rear-haunch, ortho-proportions-vs-reference.
body_feature_idNocheck:'body-likeness' — FeatureId to read body AABB from when body_bbox omitted.
target_positionNocheck:'reachable' — target [x, y, z] mm (world frame).
angleToleranceDegNocheck:'fastener-installation' — axis tilt tolerance, default 1 degree.
target_orientationNocheck:'reachable' — target XYZ Euler angles in radians.
min_torque_margin_pctNocheck:'static-hold' — safety-margin floor as a percent of actuator capacity (default 20).
position_tolerance_mmNocheck:'reachable' — position tolerance in mm.
collision_tolerance_mm3Nocheck:'swept-collision' — BREP intersection volume tolerance (mm^3).
safety_factor_thresholdNocheck:'load-capacity' — pass/fail safety-factor floor (default 1.5; mode 'fea': the study's minSafetyFactor when declared).
orientation_tolerance_radNocheck:'reachable' — orientation tolerance in radians.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / angleToleranceDeg
      Added value: +{
      +  "description": "check:'fastener-installation' — axis tilt tolerance, default 1 degree.",
      +  "maximum": 90,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / check / enum
      Previous value: -[
      -  "assembly",
      -  "urdf",
      -  "dfm",
      -  "dfm-preflight",
      -  "swept-collision",
      -  "reachable",
      -  "mounting-holes",
      -  "load-capacity",
      -  "static-hold",
      -  "body-likeness"
      -]New value: +[
      +  "assembly",
      +  "urdf",
      +  "dfm",
      +  "dfm-preflight",
      +  "swept-collision",
      +  "reachable",
      +  "mounting-holes",
      +  "load-capacity",
      +  "static-hold",
      +  "body-likeness",
      +  "fastener-installation"
      +]
    • addedInput schema / properties / fasteners
      Added value: +{
      +  "description": "check:'fastener-installation' — explicit named stations; empty means no coverage.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "against": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "minItems": 1,
      +        "type": "array",
      +        "uniqueItems": true
      +      },
      +      "engagementPart": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxProtrusionMm": {
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "minEngagementMm": {
      +        "description": "Declared geometric axial overlap minimum; no thread-strength claim.",
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "part": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "part",
      +      "against"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / toleranceMm
      Added value: +{
      +  "description": "check:'fastener-installation' — linear tolerance, default .05 mm.",
      +  "minimum": 0,
      +  "type": "number"
      +}
  2. Changed2 schema fields changed
    • removedOutput schema / properties
      Removed value: -{
      -  "diagnostics": {
      -    "description": "Verifier diagnostics (most checks).",
      -    "items": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "error": {
      -    "description": "Failure message (present on failure).",
      -    "type": "string"
      -  },
      -  "errorCode": {
      -    "type": "string"
      -  },
      -  "ok": {
      -    "description": "Whether the verification ran and passed its gate.",
      -    "type": "boolean"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "ok"
      -]
  3. Changed1 schema field changed
    • changedInput schema / properties / refine / description
      Previous value: -"check:'load-capacity' mode:'fea' — automatic mesh refinement until the stress is trusted, inside the element and wall-time budgets (default true); false solves once at the study's meshSize."New value: +"check:'load-capacity' mode:'fea' — one automatic finer pass (0.75x element size) when the stress is untrusted, inside the element budget (default true); false solves once at the study's meshSize."
  4. Changed1 schema field changed
    • addedInput schema / properties / refine
      Added value: +{
      +  "description": "check:'load-capacity' mode:'fea' — automatic mesh refinement until the stress is trusted, inside the element and wall-time budgets (default true); false solves once at the study's meshSize.",
      +  "type": "boolean"
      +}
  5. Changed6 schema fields changed
    • addedInput schema / properties / heatmaps
      Added value: +{
      +  "description": "check:'load-capacity' mode:'fea' — also render stress heatmap PNGs (default false).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / mesh_size
      Added value: +{
      +  "description": "check:'load-capacity' mode:'fea' — element size override, mm.",
      +  "type": "number"
      +}
    • changedInput schema / properties / mode / description
      Previous value: -"check:'load-capacity' — 'beam' (default) or 'stub'."New value: +"check:'load-capacity' — 'beam' (default), 'stub', or 'fea' (solve the script's feaStudy; needs the CalculiX + gmsh toolchain)."
    • changedInput schema / properties / mode / enum
      Previous value: -[
      -  "stub",
      -  "beam"
      -]New value: +[
      +  "stub",
      +  "beam",
      +  "fea"
      +]
    • changedInput schema / properties / safety_factor_threshold / description
      Previous value: -"check:'load-capacity' — pass/fail safety-factor floor (default 1.5)."New value: +"check:'load-capacity' — pass/fail safety-factor floor (default 1.5; mode 'fea': the study's minSafetyFactor when declared)."
    • addedInput schema / properties / study
      Added value: +{
      +  "description": "check:'load-capacity' mode:'fea' — feaStudy name (default: the last declared one).",
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / file / description
      Previous value: -"Path to a .kcad.ts script (assembly/dfm/dfm-preflight/swept-collision/reachable/mounting-holes/load-capacity/static-hold)."New value: +"Path to a .kcad.ts script (assembly/dfm/dfm-preflight/swept-collision/reachable/mounting-holes/load-capacity/static-hold). Hosted server: cannot read files from your machine — pass `code`, or `project:<slug>` for a saved project."
  7. Changed8 schema fields changed
    • addedInput schema / properties / body_bbox
      Added value: +{
      +  "description": "check:'body-likeness' — body AABB { min:[x,y,z], max:[x,y,z] } in mm.",
      +  "type": "object"
      +}
    • addedInput schema / properties / body_feature_id
      Added value: +{
      +  "description": "check:'body-likeness' — FeatureId to read body AABB from when body_bbox omitted.",
      +  "type": "string"
      +}
    • addedInput schema / properties / cabin_bbox
      Added value: +{
      +  "description": "check:'body-likeness' — optional cabin/greenhouse AABB for automated cabin-aft.",
      +  "type": "object"
      +}
    • changedInput schema / properties / check / enum
      Previous value: -[
      -  "assembly",
      -  "urdf",
      -  "dfm",
      -  "dfm-preflight",
      -  "swept-collision",
      -  "reachable",
      -  "mounting-holes",
      -  "load-capacity",
      -  "static-hold"
      -]New value: +[
      +  "assembly",
      +  "urdf",
      +  "dfm",
      +  "dfm-preflight",
      +  "swept-collision",
      +  "reachable",
      +  "mounting-holes",
      +  "load-capacity",
      +  "static-hold",
      +  "body-likeness"
      +]
    • addedInput schema / properties / length_axis
      Added value: +{
      +  "description": "check:'body-likeness' — wheelbase axis (default 'x').",
      +  "enum": [
      +    "x",
      +    "y"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / require_stills
      Added value: +{
      +  "description": "check:'body-likeness' — require still_verdicts (default true).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / still_verdicts
      Added value: +{
      +  "description": "check:'body-likeness' — agent ortho still checklist [{ code, passed, finding, view? }]. Required codes: side-body-over-wheels, side-cabin-aft, rear-haunch, ortho-proportions-vs-reference.",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / wheels
      Added value: +{
      +  "description": "check:'body-likeness' — wheel centres + tire radii [{ center:[x,y,z], radius }].",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  8. Changed7 schema fields changed
    • changedInput schema / properties / check / enum
      Previous value: -[
      -  "assembly",
      -  "urdf",
      -  "dfm",
      -  "dfm-preflight",
      -  "swept-collision",
      -  "reachable",
      -  "mounting-holes",
      -  "load-capacity"
      -]New value: +[
      +  "assembly",
      +  "urdf",
      +  "dfm",
      +  "dfm-preflight",
      +  "swept-collision",
      +  "reachable",
      +  "mounting-holes",
      +  "load-capacity",
      +  "static-hold"
      +]
    • changedInput schema / properties / file / description
      Previous value: -"Path to a .kcad.ts script (assembly/dfm/dfm-preflight/swept-collision/reachable/mounting-holes/load-capacity)."New value: +"Path to a .kcad.ts script (assembly/dfm/dfm-preflight/swept-collision/reachable/mounting-holes/load-capacity/static-hold)."
    • addedInput schema / properties / gravity
      Added value: +{
      +  "description": "check:'static-hold' — gravity vector, m/s^2, world frame (default [0, 0, -9.81]).",
      +  "items": {
      +    "type": "number"
      +  },
      +  "maxItems": 3,
      +  "minItems": 3,
      +  "type": "array"
      +}
    • changedInput schema / properties / joint / description
      Previous value: -"check:'swept-collision' — joint to sweep; omit to sweep every declared joint."New value: +"check:'swept-collision' — joint to sweep; omit to sweep every declared joint. check:'static-hold' — joint to evaluate; omit to evaluate every joint with a declared actuator."
    • addedInput schema / properties / min_torque_margin_pct
      Added value: +{
      +  "description": "check:'static-hold' — safety-margin floor as a percent of actuator capacity (default 20).",
      +  "type": "number"
      +}
    • addedInput schema / properties / pose
      Added value: +{
      +  "description": "check:'static-hold' — explicit pose (joint name -> deg/mm) or array of poses; omit to sample a grid across the evaluated joint's range."
      +}
    • addedInput schema / properties / range_samples
      Added value: +{
      +  "description": "check:'static-hold' — grid density per evaluated joint when `pose` is omitted (default 9).",
      +  "type": "number"
      +}
  9. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "diagnostics": {
      +      "description": "Verifier diagnostics (most checks).",
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "error": {
      +      "description": "Failure message (present on failure).",
      +      "type": "string"
      +    },
      +    "errorCode": {
      +      "type": "string"
      +    },
      +    "ok": {
      +      "description": "Whether the verification ran and passed its gate.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  10. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.