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

M12 lens and C-mount lens finder with image-sensor matching and field-of-view calculator.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
78%
이름 품질
92%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (3)

  • LOWTool 'get_shopify_readonly_config_status' name length outside 3-30 rangeget_shopify_readonly_config_status에서
  • LOWTool 'prepare_shopify_purchase_handoff' name length outside 3-30 rangeprepare_shopify_purchase_handoff에서
  • LOWTool 'recommend_lenses_for_application' name length outside 3-30 rangerecommend_lenses_for_application에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~6,569토큰 (도구 정의)
~1.9 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 5.13%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "optics-mcp": {
      "url": "https://mcp.commonlands.com/mcp"
    }
  }
}

원격 엔드포인트

https://mcp.commonlands.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (21)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢calculate_field_of_view(lens_sku, lensSku, focal_length_mm, focalLengthMm, sensor, ...)

Calculate Commonlands lens field of view for a lens/sensor pair and return HFOV, VFOV, DFOV, coverage, distortion status, and an explicit rectilinear comparison. 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. Accepts lens_sku/lensSku or focal_length_mm/focalLengthMm, plus sensor/sensorPartNumber/sensor_part_number and working_distance_mm/workingDistanceMm. 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-<w>x<h>. If only focal length is supplied, the response is marked as a rectilinear reference and does not claim Commonlands distortion-corrected lens truth.

입력 스키마

