MCP 서버

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

com.commonlands/optics-mcp

이 MCP로 할 수 있는 일

Matches M12 and C-mount lenses to image sensors, calculates field of view, provides optical specifications, and supports Shopify product and cart workflows.

calculate_field_of_view
Calculate Commonlands field of view
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', 'anyOf': [{'required': ['lens_sku']}, {'required': ['lensSku']}, {'required': ['focal_length_mm']}, {'required': ['focalLengthMm']}], 'properties': {'sensor': {'anyOf': [{'enum': ['IMX477', 'IMX219', 'AR0234'], 'type': 'string', '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': {'partNumber': {'type': 'string'}, 'part_number': {'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.'}, 'lensSku': {'type': 'string', 'description': 'Commonlands lens SKU, for example CIL250. Camel-case alias for lens_sku.'}, '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).'}, 'lens_sku': {'type': 'string', 'description': 'Commonlands lens SKU, for example CIL250. Snake-case alias for lensSku.'}, 'pixelSizeUm': {'type': 'number', 'description': 'Custom sensor: pixel pitch in microns (e.g. 1.55).', 'exclusiveMinimum': 0}, 'pixelPitchUm': {'type': 'number', 'description': 'Alias for pixelSizeUm.', 'exclusiveMinimum': 0}, 'focalLengthMm': {'type': 'number', 'description': 'Fallback rectilinear reference only when no Commonlands lens SKU is available. Camel-case alias for focal_length_mm.', 'exclusiveMinimum': 0}, 'sensorWidthMm': {'type': 'number', 'description': 'Custom sensor: active-area width in mm (alternative to pixels x pitch).', 'exclusiveMinimum': 0}, 'sensorHeightMm': {'type': 'number', 'description': 'Custom sensor: active-area height in mm.', 'exclusiveMinimum': 0}, 'verticalPixels': {'type': 'integer', 'minimum': 1, 'description': 'Alias for heightPx.'}, 'focal_length_mm': {'type': 'number', 'description': 'Fallback rectilinear reference only when no Commonlands lens SKU is available. Snake-case alias for focalLengthMm.', 'exclusiveMinimum': 0}, 'horizontalPixels': {'type': 'integer', 'minimum': 1, 'description': 'Alias for widthPx.'}, 'sensorPartNumber': {'anyOf': [{'enum': ['IMX477', 'IMX219', 'AR0234'], 'type': 'string'}, {'type': 'string', 'pattern': '^[A-Za-z0-9-]{2,32}$'}], 'description': 'Sensor part number. Camel-case alias for sensor.'}, 'workingDistanceMm': {'type': 'number', 'description': 'Optional working distance in mm. Camel-case alias for working_distance_mm.', 'exclusiveMinimum': 0}, 'sensor_part_number': {'anyOf': [{'enum': ['IMX477', 'IMX219', 'AR0234'], 'type': 'string'}, {'type': 'string', 'pattern': '^[A-Za-z0-9-]{2,32}$'}], 'description': 'Sensor part number. Snake-case alias for sensorPartNumber.'}, 'working_distance_mm': {'type': 'number', 'description': 'Optional working distance in mm. Snake-case alias for workingDistanceMm.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['hfov_deg', 'vfov_deg', 'dfov_deg', 'method', 'distortion_model', 'image_circle_mm', 'sensor_diagonal_mm', 'coverage_ok', 'rectilinear_comparison'], 'properties': {'method': {'type': 'string'}, 'dfov_deg': {'type': ['number', 'null']}, 'hfov_deg': {'type': ['number', 'null']}, 'vfov_deg': {'type': ['number', 'null']}, 'coverage_ok': {'type': ['boolean', 'null']}, 'image_circle_mm': {'type': ['number', 'null']}, 'distortion_model': {'type': 'string'}, 'sensor_diagonal_mm': {'type': 'number'}, 'rectilinear_comparison': {'type': 'object', 'required': ['dfov_deg', 'delta_deg'], 'properties': {'dfov_deg': {'type': ['number', 'null']}, 'delta_deg': {'type': ['number', 'null']}}, 'additionalProperties': False}}, 'additionalProperties': True}
compare_lenses
Compare Commonlands lenses
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', 'required': ['lensSkus', 'sensorPartNumber'], 'properties': {'lensSkus': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'minItems': 1}, 'sensorPartNumber': {'type': 'string', 'description': 'Sensor part number, for example IMX477.'}, 'workingDistanceMm': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
create_cart
Create Shopify 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', 'required': ['cart'], 'properties': {'cart': {'type': 'object', 'required': ['line_items'], 'properties': {'context': {'type': 'object'}, 'signals': {'type': 'object'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['quantity', 'item'], 'properties': {'item': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}, 'quantity': {'type': 'integer', 'maximum': 999, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 25, 'minItems': 1}}, 'additionalProperties': False}, 'meta': {'type': 'object', 'description': 'Optional UCP metadata. ucp-agent.profile is filled from server config when omitted.'}}, 'additionalProperties': False}
get_cart
Get Shopify cart
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', 'required': ['id', 'cart_access_token'], 'properties': {'id': {'type': 'string', 'description': 'Shopify Cart gid.'}, 'meta': {'type': 'object'}, 'cart_access_token': {'type': 'string', 'description': 'Owner credential returned by create_cart for this cart id.'}}, 'additionalProperties': False}
get_catalog_snapshot_status
Get joined 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_lens_distortion_profile
Get Commonlands lens distortion profile
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', 'anyOf': [{'required': ['lens_sku']}, {'required': ['lensSku']}, {'required': ['sku']}], 'properties': {'sku': {'type': 'string', 'description': 'Legacy SKU alias.'}, 'lensSku': {'type': 'string', 'description': 'Commonlands lens SKU, for example CIL250. Camel-case alias for lens_sku.'}, 'lens_sku': {'type': 'string', 'description': 'Commonlands lens SKU, for example CIL250. Snake-case alias for lensSku.'}}, 'additionalProperties': False}
get_product
Get UCP catalog product
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', 'required': ['catalog'], 'properties': {'meta': {'type': 'object'}, 'catalog': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': True}}, 'additionalProperties': False}
get_product_page_details
Get product page details
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', 'required': ['sku'], 'properties': {'sku': {'type': 'string', 'description': 'Commonlands short part number, for example CIL250.'}}, 'additionalProperties': False}
get_purchase_route_options
Get purchase route options
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', 'required': ['sku'], 'properties': {'sku': {'type': 'string'}, 'quantity': {'type': 'integer', 'default': 1, 'maximum': 999, 'minimum': 1}, 'agentType': {'type': 'string'}, 'buyerIntent': {'type': 'string'}, 'sensorPartNumber': {'type': 'string'}}, 'additionalProperties': False}
get_sensor_specs
Get sensor specs
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', 'required': ['partNumber'], 'properties': {'partNumber': {'type': 'string', 'description': 'Sensor part number, for example IMX477.'}}, 'additionalProperties': False}
get_shopify_readonly_config_status
Get Shopify read-only 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}
get_shopify_ucp_readiness
Get Shopify Storefront/UCP readiness
Report connector-free Shopify Storefront MCP and UCP Catalog compatibility, launch blockers, and Commonlands engineering differentiators.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
lookup_catalog
Lookup UCP catalog products
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', 'required': ['catalog'], 'properties': {'meta': {'type': 'object'}, 'catalog': {'type': 'object', 'required': ['ids'], 'properties': {'ids': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'minItems': 1}}, 'additionalProperties': True}}, 'additionalProperties': False}
match_lens_to_sensor
Match Commonlands lenses to a sensor
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', 'anyOf': [{'required': ['sensor']}, {'required': ['sensorPartNumber']}, {'required': ['sensor_part_number']}, {'required': ['widthPx', 'heightPx', 'pixelSizeUm']}, {'required': ['horizontalPixels', 'verticalPixels', 'pixelSizeUm']}, {'required': ['widthPx', 'heightPx', 'pixelPitchUm']}, {'required': ['sensorWidthMm', 'sensorHeightMm']}], 'properties': {'mount': {'type': 'string', 'description': 'Optional mount filter, for example M12 or C-mount.'}, 'sensor': {'anyOf': [{'enum': ['IMX477', 'IMX219', 'AR0234'], 'type': 'string', '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.'}, '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).'}, 'maxResults': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1}, 'max_results': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1}, 'pixelSizeUm': {'type': 'number', 'description': 'Custom sensor: pixel pitch in microns (e.g. 1.55).', 'exclusiveMinimum': 0}, 'pixelPitchUm': {'type': 'number', 'description': 'Alias for pixelSizeUm.', 'exclusiveMinimum': 0}, 'sensorWidthMm': {'type': 'number', 'description': 'Custom sensor: active-area width in mm (alternative to pixels x pitch).', 'exclusiveMinimum': 0}, 'sensorHeightMm': {'type': 'number', 'description': 'Custom sensor: active-area height in mm.', 'exclusiveMinimum': 0}, 'verticalPixels': {'type': 'integer', 'minimum': 1, 'description': 'Alias for heightPx.'}, 'horizontalPixels': {'type': 'integer', 'minimum': 1, 'description': 'Alias for widthPx.'}, 'sensorPartNumber': {'anyOf': [{'enum': ['IMX477', 'IMX219', 'AR0234'], 'type': 'string'}, {'type': 'string', 'pattern': '^[A-Za-z0-9-]{2,32}$'}], 'description': 'Sensor part number. Alias for sensor.'}, 'workingDistanceMm': {'type': 'number', 'exclusiveMinimum': 0}, 'sensor_part_number': {'anyOf': [{'enum': ['IMX477', 'IMX219', 'AR0234'], 'type': 'string'}, {'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}, 'desiredHorizontalFovDeg': {'type': 'number', 'exclusiveMinimum': 0}, 'desired_horizontal_fov_deg': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
prepare_shopify_purchase_handoff
Prepare Shopify purchase handoff
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', 'required': ['sku'], 'properties': {'sku': {'type': 'string'}, 'quantity': {'type': 'integer', 'default': 1, 'maximum': 999, 'minimum': 1}, 'sensorPartNumber': {'type': 'string'}, 'selectedVariantId': {'type': 'string'}}, 'additionalProperties': False}
read_shopify_products
Read Shopify products
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.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1}, 'query': {'type': 'string', 'description': 'Optional safe Shopify product/variant search text.'}, 'handle': {'type': 'string', 'description': 'Optional Shopify product handle.'}, '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}
recommend_lenses_for_application
Recommend lenses for an application
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', 'required': ['sensorPartNumber'], 'properties': {'mount': {'type': 'string'}, 'maxResults': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1}, 'application': {'type': 'string'}, 'requireInStock': {'type': 'boolean', 'default': False}, 'sensorPartNumber': {'type': 'string', 'description': 'Sensor part number, for example IMX477.'}, 'workingDistanceMm': {'type': 'number', 'exclusiveMinimum': 0}, 'preferLowDistortion': {'type': 'boolean', 'default': False}, 'desiredHorizontalFovDeg': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
search_catalog
Search UCP 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': {'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1}, 'query': {'type': 'string'}}, 'additionalProperties': True}}, 'additionalProperties': False}
search_lens_catalog
Search Commonlands lens catalog
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': {'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1}, 'query': {'type': 'string', 'description': 'SKU, title, mount, lens type, application, sensor, or field-of-view search text.'}}, 'additionalProperties': False}
submit_rfq
Submit an RFQ or question to Commonlands
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', 'required': ['message', 'email'], 'properties': {'kind': {'enum': ['rfq', 'question'], 'type': 'string', 'description': 'Whether this is a quote request or a general question. Defaults to question.'}, 'name': {'type': 'string', 'description': 'Optional buyer name.'}, 'email': {'type': 'string', 'description': "The buyer's reply-to email so Commonlands can respond."}, 'sensor': {'type': 'string', 'description': 'Optional sensor part number for context.'}, 'company': {'type': 'string', 'description': 'Optional company name.'}, '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.'}, 'message': {'type': 'string', 'maxLength': 4000, 'description': "The buyer's question or RFQ details."}, 'quantity': {'type': 'integer', 'minimum': 1, 'description': 'Optional quantity for the quote.'}, 'application': {'type': 'string', 'description': 'Optional application note.'}, 'partNumbers': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 25}], 'description': 'Optional Commonlands SKUs of interest (string or array).'}}, 'additionalProperties': False}
update_cart
Update Shopify 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', 'required': ['id', 'cart', 'cart_access_token'], 'properties': {'id': {'type': 'string'}, 'cart': {'type': 'object', 'properties': {'context': {'type': 'object'}, 'signals': {'type': 'object'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['quantity', 'item'], 'properties': {'item': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}, 'quantity': {'type': 'integer', 'maximum': 999, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 25, 'minItems': 1, 'description': 'Variant items to add to the cart.'}, 'update_items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'quantity'], 'properties': {'id': {'type': 'string', 'description': 'Shopify CartLine gid.'}, 'quantity': {'type': 'integer', 'maximum': 999, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 25, 'minItems': 1, 'description': 'Existing Shopify cart line IDs with desired quantities; quantity 0 removes the line.'}, 'remove_line_ids': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 25, 'minItems': 1, 'description': 'Existing Shopify CartLine gids to remove explicitly.'}}, 'additionalProperties': False}, 'meta': {'type': 'object'}, 'cart_access_token': {'type': 'string', 'description': 'Owner credential returned by create_cart for this cart id.'}}, 'additionalProperties': False}
추가됨
submit_rfq
2026년 9월 17일 12:34 PM
추가됨
recommend_lenses_for_application
2026년 9월 17일 12:34 PM
추가됨
get_purchase_route_options
2026년 9월 17일 12:34 PM
추가됨
prepare_shopify_purchase_handoff
2026년 9월 17일 12:34 PM
추가됨
get_product
2026년 9월 17일 12:34 PM
추가됨
lookup_catalog
2026년 9월 17일 12:34 PM
추가됨
search_catalog
2026년 9월 17일 12:34 PM
추가됨
update_cart
2026년 9월 17일 12:34 PM
추가됨
get_cart
2026년 9월 17일 12:34 PM
추가됨
create_cart
2026년 9월 17일 12:34 PM
추가됨
read_shopify_products
2026년 9월 17일 12:34 PM
추가됨
get_shopify_readonly_config_status
2026년 9월 17일 12:34 PM
추가됨
get_shopify_ucp_readiness
2026년 9월 17일 12:34 PM
추가됨
get_catalog_snapshot_status
2026년 9월 17일 12:34 PM
추가됨
get_product_page_details
2026년 9월 17일 12:34 PM
추가됨
compare_lenses
2026년 9월 17일 12:34 PM
추가됨
get_sensor_specs
2026년 9월 17일 12:34 PM
추가됨
get_lens_distortion_profile
2026년 9월 17일 12:34 PM
추가됨
search_lens_catalog
2026년 9월 17일 12:34 PM
추가됨
match_lens_to_sensor
2026년 9월 17일 12:34 PM
추가됨
calculate_field_of_view
2026년 9월 17일 12:34 PM