# Commonlands Optics: M12 Lens and C-Mount Lens Finder + Field-of-View Calculator (com.commonlands/optics-mcp): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/com.commonlands%2Foptics-mcp/versions/latest)
- Connected to: https://mcp.commonlands.com/mcp
- Homepage: https://commonlands.com/pages/agentic-mcp-for-m12-lenses-and-optics
- Repository: https://github.com/CommonlandsAbbe/commonlands-mcp
- Scoring rules: v2
- Tools: 24
- Average: 55.2 / 100 (Cloudy)
- Near-identical pairs: 1

This page shows how Commonlands Optics: M12 Lens and C-Mount Lens Finder + Field-of-View Calculator (com.commonlands/optics-mcp)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Minor: The server's instructions are 2806 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `get_product`: 34 / 100
  - Major: Arguments without a description: meta, catalog, catalog.id.
  - Minor: String arguments with no constraint or example: catalog.id.
  - Minor: Says nothing about what it returns.
- `create_cart`: 42 / 100
  - Major: Arguments without a description: cart, cart.line_items, cart.line_items[].quantity, cart.line_items[].item, cart.line_items[].item.id, cart.context, cart.signals.
  - Minor: String arguments with no constraint or example: cart.line_items[].item.id.
  - Minor: Says nothing about what it returns.
- `get_cart`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: meta.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_checkout`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: meta.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_purchase_route_options`: 44 / 100
  - Major: Arguments without a description: sku, quantity, sensorPartNumber, buyerIntent, agentType.
  - Minor: String arguments with no constraint or example: sku, sensorPartNumber, buyerIntent, agentType.
  - Minor: The description mentions none of its 3 or more arguments.
- `update_cart`: 44 / 100
  - Major: Arguments without a description: meta, id, cart, cart.line_items, cart.line_items[].id, cart.line_items[].quantity, cart.line_items[].item, cart.line_items[].item.id, cart.context.
  - Minor: String arguments with no constraint or example: id, cart.line_items[].id, cart.line_items[].item.id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `prepare_shopify_purchase_handoff`: 45 / 100
  - Major: Arguments without a description: sku, quantity, sensorPartNumber, selectedVariantId.
  - Minor: String arguments with no constraint or example: sku, sensorPartNumber, selectedVariantId.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `create_checkout`: 46 / 100
  - Major: Arguments without a description: checkout, checkout.line_items, checkout.line_items[].quantity, checkout.line_items[].item, checkout.line_items[].item.id, checkout.context.
  - Minor: String arguments with no constraint or example: checkout.line_items[].item.id.
- `get_shopify_ucp_readiness`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `recommend_lenses_for_application`: 49 / 100
  - Major: Arguments without a description: application, desiredHorizontalFovDeg, workingDistanceMm, mount, preferLowDistortion, requireInStock, maxResults.
  - Minor: String arguments with no constraint or example: application, mount.
  - Minor: The meaning of the boolean argument preferLowDistortion is unclear.
  - Minor: The meaning of the boolean argument requireInStock is unclear.
  - Minor: Says nothing about what it returns.
- `cancel_cart`: 50 / 100
  - Major: Arguments without a description: meta, id.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `search_catalog`: 50 / 100
  - Major: Arguments without a description: catalog, catalog.query, catalog.limit.
  - Minor: String arguments with no constraint or example: catalog.query.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `compare_lenses`: 52 / 100
  - Major: Arguments without a description: lensSkus, workingDistanceMm.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `get_shopify_readonly_config_status`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `read_shopify_products`: 54 / 100
  - Minor: Arguments without a description: limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `lookup_catalog`: 56 / 100
  - Major: Arguments without a description: meta, catalog, catalog.ids.
- `get_catalog_snapshot_status`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_product_page_details`: 64 / 100
- `search_lens_catalog`: 69 / 100
  - Minor: Arguments without a description: limit.
  - Minor: No `required` list, so every argument is optional.
- `submit_rfq`: 70 / 100
  - Minor: String arguments with no constraint or example: name, company, application.
- `get_sensor_specs`: 72 / 100
- `match_lens_to_sensor`: 76 / 100
  - Minor: Arguments without a description: desired_horizontal_fov_deg, desiredHorizontalFovDeg, working_distance_mm, workingDistanceMm, max_results, maxResults.
  - Minor: No `required` list, so every argument is optional.
- `get_lens_distortion_profile`: 81 / 100
  - Minor: String arguments with no constraint or example: sku.
  - Minor: No `required` list, so every argument is optional.
- `calculate_field_of_view`: 84 / 100
  - Minor: No `required` list, so every argument is optional.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
