{
  "openapi": "3.0.1",
  "info": {
    "title": "Real Estate MCP API - Allee Spain",
    "version": "1.1",
    "description": "MCP Real Estate context for searching properties and submitting contact requests. - Allee Spain",
    "termsOfService": "https://www.alleespain.com/termos-e-condicoes",
    "contact": {
      "name": "Allee Spain",
      "url": "https://www.alleespain.com/",
      "email": "info@alleespain.com"
    },
    "x-company-info": {
      "name": "Allee Spain",
      "address": "Avda. Juan Luis Peralta, 3. Local 4, 29639 Benalmádena"
    }
  },
  "servers": [
    {
      "url": "https://www.alleespain.com/",
      "description": "MCP server identifier"
    }
  ],
  "components": {
    "schemas": {
      "searchToMatchRequest": {
        "type": "object",
        "properties": {
          "businessType": {
            "type": "string",
            "description": "Defines or returns the identifier of the property's business type"
          },
          "countryName": {
            "type": "string",
            "description": "Name of the country used as a filtering criterion. This field must remain empty when the country is not identified."
          },
          "stateName": {
            "type": "string",
            "description": "Name of the region (district) for the property (required in search if municipality is not specified)."
          },
          "townName": {
            "type": "string",
            "description": "Name of the municipality for the property (required in search if district is not specified)."
          },
          "neighborhoodName": {
            "type": "string",
            "description": "Name or ID of the parish (neighborhood) where the property is located."
          },
          "zoneName": {
            "type": "string",
            "description": "Geographic zone identifier used for filtering in searches."
          },
          "masterCategoryIds": {
            "type": "array",
            "description": "IDs of one or more main property category groups (e.g., apartments, houses, warehouses, land, hotels). At least one is required if a specific property type is not specified."
          },
          "categoryIds": {
            "type": "array",
            "description": "IDs of one or more specific property categories (e.g., apartment, house, warehouse, land, hotel)."
          },
          "condition": {
            "type": "string",
            "description": "Condition status."
          },
          "minPrice": {
            "type": "integer",
            "description": "Minimum price in euros. Fill in when the user specifies a minimum budget or lower price limit.",
            "format": "int32"
          },
          "maxPrice": {
            "type": "integer",
            "description": "Maximum price in euros. Fill in when the user specifies a maximum budget or upper price limit.",
            "format": "int32"
          },
          "minBedrooms": {
            "type": "integer",
            "description": "Minimum number of bedrooms to filter by",
            "format": "int32"
          },
          "maxBedrooms": {
            "type": "integer",
            "description": "Maximum number of bedrooms to filter by",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Minimum number of bathrooms.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Internal reference of the property used for identification."
          },
          "developmentName": {
            "type": "string",
            "description": "Development name."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Indicates whether the search should consider project units (e.g. apartments or retail units) instead of the project as a whole. When enabled, the results include only units associated with a project."
          },
          "developmentTags": {
            "type": "array",
            "description": "MCP\\INPUTSCHEMA_DEVELOPMENTTAG_DESCRIPTION"
          },
          "withVideos": {
            "type": "boolean",
            "description": "Searches only for properties with available videos. Apply when the user mentions expressions such as 'with video', 'with videos', 'has video', 'has videos', 'view property video', 'watch video online', etc."
          },
          "withBluePrints": {
            "type": "boolean",
            "description": "Searches only for properties that have available floor plans (blueprints). Apply when the user mentions 'with floor plan', 'has plans', 'house plans', 'property map', 'floor layout', 'see plan', etc."
          },
          "withVirtualVisits": {
            "type": "boolean",
            "description": "Searches only for properties with virtual tours available. Apply when the user mentions 'with virtual visit', 'has virtual visit', 'virtual tour', '3D tour', 'interactive tour', 'virtual walkthrough', 'virtual viewing', 'virtual experience', 'view virtual tour online'."
          },
          "with360Photos": {
            "type": "boolean",
            "description": "Searches only for properties with available 360º photos. Apply when the user mentions 'with 360º photos', 'has 360º photos', 'with panoramic photos', 'has panoramic photos', 'view 360º photos online', etc."
          },
          "featuresNames": {
            "type": "array",
            "description": "Property features, including amenities, services, nearby points of interest, and types of views to provide a complete and detailed description of the property"
          },
          "page": {
            "type": "integer",
            "description": "Page number to return in the search results.",
            "format": "int32"
          }
        },
        "description": "Schema that describes the input parameters for the real estate search."
      },
      "searchResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "description": "List of results for the current page, based on the number of records per page.",
            "items": {
              "$ref": "#/components/schemas/DetailResponse"
            }
          },
          "count": {
            "type": "integer",
            "description": "Total number of results matching the search criteria.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number based on the search criteria.",
            "format": "int32"
          },
          "totalpages": {
            "type": "integer",
            "description": "Total number of pages matching the search criteria.",
            "format": "int32"
          },
          "statetownnameequals": {
            "type": "boolean",
            "description": "Indicates whether the district name is the same as the town name."
          },
          "developmentname": {
            "type": "string",
            "description": "Development name; this field is only populated if the results relate to a specific development with this name."
          }
        },
        "description": "Schema that describes the output parameters of the real estate search."
      },
      "detailRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Property ID for contact.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Internal reference of the property used for identification."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Indicates whether the search should consider project units (e.g. apartments or retail units) instead of the project as a whole. When enabled, the results include only units associated with a project."
          }
        },
        "description": "Schema that describes the input parameters for the property detail."
      },
      "detailResponse": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Unique ID of the property listing.",
            "format": "int32"
          },
          "propertyType": {
            "type": "string",
            "description": "Type of property."
          },
          "condition": {
            "type": "string",
            "description": "Condition status of the property."
          },
          "listingReference": {
            "type": "string",
            "description": "Reference of the property shown in the search results."
          },
          "firstPhoto": {
            "type": "string",
            "description": "URL of the thumbnail of the property's first photo."
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the property."
          },
          "title": {
            "type": "string",
            "description": "Title of the listing."
          },
          "price": {
            "type": "string",
            "description": "Price in euros."
          },
          "imiValue": {
            "type": "string",
            "description": "IMI amount to be paid for the property, calculated based on the VPT and applicable tax rules."
          },
          "business": {
            "type": "string",
            "description": "Type of property business."
          },
          "location": {
            "type": "string",
            "description": "Name of the location."
          },
          "bedrooms": {
            "type": "integer",
            "description": "Number of bedrooms in the property.",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Number of bathrooms in the property.",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "description": "Public URL of the listing."
          },
          "hasVideos": {
            "type": "boolean",
            "description": "Indicates whether the property has available videos."
          },
          "hasBluePrints": {
            "type": "boolean",
            "description": "Indicates whether the property has available floor plans or blueprints."
          },
          "has360Photos": {
            "type": "boolean",
            "description": "Indicates whether the property has available 360° photos."
          },
          "hasVirtualVisits": {
            "type": "boolean",
            "description": "Indicates whether the property has available virtual visits or virtual tours."
          },
          "features": {
            "description": "These keys represent the description of specific property features, including physical attributes and relevant locations such as a pool, sea view, proximity to hospitals, schools, and other important facilities. This information helps detail and qualify the property to improve search filtering and results presentation according to user preferences.",
            "$ref": "#/components/schemas/Dictionary`2"
          }
        },
        "description": "Schema that describes the output parameters of the property detail."
      },
      "leadRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Property ID for contact.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Internal reference of the property used for identification."
          },
          "name": {
            "type": "string",
            "description": "User's name."
          },
          "email": {
            "type": "string",
            "description": "User's email address (required if no phone number is provided)."
          },
          "phone": {
            "type": "string",
            "description": "User's phone number (optional if email address is provided)."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Phone country code including the plus sign, e.g., \"+44\" for United Kingdom, \"+33\" for France, \"+49\" for Germany."
          },
          "message": {
            "type": "string",
            "description": "Custom message from the user."
          }
        },
        "description": "Schema that describes the input parameters for sending real estate leads."
      },
      "leadResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Status of the contact form submission (e.g., success, error)."
          },
          "message": {
            "type": "string",
            "description": "Message describing the result of the contact form submission."
          },
          "confirmedLead": {
            "type": "boolean",
            "description": ""
          }
        },
        "description": "Schema that describes the output parameters of the real estate lead submission."
      },
      "companyInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identifier of the company/agency to query (optional, defaults to the company’s internal one).",
            "format": "int32"
          }
        },
        "description": "Input schema for company information request"
      },
      "companyInfoWithAgenciesResponse": {
        "type": "object",
        "properties": {
          "headquarters": {
            "description": "Information about the company’s contact details related to the headquarters.",
            "$ref": "#/components/schemas/CompanyInfoResponse"
          },
          "agencies": {
            "type": "array",
            "description": "Information about the contact details of the company’s agencies.",
            "items": {
              "$ref": "#/components/schemas/CompanyInfoResponse"
            }
          }
        },
        "description": "Output schema with company information data"
      },
      "companyInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the company"
          },
          "phone": {
            "type": "string",
            "description": "Company phone number"
          },
          "mobile": {
            "type": "string",
            "description": "Company mobile number"
          },
          "email": {
            "type": "string",
            "description": "Contact email address of the company"
          },
          "address": {
            "type": "string",
            "description": "Company address (without ZIP code)"
          },
          "district": {
            "type": "string",
            "description": "District where the company is located"
          },
          "municipality": {
            "type": "string",
            "description": "Municipality where the company is located"
          },
          "parish": {
            "type": "string",
            "description": "Parish where the company is located"
          },
          "zipCode": {
            "type": "string",
            "description": "ZIP code of the company address"
          },
          "businessHours": {
            "type": "string",
            "description": "Company business hours"
          },
          "googleMapsUrl": {
            "type": "string",
            "description": "Direct Google Maps link to the company's location"
          }
        },
        "description": "Output schema with company information data"
      },
      "rasorInfoRequest": {
        "type": "object",
        "properties": {
          "rasorName": {
            "type": "string",
            "description": "Name of the real estate consultant for whom detailed information is requested."
          },
          "stateName": {
            "type": "string",
            "description": "Allows searching for consultants by district."
          },
          "townName": {
            "type": "string",
            "description": "Allows searching for consultants by municipality."
          }
        },
        "description": "Input schema for requesting detailed information about the real estate consultant"
      },
      "rasorInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Full name of the real estate consultant."
          },
          "phone": {
            "type": "string",
            "description": "Landline number of the real estate consultant."
          },
          "mobile": {
            "type": "string",
            "description": "Mobile phone number of the real estate consultant."
          },
          "observations": {
            "type": "string",
            "description": "Additional observations related to the real estate consultant."
          },
          "email": {
            "type": "string",
            "description": "Email address of the real estate consultant."
          },
          "address": {
            "type": "string",
            "description": "Full address of the real estate consultant or office."
          },
          "city": {
            "type": "string",
            "description": "Municipality where the consultant operates."
          },
          "parish": {
            "type": "string",
            "description": "Parish where the consultant operates."
          },
          "spokenLanguages": {
            "type": "array",
            "description": "List of languages spoken by the consultant."
          },
          "socialProfiles": {
            "type": "array",
            "description": "List of links to the consultant’s social profiles or pages.",
            "items": {
              "$ref": "#/components/schemas/SocialProfile"
            }
          },
          "avatar": {
            "type": "string",
            "description": "Image of the avatar associated with the consultant."
          },
          "listingUrl": {
            "type": "string",
            "description": "URL of the page that displays all properties assigned or related to the consultant, providing direct access to the complete list of the respective properties."
          },
          "detailUrl": {
            "type": "string",
            "description": "Page displaying the agent’s full information, including contact details, professional profile and associated properties."
          }
        },
        "description": "Output schema with detailed information about the real estate consultant"
      },
      "imiRequest": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Name of the municipality where the property is located. This field is required for geographic identification and IMI rate determination. Example: \"Lisbon\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          "taxableValue": {
            "type": "number",
            "description": "Taxable patrimonial value of the property (VPT), as registered with the Portuguese Tax Authority. This is the official fiscal value used as the basis for calculating IMI. Must be a positive decimal value expressed in euros. Example: \"185000.00\".",
            "format": "decimal"
          },
          "dependentsNumber": {
            "type": "integer",
            "description": "Number of dependants in the taxpayer’s household for the relevant tax year. This includes children, elderly parents or other legally recognised dependants that may qualify for IMI reductions or exemptions. Valid values: integer ≥ 0. Example: \"2\".",
            "format": "int32"
          },
          "isUrban": {
            "type": "boolean",
            "description": "Indicates whether the property is classified as urban or rural. Urban properties are subject to IMI, while rural properties may be subject to different taxation rules. Example: true/false."
          }
        },
        "description": "Input schema used to request the calculation of the Municipal Property Tax (IMI) for a property."
      },
      "imiResponse": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Name of the municipality considered for the IMI calculation"
          },
          "taxableValue": {
            "type": "string",
            "description": "Taxable Patrimonial Value (VPT) considered for the IMI calculation, expressed in euros"
          },
          "dependentsNumber": {
            "type": "string",
            "description": "Number of dependents considered for benefits applied in the IMI calculation"
          },
          "isUrban": {
            "type": "string",
            "description": "Indication whether the property is urban or rural, considered for the IMI calculation"
          },
          "imiValue": {
            "type": "string",
            "description": "Final IMI (Municipal Property Tax) value calculated based on the provided data."
          },
          "imiTaxValue": {
            "type": "string",
            "description": "Rate used for the calculation of the IMI value."
          },
          "dependentDiscount": {
            "type": "string",
            "description": "Discount value based on the number of dependents."
          },
          "dataYear": {
            "type": "integer",
            "description": "Reference year of the rates used for the IMI calculation.",
            "format": "int32"
          }
        },
        "description": "Output schema providing the result of the IMI calculation, including detailed information about the amount to be paid."
      },
      "servicesInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identifier of the company/agency to query (optional, defaults to the company’s internal one).",
            "format": "int32"
          }
        },
        "description": "Summary of available services, including their purpose and application for customers."
      },
      "servicesInfoResponse": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Unique identifier of the company associated with the services catalogue.",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "description": "Name of the company that provides the services catalogue."
          },
          "categories": {
            "type": "array",
            "description": "List of available service categories, organised by customer profile.",
            "items": {
              "$ref": "#/components/schemas/ServiceCategory"
            }
          }
        },
        "description": "Summary of the services provided to the customer, including details, scope, and application."
      }
    }
  },
  "paths": {
    "/mcp/search": {
      "get": {
        "summary": "Search real estate listings using filters such as location, price, type, and condition.",
        "description": "Search real estate listings using filters such as location, price, type, and condition.",
        "operationId": "mcpSearch",
        "parameters": [
          {
            "name": "BusinessType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Defines or returns the identifier of the property's business type (Rent, Sale). If not specified in the search, Sale will be used by default"
          },
          {
            "name": "CountryName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Name of the country used as a filtering criterion. This field must remain empty when the country is not identified., (is required)"
          },
          {
            "name": "StateName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Name of the region (district) for the property (required in search if municipality is not specified)., (is required)"
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name of the municipality for the property (required in search if district is not specified)."
          },
          {
            "name": "NeighborhoodName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name or ID of the parish (neighborhood) where the property is located."
          },
          {
            "name": "ZoneName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Geographic zone identifier used for filtering in searches."
          },
          {
            "name": "MasterCategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "IDs of one or more main property category groups (e.g., apartments, houses, warehouses, land, hotels). At least one is required if a specific property type is not specified."
          },
          {
            "name": "CategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "IDs of one or more specific property categories (e.g., apartment, house, warehouse, land, hotel)."
          },
          {
            "name": "Condition",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Condition status. (For refurbishment, For sale, In project, New, Not Applicable, Refurbished, Remodelled, Reserved, To demolish or rebuild, Under construction, Used, With Incentive Program for Rehabilitation)"
          },
          {
            "name": "MinPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimum price in euros. Fill in when the user specifies a minimum budget or lower price limit."
          },
          {
            "name": "MaxPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Maximum price in euros. Fill in when the user specifies a maximum budget or upper price limit."
          },
          {
            "name": "MinBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimum number of bedrooms to filter by"
          },
          {
            "name": "MaxBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Maximum number of bedrooms to filter by"
          },
          {
            "name": "Bathrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimum number of bathrooms."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Internal reference of the property used for identification."
          },
          {
            "name": "DevelopmentName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Development name."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indicates whether the search should consider project units (e.g. apartments or retail units) instead of the project as a whole. When enabled, the results include only units associated with a project."
          },
          {
            "name": "DevelopmentTags",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "MCP\\INPUTSCHEMA_DEVELOPMENTTAG_DESCRIPTION ()"
          },
          {
            "name": "WithVideos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Searches only for properties with available videos. Apply when the user mentions expressions such as 'with video', 'with videos', 'has video', 'has videos', 'view property video', 'watch video online', etc."
          },
          {
            "name": "WithBluePrints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Searches only for properties that have available floor plans (blueprints). Apply when the user mentions 'with floor plan', 'has plans', 'house plans', 'property map', 'floor layout', 'see plan', etc."
          },
          {
            "name": "WithVirtualVisits",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Searches only for properties with virtual tours available. Apply when the user mentions 'with virtual visit', 'has virtual visit', 'virtual tour', '3D tour', 'interactive tour', 'virtual walkthrough', 'virtual viewing', 'virtual experience', 'view virtual tour online'."
          },
          {
            "name": "With360Photos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Searches only for properties with available 360º photos. Apply when the user mentions 'with 360º photos', 'has 360º photos', 'with panoramic photos', 'has panoramic photos', 'view 360º photos online', etc."
          },
          {
            "name": "FeaturesNames",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Property features, including amenities, services, nearby points of interest, and types of views to provide a complete and detailed description of the property (24 hours security, Acustic isolation, Air Conditioning, Airport, Alarm, Beach, Building, Bus station, CCTV, Central Heating, City, City center, Closet, Country, Countryside, Dinning room, Double glass, Dryer, Ejendommen har kontor, Electric hob, Electric stove, Elevator, Furnished, Garage, Garden, Golf, Golf course, Green roof, Green spaces, Gymnasium, High Security Door, Highway, Hospital, Induction hob, Internet Pre-Installation, Ironing board, Kitchen, Kitchen hood, Laundry, Library, Living room, Microwave, mountain, Near the sea, Oven, Parking, Petrol station, Pharmacy, Playroom, Police, Porch, Private bathroom, Public Transportation, Refrigerator, Satellite dish, School, Sea, Sealed complex, Service bathroom, Shared pool, Shielded door, Shopping Center, Solar orientation, Solar panels, Suite, Supermarket, Swimming Pool, Swimming pools, Termic isolation, Terrace, Video entry, Video surveillance, Washer machine, Wine cellar)"
          },
          {
            "name": "Page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Page number to return in the search results."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/detail": {
      "get": {
        "summary": "Retrieves detailed information about a real estate property.",
        "description": "Retrieves detailed information about a real estate property.",
        "operationId": "mcpDetail",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Property ID for contact."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Internal reference of the property used for identification."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indicates whether the search should consider project units (e.g. apartments or retail units) instead of the project as a whole. When enabled, the results include only units associated with a project."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/lead": {
      "get": {
        "summary": "Submit a contact form for a specific listing.",
        "description": "Submit a contact form for a specific listing.",
        "operationId": "mcpLead",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Property ID for contact."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Internal reference of the property used for identification."
          },
          {
            "name": "Name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "User's name., (is required)"
          },
          {
            "name": "Email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "User's email address (required if no phone number is provided)., (is required)"
          },
          {
            "name": "Phone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "User's phone number (optional if email address is provided)."
          },
          {
            "name": "PhoneCountryCode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Phone country code including the plus sign, e.g., \"+44\" for United Kingdom, \"+33\" for France, \"+49\" for Germany."
          },
          {
            "name": "Message",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Custom message from the user."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/companyinfo": {
      "get": {
        "summary": "Allows retrieving the company's contact details, including agency name, address, phone number, and email. Ideal for displaying institutional information or enabling the user to contact the agency.",
        "description": "Allows retrieving the company's contact details, including agency name, address, phone number, and email. Ideal for displaying institutional information or enabling the user to contact the agency.",
        "operationId": "mcpCompanyInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identifier of the company/agency to query (optional, defaults to the company’s internal one)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoWithAgenciesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/rasorinfo": {
      "get": {
        "summary": "Allows retrieving the real estate consultant's contact details, including name, phone, email, and address. Ideal for displaying the consultant's contact information or enabling the user to contact them.",
        "description": "Allows retrieving the real estate consultant's contact details, including name, phone, email, and address. Ideal for displaying the consultant's contact information or enabling the user to contact them.",
        "operationId": "mcpRasorInfo",
        "parameters": [
          {
            "name": "RasorName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name of the real estate consultant for whom detailed information is requested."
          },
          {
            "name": "StateName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Allows searching for consultants by district."
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Allows searching for consultants by municipality."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RasorInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/imicalculator": {
      "get": {
        "summary": "Allows determining the value of the Municipal Property Tax (IMI) based on data provided by the user. This service validates the indicated municipality, identifies the applicable coefficient, processes the Taxable Patrimonial Value (VPT), number of dependents, and the nature of the property (urban or rural), returning the final IMI amount to be paid according to current fiscal rules in Portugal.",
        "description": "Allows determining the value of the Municipal Property Tax (IMI) based on data provided by the user. This service validates the indicated municipality, identifies the applicable coefficient, processes the Taxable Patrimonial Value (VPT), number of dependents, and the nature of the property (urban or rural), returning the final IMI amount to be paid according to current fiscal rules in Portugal.",
        "operationId": "mcpImiCalculator",
        "parameters": [
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name of the municipality where the property is located. This field is required for geographic identification and IMI rate determination. Example: \"Lisbon\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          {
            "name": "TaxableValue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Taxable patrimonial value of the property (VPT), as registered with the Portuguese Tax Authority. This is the official fiscal value used as the basis for calculating IMI. Must be a positive decimal value expressed in euros. Example: \"185000.00\"."
          },
          {
            "name": "DependentsNumber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Number of dependants in the taxpayer’s household for the relevant tax year. This includes children, elderly parents or other legally recognised dependants that may qualify for IMI reductions or exemptions. Valid values: integer ≥ 0. Example: \"2\"."
          },
          {
            "name": "IsUrban",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indicates whether the property is classified as urban or rural. Urban properties are subject to IMI, while rural properties may be subject to different taxation rules. Example: true/false."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IMIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/servicesinfo": {
      "get": {
        "summary": "Description of the endpoint providing complete information about the services available for a customer profile.",
        "description": "Description of the endpoint providing complete information about the services available for a customer profile.",
        "operationId": "mcpServicesInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identifier of the company/agency to query (optional, defaults to the company’s internal one)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesInfoResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}