{
  "type": "object",
  "properties": {
    "lens_sku": {
      "type": "string",
      "description": "Commonlands lens SKU, for example CIL250. Snake-case alias for lensSku."
    },
    "lensSku": {
      "type": "string",
      "description": "Commonlands lens SKU, for example CIL250. Camel-case alias for lens_sku."
    },
    "focal_length_mm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Fallback rectilinear reference only when no Commonlands lens SKU is available. Snake-case alias for focalLengthMm."
    },
    "focalLengthMm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Fallback rectilinear reference only when no Commonlands lens SKU is available. Camel-case alias for focal_length_mm."
    },
    "sensor": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "IMX477",
            "IMX219",
            "AR0234"
          ],
          "description": "Known catalog sensor part number."
        },
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9-]{2,32}$",
          "description": "Safe sensor identifier accepted for live catalog lookup."
        },
        {
          "type": "object",
          "properties": {
            "part_number": {
              "type": "string"
            },
            "partNumber": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      ],
      "description": "Sensor part number or safe sensor object. Supports AR0234, IMX290/IMX477 when present in the live catalog, and fixture sensors listed in the enum."
    },
    "sensorPartNumber": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "IMX477",
            "IMX219",
            "AR0234"
          ]
        },
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9-]{2,32}$"
        }
      ],
      "description": "Sensor part number. Camel-case alias for sensor."
    },
    "sensor_part_number": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "IMX477",
            "IMX219",
            "AR0234"
          ]
        },
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9-]{2,32}$"
        }
      ],
      "description": "Sensor part number. Snake-case alias for sensorPartNumber."
    },
    "working_distance_mm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Optional working distance in mm. Snake-case alias for workingDistanceMm."
    },
    "workingDistanceMm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Optional working distance in mm. Camel-case alias for working_distance_mm."
    },
    "widthPx": {
      "type": "integer",
      "minimum": 1,
      "description": "Custom sensor: horizontal pixel count (e.g. 4056). Use with heightPx and pixelSizeUm."
    },
    "heightPx": {
      "type": "integer",
      "minimum": 1,
      "description": "Custom sensor: vertical pixel count (e.g. 3040)."
    },
    "horizontalPixels": {
      "type": "integer",
      "minimum": 1,
      "description": "Alias for widthPx."
    },
    "verticalPixels": {
      "type": "integer",
      "minimum": 1,
      "description": "Alias for heightPx."
    },
    "pixelSizeUm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Custom sensor: pixel pitch in microns (e.g. 1.55)."
    },
    "pixelPitchUm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Alias for pixelSizeUm."
    },
    "sensorWidthMm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Custom sensor: active-area width in mm (alternative to pixels x pitch)."
    },
    "sensorHeightMm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Custom sensor: active-area height in mm."
    }
  },
  "anyOf": [
    {
      "required": [
        "lens_sku"
      ]
    },
    {
      "required": [
        "lensSku"
      ]
    },
    {
      "required": [
        "focal_length_mm"
      ]
    },
    {
      "required": [
        "focalLengthMm"
      ]
    }
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "hfov_deg": {
      "type": [
        "number",
        "null"
      ]
    },
    "vfov_deg": {
      "type": [
        "number",
        "null"
      ]
    },
    "dfov_deg": {
      "type": [
        "number",
        "null"
      ]
    },
    "method": {
      "type": "string"
    },
    "distortion_model": {
      "type": "string"
    },
    "image_circle_mm": {
      "type": [
        "number",
        "null"
      ]
    },
    "sensor_diagonal_mm": {
      "type": "number"
    },
    "coverage_ok": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "rectilinear_comparison": {
      "type": "object",
      "required": [
        "dfov_deg",
        "delta_deg"
      ],
      "properties": {
        "dfov_deg": {
          "type": [
            "number",
            "null"
          ]
        },
        "delta_deg": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "hfov_deg",
    "vfov_deg",
    "dfov_deg",
    "method",
    "distortion_model",
    "image_circle_mm",
    "sensor_diagonal_mm",
    "coverage_ok",
    "rectilinear_comparison"
  ],
  "additionalProperties": true
}
🟢match_lens_to_sensor(widthPx, heightPx, horizontalPixels, verticalPixels, pixelSizeUm, ...)

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-<w>x<h>. Use read_shopify_products afterward for live stock, price, availability, Shopify variantId, product URL, and metafields.

입력 스키마

{
  "type": "object",
  "properties": {
    "widthPx": {
      "type": "integer",
      "minimum": 1,
      "description": "Custom sensor: horizontal pixel count (e.g. 4056). Use with heightPx and pixelSizeUm."
    },
    "heightPx": {
      "type": "integer",
      "minimum": 1,
      "description": "Custom sensor: vertical pixel count (e.g. 3040)."
    },
    "horizontalPixels": {
      "type": "integer",
      "minimum": 1,
      "description": "Alias for widthPx."
    },
    "verticalPixels": {
      "type": "integer",
      "minimum": 1,
      "description": "Alias for heightPx."
    },
    "pixelSizeUm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Custom sensor: pixel pitch in microns (e.g. 1.55)."
    },
    "pixelPitchUm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Alias for pixelSizeUm."
    },
    "sensorWidthMm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Custom sensor: active-area width in mm (alternative to pixels x pitch)."
    },
    "sensorHeightMm": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Custom sensor: active-area height in mm."
    },
    "sensor": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "IMX477",
            "IMX219",
            "AR0234"
          ],
          "description": "Known catalog sensor part number."
        },
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9-]{2,32}$",
          "description": "Safe sensor identifier accepted for live catalog lookup."
        }
      ],
      "description": "Sensor part number, for example AR0234, IMX290, or IMX477. Any sensor in the live catalog is accepted; the enum lists only the fixture fallback set."
    },
    "sensorPartNumber": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "IMX477",
            "IMX219",
            "AR0234"
          ]
        },
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9-]{2,32}$"
        }
      ],
      "description": "Sensor part number. Alias for sensor."
    },
    "sensor_part_number": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "IMX477",
            "IMX219",
            "AR0234"
          ]
        },
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9-]{2,32}$"
        }
      ],
      "description": "Sensor part number. Snake-case alias for sensorPartNumber."
    },
    "desired_horizontal_fov_deg": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "desiredHorizontalFovDeg": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "working_distance_mm": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "workingDistanceMm": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "mount": {
      "type": "string",
      "description": "Optional mount filter, for example M12 or C-mount."
    },
    "max_results": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 5
    },
    "maxResults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 5
    }
  },
  "anyOf": [
    {
      "required": [
        "sensor"
      ]
    },
    {
      "required": [
        "sensorPartNumber"
      ]
    },
    {
      "required": [
        "sensor_part_number"
      ]
    },
    {
      "required": [
        "widthPx",
        "heightPx",
        "pixelSizeUm"
      ]
    },
    {
      "required": [
        "horizontalPixels",
        "verticalPixels",
        "pixelSizeUm"
      ]
    },
    {
      "required": [
        "widthPx",
        "heightPx",
        "pixelPitchUm"
      ]
    },
    {
      "required": [
        "sensorWidthMm",
        "sensorHeightMm"
      ]
    }
  ],
  "additionalProperties": false
}
🟢search_lens_catalog(query, limit)

