{
  "openapi": "3.0.3",
  "info": {
    "title": "Rumb.ru MCP API \u2014 \u041f\u043e\u0438\u0441\u043a \u0442\u0443\u0440\u043e\u0432 \u0438\u0437 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0430",
    "description": "\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 API \u0434\u043b\u044f AI-\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043e\u0432. \u041f\u043e\u0438\u0441\u043a \u0442\u0443\u0440\u043e\u0432, \u0433\u043e\u0440\u044f\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0434\u0431\u043e\u0440 \u043f\u043e \u0431\u044e\u0434\u0436\u0435\u0442\u0443, \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b.",
    "version": "1.0.0",
    "contact": {
      "email": "info@rumb.ru",
      "url": "https://rumb.ru"
    }
  },
  "servers": [
    {
      "url": "https://rumb.ru/api/mcp/v1",
      "description": "\u041f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0441\u0435\u0440\u0432\u0435\u0440"
    }
  ],
  "security": [
    {},
    {
      "mcpApiKey": []
    }
  ],
  "paths": {
    "/tours": {
      "get": {
        "operationId": "searchTours",
        "summary": "\u041f\u043e\u0438\u0441\u043a \u0442\u0443\u0440\u043e\u0432",
        "description": "\u041f\u043e\u0438\u0441\u043a \u0442\u0443\u0440\u043e\u0432 \u043f\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c: \u0441\u0442\u0440\u0430\u043d\u0430, \u0433\u043e\u0440\u043e\u0434, \u0442\u0438\u043f, \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442, \u0434\u0430\u0442\u044b, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0431\u044e\u0434\u0436\u0435\u0442.",
        "tags": ["\u0422\u0443\u0440\u044b"],
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "description": "\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (pseudo \u0438\u0437 /destinations)",
            "schema": { "type": "string", "example": "Finland" }
          },
          {
            "name": "city",
            "in": "query",
            "description": "\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0433\u043e\u0440\u043e\u0434\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (pseudo \u0438\u0437 /destinations?type=cities)",
            "schema": { "type": "string", "example": "Helsinki" }
          },
          {
            "name": "type_tour",
            "in": "query",
            "description": "\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0442\u0438\u043f\u0430 \u0442\u0443\u0440\u0430: Excursion, AtSea, Cruise, Bus, Ski, Family, Treatment \u0438 \u0434\u0440.",
            "schema": { "type": "string", "example": "Excursion" }
          },
          {
            "name": "transport",
            "in": "query",
            "description": "\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0430: Bus, Train, Air, Ship, Ferry, CruiseLiner",
            "schema": { "type": "string", "example": "Bus" }
          },
          {
            "name": "date_from",
            "in": "query",
            "description": "\u041d\u0430\u0447\u0430\u043b\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0434\u0430\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
            "schema": { "type": "string", "format": "date", "example": "2026-05-01" }
          },
          {
            "name": "date_to",
            "in": "query",
            "description": "\u041a\u043e\u043d\u0435\u0446 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0434\u0430\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
            "schema": { "type": "string", "format": "date", "example": "2026-06-30" }
          },
          {
            "name": "duration_from",
            "in": "query",
            "description": "\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u0443\u0440\u0430 \u0432 \u0434\u043d\u044f\u0445",
            "schema": { "type": "integer", "example": 3 }
          },
          {
            "name": "duration_to",
            "in": "query",
            "description": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u0443\u0440\u0430 \u0432 \u0434\u043d\u044f\u0445",
            "schema": { "type": "integer", "example": 14 }
          },
          {
            "name": "price_max",
            "in": "query",
            "description": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0446\u0435\u043d\u0430 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445",
            "schema": { "type": "integer", "example": 50000 }
          },
          {
            "name": "departure_from",
            "in": "query",
            "description": "\u0413\u043e\u0440\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433)",
            "schema": { "type": "string", "default": "St-Petersburg", "example": "St-Petersburg" }
          },
          {
            "name": "page",
            "in": "query",
            "description": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438",
            "schema": { "type": "integer", "example": 1 }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (\u043c\u0430\u043a\u0441. 50)",
            "schema": { "type": "integer", "maximum": 50, "example": 20 }
          }
        ],
        "responses": {
          "200": {
            "description": "\u0421\u043f\u0438\u0441\u043e\u043a \u0442\u0443\u0440\u043e\u0432",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    { "$ref": "#/components/schemas/Envelope" },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": { "$ref": "#/components/schemas/TourListItem" }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "422": { "$ref": "#/components/responses/ValidationError" },
          "429": { "$ref": "#/components/responses/RateLimitError" }
        }
      }
    },
    "/tours/hot": {
      "get": {
        "operationId": "getHotTours",
        "summary": "\u0413\u043e\u0440\u044f\u0449\u0438\u0435 \u0442\u0443\u0440\u044b",
        "description": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u043a\u0438\u0434\u043a\u0430\u043c\u0438 \u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u043c\u0438 \u0434\u0430\u0442\u0430\u043c\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.",
        "tags": ["\u0422\u0443\u0440\u044b"],
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "description": "\u0424\u0438\u043b\u044c\u0442\u0440 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f",
            "schema": { "type": "string", "example": "Turkey_s" }
          },
          {
            "name": "city",
            "in": "query",
            "description": "\u0424\u0438\u043b\u044c\u0442\u0440 \u043f\u043e \u0433\u043e\u0440\u043e\u0434\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f",
            "schema": { "type": "string" }
          },
          {
            "name": "departure_from",
            "in": "query",
            "description": "\u0413\u043e\u0440\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
            "schema": { "type": "string", "default": "St-Petersburg" }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432",
            "schema": { "type": "integer", "example": 10 }
          }
        ],
        "responses": {
          "200": {
            "description": "\u0421\u043f\u0438\u0441\u043e\u043a \u0433\u043e\u0440\u044f\u0449\u0438\u0445 \u0442\u0443\u0440\u043e\u0432",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    { "$ref": "#/components/schemas/Envelope" },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": { "$ref": "#/components/schemas/TourListItem" }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "422": { "$ref": "#/components/responses/ValidationError" },
          "429": { "$ref": "#/components/responses/RateLimitError" }
        }
      }
    },
    "/tours/budget": {
      "get": {
        "operationId": "searchToursByBudget",
        "summary": "\u041f\u043e\u0434\u0431\u043e\u0440 \u0442\u0443\u0440\u043e\u0432 \u043f\u043e \u0431\u044e\u0434\u0436\u0435\u0442\u0443",
        "description": "\u041f\u043e\u0438\u0441\u043a \u0442\u0443\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0431\u044e\u0434\u0436\u0435\u0442 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445.",
        "tags": ["\u0422\u0443\u0440\u044b"],
        "parameters": [
          {
            "name": "budget",
            "in": "query",
            "required": true,
            "description": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u044e\u0434\u0436\u0435\u0442 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445",
            "schema": { "type": "integer", "minimum": 1000, "example": 30000 }
          },
          {
            "name": "departure_from",
            "in": "query",
            "description": "\u0413\u043e\u0440\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
            "schema": { "type": "string", "default": "St-Petersburg" }
          },
          {
            "name": "type_tour",
            "in": "query",
            "description": "\u0422\u0438\u043f \u0442\u0443\u0440\u0430",
            "schema": { "type": "string", "example": "пляжный" }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432",
            "schema": {
              "type": "string",
              "enum": ["price_asc", "duration_desc", "date_asc"],
              "example": "price_asc"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",
            "schema": { "type": "integer", "example": 1 }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (\u043c\u0430\u043a\u0441. 50)",
            "schema": { "type": "integer", "maximum": 50, "example": 20 }
          }
        ],
        "responses": {
          "200": {
            "description": "\u0422\u0443\u0440\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u044e\u0434\u0436\u0435\u0442\u0430",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    { "$ref": "#/components/schemas/Envelope" },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": { "$ref": "#/components/schemas/TourListItem" }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "422": { "$ref": "#/components/responses/ValidationError" },
          "429": { "$ref": "#/components/responses/RateLimitError" }
        }
      }
    },
    "/tours/calendar": {
      "get": {
        "operationId": "getTourCalendar",
        "summary": "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439",
        "description": "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0434\u0430\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0443\u0440\u043e\u0432 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043d\u043e\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0434\u0430\u0442\u0443.",
        "tags": ["\u0422\u0443\u0440\u044b"],
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "description": "\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u044b (pseudo \u0438\u0437 /destinations)",
            "schema": { "type": "string", "example": "Finland" }
          },
          {
            "name": "city",
            "in": "query",
            "description": "\u0424\u0438\u043b\u044c\u0442\u0440 \u043f\u043e \u0433\u043e\u0440\u043e\u0434\u0443",
            "schema": { "type": "string" }
          },
          {
            "name": "departure_from",
            "in": "query",
            "description": "\u0413\u043e\u0440\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
            "schema": { "type": "string", "default": "St-Petersburg" }
          },
          {
            "name": "month",
            "in": "query",
            "description": "\u041c\u0435\u0441\u044f\u0446 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YYYY-MM",
            "schema": { "type": "string", "format": "date", "example": "2026-06" }
          }
        ],
        "responses": {
          "200": {
            "description": "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    { "$ref": "#/components/schemas/Envelope" },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": { "$ref": "#/components/schemas/CalendarEntry" }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "422": { "$ref": "#/components/responses/ValidationError" },
          "429": { "$ref": "#/components/responses/RateLimitError" }
        }
      }
    },
    "/tours/{id}": {
      "get": {
        "operationId": "getTourDetail",
        "summary": "\u0414\u0435\u0442\u0430\u043b\u0438 \u0442\u0443\u0440\u0430",
        "description": "\u041f\u043e\u043b\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u0443\u0440\u0435: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0434\u0430\u0442\u044b, \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u0430.",
        "tags": ["\u0422\u0443\u0440\u044b"],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0443\u0440\u0430",
            "schema": { "type": "integer", "example": 1234 }
          }
        ],
        "responses": {
          "200": {
            "description": "\u0414\u0435\u0442\u0430\u043b\u0438 \u0442\u0443\u0440\u0430",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    { "$ref": "#/components/schemas/Envelope" },
                    {
                      "type": "object",
                      "properties": {
                        "data": { "$ref": "#/components/schemas/TourDetail" }
                      }
                    }
                  ]
                }
              }
            }
          },
          "404": { "$ref": "#/components/responses/NotFoundError" },
          "429": { "$ref": "#/components/responses/RateLimitError" }
        }
      }
    },
    "/tours/{id}/similar": {
      "get": {
        "operationId": "getSimilarTours",
        "summary": "\u041f\u043e\u0445\u043e\u0436\u0438\u0435 \u0442\u0443\u0440\u044b",
        "description": "\u0422\u0443\u0440\u044b, \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e, \u0442\u0438\u043f\u0443 \u0438 \u0446\u0435\u043d\u0435.",
        "tags": ["\u0422\u0443\u0440\u044b"],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0443\u0440\u0430",
            "schema": { "type": "integer", "example": 1234 }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u0443\u0440\u043e\u0432 (\u043c\u0430\u043a\u0441. 10)",
            "schema": { "type": "integer", "maximum": 10, "example": 5 }
          }
        ],
        "responses": {
          "200": {
            "description": "\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u0443\u0440\u043e\u0432",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    { "$ref": "#/components/schemas/Envelope" },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": { "$ref": "#/components/schemas/TourListItem" }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "404": { "$ref": "#/components/responses/NotFoundError" },
          "429": { "$ref": "#/components/responses/RateLimitError" }
        }
      }
    },
    "/destinations": {
      "get": {
        "operationId": "getDestinations",
        "summary": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
        "description": "\u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 (\u0441\u0442\u0440\u0430\u043d\u044b \u0438\u043b\u0438 \u0433\u043e\u0440\u043e\u0434\u0430) \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u0443\u0440\u043e\u0432.",
        "tags": ["\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f"],
        "parameters": [
          {
            "name": "departure_from",
            "in": "query",
            "description": "\u0413\u043e\u0440\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
            "schema": { "type": "string", "default": "St-Petersburg" }
          },
          {
            "name": "type",
            "in": "query",
            "description": "\u0422\u0438\u043f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f: \u0441\u0442\u0440\u0430\u043d\u044b \u0438\u043b\u0438 \u0433\u043e\u0440\u043e\u0434\u0430",
            "schema": {
              "type": "string",
              "enum": ["countries", "cities"],
              "example": "countries"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 (\u043c\u0430\u043a\u0441. 100)",
            "schema": { "type": "integer", "maximum": 100, "example": 50 }
          }
        ],
        "responses": {
          "200": {
            "description": "\u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    { "$ref": "#/components/schemas/Envelope" },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": { "$ref": "#/components/schemas/Destination" }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "422": { "$ref": "#/components/responses/ValidationError" },
          "429": { "$ref": "#/components/responses/RateLimitError" }
        }
      }
    },
    "/agencies": {
      "get": {
        "operationId": "getAgencies",
        "summary": "\u0422\u0443\u0440\u0444\u0438\u0440\u043c\u044b",
        "description": "\u0421\u043f\u0438\u0441\u043e\u043a \u0442\u0443\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u0433\u0435\u043d\u0442\u0441\u0442\u0432 \u0441 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u0438 \u043e\u0444\u0438\u0441\u0430\u043c\u0438.",
        "tags": ["\u0422\u0443\u0440\u0444\u0438\u0440\u043c\u044b"],
        "parameters": [
          {
            "name": "departure_from",
            "in": "query",
            "description": "\u0413\u043e\u0440\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
            "schema": { "type": "string", "default": "St-Petersburg" }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 (\u043c\u0430\u043a\u0441. 50)",
            "schema": { "type": "integer", "maximum": 50, "example": 20 }
          }
        ],
        "responses": {
          "200": {
            "description": "\u0421\u043f\u0438\u0441\u043e\u043a \u0442\u0443\u0440\u0444\u0438\u0440\u043c",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    { "$ref": "#/components/schemas/Envelope" },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": { "$ref": "#/components/schemas/Agency" }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "422": { "$ref": "#/components/responses/ValidationError" },
          "429": { "$ref": "#/components/responses/RateLimitError" }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "mcpApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-MCP-Key",
        "description": "API-\u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)"
      }
    },
    "schemas": {
      "TourListItem": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "description": "\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0443\u0440\u0430", "example": 1234 },
          "name": { "type": "string", "description": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0443\u0440\u0430", "example": "Классическая Финляндия" },
          "slug": { "type": "string", "description": "URL-\u0441\u043b\u0430\u0433 \u0442\u0443\u0440\u0430", "example": "klassicheskaya-finlyandiya" },
          "description": { "type": "string", "description": "\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0443\u0440\u0430" },
          "min_price": { "type": "integer", "nullable": true, "description": "\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0446\u0435\u043d\u0430 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445", "example": 15000 },
          "currency": { "type": "string", "description": "\u0412\u0430\u043b\u044e\u0442\u0430", "example": "RUB" },
          "max_duration_days": { "type": "integer", "description": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0434\u043d\u044f\u0445", "example": 7 },
          "agency_name": { "type": "string", "description": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b", "example": "Ника" },
          "countries": {
            "type": "array",
            "description": "\u0421\u0442\u0440\u0430\u043d\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f",
            "items": {
              "type": "object",
              "properties": {
                "name": { "type": "string", "example": "Финляндия" },
                "pseudo": { "type": "string", "example": "finlyandiya" }
              }
            }
          },
          "cities": {
            "type": "array",
            "description": "\u0413\u043e\u0440\u043e\u0434\u0430 \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u044f",
            "items": {
              "type": "object",
              "properties": {
                "name": { "type": "string", "example": "Хельсинки" },
                "pseudo": { "type": "string", "example": "helsinki" }
              }
            }
          },
          "type_tours": {
            "type": "array",
            "description": "\u0422\u0438\u043f\u044b \u0442\u0443\u0440\u0430",
            "items": { "type": "string" },
            "example": ["экскурсионный", "автобусный"]
          },
          "transports": {
            "type": "array",
            "description": "\u0412\u0438\u0434\u044b \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0430",
            "items": { "type": "string" },
            "example": ["автобус"]
          },
          "dates_available": {
            "type": "array",
            "description": "\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u0430\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
            "items": { "type": "string", "format": "date" },
            "example": ["2026-05-10", "2026-05-17"]
          },
          "updated_at": { "type": "string", "format": "date-time", "description": "\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f" },
          "web_url": { "type": "string", "format": "uri", "description": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u0443\u0440\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435", "example": "https://rumb.ru/tours/from_St-Petersburg/klassicheskaya-finlyandiya.html" }
        },
        "required": ["id", "name", "slug", "min_price", "currency", "agency_name", "countries", "cities", "web_url"]
      },
      "TourDetail": {
        "allOf": [
          { "$ref": "#/components/schemas/TourListItem" },
          {
            "type": "object",
            "properties": {
              "description_html": { "type": "string", "description": "\u041f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0443\u0440\u0430 \u0432 HTML" },
              "price_includes": { "type": "string", "description": "\u0427\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u0446\u0435\u043d\u0443" },
              "additionally_paid": { "type": "string", "description": "\u0427\u0442\u043e \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e" },
              "options": {
                "type": "array",
                "description": "\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f",
                "items": {
                  "type": "object",
                  "properties": {
                    "price": { "type": "integer", "description": "\u0426\u0435\u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445", "example": 25000 },
                    "duration_days": { "type": "integer", "description": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0434\u043d\u044f\u0445", "example": 5 },
                    "accommodation": { "type": "string", "description": "\u0422\u0438\u043f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f", "example": "2-\u043c\u0435\u0441\u0442\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440" },
                    "food_type": { "type": "string", "description": "\u0422\u0438\u043f \u043f\u0438\u0442\u0430\u043d\u0438\u044f", "example": "\u0437\u0430\u0432\u0442\u0440\u0430\u043a" }
                  }
                }
              },
              "dates": {
                "type": "array",
                "description": "\u0412\u0441\u0435 \u0434\u0430\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
                "items": { "type": "string", "format": "date" }
              },
              "agency": {
                "type": "object",
                "description": "\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u0435",
                "properties": {
                  "name": { "type": "string", "example": "Ника" },
                  "website": { "type": "string", "format": "uri" },
                  "about": { "type": "string", "description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b" },
                  "offices": {
                    "type": "array",
                    "description": "\u041e\u0444\u0438\u0441\u044b \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b",
                    "items": {
                      "type": "object",
                      "properties": {
                        "city": { "type": "string", "example": "\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433" },
                        "address": { "type": "string", "example": "\u041d\u0435\u0432\u0441\u043a\u0438\u0439 \u043f\u0440., 100" },
                        "phones": {
                          "type": "array",
                          "items": { "type": "string" },
                          "example": ["+7 (812) 123-45-67"]
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "Destination": {
        "type": "object",
        "properties": {
          "name": { "type": "string", "description": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f", "example": "Финляндия" },
          "pseudo": { "type": "string", "description": "URL-\u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c", "example": "finlyandiya" },
          "tours_count": { "type": "integer", "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0442\u0443\u0440\u043e\u0432", "example": 85 },
          "country": { "type": "string", "description": "\u0421\u0442\u0440\u0430\u043d\u0430 (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0433\u043e\u0440\u043e\u0434\u043e\u0432)" },
          "web_url": { "type": "string", "format": "uri", "description": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f", "example": "https://rumb.ru/tours/from_St-Petersburg/finlyandiya/" }
        },
        "required": ["name", "pseudo", "tours_count", "web_url"]
      },
      "Agency": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "description": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b", "example": 10 },
          "name": { "type": "string", "description": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b", "example": "Ника" },
          "slug": { "type": "string", "description": "URL-\u0441\u043b\u0430\u0433", "example": "nika" },
          "about": { "type": "string", "description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b" },
          "website": { "type": "string", "format": "uri", "description": "\u0421\u0430\u0439\u0442 \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b" },
          "logo_url": { "type": "string", "format": "uri", "description": "URL \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u0430" },
          "tours_count": { "type": "integer", "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0443\u0440\u043e\u0432", "example": 42 },
          "offices": {
            "type": "array",
            "description": "\u041e\u0444\u0438\u0441\u044b \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b",
            "items": {
              "type": "object",
              "properties": {
                "city": { "type": "string", "example": "\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433" },
                "address": { "type": "string", "example": "\u041d\u0435\u0432\u0441\u043a\u0438\u0439 \u043f\u0440., 100" },
                "phones": {
                  "type": "array",
                  "items": { "type": "string" },
                  "example": ["+7 (812) 123-45-67"]
                }
              }
            }
          },
          "web_url": { "type": "string", "format": "uri", "description": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u0443\u0440\u0444\u0438\u0440\u043c\u044b", "example": "https://rumb.ru/travel_agency/from_St-Petersburg/nika.html" }
        },
        "required": ["id", "name", "slug", "tours_count", "offices", "web_url"]
      },
      "CalendarEntry": {
        "type": "object",
        "properties": {
          "date": { "type": "string", "format": "date", "description": "\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f", "example": "2026-06-15" },
          "tours_count": { "type": "integer", "description": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0443\u0440\u043e\u0432 \u043d\u0430 \u044d\u0442\u0443 \u0434\u0430\u0442\u0443", "example": 12 },
          "min_price": { "type": "integer", "description": "\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0446\u0435\u043d\u0430 \u043d\u0430 \u044d\u0442\u0443 \u0434\u0430\u0442\u0443 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445", "example": 8500 }
        },
        "required": ["date", "tours_count", "min_price"]
      },
      "Meta": {
        "type": "object",
        "properties": {
          "total": { "type": "integer", "description": "\u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432", "example": 245 },
          "page": { "type": "integer", "description": "\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430", "example": 1 },
          "per_page": { "type": "integer", "description": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443", "example": 20 },
          "cached_at": { "type": "string", "format": "date-time", "description": "\u0412\u0440\u0435\u043c\u044f \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430" }
        }
      },
      "Links": {
        "type": "object",
        "properties": {
          "self": { "type": "string", "format": "uri", "description": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441" },
          "web": { "type": "string", "format": "uri", "description": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435" }
        }
      },
      "Envelope": {
        "type": "object",
        "properties": {
          "data": { "description": "\u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u0430" },
          "meta": { "$ref": "#/components/schemas/Meta" },
          "links": { "$ref": "#/components/schemas/Links" }
        },
        "required": ["data", "meta", "links"]
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": { "type": "string", "description": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435" }
        },
        "required": ["error"]
      }
    },
    "responses": {
      "NotFoundError": {
        "description": "\u0420\u0435\u0441\u0443\u0440\u0441 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
        "content": {
          "application/json": {
            "schema": { "$ref": "#/components/schemas/Error" },
            "example": { "error": "\u0422\u0443\u0440 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d" }
          }
        }
      },
      "ValidationError": {
        "description": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432",
        "content": {
          "application/json": {
            "schema": { "$ref": "#/components/schemas/Error" },
            "example": { "error": "\u041f\u043e\u043b\u0435 budget \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 1000" }
          }
        }
      },
      "RateLimitError": {
        "description": "\u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d \u043b\u0438\u043c\u0438\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432",
        "content": {
          "application/json": {
            "schema": { "$ref": "#/components/schemas/Error" },
            "example": { "error": "\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0437\u0436\u0435" }
          }
        }
      }
    }
  }
}