studio
Design & price modular raised garden beds and walls: exact bill of materials, EUR price + checkout.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"studio": {
"url": "https://studio.gridgarden.eu/mcp"
}
}
}원격 엔드포인트
https://studio.gridgarden.eu/mcpstreamable-http할 수 있는 일
도구 목록
도구 (5)
🟢studio_pricing_quote(shape, layers, length, width, length1, ...)
Compute the exact bill of materials (panels + connector pins) and total EUR price for a GridGarden modular Brick Premium raised bed (rectangle / L / U) or freestanding wall, from dimensions in millimetres. Quantities come from the same engine as the Studio configurator; prices are read live from Shopify for the delivery market you pass in `country`.
입력 스키마
{
"type": "object",
"properties": {
"shape": {
"type": "string",
"enum": [
"rectangle",
"lshape",
"ushape",
"wall"
],
"description": "Design type and the dimension fields it needs (all in mm, auto-snapped to the 60mm build grid): rectangle → length + width; lshape → length1 + width1 + length2 + width2; ushape → topLength + topWidth + arm1Length + arm1Width + arm2Length + arm2Width; wall → wallLength. Layers: raised beds 2–13, walls 1–25. Call studio_templates_list for ready example dimensions."
},
"layers": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Number of brick layers. Raised beds 2-13, walls 1-25 (1 = a single 60mm top-cap course). Each layer ≈120mm tall (top layer +60mm)."
},
"length": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Rectangle: outer length in mm."
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Rectangle: outer width in mm."
},
"length1": {
"type": "number",
"exclusiveMinimum": 0,
"description": "L-shape: first leg length in mm."
},
"width1": {
"type": "number",
"exclusiveMinimum": 0,
"description": "L-shape: first leg width in mm."
},
"length2": {
"type": "number",
"exclusiveMinimum": 0,
"description": "L-shape: second leg length in mm."
},
"width2": {
"type": "number",
"exclusiveMinimum": 0,
"description": "L-shape: second leg width in mm."
},
"topLength": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: back (top) length in mm."
},
"topWidth": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: back (top) width in mm."
},
"arm1Length": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: arm 1 length in mm."
},
"arm1Width": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: arm 1 width in mm."
},
"arm2Length": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: arm 2 length in mm."
},
"arm2Width": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: arm 2 width in mm."
},
"wallLength": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Wall: single straight segment length in mm."
},
"country": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "Delivery market as an ISO-3166-1 alpha-2 code (e.g. \"DE\", \"AT\", \"SK\"). Prices differ by market: SK and CZ are base, every other EU market adds €1 per structural piece. Ask which country the order ships to; omit only if unknown — that returns base (SK/CZ) prices."
}
},
"required": [
"shape",
"layers"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"shape": {
"type": "string",
"enum": [
"rectangle",
"lshape",
"ushape",
"wall"
]
},
"layers": {
"type": "number"
},
"bom": {
"type": "object",
"properties": {
"panels_middle": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"panels_top": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"pins": {
"type": "number"
}
},
"required": [
"panels_middle",
"panels_top",
"pins"
],
"additionalProperties": false
},
"shopify_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"sku": {
"type": "string"
},
"quantity": {
"type": "number"
},
"name": {
"type": "string"
},
"unit": {
"type": "string"
},
"is_optional": {
"type": "boolean"
},
"price": {
"type": "number"
}
},
"required": [
"sku",
"quantity",
"name"
],
"additionalProperties": false
}
},
"total_eur": {
"type": "number"
},
"currency": {
"type": "string",
"const": "EUR"
},
"country": {
"type": [
"string",
"null"
]
},
"price_basis": {
"type": "string",
"const": "shopify_live"
},
"summary": {
"type": "string"
},
"editor_url": {
"type": "string"
},
"snapped": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"requested": {
"type": "number"
},
"used": {
"type": "number"
}
},
"required": [
"field",
"requested",
"used"
],
"additionalProperties": false
}
}
},
"required": [
"shape",
"layers",
"bom",
"shopify_items",
"total_eur",
"currency",
"country",
"price_basis",
"summary",
"editor_url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢studio_templates_list
List the design shapes GridGarden Studio supports, with the dimension parameters each one needs.
입력 스키마
{
"type": "object",
"properties": {}
}출력 스키마
{
"type": "object",
"properties": {
"templates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"params": {
"type": "array",
"items": {
"type": "string"
}
},
"example": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"number"
]
}
}
},
"required": [
"id",
"label",
"params",
"example"
],
"additionalProperties": false
}
}
},
"required": [
"templates"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢studio_catalog_bricks
List the GridGarden Brick Premium modular components — middle and TOP planks in XS–XL sizes (plus a 1200mm XXL TOP) and the connector pin — with live EUR unit prices and availability from Shopify. Brick Premium only; no other materials are sold. Read-only.
입력 스키마
{
"type": "object",
"properties": {}
}출력 스키마
{
"type": "object",
"properties": {
"catalog": {
"type": "array",
"items": {
"type": "object",
"properties": {
"variant_id": {
"type": "string"
},
"sku": {
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
},
"role": {
"type": "string"
},
"price_eur": {
"type": "number"
},
"currency": {
"type": "string"
},
"available": {
"type": "boolean"
}
},
"required": [
"variant_id",
"sku",
"title",
"role",
"price_eur",
"currency",
"available"
],
"additionalProperties": false
}
},
"currency": {
"type": "string",
"const": "EUR"
},
"summary": {
"type": "string"
}
},
"required": [
"catalog",
"currency",
"summary"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴studio_bom_to_cart(shape, layers, length, width, length1, ...)
Build a ready-to-pay Shopify cart for a GridGarden Brick Premium raised bed (rectangle / L / U) or wall from millimetre dimensions, and return the checkout URL. Computes the exact bill of materials, maps it to the live Brick Premium product variants, and creates an ANONYMOUS cart — no account, login, or payment occurs; the user reviews and pays on gridgarden.eu. Returns checkout_url, total EUR, and the line items.
입력 스키마
{
"type": "object",
"properties": {
"shape": {
"type": "string",
"enum": [
"rectangle",
"lshape",
"ushape",
"wall"
],
"description": "Design type and the dimension fields it needs (all in mm, auto-snapped to the 60mm build grid): rectangle → length + width; lshape → length1 + width1 + length2 + width2; ushape → topLength + topWidth + arm1Length + arm1Width + arm2Length + arm2Width; wall → wallLength. Layers: raised beds 2–13, walls 1–25. Call studio_templates_list for ready example dimensions."
},
"layers": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Number of brick layers. Raised beds 2-13, walls 1-25 (1 = a single 60mm top-cap course). Each layer ≈120mm tall (top layer +60mm)."
},
"length": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Rectangle: outer length in mm."
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Rectangle: outer width in mm."
},
"length1": {
"type": "number",
"exclusiveMinimum": 0,
"description": "L-shape: first leg length in mm."
},
"width1": {
"type": "number",
"exclusiveMinimum": 0,
"description": "L-shape: first leg width in mm."
},
"length2": {
"type": "number",
"exclusiveMinimum": 0,
"description": "L-shape: second leg length in mm."
},
"width2": {
"type": "number",
"exclusiveMinimum": 0,
"description": "L-shape: second leg width in mm."
},
"topLength": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: back (top) length in mm."
},
"topWidth": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: back (top) width in mm."
},
"arm1Length": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: arm 1 length in mm."
},
"arm1Width": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: arm 1 width in mm."
},
"arm2Length": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: arm 2 length in mm."
},
"arm2Width": {
"type": "number",
"exclusiveMinimum": 0,
"description": "U-shape: arm 2 width in mm."
},
"wallLength": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Wall: single straight segment length in mm."
},
"country": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "Delivery market as an ISO-3166-1 alpha-2 code (e.g. \"DE\", \"AT\", \"SK\"). Prices differ by market: SK and CZ are base, every other EU market adds €1 per structural piece. Ask which country the order ships to; omit only if unknown — that returns base (SK/CZ) prices."
},
"utm_source": {
"type": "string",
"enum": [
"chatgpt",
"claude",
"cursor",
"mcp"
],
"description": "Attribution source recorded on the Shopify cart (UTM). Defaults to \"mcp\"."
}
},
"required": [
"shape",
"layers"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"checkout_url": {
"type": "string"
},
"cart_id": {
"type": "string"
},
"total_eur": {
"type": "number"
},
"total_quantity": {
"type": "number"
},
"currency": {
"type": "string",
"const": "EUR"
},
"price_basis": {
"type": "string",
"const": "shopify_cart"
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"variant_id": {
"type": "string"
},
"quantity": {
"type": "number"
}
},
"required": [
"variant_id",
"quantity"
],
"additionalProperties": false
}
},
"summary": {
"type": "string"
},
"editor_url": {
"type": "string"
},
"snapped": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"requested": {
"type": "number"
},
"used": {
"type": "number"
}
},
"required": [
"field",
"requested",
"used"
],
"additionalProperties": false
}
}
},
"required": [
"checkout_url",
"cart_id",
"total_eur",
"total_quantity",
"currency",
"price_basis",
"line_items",
"summary",
"editor_url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢studio_design_rules(step)
List the design-knowledge-base rules relevant to one step of designing a garden (brief / koncept / dispozicia / vysadba / materialy) — up to 20 rules, each with its predicate, numeric thresholds, strength (must/should/may), confidence tag, and cited sources. No garden scene is read or required; this is reference knowledge, not a check against a specific design. Deterministic: the same step always returns the same rule set.
입력 스키마
{
"type": "object",
"properties": {
"step": {
"type": "string",
"enum": [
"brief",
"koncept",
"dispozicia",
"vysadba",
"materialy"
],
"description": "Design process step to fetch rules for: brief, koncept, dispozicia, vysadba, materialy. Call this once per step you are working on — do not assume one step's rules cover another."
}
},
"required": [
"step"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"step": {
"type": "string",
"enum": [
"brief",
"koncept",
"dispozicia",
"vysadba",
"materialy"
]
},
"rules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"area": {
"type": "string"
},
"strength": {
"type": "string",
"enum": [
"must",
"should",
"may"
]
},
"tag": {
"type": "string",
"enum": [
"measured",
"cited",
"expert",
"opinion"
]
},
"when": {
"type": "string"
},
"numbers": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"textKey": {
"type": "string"
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"ref": {
"type": "string"
},
"checkedAt": {
"type": "string"
}
},
"required": [
"name",
"url",
"checkedAt"
],
"additionalProperties": false
}
},
"legalNote": {
"type": "string",
"enum": [
"not-law",
"law-cz-only",
"municipal-varies"
]
},
"module": {
"type": "string"
}
},
"required": [
"id",
"area",
"strength",
"tag",
"when",
"numbers",
"textKey",
"sources",
"module"
],
"additionalProperties": false
}
},
"total": {
"type": "number"
},
"truncated": {
"type": "number"
},
"summary": {
"type": "string"
}
},
"required": [
"step",
"rules",
"total",
"truncated",
"summary"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}커뮤니티
증거