Search the Commonlands lens catalog by SKU, mount, lens type, M12, C-mount, or application text. For sensor part numbers such as AR0234, IMX290, and IMX477, or any "lens for <sensor>" request, use match_lens_to_sensor instead — sensor names are not searchable text here. 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. This discovers candidate lenses from Commonlands catalog/live backend data; it does not replace calculate_field_of_view for sensor-specific HFOV/VFOV/DFOV and does not replace read_shopify_products for live stock/price/product truth.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "SKU, title, mount, lens type, application, sensor, or field-of-view search text."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10
    }
  },
  "additionalProperties": false
}
🟢get_lens_distortion_profile(lens_sku, lensSku, sku)

Return the Commonlands distortion model/status for one lens SKU, including whether the data is source-display-only or backend-calculated. 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 distortion, rectilinear-vs-wide-angle, MTF/CRA/BFL/optical-profile questions when upstream fields are present. Do not invent polynomial coefficients or claim measured distortion correction when the backend only returns display distortion.

입력 스키마

{
  "type": "object",
  "properties": {
    "lens_sku": {
      "type": "string",
      "description": "Commonlands lens SKU, for example CIL250. Snake-case alias for lensSku."
    },
    "lensSku": {
      "type": "string",
      "description": "Commonlands lens SKU, for example CIL250. Camel-case alias for lens_sku."
    },
    "sku": {
      "type": "string",
      "description": "Legacy SKU alias."
    }
  },
  "anyOf": [
    {
      "required": [
        "lens_sku"
      ]
    },
    {
      "required": [
        "lensSku"
      ]
    },
    {
      "required": [
        "sku"
      ]
    }
  ],
  "additionalProperties": false
}
🟢get_sensor_specs(partNumber)

Return sensor dimensions, pixel pitch, and resolution for lens field of view, M12 lens, and C-mount lens matching inputs. In production this uses the read-only live sensor table when configured, with fixture fallback when unavailable. Use these specs as inputs to calculate_field_of_view or match_lens_to_sensor, not as a reason to hand-calculate FoV. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor.

입력 스키마

{
  "type": "object",
  "properties": {
    "partNumber": {
      "type": "string",
      "description": "Sensor part number, for example IMX477."
    }
  },
  "required": [
    "partNumber"
  ],
  "additionalProperties": false
}
🟢compare_lenses(lensSkus, sensorPartNumber, workingDistanceMm)

Compare selected Commonlands M12 lens and C-mount lens SKUs on the same sensor with the same deterministic scoring model. Use as explanatory context, then call calculate_field_of_view for final sensor-specific FoV values when precision matters. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor. Not live product truth; verify purchasable facts with read_shopify_products.

입력 스키마

