← WebMCP Directory

Tool tree

lamkakam.github.io

Health & EducationTools verified
Website
Web-based GUI for RayOptics
Explore capabilities
    get_lens_prescriptionAnswer

    Read the complete Lens Editor prescription or one visible Object, surface, or Image row.

    View tool JSON
    {
      "name": "get_lens_prescription",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the complete Lens Editor prescription or one visible Object, surface, or Image row.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "row": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "object",
                  "image"
                ]
              },
              {
                "type": "integer",
                "minimum": 1
              }
            ]
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    set_lens_prescriptionAction

    Replace the complete Lens Editor prescription after strict validation. Numeric input guidance: Flat surfaces use `0` for radius of curvature. Infinity object/image distances use `1e10`. Material input guidance: catalog glass requires `manufacturer` to be one of `CDGM`, `Hikari`, `Hoya`, `Ohara`, `Schott`, or `Sumita`; special materials and reflective surfaces use an empty manufacturer. Single-index model glass uses `{"medium": "<refractive_index>", "manufacturer": ""}`. Model glass with `nd` and `vd` uses `{"medium": "<nd>", "manufacturer": "<vd>"}`. All numeric values must be stringified. Material input special cases guidance: reflective surfaces use `{"medium": "REFL", "manufacturer": ""}`. Air, water, fluorite/fluorspar/CaF2, fused silica, and Schott D263 T eco use `{"medium": "air" | "Water" | "CAF2" | "Fused Silica" | "D263TECO", "manufacturer": ""}`. Some Ohara names ending in a single digit, including `S-BSL7`, `S-FSL5`, and `S-NBH5`, require canonical names with whitespace: `S-BSL 7`, `S-FSL 5`, and `S-NBH 5`.

    View tool JSON
    {
      "name": "set_lens_prescription",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the complete Lens Editor prescription after strict validation. Numeric input guidance: Flat surfaces use `0` for radius of curvature. Infinity object/image distances use `1e10`. Material input guidance: catalog glass requires `manufacturer` to be one of `CDGM`, `Hikari`, `Hoya`, `Ohara`, `Schott`, or `Sumita`; special materials and reflective surfaces use an empty manufacturer. Single-index model glass uses `{\"medium\": \"<refractive_index>\", \"manufacturer\": \"\"}`. Model glass with `nd` and `vd` uses `{\"medium\": \"<nd>\", \"manufacturer\": \"<vd>\"}`. All numeric values must be stringified. Material input special cases guidance: reflective surfaces use `{\"medium\": \"REFL\", \"manufacturer\": \"\"}`. Air, water, fluorite/fluorspar/CaF2, fused silica, and Schott D263 T eco use `{\"medium\": \"air\" | \"Water\" | \"CAF2\" | \"Fused Silica\" | \"D263TECO\", \"manufacturer\": \"\"}`. Some Ohara names ending in a single digit, including `S-BSL7`, `S-FSL5`, and `S-NBH5`, require canonical names with whitespace: `S-BSL 7`, `S-FSL 5`, and `S-NBH 5`.",
      "inputSchema": {
        "type": "object",
        "required": [
          "object",
          "surfaces",
          "image"
        ],
        "properties": {
          "object": {
            "type": "object",
            "required": [
              "distance",
              "medium",
              "manufacturer"
            ],
            "properties": {
              "distance": {
                "type": "number",
                "finiteNumber": true
              },
              "medium": {
                "type": "string",
                "not": {
                  "enum": [
                    "REFL",
                    "refl"
                  ]
                }
              },
              "manufacturer": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "surfaces": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "label",
                "curvatureRadius",
                "thickness",
                "medium",
                "manufacturer",
                "semiDiameter"
              ],
              "properties": {
                "label": {
                  "enum": [
                    "Default",
                    "Stop"
                  ],
                  "type": "string"
                },
                "comment": {
                  "type": "string"
                },
                "curvatureRadius": {
                  "type": "number",
                  "finiteNumber": true
                },
                "thickness": {
                  "type": "number",
                  "finiteNumber": true
                },
                "medium": {
                  "type": "string"
                },
                "manufacturer": {
                  "type": "string"
                },
                "semiDiameter": {
                  "type": "number",
                  "finiteNumber": true
                },
                "aspherical": {
                  "anyOf": [
                    {
                      "type": "object",
                      "required": [
                        "kind",
                        "conicConstant"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "Conic"
                        },
                        "conicConstant": {
                          "type": "number",
                          "finiteNumber": true
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "required": [
                        "kind",
                        "conicConstant",
                        "polynomialCoefficients"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "EvenAspherical"
                        },
                        "conicConstant": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "polynomialCoefficients": {
                          "type": "array",
                          "items": {
                            "type": "number",
                            "finiteNumber": true
                          },
                          "maxItems": 10
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "required": [
                        "kind",
                        "conicConstant",
                        "polynomialCoefficients"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "RadialPolynomial"
                        },
                        "conicConstant": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "polynomialCoefficients": {
                          "type": "array",
                          "items": {
                            "type": "number",
                            "finiteNumber": true
                          },
                          "maxItems": 10
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "required": [
                        "kind",
                        "conicConstant",
                        "toricSweepRadiusOfCurvature",
                        "polynomialCoefficients"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "XToroid"
                        },
                        "conicConstant": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "toricSweepRadiusOfCurvature": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "polynomialCoefficients": {
                          "type": "array",
                          "items": {
                            "type": "number",
                            "finiteNumber": true
                          },
                          "maxItems": 10
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "required": [
                        "kind",
                        "conicConstant",
                        "toricSweepRadiusOfCurvature",
                        "polynomialCoefficients"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "YToroid"
                        },
                        "conicConstant": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "toricSweepRadiusOfCurvature": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "polynomialCoefficients": {
                          "type": "array",
                          "items": {
                            "type": "number",
                            "finiteNumber": true
                          },
                          "maxItems": 10
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                },
                "decenter": {
                  "type": "object",
                  "required": [
                    "coordinateSystemStrategy",
                    "alpha",
                    "beta",
                    "gamma",
                    "offsetX",
                    "offsetY"
                  ],
                  "properties": {
                    "coordinateSystemStrategy": {
                      "enum": [
                        "bend",
                        "dec and return",
                        "decenter",
                        "reverse"
                      ],
                      "type": "string"
                    },
                    "alpha": {
                      "type": "number",
                      "finiteNumber": true
                    },
                    "beta": {
                      "type": "number",
                      "finiteNumber": true
                    },
                    "gamma": {
                      "type": "number",
                      "finiteNumber": true
                    },
                    "offsetX": {
                      "type": "number",
                      "finiteNumber": true
                    },
                    "offsetY": {
                      "type": "number",
                      "finiteNumber": true
                    }
                  },
                  "additionalProperties": false
                },
                "diffractiveElement": {
                  "type": "object",
                  "properties": {
                    "diffractionGrating": {
                      "type": "object",
                      "required": [
                        "lpmm",
                        "order"
                      ],
                      "properties": {
                        "lpmm": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "order": {
                          "type": "integer"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "clear_aperture": {
                  "anyOf": [
                    {
                      "type": "object",
                      "required": [
                        "shape",
                        "offsetX",
                        "offsetY"
                      ],
                      "properties": {
                        "shape": {
                          "type": "string",
                          "const": "circular"
                        },
                        "offsetX": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetY": {
                          "type": "number",
                          "finiteNumber": true
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "required": [
                        "shape",
                        "obstructionRadius",
                        "offsetX",
                        "offsetY"
                      ],
                      "properties": {
                        "shape": {
                          "type": "string",
                          "const": "annular"
                        },
                        "obstructionRadius": {
                          "type": "number",
                          "finiteNumber": true,
                          "exclusiveMinimum": 0,
                          "exclusiveMaximum": {
                            "$data": "2/semiDiameter"
                          }
                        },
                        "offsetX": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetY": {
                          "type": "number",
                          "finiteNumber": true
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "required": [
                        "shape",
                        "xHalfWidth",
                        "yHalfWidth",
                        "rotation",
                        "offsetX",
                        "offsetY"
                      ],
                      "properties": {
                        "shape": {
                          "type": "string",
                          "const": "rectangular"
                        },
                        "xHalfWidth": {
                          "type": "number",
                          "finiteNumber": true,
                          "exclusiveMinimum": 0
                        },
                        "yHalfWidth": {
                          "type": "number",
                          "finiteNumber": true,
                          "exclusiveMinimum": 0
                        },
                        "rotation": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetX": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetY": {
                          "type": "number",
                          "finiteNumber": true
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "required": [
                        "shape",
                        "lpmm",
                        "rotation",
                        "offsetX",
                        "offsetY"
                      ],
                      "properties": {
                        "shape": {
                          "type": "string",
                          "const": "ronchi"
                        },
                        "lpmm": {
                          "type": "number",
                          "finiteNumber": true,
                          "exclusiveMinimum": 0
                        },
                        "rotation": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetX": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetY": {
                          "type": "number",
                          "finiteNumber": true
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                },
                "edge_aperture": {
                  "anyOf": [
                    {
                      "type": "object",
                      "required": [
                        "shape",
                        "radius",
                        "offsetX",
                        "offsetY"
                      ],
                      "properties": {
                        "shape": {
                          "type": "string",
                          "const": "circular"
                        },
                        "radius": {
                          "type": "number",
                          "finiteNumber": true,
                          "exclusiveMinimum": 0
                        },
                        "offsetX": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetY": {
                          "type": "number",
                          "finiteNumber": true
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "required": [
                        "shape",
                        "xHalfWidth",
                        "yHalfWidth",
                        "rotation",
                        "offsetX",
                        "offsetY"
                      ],
                      "properties": {
                        "shape": {
                          "type": "string",
                          "const": "rectangular"
                        },
                        "xHalfWidth": {
                          "type": "number",
                          "finiteNumber": true,
                          "exclusiveMinimum": 0
                        },
                        "yHalfWidth": {
                          "type": "number",
                          "finiteNumber": true,
                          "exclusiveMinimum": 0
                        },
                        "rotation": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetX": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "offsetY": {
                          "type": "number",
                          "finiteNumber": true
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "additionalProperties": false,
              "allOf": [
                {
                  "if": {
                    "required": [
                      "clear_aperture"
                    ],
                    "properties": {
                      "clear_aperture": {
                        "type": "object",
                        "required": [
                          "shape"
                        ],
                        "properties": {
                          "shape": {
                            "const": "ronchi"
                          }
                        }
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "semiDiameter": {
                        "type": "number",
                        "finiteNumber": true,
                        "exclusiveMinimum": 0
                      }
                    }
                  }
                }
              ]
            }
          },
          "image": {
            "type": "object",
            "required": [
              "curvatureRadius"
            ],
            "properties": {
              "curvatureRadius": {
                "type": "number",
                "finiteNumber": true
              },
              "decenter": {
                "type": "object",
                "required": [
                  "coordinateSystemStrategy",
                  "alpha",
                  "beta",
                  "gamma",
                  "offsetX",
                  "offsetY"
                ],
                "properties": {
                  "coordinateSystemStrategy": {
                    "enum": [
                      "bend",
                      "dec and return",
                      "decenter",
                      "reverse"
                    ],
                    "type": "string"
                  },
                  "alpha": {
                    "type": "number",
                    "finiteNumber": true
                  },
                  "beta": {
                    "type": "number",
                    "finiteNumber": true
                  },
                  "gamma": {
                    "type": "number",
                    "finiteNumber": true
                  },
                  "offsetX": {
                    "type": "number",
                    "finiteNumber": true
                  },
                  "offsetY": {
                    "type": "number",
                    "finiteNumber": true
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "page": "/ray-optics-web/"
    }
    insert_lens_surfaceAction

    Insert a default physical lens surface after Object or a visible surface index. Numeric input guidance: Flat surfaces use `0` for radius of curvature. Infinity object/image distances use `1e10`. Material input guidance: catalog glass requires `manufacturer` to be one of `CDGM`, `Hikari`, `Hoya`, `Ohara`, `Schott`, or `Sumita`; special materials and reflective surfaces use an empty manufacturer. Single-index model glass uses `{"medium": "<refractive_index>", "manufacturer": ""}`. Model glass with `nd` and `vd` uses `{"medium": "<nd>", "manufacturer": "<vd>"}`. All numeric values must be stringified. Material input special cases guidance: reflective surfaces use `{"medium": "REFL", "manufacturer": ""}`. Air, water, fluorite/fluorspar/CaF2, fused silica, and Schott D263 T eco use `{"medium": "air" | "Water" | "CAF2" | "Fused Silica" | "D263TECO", "manufacturer": ""}`. Some Ohara names ending in a single digit, including `S-BSL7`, `S-FSL5`, and `S-NBH5`, require canonical names with whitespace: `S-BSL 7`, `S-FSL 5`, and `S-NBH 5`.

    View tool JSON
    {
      "name": "insert_lens_surface",
      "kind": "act",
      "impl": "imperative",
      "description": "Insert a default physical lens surface after Object or a visible surface index. Numeric input guidance: Flat surfaces use `0` for radius of curvature. Infinity object/image distances use `1e10`. Material input guidance: catalog glass requires `manufacturer` to be one of `CDGM`, `Hikari`, `Hoya`, `Ohara`, `Schott`, or `Sumita`; special materials and reflective surfaces use an empty manufacturer. Single-index model glass uses `{\"medium\": \"<refractive_index>\", \"manufacturer\": \"\"}`. Model glass with `nd` and `vd` uses `{\"medium\": \"<nd>\", \"manufacturer\": \"<vd>\"}`. All numeric values must be stringified. Material input special cases guidance: reflective surfaces use `{\"medium\": \"REFL\", \"manufacturer\": \"\"}`. Air, water, fluorite/fluorspar/CaF2, fused silica, and Schott D263 T eco use `{\"medium\": \"air\" | \"Water\" | \"CAF2\" | \"Fused Silica\" | \"D263TECO\", \"manufacturer\": \"\"}`. Some Ohara names ending in a single digit, including `S-BSL7`, `S-FSL5`, and `S-NBH5`, require canonical names with whitespace: `S-BSL 7`, `S-FSL 5`, and `S-NBH 5`.",
      "inputSchema": {
        "type": "object",
        "required": [
          "after"
        ],
        "additionalProperties": false,
        "properties": {
          "after": {
            "oneOf": [
              {
                "type": "string",
                "const": "object"
              },
              {
                "type": "integer",
                "minimum": 1
              }
            ]
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    update_lens_rowAction

    Update applicable simple or nested fields on a visible Object, surface, or Image row. Numeric input guidance: Flat surfaces use `0` for radius of curvature. Infinity object/image distances use `1e10`. Material input guidance: catalog glass requires `manufacturer` to be one of `CDGM`, `Hikari`, `Hoya`, `Ohara`, `Schott`, or `Sumita`; special materials and reflective surfaces use an empty manufacturer. Single-index model glass uses `{"medium": "<refractive_index>", "manufacturer": ""}`. Model glass with `nd` and `vd` uses `{"medium": "<nd>", "manufacturer": "<vd>"}`. All numeric values must be stringified. Material input special cases guidance: reflective surfaces use `{"medium": "REFL", "manufacturer": ""}`. Air, water, fluorite/fluorspar/CaF2, fused silica, and Schott D263 T eco use `{"medium": "air" | "Water" | "CAF2" | "Fused Silica" | "D263TECO", "manufacturer": ""}`. Some Ohara names ending in a single digit, including `S-BSL7`, `S-FSL5`, and `S-NBH5`, require canonical names with whitespace: `S-BSL 7`, `S-FSL 5`, and `S-NBH 5`.

    View tool JSON
    {
      "name": "update_lens_row",
      "kind": "act",
      "impl": "imperative",
      "description": "Update applicable simple or nested fields on a visible Object, surface, or Image row. Numeric input guidance: Flat surfaces use `0` for radius of curvature. Infinity object/image distances use `1e10`. Material input guidance: catalog glass requires `manufacturer` to be one of `CDGM`, `Hikari`, `Hoya`, `Ohara`, `Schott`, or `Sumita`; special materials and reflective surfaces use an empty manufacturer. Single-index model glass uses `{\"medium\": \"<refractive_index>\", \"manufacturer\": \"\"}`. Model glass with `nd` and `vd` uses `{\"medium\": \"<nd>\", \"manufacturer\": \"<vd>\"}`. All numeric values must be stringified. Material input special cases guidance: reflective surfaces use `{\"medium\": \"REFL\", \"manufacturer\": \"\"}`. Air, water, fluorite/fluorspar/CaF2, fused silica, and Schott D263 T eco use `{\"medium\": \"air\" | \"Water\" | \"CAF2\" | \"Fused Silica\" | \"D263TECO\", \"manufacturer\": \"\"}`. Some Ohara names ending in a single digit, including `S-BSL7`, `S-FSL5`, and `S-NBH5`, require canonical names with whitespace: `S-BSL 7`, `S-FSL 5`, and `S-NBH 5`.",
      "inputSchema": {
        "type": "object",
        "required": [
          "row"
        ],
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "values"
            ]
          },
          {
            "required": [
              "clear"
            ]
          }
        ],
        "properties": {
          "row": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "object",
                  "image"
                ]
              },
              {
                "type": "integer",
                "minimum": 1
              }
            ]
          },
          "values": {
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "properties": {
              "distance": {
                "type": "number",
                "finiteNumber": true
              },
              "label": {
                "enum": [
                  "Default",
                  "Stop"
                ],
                "type": "string"
              },
              "comment": {
                "type": "string"
              },
              "curvatureRadius": {
                "type": "number",
                "finiteNumber": true
              },
              "thickness": {
                "type": "number",
                "finiteNumber": true
              },
              "medium": {
                "type": "string"
              },
              "manufacturer": {
                "type": "string"
              },
              "semiDiameter": {
                "type": "number",
                "finiteNumber": true
              },
              "aspherical": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "kind",
                      "conicConstant"
                    ],
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "Conic"
                      },
                      "conicConstant": {
                        "type": "number",
                        "finiteNumber": true
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "kind",
                      "conicConstant",
                      "polynomialCoefficients"
                    ],
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "EvenAspherical"
                      },
                      "conicConstant": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "polynomialCoefficients": {
                        "type": "array",
                        "items": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "maxItems": 10
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "kind",
                      "conicConstant",
                      "polynomialCoefficients"
                    ],
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "RadialPolynomial"
                      },
                      "conicConstant": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "polynomialCoefficients": {
                        "type": "array",
                        "items": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "maxItems": 10
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "kind",
                      "conicConstant",
                      "toricSweepRadiusOfCurvature",
                      "polynomialCoefficients"
                    ],
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "XToroid"
                      },
                      "conicConstant": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "toricSweepRadiusOfCurvature": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "polynomialCoefficients": {
                        "type": "array",
                        "items": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "maxItems": 10
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "kind",
                      "conicConstant",
                      "toricSweepRadiusOfCurvature",
                      "polynomialCoefficients"
                    ],
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "YToroid"
                      },
                      "conicConstant": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "toricSweepRadiusOfCurvature": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "polynomialCoefficients": {
                        "type": "array",
                        "items": {
                          "type": "number",
                          "finiteNumber": true
                        },
                        "maxItems": 10
                      }
                    },
                    "additionalProperties": false
                  }
                ]
              },
              "decenter": {
                "type": "object",
                "required": [
                  "coordinateSystemStrategy",
                  "alpha",
                  "beta",
                  "gamma",
                  "offsetX",
                  "offsetY"
                ],
                "properties": {
                  "coordinateSystemStrategy": {
                    "enum": [
                      "bend",
                      "dec and return",
                      "decenter",
                      "reverse"
                    ],
                    "type": "string"
                  },
                  "alpha": {
                    "type": "number",
                    "finiteNumber": true
                  },
                  "beta": {
                    "type": "number",
                    "finiteNumber": true
                  },
                  "gamma": {
                    "type": "number",
                    "finiteNumber": true
                  },
                  "offsetX": {
                    "type": "number",
                    "finiteNumber": true
                  },
                  "offsetY": {
                    "type": "number",
                    "finiteNumber": true
                  }
                },
                "additionalProperties": false
              },
              "diffractiveElement": {
                "type": "object",
                "properties": {
                  "diffractionGrating": {
                    "type": "object",
                    "required": [
                      "lpmm",
                      "order"
                    ],
                    "properties": {
                      "lpmm": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "order": {
                        "type": "integer"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              "clear_aperture": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "shape",
                      "offsetX",
                      "offsetY"
                    ],
                    "properties": {
                      "shape": {
                        "type": "string",
                        "const": "circular"
                      },
                      "offsetX": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetY": {
                        "type": "number",
                        "finiteNumber": true
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "shape",
                      "obstructionRadius",
                      "offsetX",
                      "offsetY"
                    ],
                    "properties": {
                      "shape": {
                        "type": "string",
                        "const": "annular"
                      },
                      "obstructionRadius": {
                        "type": "number",
                        "finiteNumber": true,
                        "exclusiveMinimum": 0,
                        "exclusiveMaximum": {
                          "$data": "2/semiDiameter"
                        }
                      },
                      "offsetX": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetY": {
                        "type": "number",
                        "finiteNumber": true
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "shape",
                      "xHalfWidth",
                      "yHalfWidth",
                      "rotation",
                      "offsetX",
                      "offsetY"
                    ],
                    "properties": {
                      "shape": {
                        "type": "string",
                        "const": "rectangular"
                      },
                      "xHalfWidth": {
                        "type": "number",
                        "finiteNumber": true,
                        "exclusiveMinimum": 0
                      },
                      "yHalfWidth": {
                        "type": "number",
                        "finiteNumber": true,
                        "exclusiveMinimum": 0
                      },
                      "rotation": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetX": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetY": {
                        "type": "number",
                        "finiteNumber": true
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "shape",
                      "lpmm",
                      "rotation",
                      "offsetX",
                      "offsetY"
                    ],
                    "properties": {
                      "shape": {
                        "type": "string",
                        "const": "ronchi"
                      },
                      "lpmm": {
                        "type": "number",
                        "finiteNumber": true,
                        "exclusiveMinimum": 0
                      },
                      "rotation": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetX": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetY": {
                        "type": "number",
                        "finiteNumber": true
                      }
                    },
                    "additionalProperties": false
                  }
                ]
              },
              "edge_aperture": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "shape",
                      "radius",
                      "offsetX",
                      "offsetY"
                    ],
                    "properties": {
                      "shape": {
                        "type": "string",
                        "const": "circular"
                      },
                      "radius": {
                        "type": "number",
                        "finiteNumber": true,
                        "exclusiveMinimum": 0
                      },
                      "offsetX": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetY": {
                        "type": "number",
                        "finiteNumber": true
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "shape",
                      "xHalfWidth",
                      "yHalfWidth",
                      "rotation",
                      "offsetX",
                      "offsetY"
                    ],
                    "properties": {
                      "shape": {
                        "type": "string",
                        "const": "rectangular"
                      },
                      "xHalfWidth": {
                        "type": "number",
                        "finiteNumber": true,
                        "exclusiveMinimum": 0
                      },
                      "yHalfWidth": {
                        "type": "number",
                        "finiteNumber": true,
                        "exclusiveMinimum": 0
                      },
                      "rotation": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetX": {
                        "type": "number",
                        "finiteNumber": true
                      },
                      "offsetY": {
                        "type": "number",
                        "finiteNumber": true
                      }
                    },
                    "additionalProperties": false
                  }
                ]
              }
            }
          },
          "clear": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "comment",
                "aspherical",
                "decenter",
                "diffractiveElement",
                "clear_aperture",
                "edge_aperture"
              ]
            }
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    delete_lens_surfaceSensitive Action

    Delete one physical lens surface by its current visible positive index.

    View tool JSON
    {
      "name": "delete_lens_surface",
      "kind": "transact",
      "impl": "imperative",
      "description": "Delete one physical lens surface by its current visible positive index.",
      "inputSchema": {
        "type": "object",
        "required": [
          "surface"
        ],
        "additionalProperties": false,
        "properties": {
          "surface": {
            "type": "integer",
            "minimum": 1
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_system_specsAnswer

    Read the current draft OpticalSpecs from the Lens Editor.

    View tool JSON
    {
      "name": "get_system_specs",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the current draft OpticalSpecs from the Lens Editor.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "page": "/ray-optics-web/"
    }
    set_system_apertureAction

    Stage a supported Object EPD/NA or Image F/# pupil specification for the Lens Editor.

    View tool JSON
    {
      "name": "set_system_aperture",
      "kind": "act",
      "impl": "imperative",
      "description": "Stage a supported Object EPD/NA or Image F/# pupil specification for the Lens Editor.",
      "inputSchema": {
        "anyOf": [
          {
            "type": "object",
            "required": [
              "space",
              "type",
              "value"
            ],
            "properties": {
              "space": {
                "type": "string",
                "const": "object"
              },
              "type": {
                "enum": [
                  "epd",
                  "NA"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "finiteNumber": true
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "space",
              "type",
              "value"
            ],
            "properties": {
              "space": {
                "type": "string",
                "const": "image"
              },
              "type": {
                "type": "string",
                "const": "f/#"
              },
              "value": {
                "type": "number",
                "finiteNumber": true
              }
            },
            "additionalProperties": false
          }
        ],
        "type": "object"
      },
      "page": "/ray-optics-web/"
    }
    set_half_fieldAction

    Stage a relative Object Height/Angle or Image Height half-field specification with one to ten samples.

    View tool JSON
    {
      "name": "set_half_field",
      "kind": "act",
      "impl": "imperative",
      "description": "Stage a relative Object Height/Angle or Image Height half-field specification with one to ten samples.",
      "inputSchema": {
        "anyOf": [
          {
            "type": "object",
            "required": [
              "space",
              "type",
              "fields",
              "maxField",
              "isRelative"
            ],
            "properties": {
              "space": {
                "type": "string",
                "const": "object"
              },
              "type": {
                "enum": [
                  "angle",
                  "height"
                ],
                "type": "string"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "number",
                  "finiteNumber": true
                },
                "minItems": 1,
                "maxItems": 10
              },
              "isWideAngle": {
                "type": "boolean"
              },
              "maxField": {
                "type": "number",
                "finiteNumber": true
              },
              "isRelative": {
                "type": "boolean",
                "const": true
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "space",
              "type",
              "fields",
              "maxField",
              "isRelative"
            ],
            "properties": {
              "space": {
                "type": "string",
                "const": "image"
              },
              "type": {
                "type": "string",
                "const": "height"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "number",
                  "finiteNumber": true
                },
                "minItems": 1,
                "maxItems": 10
              },
              "isWideAngle": {
                "type": "boolean"
              },
              "maxField": {
                "type": "number",
                "finiteNumber": true
              },
              "isRelative": {
                "type": "boolean",
                "const": true
              }
            },
            "additionalProperties": false
          }
        ],
        "type": "object"
      },
      "page": "/ray-optics-web/"
    }
    set_wavelengthsAction

    Stage one to seven wavelength/weight tuples and an in-range reference wavelength index.

    View tool JSON
    {
      "name": "set_wavelengths",
      "kind": "act",
      "impl": "imperative",
      "description": "Stage one to seven wavelength/weight tuples and an in-range reference wavelength index.",
      "inputSchema": {
        "type": "object",
        "required": [
          "weights",
          "referenceIndex"
        ],
        "properties": {
          "weights": {
            "type": "array",
            "items": {
              "type": "array",
              "additionalItems": false,
              "items": [
                {
                  "type": "number",
                  "finiteNumber": true
                },
                {
                  "type": "number",
                  "finiteNumber": true
                }
              ],
              "minItems": 2
            },
            "minItems": 1,
            "maxItems": 7
          },
          "referenceIndex": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false,
        "referenceIndexInRange": true
      },
      "page": "/ray-optics-web/"
    }
    recompute_optical_systemAction

    Recompute and commit the complete optical system, including glass validation, analyses, layout, selected-index clamping, and auto-aperture results.

    View tool JSON
    {
      "name": "recompute_optical_system",
      "kind": "act",
      "impl": "imperative",
      "description": "Recompute and commit the complete optical system, including glass validation, analyses, layout, selected-index clamping, and auto-aperture results.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "page": "/ray-optics-web/"
    }
    focus_optical_systemAction

    Focus the current draft optical system using the selected chromaticity and metric, then recompute it. This focusing only changes the thickness of the space between the last optical surface and the image plane, so it is not suitable for all optical systems.

    View tool JSON
    {
      "name": "focus_optical_system",
      "kind": "act",
      "impl": "imperative",
      "description": "Focus the current draft optical system using the selected chromaticity and metric, then recompute it. This focusing only changes the thickness of the space between the last optical surface and the image plane, so it is not suitable for all optical systems.",
      "inputSchema": {
        "type": "object",
        "required": [
          "chromaticity",
          "metric",
          "fieldIndex"
        ],
        "additionalProperties": false,
        "properties": {
          "chromaticity": {
            "type": "string",
            "enum": [
              "mono",
              "poly"
            ]
          },
          "metric": {
            "type": "string",
            "enum": [
              "rmsSpot",
              "wavefront"
            ]
          },
          "fieldIndex": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_paraxial_dataAnswer

    Read the complete first-order data shown by the Paraxial Data dialog. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first. Stored results must belong to that exact model; after optimization Apply, call `recompute_optical_system` if results are missing or stale.

    View tool JSON
    {
      "name": "get_paraxial_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the complete first-order data shown by the Paraxial Data dialog. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first. Stored results must belong to that exact model; after optimization Apply, call `recompute_optical_system` if results are missing or stale.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "page": "/ray-optics-web/"
    }
    get_3rd_order_seidel_dataAnswer

    Read complete third-order Seidel and primary chromatic surfaceBySurface (S-I to S-V, C-I axial color, C-II lateral color), surface-by-surface wavefront in waves (W040, W131, W222, W220P Petzval curvature, W220 field curvature, W311, W020 axial color, W111 lateral color), transverse, and curvature data, including surface labels and sum totals. Aspheric contributions are included in their surface's column. C-I, C-II, W020, and W111 use the index difference between the first and last wavelengths and are zero with fewer than 3 wavelengths. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first. Stored results must belong to that exact model; after optimization Apply, call `recompute_optical_system` if results are missing or stale.

    View tool JSON
    {
      "name": "get_3rd_order_seidel_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete third-order Seidel and primary chromatic surfaceBySurface (S-I to S-V, C-I axial color, C-II lateral color), surface-by-surface wavefront in waves (W040, W131, W222, W220P Petzval curvature, W220 field curvature, W311, W020 axial color, W111 lateral color), transverse, and curvature data, including surface labels and sum totals. Aspheric contributions are included in their surface's column. C-I, C-II, W020, and W111 use the index difference between the first and last wavelengths and are zero with fewer than 3 wavelengths. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first. Stored results must belong to that exact model; after optimization Apply, call `recompute_optical_system` if results are missing or stale.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "page": "/ray-optics-web/"
    }
    get_zernike_termsAnswer

    Read complete Zernike data and labeled terms using the current app image reference. Defaults to field 0, committed reference wavelength, Fringe ordering (37 terms), and entrance pupil. Noll ordering uses 56 terms; exit pupil requires finite image space. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_zernike_terms",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete Zernike data and labeled terms using the current app image reference. Defaults to field 0, committed reference wavelength, Fringe ordering (37 terms), and entrance pupil. Noll ordering uses 56 terms; exit pupil requires finite image space. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          },
          "wavelengthIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed wavelength index; defaults to its reference wavelength."
          },
          "ordering": {
            "type": "string",
            "enum": [
              "fringe",
              "noll"
            ],
            "description": "Defaults to fringe (37 terms); noll uses 56 terms."
          },
          "pupilSpace": {
            "type": "string",
            "enum": [
              "entrance",
              "exit"
            ],
            "description": "Defaults to entrance; exit requires finite image space."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_ray_fan_dataAnswer

    Read complete Ray Fan data for all wavelengths. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_ray_fan_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete Ray Fan data for all wavelengths. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_opd_fan_dataAnswer

    Read complete OPD Fan data for all wavelengths. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_opd_fan_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete OPD Fan data for all wavelengths. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_spot_diagram_dataAnswer

    Read complete Spot Diagram points for all wavelengths and unrounded GEO/RMS radii in µm or afocal arcsec using positive committed spectral weights. Radii are omitted when unavailable; point data is preserved. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_spot_diagram_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete Spot Diagram points for all wavelengths and unrounded GEO/RMS radii in µm or afocal arcsec using positive committed spectral weights. Radii are omitted when unavailable; point data is preserved. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_field_curvature_dataAnswer

    Read complete sagittal and tangential Field Curvature data. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_field_curvature_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete sagittal and tangential Field Curvature data. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "wavelengthIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed wavelength index; defaults to its reference wavelength."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_astigmatism_dataAnswer

    Read complete Astigmatism data across the field. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_astigmatism_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete Astigmatism data across the field. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "wavelengthIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed wavelength index; defaults to its reference wavelength."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_longitudinal_spherical_aberration_dataAnswer

    Read complete Longitudinal Spherical Aberration data for all wavelengths. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_longitudinal_spherical_aberration_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete Longitudinal Spherical Aberration data for all wavelengths. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      },
      "page": "/ray-optics-web/"
    }
    get_strehl_vs_wavelength_dataAnswer

    Read complete Strehl vs Wavelength data using the app's Settings wavelength sample count, echoed as wavelengthSamples. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_strehl_vs_wavelength_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete Strehl vs Wavelength data using the app's Settings wavelength sample count, echoed as wavelengthSamples. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_chromatic_focal_shift_dataAnswer

    Read complete Chromatic Focal Shift data: the real-ray best-focus shift (RMS wavefront) for one field at uniformly sampled wavelengths, relative to the committed reference wavelength, in system length units or diopters of output vergence for afocal image space. The wavelength range matches Strehl vs Wavelength. Failed samples are null. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_chromatic_focal_shift_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete Chromatic Focal Shift data: the real-ray best-focus shift (RMS wavefront) for one field at uniformly sampled wavelengths, relative to the committed reference wavelength, in system length units or diopters of output vergence for afocal image space. The wavelength range matches Strehl vs Wavelength. Failed samples are null. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          },
          "wavelengthSamples": {
            "type": "integer",
            "minimum": 2,
            "maximum": 1000,
            "description": "Number of uniformly spaced wavelength samples across the analysis range; defaults to the app's Settings value."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_y_ybar_dataAnswer

    Read complete paraxial y-ȳ (Delano) diagram data: marginal-ray height y and chief-ray height ȳ at each surface in sequential order, with surface labels and the system length unit. Object and image nodes at infinite conjugates are omitted; non-finite heights are null. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_y_ybar_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete paraxial y-ȳ (Delano) diagram data: marginal-ray height y and chief-ray height ȳ at each surface in sequential order, with surface labels and the system length unit. Object and image nodes at infinite conjugates are omitted; non-finite heights are null. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      },
      "page": "/ray-optics-web/"
    }
    get_wavefront_map_dataAnswer

    Read the complete Wavefront Map grid and units. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_wavefront_map_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the complete Wavefront Map grid and units. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          },
          "wavelengthIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed wavelength index; defaults to its reference wavelength."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_diffraction_psf_dataAnswer

    Read the complete Diffraction PSF grid and units. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_diffraction_psf_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the complete Diffraction PSF grid and units. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          },
          "wavelengthIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed wavelength index; defaults to its reference wavelength."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_diffraction_mtf_dataAnswer

    Read complete measured and ideal Diffraction MTF series, cutoffs, scaling metadata, and units. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.

    View tool JSON
    {
      "name": "get_diffraction_mtf_data",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read complete measured and ideal Diffraction MTF series, cutoffs, scaling metadata, and units. Uses the current app image reference and sampling settings. Optional selectors default to field 0 and the committed reference wavelength where applicable. Reads the current committed optical system. To include pending Lens Editor edits, call `recompute_optical_system` first.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed field index; defaults to 0."
          },
          "wavelengthIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based committed wavelength index; defaults to its reference wavelength."
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    set_active_pageAction

    Navigate to one of the application's canonical pages by route key. While an optimized lens prescription is pending on the Optimization page, leaving Optimization returns an error and does not navigate; call apply_optimization_to_editor or discard_optimization_result first.

    View tool JSON
    {
      "name": "set_active_page",
      "kind": "act",
      "impl": "imperative",
      "description": "Navigate to one of the application's canonical pages by route key. While an optimized lens prescription is pending on the Optimization page, leaving Optimization returns an error and does not navigate; call apply_optimization_to_editor or discard_optimization_result first.",
      "inputSchema": {
        "type": "object",
        "required": [
          "page"
        ],
        "additionalProperties": false,
        "properties": {
          "page": {
            "type": "string",
            "enum": [
              "lens_editor",
              "example_systems",
              "optimization",
              "glass_map",
              "import_custom_glass",
              "settings",
              "privacy_policy",
              "about"
            ]
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_active_pageAnswer

    Read the canonical active application page and any pending Optimization navigation confirmation destination.

    View tool JSON
    {
      "name": "get_active_page",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the canonical active application page and any pending Optimization navigation confirmation destination.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "page": "/ray-optics-web/"
    }
    resolve_optimization_navigationAction

    Resolve the pending Optimization leave confirmation with stay, leave, or apply_to_editor.

    View tool JSON
    {
      "name": "resolve_optimization_navigation",
      "kind": "act",
      "impl": "imperative",
      "description": "Resolve the pending Optimization leave confirmation with stay, leave, or apply_to_editor.",
      "inputSchema": {
        "type": "object",
        "required": [
          "action"
        ],
        "additionalProperties": false,
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "stay",
              "leave",
              "apply_to_editor"
            ]
          }
        }
      },
      "page": "/ray-optics-web/"
    }
    get_all_glassesAnswer

    Read all preset and custom glasses from every catalog, including catalogs hidden in Glass Map. Returns a JavaScript object keyed by catalog and canonical glass name for direct lookup, e.g. ret['Schott']['N-BK7'], without JSON parsing. Every catalog is included, with {} for empty catalogs. Each glass has glass, catalog, nd, vd, ne, ve, P_gF, P_Fe, and P_Fd without rounding. Names are exact, with no aliases or whitespace normalization. Some Ohara glasses, but not all, ending in a single digit require canonical names with whitespace: S-BSL7, S-FSL5, and S-NBH5 use 'S-BSL 7', 'S-FSL 5', and 'S-NBH 5', respectively. Water ('Water'), fluorite/fluorspar ('CaF2'), fused silica ('Fused Silica'), and Schott D263 T eco ('D263TECO') are under "Special".

    View tool JSON
    {
      "name": "get_all_glasses",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read all preset and custom glasses from every catalog, including catalogs hidden in Glass Map. Returns a JavaScript object keyed by catalog and canonical glass name for direct lookup, e.g. ret['Schott']['N-BK7'], without JSON parsing. Every catalog is included, with {} for empty catalogs. Each glass has glass, catalog, nd, vd, ne, ve, P_gF, P_Fe, and P_Fd without rounding. Names are exact, with no aliases or whitespace normalization. Some Ohara glasses, but not all, ending in a single digit require canonical names with whitespace: S-BSL7, S-FSL5, and S-NBH5 use 'S-BSL 7', 'S-FSL 5', and 'S-NBH 5', respectively. Water ('Water'), fluorite/fluorspar ('CaF2'), fused silica ('Fused Silica'), and Schott D263 T eco ('D263TECO') are under \"Special\".",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "page": "/ray-optics-web/"
    }
    get_app_versionAnswer

    Read the version of the currently open Ray Optics Web app.

    View tool JSON
    {
      "name": "get_app_version",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the version of the currently open Ray Optics Web app.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "page": "/ray-optics-web/"
    }