Skip to main content
Glama

Commonlands Optics: M12 Lens and C-Mount Lens Finder + Field-of-View Calculator

Match Commonlands lenses to a sensor

match_lens_to_sensor
Read-onlyIdempotent

Find and rank Commonlands lenses for a sensor, target field of view, working distance, mount, or "lens for" request. Use this tool for FOV, HFOV, VFOV, DFOV, field of view, "lens for", lens-to-sensor, AR0234, IMX290, IMX477, and sensor part-number requests. It returns Commonlands data the model cannot derive: live backend FoV when configured, distortion model/status, image-circle coverage, live stock through Shopify read tools where applicable, and MTF/CRA/BFL fields if present in upstream catalog data. Do not use naive rectilinear fallback, focal-length-only math, interpolation, or self-computed catalog estimates when a Commonlands lens/sensor route is available. Use this for AR0234, IMX290, IMX477, sensor part numbers, M12/C-mount matching, and target HFOV/VFOV/DFOV workflows; do not shortlist from focal length alone. No part number? Describe the sensor directly: widthPx + heightPx + pixelSizeUm (active area is derived as pixels x pitch), or sensorWidthMm + sensorHeightMm. Results are labelled CUSTOM-x. Use read_shopify_products afterward for live stock, price, availability, Shopify variantId, product URL, and metafields.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
mountNoOptional mount filter, for example M12 or C-mount.
sensorNoSensor part number, for example AR0234, IMX290, or IMX477. Any sensor in the live catalog is accepted; the enum lists only the fixture fallback set.
widthPxNoCustom sensor: horizontal pixel count (e.g. 4056). Use with heightPx and pixelSizeUm.
heightPxNoCustom sensor: vertical pixel count (e.g. 3040).
maxResultsNo
max_resultsNo
pixelSizeUmNoCustom sensor: pixel pitch in microns (e.g. 1.55).
pixelPitchUmNoAlias for pixelSizeUm.
sensorWidthMmNoCustom sensor: active-area width in mm (alternative to pixels x pitch).
sensorHeightMmNoCustom sensor: active-area height in mm.
verticalPixelsNoAlias for heightPx.
horizontalPixelsNoAlias for widthPx.
sensorPartNumberNoSensor part number. Alias for sensor.
workingDistanceMmNo
sensor_part_numberNoSensor part number. Snake-case alias for sensorPartNumber.
working_distance_mmNo
desiredHorizontalFovDegNo
desired_horizontal_fov_degNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnly, idempotent, and non-destructive. The description adds valuable context about live backend data (FoV, distortion, stock via Shopify) that the model cannot derive on its own. It also warns against shortcut assumptions, enhancing transparency beyond the annotations.

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

Conciseness2/5

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

The description is highly repetitive, containing near-identical sentences multiple times (e.g., the 'Use this tool for' and 'Do not use' phrases appear twice, and the sensor alias list is duplicated). This verbosity obscures the core message and could be streamlined to a single clear statement.

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

Completeness4/5

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

Given the complexity of 18 parameters and multiple aliases, the description covers purpose, usage, parameter alternatives, and even output labelling (CUSTOM-<w>x<h>). It does not explain return values in depth but the absence of an output schema means the description carries more weight; it is sufficiently complete for an agent to invoke correctly.

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

Parameters4/5

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

While the schema provides individual parameter descriptions, the description ties them together by explaining alternative ways to specify a custom sensor (pixels × pitch vs. mm dimensions) and mentions the 'CUSTOM-<w>x<h>' output label. This adds meaningful semantic guidance beyond the raw schema, though the schema already covers most fields.

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

Purpose5/5

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

The description clearly states the tool's purpose: to find and rank Commonlands lenses for a sensor, FOV, working distance, mount, or 'lens for' request. It explicitly lists use cases (FOV, sensor part numbers) and distinguishes from siblings by directing away from naive rectilinear fallback and focal-length-only math when a Commonlands route exists.

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

Usage Guidelines5/5

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

It provides explicit 'Use this tool for...' guidance and 'Do not use...' exclusions, including concrete examples like AR0234, IMX290, IMX477 and workflows such as M12/C-mount matching. This clearly differentiates when this tool should be selected over alternatives like search_catalog or recommend_lenses_for_application.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation2/5

Several tools have significant overlap in purpose and trigger keywords. calculate_field_of_view, match_lens_to_sensor, and get_lens_distortion_profile all share nearly identical use-case descriptions for FOV/sensor requests, while search_catalog, search_lens_catalog, and lookup_catalog all provide search/lookup functionality with subtle differences that are easy to confuse.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., calculate_field_of_view, create_cart, get_product, read_shopify_products, submit_rfq). No mixing of styles or unpredictable naming conventions.

Tool Count3/5

With 21 tools, the surface is noticeably heavy for a lens finder and FOV calculator, especially when several tools serve status/config purposes (get_catalog_snapshot_status, get_shopify_readonly_config_status, get_shopify_ucp_readiness). It sits in the 'feels heavy' range from the rubric.

Completeness4/5

The tool set covers the full lifecycle: catalog search, product details, sensor specs, FOV calculation, lens matching, distortion profiles, Shopify carts, purchase handoff, and RFQ submission. Minor gaps exist (e.g., no delete_cart or bulk sensor listing), but core workflows are well-supported.