{
  "type": "object",
  "properties": {
    "lensSkus": {
      "type": "array",
      "minItems": 1,
      "maxItems": 10,
      "items": {
        "type": "string"
      }
    },
    "sensorPartNumber": {
      "type": "string",
      "description": "Sensor part number, for example IMX477."
    },
    "workingDistanceMm": {
      "type": "number",
      "exclusiveMinimum": 0
    }
  },
  "required": [
    "lensSkus",
    "sensorPartNumber"
  ],
  "additionalProperties": false
}
🟢get_product_page_details(sku)

Return fixture-backed product-page handoff details for one lens, including DynamoDB-sourced optical specs and gated datasheet policy. Product-page/catalog optical fields are not a substitute for sensor-specific FoV; call calculate_field_of_view for the lens/sensor pair. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor. Use read_shopify_products for live product URL, price, availability, variant IDs, and metafields.

입력 스키마

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string",
      "description": "Commonlands short part number, for example CIL250."
    }
  },
  "required": [
    "sku"
  ],
  "additionalProperties": false
}
🟢get_catalog_snapshot_status

Return fixture-backed joined catalog counts, validation status, source provenance, live connector readiness, and non-authoritative product-truth warning.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢get_shopify_ucp_readiness

Report connector-free Shopify Storefront MCP and UCP Catalog compatibility, launch blockers, and Commonlands engineering differentiators.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢get_shopify_readonly_config_status

Report sanitized Cloudflare Shopify binding presence, approved read scopes, and read-only safety flags without exposing secrets or calling Shopify.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢read_shopify_products(sku, handle, query, limit, includeMetafields)

Use this for live purchasable product truth: product and variant IDs, SKUs, prices, coarse availability, product URLs, and public product-page metafields. Public data only: active products, no exact inventory counts, and metafields limited to the custom.* display fields shown on commonlands.com product pages. Read-only; does not create carts, checkouts, orders, customers, inventory mutations, or Shopify writes. Fixture catalog tools are scaffold data only.

입력 스키마

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string",
      "description": "Optional variant SKU, for example CIL250."
    },
    "handle": {
      "type": "string",
      "description": "Optional Shopify product handle."
    },
    "query": {
      "type": "string",
      "description": "Optional safe Shopify product/variant search text."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10
    },
    "includeMetafields": {
      "type": "boolean",
      "default": false,
      "description": "When true, include the allowlisted public product-page metafields (custom.* display specs). Non-public namespaces and keys are never returned."
    }
  },
  "additionalProperties": false
}
🟡create_cart(meta, cart)

Create a Shopify-owned cart for selected variant line items through the configured Shopify Cart/Storefront MCP endpoint. Commonlands MCP is a stateless proxy: cart state is stored and mutated by Shopify, not in the Worker. The response includes a cart_access_token that binds the cart to this session; retain it, because get_cart and update_cart refuse to act on the cart without it.

입력 스키마

{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "description": "Optional UCP metadata. ucp-agent.profile is filled from server config when omitted."
    },
    "cart": {
      "type": "object",
      "properties": {
        "line_items": {
          "type": "array",
          "minItems": 1,
          "maxItems": 25,
          "items": {
            "type": "object",
            "properties": {
              "quantity": {
                "type": "integer",
                "minimum": 1,
                "maximum": 999
              },
              "item": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "quantity",
              "item"
            ],
            "additionalProperties": false
          }
        },
        "context": {
          "type": "object"
        },
        "signals": {
          "type": "object"
        }
      },
      "required": [
        "line_items"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "cart"
  ],
  "additionalProperties": false
}
🟢get_cart(meta, id, cart_access_token)

Retrieve a Shopify-owned cart by cart id. Owner-bound: requires the cart_access_token returned by create_cart, so only the session that created a cart can read it. Cart persistence comes from Shopify; agents must retain the cart id, cart_access_token, and continue_url across sessions.

입력 스키마

{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object"
    },
    "id": {
      "type": "string",
      "description": "Shopify Cart gid."
    },
    "cart_access_token": {
      "type": "string",
      "description": "Owner credential returned by create_cart for this cart id."
    }
  },
  "required": [
    "id",
    "cart_access_token"
  ],
  "additionalProperties": false
}
🔴update_cart(meta, id, cart_access_token, cart)

