{"ok":true,"site":{"host":"lamkakam.github.io","url":"https://lamkakam.github.io/ray-optics-web/","type":"live","desc":"Web-based GUI for RayOptics","tools":[{"name":"get_lens_prescription","kind":"answer","impl":"imperative","description":"Read the complete Lens Editor prescription or one visible Object, surface, or Image row.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"row":{"oneOf":[{"type":"string","enum":["object","image"]},{"type":"integer","minimum":1}]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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`.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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`.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","required":["after"],"additionalProperties":false,"properties":{"after":{"oneOf":[{"type":"string","const":"object"},{"type":"integer","minimum":1}]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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`.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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"]}}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"name":"delete_lens_surface","kind":"transact","impl":"imperative","description":"Delete one physical lens surface by its current visible positive index.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","required":["surface"],"additionalProperties":false,"properties":{"surface":{"type":"integer","minimum":1}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"name":"get_system_specs","kind":"answer","impl":"imperative","description":"Read the current draft OpticalSpecs from the Lens Editor.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"name":"set_system_aperture","kind":"act","impl":"imperative","description":"Stage a supported Object EPD/NA or Image F/# pupil specification for the Lens Editor.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"name":"set_wavelengths","kind":"act","impl":"imperative","description":"Stage one to seven wavelength/weight tuples and an in-range reference wavelength index.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"fieldIndex":{"type":"integer","minimum":0,"description":"Zero-based committed field index; defaults to 0."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"fieldIndex":{"type":"integer","minimum":0,"description":"Zero-based committed field index; defaults to 0."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"fieldIndex":{"type":"integer","minimum":0,"description":"Zero-based committed field index; defaults to 0."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"wavelengthIndex":{"type":"integer","minimum":0,"description":"Zero-based committed wavelength index; defaults to its reference wavelength."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"wavelengthIndex":{"type":"integer","minimum":0,"description":"Zero-based committed wavelength index; defaults to its reference wavelength."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"fieldIndex":{"type":"integer","minimum":0,"description":"Zero-based committed field index; defaults to 0."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"name":"get_active_page","kind":"answer","impl":"imperative","description":"Read the canonical active application page and any pending Optimization navigation confirmation destination.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"name":"resolve_optimization_navigation","kind":"act","impl":"imperative","description":"Resolve the pending Optimization leave confirmation with stay, leave, or apply_to_editor.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","required":["action"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["stay","leave","apply_to_editor"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"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\".","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"},{"name":"get_app_version","kind":"answer","impl":"imperative","description":"Read the version of the currently open Ray Optics Web app.","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/ray-optics-web/"}],"category":"Health & Education","apiSurface":"spec","toolCount":31}}