{
  "openapi": "3.1.0",
  "info": {
    "title": "Modern Moe",
    "version": "1.3.0"
  },
  "servers": [
    {
      "url": "https://modern-moe-mcp.netlify.app"
    }
  ],
  "paths": {
    "/actions/show_catalog_photos": {
      "post": {
        "operationId": "show_catalog_photos",
        "summary": "Show actual photos from Modern in the chat. Use this when showing or comparing garments, including after an outfit suggestion. Use existing product IDs from the conversation, or search_catalog to find them first. The gallery displays the actual catalog images inline. Answer briefly in plain text after it opens.",
        "x-openai-isConsequential": false,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "ids": {
                    "minItems": 1,
                    "maxItems": 4,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                    }
                  }
                },
                "required": [
                  "ids"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current public catalog result",
            "content": {
              "application/json": {
                "schema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "type": "object",
                  "properties": {
                    "products": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "image": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "photoUrl": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                          },
                          "name": {
                            "type": "string"
                          },
                          "brand": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "category": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "price": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "currency": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "sizes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "availability": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "priceCheckedAt": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          }
                        },
                        "required": [
                          "image",
                          "photoUrl",
                          "id",
                          "name",
                          "brand",
                          "category",
                          "description",
                          "price",
                          "currency",
                          "sizes",
                          "availability",
                          "priceCheckedAt",
                          "url"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "photoMarkdown": {
                      "type": "string"
                    },
                    "boardUrl": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "products",
                    "photoMarkdown",
                    "boardUrl"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/actions/create_lookboard": {
      "post": {
        "operationId": "create_lookboard",
        "summary": "Create a visual outfit board in this chat from a mix of Modern catalog IDs and garments the user explicitly shared by description, uploaded photo or wardrobe export. Use search_catalog first for missing pieces. Ask about occasion or missing garments only when needed. For a Modern wardrobe selection, offer https://modern-moe-mcp.netlify.app/wardrobe. Never invent owned clothes or claim account access. Present the result in this conversation as an interactive outfit board when the host supports it. Include the returned boardUrl as the link to reopen the exact board. For photos use only the exact product.image URL from this result. If the chat cannot display that URL, omit the image rather than using search or an illustration. This board uses catalog photos and text labels for owned garments.",
        "x-openai-isConsequential": false,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "pieces": {
                    "minItems": 1,
                    "maxItems": 8,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "source": {
                              "type": "string",
                              "const": "catalog"
                            },
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                            }
                          },
                          "required": [
                            "source",
                            "id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "source": {
                              "type": "string",
                              "const": "wardrobe"
                            },
                            "name": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 64
                            },
                            "color": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 64
                            }
                          },
                          "required": [
                            "source",
                            "name"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "stylingNote": {
                    "type": "string",
                    "maxLength": 360
                  }
                },
                "required": [
                  "title",
                  "pieces"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current public catalog result",
            "content": {
              "application/json": {
                "schema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "boardUrl": {
                      "type": "string",
                      "format": "uri"
                    },
                    "stylingNote": {
                      "type": "string"
                    },
                    "pieces": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "source": {
                                "type": "string",
                                "const": "catalog"
                              },
                              "product": {
                                "type": "object",
                                "properties": {
                                  "image": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "photoUrl": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "brand": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "category": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "description": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "price": {
                                    "type": [
                                      "number",
                                      "null"
                                    ]
                                  },
                                  "currency": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "sizes": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "availability": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "priceCheckedAt": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri"
                                  }
                                },
                                "required": [
                                  "image",
                                  "photoUrl",
                                  "id",
                                  "name",
                                  "brand",
                                  "category",
                                  "description",
                                  "price",
                                  "currency",
                                  "sizes",
                                  "availability",
                                  "priceCheckedAt",
                                  "url"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "source",
                              "product"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "source": {
                                "type": "string",
                                "const": "wardrobe"
                              },
                              "name": {
                                "type": "string"
                              },
                              "color": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "source",
                              "name"
                            ],
                            "additionalProperties": false
                          }
                        ]
                      }
                    }
                  },
                  "required": [
                    "title",
                    "boardUrl",
                    "stylingNote",
                    "pieces"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/actions/search_catalog": {
      "post": {
        "operationId": "search_catalog",
        "summary": "Find and show clothing in Modern. Use short English clothing terms. For an ordinary show-me request, search immediately. Returns matching items and IDs. For visual requests present up to three matching IDs with the packaged photo renderer in file-capable chats, or show_catalog_photos in widget-only chats. Use currency and maxPrice for budgets, and size for a named size.",
        "x-openai-isConsequential": false,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  },
                  "brand": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "color": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "size": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "maxPrice": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 1000000
                  },
                  "gender": {
                    "type": "string",
                    "enum": [
                      "women",
                      "men",
                      "unisex"
                    ]
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 8
                  }
                },
                "required": [
                  "query"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current public catalog result",
            "content": {
              "application/json": {
                "schema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "type": "object",
                  "properties": {
                    "products": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "image": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "photoUrl": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                          },
                          "name": {
                            "type": "string"
                          },
                          "brand": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "category": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "price": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "currency": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "sizes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "availability": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "priceCheckedAt": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          }
                        },
                        "required": [
                          "image",
                          "photoUrl",
                          "id",
                          "name",
                          "brand",
                          "category",
                          "description",
                          "price",
                          "currency",
                          "sizes",
                          "availability",
                          "priceCheckedAt",
                          "url"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "products"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/actions/get_catalog_item": {
      "post": {
        "operationId": "get_catalog_item",
        "summary": "Read current Modern catalog details for one item by its catalog UUID. Prices and sizes reflect the catalog snapshot.",
        "x-openai-isConsequential": false,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current public catalog result",
            "content": {
              "application/json": {
                "schema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "type": "object",
                  "properties": {
                    "product": {
                      "type": "object",
                      "properties": {
                        "image": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "photoUrl": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                        },
                        "name": {
                          "type": "string"
                        },
                        "brand": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "category": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "description": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "price": {
                          "type": [
                            "number",
                            "null"
                          ]
                        },
                        "currency": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "sizes": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "availability": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "priceCheckedAt": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        }
                      },
                      "required": [
                        "image",
                        "photoUrl",
                        "id",
                        "name",
                        "brand",
                        "category",
                        "description",
                        "price",
                        "currency",
                        "sizes",
                        "availability",
                        "priceCheckedAt",
                        "url"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "product"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/actions/compose_outfit": {
      "post": {
        "operationId": "compose_outfit",
        "summary": "Ask the Modern Moe stylist to assemble a public catalog outfit for an occasion. Returns its pieces and styling explanation.",
        "x-openai-isConsequential": false,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "occasion": {
                    "type": "string",
                    "enum": [
                      "work",
                      "date",
                      "casual",
                      "party",
                      "trip"
                    ]
                  },
                  "vibe": {
                    "type": "string",
                    "enum": [
                      "minimal",
                      "classic",
                      "bold",
                      "sexy"
                    ]
                  },
                  "palette": {
                    "type": "string",
                    "enum": [
                      "neutral",
                      "black",
                      "bright"
                    ]
                  },
                  "bottomPreference": {
                    "type": "string",
                    "enum": [
                      "jeans",
                      "trousers",
                      "skirt",
                      "any"
                    ]
                  },
                  "weatherHint": {
                    "type": "string",
                    "enum": [
                      "cold",
                      "mild",
                      "hot"
                    ]
                  },
                  "lang": {
                    "type": "string",
                    "enum": [
                      "ru",
                      "en"
                    ]
                  }
                },
                "required": [
                  "occasion"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current public catalog result",
            "content": {
              "application/json": {
                "schema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "type": "object",
                  "properties": {
                    "pieces": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "slot": {
                            "type": "string"
                          },
                          "product": {
                            "type": "object",
                            "properties": {
                              "image": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "photoUrl": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                              },
                              "name": {
                                "type": "string"
                              },
                              "brand": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "category": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "description": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "price": {
                                "type": [
                                  "number",
                                  "null"
                                ]
                              },
                              "currency": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "sizes": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "availability": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "priceCheckedAt": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              }
                            },
                            "required": [
                              "image",
                              "photoUrl",
                              "id",
                              "name",
                              "brand",
                              "category",
                              "description",
                              "price",
                              "currency",
                              "sizes",
                              "availability",
                              "priceCheckedAt",
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "slot",
                          "product"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "explanation": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "pieces",
                    "explanation"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    }
  }
}