Update a Shopify-owned cart through the configured Cart/Storefront MCP endpoint. Owner-bound: requires the cart_access_token returned by create_cart, so only the session that created a cart can change it. With UCP endpoints, treat updates as full-state PUT semantics; with the confirmed standard Storefront MCP endpoint, Commonlands maps line_items to Shopify add_items, update_items to quantity changes, and remove_line_ids to explicit removals. Quantity 0 in update_items removes a line.

입력 스키마

{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object"
    },
    "id": {
      "type": "string"
    },
    "cart_access_token": {
      "type": "string",
      "description": "Owner credential returned by create_cart for this cart id."
    },
    "cart": {
      "type": "object",
      "properties": {
        "line_items": {
          "type": "array",
          "minItems": 1,
          "maxItems": 25,
          "description": "Variant items to add to the cart.",
          "items": {
            "type": "object",
            "properties": {
              "quantity": {
                "type": "integer",
                "minimum": 1,
                "maximum": 999
              },
              "item": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "quantity",
              "item"
            ],
            "additionalProperties": false
          }
        },
        "update_items": {
          "type": "array",
          "minItems": 1,
          "maxItems": 25,
          "description": "Existing Shopify cart line IDs with desired quantities; quantity 0 removes the line.",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Shopify CartLine gid."
              },
              "quantity": {
                "type": "integer",
                "minimum": 0,
                "maximum": 999
              }
            },
            "required": [
              "id",
              "quantity"
            ],
            "additionalProperties": false
          }
        },
        "remove_line_ids": {
          "type": "array",
          "minItems": 1,
          "maxItems": 25,
          "description": "Existing Shopify CartLine gids to remove explicitly.",
          "items": {
            "type": "string"
          }
        },
        "context": {
          "type": "object"
        },
        "signals": {
          "type": "object"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "id",
    "cart",
    "cart_access_token"
  ],
  "additionalProperties": false
}
🟢search_catalog(meta, catalog)

Fixture-backed UCP Catalog search alias for Shopify-native product discovery; no live Shopify calls or cart behavior. Use this only for broad discovery; when a sensor or target FoV is involved, call match_lens_to_sensor or calculate_field_of_view instead of estimating from catalog fields. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor.

입력 스키마

{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "description": "Optional UCP agent metadata."
    },
    "catalog": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 25,
          "default": 10
        }
      },
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
🟢lookup_catalog(meta, catalog)

Fixture-backed UCP Catalog lookup alias for product, variant, SKU, handle, or URL identifiers; returns not-found messages instead of writes. Lookup records are not enough for sensor-specific FoV; call calculate_field_of_view for known lens/sensor pairs. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor.

입력 스키마

{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object"
    },
    "catalog": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "minItems": 1,
          "maxItems": 10,
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "ids"
      ],
      "additionalProperties": true
    }
  },
  "required": [
    "catalog"
  ],
  "additionalProperties": false
}
🟢get_product(meta, catalog)

Fixture-backed UCP Catalog product detail alias with Commonlands optical metadata and Shopify-native handoff fields. Product optical fields are not a substitute for sensor-specific FoV; call calculate_field_of_view for the lens/sensor pair. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor.

입력 스키마

{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object"
    },
    "catalog": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "additionalProperties": true
    }
  },
  "required": [
    "catalog"
  ],
  "additionalProperties": false
}
🟢prepare_shopify_purchase_handoff(sku, quantity, sensorPartNumber, selectedVariantId)

Build a read-only Shopify-native purchase handoff seam for a selected lens without creating carts, checkout, orders, inventory mutations, or writes. Preserve any computed FoV provenance from calculate_field_of_view/match_lens_to_sensor when carrying optical context into purchase handoff. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor.

입력 스키마

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 999,
      "default": 1
    },
    "sensorPartNumber": {
      "type": "string"
    },
    "selectedVariantId": {
      "type": "string"
    }
  },
  "required": [
    "sku"
  ],
  "additionalProperties": false
}
🟢get_purchase_route_options(sku, quantity, sensorPartNumber, buyerIntent, agentType)

Return safe dual-channel purchase route options for AI agents and robotics engineers across Commonlands MCP and Shopify-native channels without mutating commerce state. This explains commerce routes only; call calculate_field_of_view/match_lens_to_sensor for sensor-specific FoV before recommending a lens. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor.

입력 스키마

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 999,
      "default": 1
    },
    "sensorPartNumber": {
      "type": "string"
    },
    "buyerIntent": {
      "type": "string"
    },
    "agentType": {
      "type": "string"
    }
  },
  "required": [
    "sku"
  ],
  "additionalProperties": false
}
🟢recommend_lenses_for_application(sensorPartNumber, application, desiredHorizontalFovDeg, workingDistanceMm, mount, ...)

Rank Commonlands M12 lenses and C-mount lenses for an application note such as embedded robotics, machine-vision inspection, or a required lens field of view. Use as an application shortlist helper, then call match_lens_to_sensor or calculate_field_of_view for final per-sensor HFOV/VFOV/DFOV. FoV rule: never estimate sensor-specific FoV from catalog fields; use calculate_field_of_view or match_lens_to_sensor.

입력 스키마

{
  "type": "object",
  "properties": {
    "sensorPartNumber": {
      "type": "string",
      "description": "Sensor part number, for example IMX477."
    },
    "application": {
      "type": "string"
    },
    "desiredHorizontalFovDeg": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "workingDistanceMm": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "mount": {
      "type": "string"
    },
    "preferLowDistortion": {
      "type": "boolean",
      "default": false
    },
    "requireInStock": {
      "type": "boolean",
      "default": false
    },
    "maxResults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 5
    }
  },
  "required": [
    "sensorPartNumber"
  ],
  "additionalProperties": false
}
🟡submit_rfq(message, email, name, company, kind, ...)

Forward a buyer request-for-quote or engineering question to the Commonlands engineering team. Two-step, buyer-confirmed: the first call returns a preview and sends nothing; show the buyer the preview (including their reply-to email) and, only after they explicitly approve, call again with confirm: true to send. The recipient is fixed to the Commonlands inbox (the agent cannot choose it); this only sends an inquiry and never creates an order, charges a card, or writes Shopify/customer data. Include part numbers, sensor, quantity, and application when known so the team can reply with a quote. Commonlands replies by email.

입력 스키마

{
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The buyer's question or RFQ details.",
      "maxLength": 4000
    },
    "email": {
      "type": "string",
      "description": "The buyer's reply-to email so Commonlands can respond."
    },
    "name": {
      "type": "string",
      "description": "Optional buyer name."
    },
    "company": {
      "type": "string",
      "description": "Optional company name."
    },
    "kind": {
      "type": "string",
      "enum": [
        "rfq",
        "question"
      ],
      "description": "Whether this is a quote request or a general question. Defaults to question."
    },
    "partNumbers": {
      "description": "Optional Commonlands SKUs of interest (string or array).",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 25
        }
      ]
    },
    "sensor": {
      "type": "string",
      "description": "Optional sensor part number for context."
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "description": "Optional quantity for the quote."
    },
    "application": {
      "type": "string",
      "description": "Optional application note."
    },
    "confirm": {
      "type": "boolean",
      "default": false,
      "description": "Explicit buyer approval. Omit or false to get a no-send preview; set true only after the buyer has seen the preview and approved sending."
    }
  },
  "required": [
    "message",
    "email"
  ],
  "additionalProperties": false
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 21개
검증됨버전이 기록되지 않음도구 21개