{
  "openapi": "3.0.3",
  "info": {
    "title": "MTRO PRO API",
    "version": "1.0.0",
    "description": "HTTP API for the MTRO PRO property management platform.\n\nAuthenticate every request with an API key issued from the admin panel:\n`Authorization: Bearer mtro_...`. Each key carries a set of scopes, and the\nscope an operation requires is listed under `x-mtro-scopes`.\n\nThis document covers the endpoints exposed for external integrations. It is\ngenerated from the MTRO PRO MCP tool registry and the Core route table, so\nevery documented operation corresponds to a mounted endpoint."
  },
  "servers": [
    {
      "url": "https://core.mtro.app",
      "description": "Production"
    },
    {
      "url": "https://dev.core.mtro.app",
      "description": "Development"
    }
  ],
  "tags": [
    {
      "name": "Admin utilities",
      "description": "API keys, custom fields, activity logs, and navigation counters."
    },
    {
      "name": "Bookings",
      "description": "Reservations and date blocks, from availability checks to lease signing."
    },
    {
      "name": "Campaigns",
      "description": "Bulk notification campaigns."
    },
    {
      "name": "Conversations",
      "description": "Guest and owner messaging across SMS, email, and in-app channels."
    },
    {
      "name": "Entities",
      "description": "The organizations a user belongs to. Every other resource is scoped to one."
    },
    {
      "name": "Guests",
      "description": "Guest records and their contact details."
    },
    {
      "name": "Import jobs",
      "description": "Bulk imports, including Furnished Finder scraping runs."
    },
    {
      "name": "Inventory",
      "description": "Per-property inventory items and the shared catalog."
    },
    {
      "name": "Leads",
      "description": "Rental enquiries and their pipeline stage, managed through the dedicated `/leads` API."
    },
    {
      "name": "Message templates",
      "description": "Reusable message bodies for conversations."
    },
    {
      "name": "Notes",
      "description": "Free-form notes attached to a lead or a booking."
    },
    {
      "name": "Notifications",
      "description": "In-app notifications and transactional email sends."
    },
    {
      "name": "Payments",
      "description": "One-off and recurring payments, including Stripe checkout links."
    },
    {
      "name": "Pipeline stages",
      "description": "The configurable stages a lead moves through."
    },
    {
      "name": "Polls",
      "description": "Owner polls and their results."
    },
    {
      "name": "Properties",
      "description": "Rental properties, their rates, availability, and public listings."
    },
    {
      "name": "Reminders",
      "description": "Scheduled reminders attached to a lead or a booking."
    },
    {
      "name": "Report widgets",
      "description": "Configurable dashboard widgets and their data."
    },
    {
      "name": "Reports",
      "description": "Aggregate reporting across properties and bookings."
    },
    {
      "name": "Subscriptions",
      "description": "Platform subscription plans and billing state."
    },
    {
      "name": "Tasks",
      "description": "Maintenance and operational tasks, optionally assigned to a vendor."
    },
    {
      "name": "Templates",
      "description": "Lease and document templates, including rendering and generation."
    },
    {
      "name": "Users",
      "description": "The authenticated principal behind the API key."
    },
    {
      "name": "Vendors",
      "description": "Service providers that tasks can be assigned to."
    }
  ],
  "paths": {
    "/api-keys/delete": {
      "post": {
        "operationId": "api_keys_delete",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Delete an API key.",
        "description": "Delete an API key. This is destructive and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "api_keys.manage"
        ],
        "x-mtro-mcp-tools": [
          "api_keys_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "apiKeyId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/api-keys/generate": {
      "post": {
        "operationId": "api_keys_generate",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Generate a new API key.",
        "description": "Generate a new API key. This creates a secret and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "api_keys.manage"
        ],
        "x-mtro-mcp-tools": [
          "api_keys_generate"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "description": {},
                  "expiresAt": {},
                  "name": {},
                  "scopes": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/api-keys/list": {
      "get": {
        "operationId": "api_keys_list",
        "tags": [
          "Admin utilities"
        ],
        "summary": "List API keys for the authenticated owner/entity.",
        "description": "List API keys for the authenticated owner/entity.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "error": {
                      "type": "boolean"
                    },
                    "apiKeys": {
                      "type": "array",
                      "items": {}
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "api_keys.manage"
        ],
        "x-mtro-mcp-tools": [
          "api_keys_list"
        ]
      }
    },
    "/api-keys/revoke": {
      "post": {
        "operationId": "api_keys_revoke",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Revoke an API key.",
        "description": "Revoke an API key. This is security-sensitive and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "api_keys.manage"
        ],
        "x-mtro-mcp-tools": [
          "api_keys_revoke"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "apiKeyId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/bookings/block-dates": {
      "post": {
        "operationId": "bookings_block_dates",
        "tags": [
          "Bookings"
        ],
        "summary": "Block dates on a property (e.g.",
        "description": "Block dates on a property (e.g. for maintenance or owner use). Creates a blocked-dates booking.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_block_dates"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "propertyId": {
                    "type": "string",
                    "description": "Property ID to block dates on"
                  },
                  "startDate": {
                    "type": "number",
                    "description": "Block start date (timestamp ms)"
                  },
                  "endDate": {
                    "type": "number",
                    "description": "Block end date (timestamp ms)"
                  },
                  "notes": {
                    "type": "string",
                    "description": "Reason for blocking dates"
                  }
                },
                "required": [
                  "endDate",
                  "propertyId",
                  "startDate"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/bookings/block-dates/delete/{bookingId}": {
      "post": {
        "operationId": "bookings_delete_block_dates",
        "tags": [
          "Bookings"
        ],
        "summary": "Delete an owner block/blocked-dates booking.",
        "description": "Delete an owner block/blocked-dates booking. This is destructive and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_delete_block_dates"
        ]
      }
    },
    "/bookings/block-dates/update/{bookingId}": {
      "post": {
        "operationId": "bookings_update_block_dates",
        "tags": [
          "Bookings"
        ],
        "summary": "Update an owner block/blocked-dates booking.",
        "description": "Update an owner block/blocked-dates booking. This writes calendar state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_update_block_dates"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "endDate": {},
                  "notes": {},
                  "startDate": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/bookings/create": {
      "post": {
        "operationId": "bookings_create",
        "tags": [
          "Bookings"
        ],
        "summary": "Create a new booking.",
        "description": "Create a new booking. Required: propertyId, startDate (timestamp ms), endDate (timestamp ms). The primary guest is identified by guestEmail: Core finds the matching guest or creates one from guestName, guestSurname and guestMobile.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.read",
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "propertyId": {
                    "type": "string",
                    "description": "Property ID for the booking"
                  },
                  "startDate": {
                    "type": "number",
                    "description": "Start date as millisecond timestamp"
                  },
                  "endDate": {
                    "type": "number",
                    "description": "End date as millisecond timestamp"
                  },
                  "guestEmail": {
                    "type": "string",
                    "description": "Primary guest email. Core matches an existing guest on this address or creates one."
                  },
                  "guestName": {
                    "type": "string",
                    "description": "Primary guest first name, used when the guest has to be created"
                  },
                  "guestSurname": {
                    "type": "string",
                    "description": "Primary guest surname, used when the guest has to be created"
                  },
                  "guestMobile": {
                    "type": "string",
                    "description": "Primary guest mobile number in E.164 format"
                  },
                  "rate": {
                    "type": "number",
                    "description": "Rate per day"
                  },
                  "source": {
                    "type": "string",
                    "description": "Booking source"
                  },
                  "status": {
                    "type": "string",
                    "description": "Booking status: confirmed, pending, cancelled"
                  },
                  "notes": {
                    "type": "string",
                    "description": "Booking notes"
                  },
                  "leadId": {
                    "type": "string",
                    "description": "Lead this booking was converted from"
                  },
                  "templateId": {
                    "type": "string",
                    "description": "Lease template ID"
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "fieldName": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "fieldName",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Custom field values for the booking"
                  }
                },
                "required": [
                  "endDate",
                  "propertyId",
                  "startDate"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/bookings/delete/{bookingId}": {
      "post": {
        "operationId": "bookings_delete",
        "tags": [
          "Bookings"
        ],
        "summary": "Delete a booking by bookingRef.",
        "description": "Delete a booking by bookingRef. This action cannot be undone.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_delete"
        ]
      }
    },
    "/bookings/get/{bookingId}": {
      "get": {
        "operationId": "bookings_get",
        "tags": [
          "Bookings"
        ],
        "summary": "Get detailed information about a specific booking by bookingRef or raw booking ID.",
        "description": "Get detailed information about a specific booking by bookingRef or raw booking ID.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "description": "Raw booking ObjectId.",
            "schema": {
              "anyOf": [
                {
                  "not": {}
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "error": {
                      "type": "boolean"
                    },
                    "booking": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "integer"
                        },
                        "propertyId": {
                          "type": "string"
                        },
                        "guestId": {
                          "type": "string"
                        },
                        "additionalGuests": {
                          "type": "array",
                          "items": {}
                        },
                        "startDate": {
                          "type": "integer"
                        },
                        "endDate": {
                          "type": "integer"
                        },
                        "startDateOnly": {
                          "type": "string"
                        },
                        "endDateOnly": {
                          "type": "string"
                        },
                        "dateSemantics": {
                          "type": "object",
                          "properties": {
                            "start": {
                              "type": "string"
                            },
                            "end": {
                              "type": "string"
                            }
                          }
                        },
                        "rate": {
                          "type": "integer"
                        },
                        "source": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "guests": {
                          "type": "object",
                          "properties": {
                            "adults": {
                              "type": "integer"
                            },
                            "children": {
                              "type": "integer"
                            },
                            "infants": {
                              "type": "integer"
                            }
                          }
                        },
                        "pets": {
                          "type": "object",
                          "properties": {
                            "dogs": {
                              "type": "array",
                              "items": {}
                            },
                            "cats": {
                              "type": "array",
                              "items": {}
                            },
                            "others": {
                              "type": "array",
                              "items": {}
                            }
                          }
                        },
                        "customFields": {
                          "type": "array",
                          "items": {}
                        },
                        "mergeFieldValues": {
                          "type": "object",
                          "properties": {}
                        },
                        "leaseDocuments": {
                          "type": "array",
                          "items": {}
                        },
                        "leasePackage": {},
                        "lastUpdated": {
                          "type": "integer"
                        },
                        "guestSign": {
                          "type": "array",
                          "items": {}
                        },
                        "ownerSign": {
                          "type": "array",
                          "items": {}
                        },
                        "backgroundCheckProvider": {},
                        "backgroundCheckCreditCheckRequested": {
                          "type": "boolean"
                        },
                        "backgroundCheckCreditCheckLocked": {
                          "type": "boolean"
                        },
                        "backgroundCheckStatus": {},
                        "backgroundCheckProviderStatus": {},
                        "backgroundCheckProviderRequestId": {},
                        "backgroundCheckProviderReservationId": {},
                        "backgroundCheckGuestPortalUrl": {},
                        "backgroundCheckReportUrl": {},
                        "backgroundCheckGuestPortalStatus": {},
                        "backgroundCheckGuestPortalLastScreen": {},
                        "backgroundCheckRiskColor": {},
                        "backgroundCheckTopRisks": {
                          "type": "array",
                          "items": {}
                        },
                        "backgroundCheckRequestedAt": {},
                        "backgroundCheckCompletedAt": {},
                        "backgroundCheckLastSyncedAt": {},
                        "backgroundCheckError": {},
                        "backgroundCheckReviewReason": {},
                        "backgroundCheckActionRequired": {},
                        "backgroundCheckCanResumeIdentityVerification": {
                          "type": "boolean"
                        },
                        "backgroundCheckPackage": {},
                        "backgroundCheckPackageLabel": {},
                        "backgroundCheckPackagePriceCents": {},
                        "backgroundCheckSelectedGuests": {
                          "type": "array",
                          "items": {}
                        },
                        "backgroundCheckPayer": {},
                        "backgroundCheckPaymentStatus": {},
                        "backgroundCheckPaymentCheckoutUrl": {},
                        "backgroundCheckPaymentIntentId": {},
                        "backgroundCheckPaymentChargedAt": {},
                        "backgroundCheckPaymentError": {},
                        "backgroundCheckBillingAcceptedAt": {},
                        "backgroundCheckBillingAcceptedBy": {},
                        "backgroundCheckRequestedBy": {},
                        "backgroundCheckOwnerPaymentMethodAvailable": {
                          "type": "boolean"
                        },
                        "surveyStatus": {},
                        "guest": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "surname": {
                              "type": "string"
                            },
                            "email": {
                              "type": "string"
                            },
                            "mobile": {
                              "type": "string"
                            }
                          }
                        },
                        "property": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "propertyName": {
                              "type": "string"
                            },
                            "internalName": {
                              "type": "string"
                            },
                            "address": {
                              "type": "string"
                            },
                            "aptSuite": {
                              "type": "string"
                            },
                            "timezone": {
                              "type": "string"
                            },
                            "bedrooms": {
                              "type": "integer"
                            },
                            "bathrooms": {
                              "type": "integer"
                            },
                            "squareFootage": {
                              "type": "integer"
                            },
                            "additionalOwners": {
                              "type": "array",
                              "items": {}
                            }
                          }
                        },
                        "platformFeePayer": {
                          "type": "string"
                        },
                        "initialPaymentId": {},
                        "leaseReadiness": {
                          "type": "object",
                          "properties": {
                            "ready": {
                              "type": "boolean"
                            },
                            "phase": {
                              "type": "string"
                            },
                            "automationEnabled": {
                              "type": "boolean"
                            },
                            "initialPaymentAmount": {},
                            "issues": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "code": {
                                    "type": "string"
                                  },
                                  "field": {
                                    "type": "string"
                                  },
                                  "message": {
                                    "type": "string"
                                  },
                                  "action": {
                                    "type": "string"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "progress": {
                          "type": "object",
                          "properties": {
                            "backgroundCheckPassed": {
                              "type": "boolean"
                            },
                            "leasePrepared": {
                              "type": "boolean"
                            },
                            "guestSigned": {
                              "type": "boolean"
                            },
                            "guestSignCount": {
                              "type": "integer"
                            },
                            "requiredGuestSignatures": {
                              "type": "integer"
                            },
                            "paymentStatus": {
                              "type": "string"
                            },
                            "ownerSigned": {
                              "type": "boolean"
                            },
                            "ownerSignCount": {
                              "type": "integer"
                            },
                            "requiredOwnerSignatures": {
                              "type": "integer"
                            },
                            "readyToConfirm": {
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.read"
        ],
        "x-mtro-mcp-tools": [
          "bookings_get"
        ]
      }
    },
    "/bookings/get/all": {
      "get": {
        "operationId": "bookings_list",
        "tags": [
          "Bookings"
        ],
        "summary": "List all bookings you have access to.",
        "description": "List all bookings you have access to. Returns compact live booking rows with simple bookingRef values like B001. Prefer bookingRef over raw ObjectIds in later tool calls.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "error": {
                      "type": "boolean"
                    },
                    "bookings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "createdAt": {
                            "type": "integer"
                          },
                          "propertyId": {
                            "type": "string"
                          },
                          "guestId": {
                            "type": "string"
                          },
                          "additionalGuests": {
                            "type": "array",
                            "items": {}
                          },
                          "startDate": {
                            "type": "integer"
                          },
                          "endDate": {
                            "type": "integer"
                          },
                          "startDateOnly": {
                            "type": "string"
                          },
                          "endDateOnly": {
                            "type": "string"
                          },
                          "dateSemantics": {
                            "type": "object",
                            "properties": {
                              "start": {
                                "type": "string"
                              },
                              "end": {
                                "type": "string"
                              }
                            }
                          },
                          "rate": {
                            "type": "integer"
                          },
                          "source": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "calendarBlockedAt": {},
                          "surveyStatus": {},
                          "hasSurvey": {
                            "type": "boolean"
                          },
                          "guests": {
                            "type": "object",
                            "properties": {
                              "adults": {
                                "type": "integer"
                              },
                              "children": {
                                "type": "integer"
                              },
                              "infants": {
                                "type": "integer"
                              }
                            }
                          },
                          "pets": {
                            "type": "object",
                            "properties": {
                              "dogs": {
                                "type": "array",
                                "items": {}
                              },
                              "cats": {
                                "type": "array",
                                "items": {}
                              },
                              "others": {
                                "type": "array",
                                "items": {}
                              }
                            }
                          },
                          "customFields": {
                            "type": "array",
                            "items": {}
                          },
                          "mergeFieldValues": {
                            "type": "object",
                            "properties": {}
                          },
                          "leaseDocuments": {
                            "type": "array",
                            "items": {}
                          },
                          "leasePackage": {},
                          "lastUpdated": {
                            "type": "integer"
                          },
                          "guestSign": {
                            "type": "array",
                            "items": {}
                          },
                          "ownerSign": {
                            "type": "array",
                            "items": {}
                          },
                          "backgroundCheckProvider": {
                            "type": "string"
                          },
                          "backgroundCheckCreditCheckRequested": {
                            "type": "boolean"
                          },
                          "backgroundCheckCreditCheckLocked": {
                            "type": "boolean"
                          },
                          "backgroundCheckStatus": {},
                          "backgroundCheckProviderStatus": {},
                          "backgroundCheckProviderRequestId": {},
                          "backgroundCheckProviderReservationId": {},
                          "backgroundCheckGuestPortalUrl": {},
                          "backgroundCheckReportUrl": {},
                          "backgroundCheckGuestPortalStatus": {},
                          "backgroundCheckGuestPortalLastScreen": {},
                          "backgroundCheckRiskColor": {},
                          "backgroundCheckTopRisks": {
                            "type": "array",
                            "items": {}
                          },
                          "backgroundCheckRequestedAt": {},
                          "backgroundCheckCompletedAt": {},
                          "backgroundCheckLastSyncedAt": {},
                          "backgroundCheckError": {},
                          "backgroundCheckReviewReason": {},
                          "backgroundCheckActionRequired": {},
                          "backgroundCheckCanResumeIdentityVerification": {
                            "type": "boolean"
                          },
                          "backgroundCheckPackage": {},
                          "backgroundCheckPackageLabel": {},
                          "backgroundCheckPackagePriceCents": {},
                          "backgroundCheckSelectedGuests": {
                            "type": "array",
                            "items": {}
                          },
                          "backgroundCheckPayer": {},
                          "backgroundCheckPaymentStatus": {},
                          "backgroundCheckPaymentCheckoutUrl": {},
                          "backgroundCheckPaymentIntentId": {},
                          "backgroundCheckPaymentChargedAt": {},
                          "backgroundCheckPaymentError": {},
                          "backgroundCheckBillingAcceptedAt": {},
                          "backgroundCheckBillingAcceptedBy": {},
                          "backgroundCheckRequestedBy": {},
                          "backgroundCheckOwnerPaymentMethodAvailable": {
                            "type": "boolean"
                          },
                          "backgroundCheckRequestedByUser": {},
                          "platformFeePayer": {
                            "type": "string"
                          },
                          "initialPaymentId": {},
                          "guest": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "surname": {
                                "type": "string"
                              },
                              "email": {
                                "type": "string"
                              },
                              "mobile": {
                                "type": "string"
                              }
                            }
                          },
                          "property": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "propertyName": {
                                "type": "string"
                              },
                              "internalName": {
                                "type": "string"
                              },
                              "address": {
                                "type": "string"
                              },
                              "aptSuite": {
                                "type": "string"
                              },
                              "timezone": {
                                "type": "string"
                              },
                              "bedrooms": {
                                "type": "integer"
                              },
                              "bathrooms": {
                                "type": "integer"
                              },
                              "squareFootage": {
                                "type": "integer"
                              },
                              "additionalOwners": {
                                "type": "array",
                                "items": {}
                              }
                            }
                          },
                          "progress": {
                            "type": "object",
                            "properties": {
                              "backgroundCheckPassed": {
                                "type": "boolean"
                              },
                              "leasePrepared": {
                                "type": "boolean"
                              },
                              "guestSigned": {
                                "type": "boolean"
                              },
                              "guestSignCount": {
                                "type": "integer"
                              },
                              "requiredGuestSignatures": {
                                "type": "integer"
                              },
                              "paymentStatus": {
                                "type": "string"
                              },
                              "ownerSigned": {
                                "type": "boolean"
                              },
                              "ownerSignCount": {
                                "type": "integer"
                              },
                              "requiredOwnerSignatures": {
                                "type": "integer"
                              },
                              "readyToConfirm": {
                                "type": "boolean"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.read"
        ],
        "x-mtro-mcp-tools": [
          "bookings_list"
        ]
      }
    },
    "/bookings/public/check-availability": {
      "post": {
        "operationId": "bookings_check_availability",
        "tags": [
          "Bookings"
        ],
        "summary": "Check if a property is available for specific dates.",
        "description": "Check if a property is available for specific dates.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "bookings_check_availability"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "propertyId": {
                    "type": "string",
                    "description": "Property ID to check"
                  },
                  "startDate": {
                    "type": "number",
                    "description": "Start date as millisecond timestamp"
                  },
                  "endDate": {
                    "type": "number",
                    "description": "End date as millisecond timestamp"
                  }
                },
                "required": [
                  "endDate",
                  "propertyId",
                  "startDate"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/bookings/request-background-check/{bookingId}": {
      "post": {
        "operationId": "bookings_request_background_check",
        "tags": [
          "Bookings"
        ],
        "summary": "Request a background check for a booking.",
        "description": "Request a background check for a booking. This can trigger external workflow and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_request_background_check"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "applicationType": {},
                  "creditCheckRequested": {},
                  "packageType": {},
                  "payer": {},
                  "savePaymentMethodForFuture": {},
                  "selectedGuests": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/bookings/reverse-to-lead/{bookingId}": {
      "post": {
        "operationId": "bookings_reverse_to_lead",
        "tags": [
          "Bookings"
        ],
        "summary": "Reverse a booking back to a lead.",
        "description": "Reverse a booking back to a lead. This changes workflow state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_reverse_to_lead"
        ]
      }
    },
    "/bookings/set-background-check-approval/{bookingId}": {
      "post": {
        "operationId": "bookings_set_background_check_approval",
        "tags": [
          "Bookings"
        ],
        "summary": "Approve or reject a booking background check.",
        "description": "Approve or reject a booking background check. This changes booking state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_set_background_check_approval"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "approval": {
                    "type": "boolean",
                    "description": "Set true to approve the background check, false to reject it."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "approval"
                ]
              }
            }
          }
        }
      }
    },
    "/bookings/set-lease-prepared/{bookingId}": {
      "post": {
        "operationId": "bookings_set_lease_prepared",
        "tags": [
          "Bookings"
        ],
        "summary": "Mark lease preparation state for a booking.",
        "description": "Mark lease preparation state for a booking. This writes account data and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write",
          "leases.sign",
          "payments.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_set_lease_prepared"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "feePayer": {},
                  "initialPaymentAmount": {},
                  "initialPaymentId": {},
                  "initialPaymentSource": {},
                  "initialPaymentStripeAccountRef": {},
                  "ownerName": {},
                  "platformFeePayer": {},
                  "resendOnly": {},
                  "signature": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/bookings/set-primary-guest/{bookingId}": {
      "post": {
        "operationId": "bookings_set_primary_guest",
        "tags": [
          "Bookings"
        ],
        "summary": "Set the primary guest for a booking that does not have one yet.",
        "description": "Set the primary guest for a booking that does not have one yet. This writes account data and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_set_primary_guest"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "guestEmail": {
                    "type": "string",
                    "description": "Email of the guest to set as primary. Core matches an existing guest on this address or creates one."
                  },
                  "guestName": {
                    "type": "string",
                    "description": "Guest first name, used when the guest has to be created"
                  },
                  "guestSurname": {
                    "type": "string",
                    "description": "Guest surname, used when the guest has to be created"
                  }
                },
                "required": [
                  "guestEmail"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/bookings/sign/{bookingId}": {
      "post": {
        "operationId": "bookings_sign",
        "tags": [
          "Bookings"
        ],
        "summary": "Sign a booking/lease as owner.",
        "description": "Sign a booking/lease as owner. This is legally significant and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.read",
          "leases.sign"
        ],
        "x-mtro-mcp-tools": [
          "bookings_sign"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "ownerName": {},
                  "signature": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler",
                "required": [
                  "signature"
                ]
              }
            }
          }
        }
      }
    },
    "/bookings/update/{bookingId}": {
      "post": {
        "operationId": "bookings_update",
        "tags": [
          "Bookings"
        ],
        "summary": "Update an existing booking.",
        "description": "Update an existing booking. Use bookingRef from bookings_list, plus any fields to update.",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "bookings_update"
        ]
      }
    },
    "/campaigns/create": {
      "post": {
        "operationId": "campaigns_create",
        "tags": [
          "Campaigns"
        ],
        "summary": "Create a notification campaign.",
        "description": "Create a notification campaign. This can send external communication and should require owner/admin confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "campaigns_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "actionLabel": {},
                  "actionUrl": {},
                  "channels": {},
                  "message": {},
                  "recipientUserIds": {},
                  "sendToAll": {},
                  "title": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/campaigns/delete": {
      "post": {
        "operationId": "campaigns_delete",
        "tags": [
          "Campaigns"
        ],
        "summary": "Delete a notification campaign.",
        "description": "Delete a notification campaign. This is destructive and should require confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "campaigns_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "campaignId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/campaigns/get/{campaignId}": {
      "get": {
        "operationId": "campaigns_get",
        "tags": [
          "Campaigns"
        ],
        "summary": "Get a notification campaign by ID.",
        "description": "Get a notification campaign by ID.",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "description": "Campaign ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "campaigns_get"
        ]
      }
    },
    "/campaigns/get/all": {
      "get": {
        "operationId": "campaigns_list",
        "tags": [
          "Campaigns"
        ],
        "summary": "List notification campaigns.",
        "description": "List notification campaigns.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "campaigns_list"
        ]
      }
    },
    "/campaigns/resume": {
      "post": {
        "operationId": "campaigns_resume",
        "tags": [
          "Campaigns"
        ],
        "summary": "Resume a notification campaign.",
        "description": "Resume a notification campaign. This changes external communication state and should require confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "campaigns_resume"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "campaignId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/campaigns/stop": {
      "post": {
        "operationId": "campaigns_stop",
        "tags": [
          "Campaigns"
        ],
        "summary": "Stop a notification campaign.",
        "description": "Stop a notification campaign. This changes external communication state and should require confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "campaigns_stop"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "campaignId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/conversations/add-message": {
      "post": {
        "operationId": "conversations_add_message",
        "tags": [
          "Conversations"
        ],
        "summary": "Add an internal/in-app conversation message.",
        "description": "Add an internal/in-app conversation message. External delivery should use conversations_send_message and require owner confirmation.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.write"
        ],
        "x-mtro-mcp-tools": [
          "conversations_add_message"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "attachments": {},
                  "clientMessageId": {},
                  "conversationId": {},
                  "message": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/conversations/create": {
      "post": {
        "operationId": "conversations_create",
        "tags": [
          "Conversations"
        ],
        "summary": "Create a conversation.",
        "description": "Create a conversation. This may start guest-facing communication and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.write"
        ],
        "x-mtro-mcp-tools": [
          "conversations_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "contactEmail": {},
                  "contactName": {},
                  "contactPhone": {},
                  "conversationScope": {},
                  "entityId": {},
                  "entityOwner": {},
                  "entityType": {},
                  "guestId": {},
                  "message": {},
                  "participants": {},
                  "reuseExisting": {},
                  "subject": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/conversations/delete-message/{conversationId}/{messageId}": {
      "post": {
        "operationId": "conversations_delete_message",
        "tags": [
          "Conversations"
        ],
        "summary": "Delete an owner-authored message.",
        "description": "Delete an owner-authored message. This is destructive and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "description": "Conversation ID.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "messageId",
            "in": "path",
            "required": true,
            "description": "Message ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.write"
        ],
        "x-mtro-mcp-tools": [
          "conversations_delete_message"
        ]
      }
    },
    "/conversations/edit-message/{conversationId}/{messageId}": {
      "post": {
        "operationId": "conversations_edit_message",
        "tags": [
          "Conversations"
        ],
        "summary": "Edit an owner-authored message.",
        "description": "Edit an owner-authored message. This writes account data and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "description": "Conversation ID.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "messageId",
            "in": "path",
            "required": true,
            "description": "Message ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.write"
        ],
        "x-mtro-mcp-tools": [
          "conversations_edit_message"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {},
                "description": "Message edit body."
              }
            }
          }
        }
      }
    },
    "/conversations/get": {
      "post": {
        "operationId": "conversations_list",
        "tags": [
          "Conversations"
        ],
        "summary": "List owner conversations.",
        "description": "List owner conversations. Supports Core /conversations/get filters through payload. For a booking, pass payload.bookingRef or payload.bookingId to return the booking conversation directly.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "conversations": {
                      "type": "array",
                      "items": {}
                    },
                    "total": {
                      "type": "integer"
                    },
                    "page": {
                      "type": "integer"
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.read"
        ],
        "x-mtro-mcp-tools": [
          "conversations_list"
        ]
      }
    },
    "/conversations/get/{conversationId}": {
      "get": {
        "operationId": "conversations_get",
        "tags": [
          "Conversations"
        ],
        "summary": "Get a conversation by ID, including messages.",
        "description": "Get a conversation by ID, including messages.",
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "description": "Conversation ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.read"
        ],
        "x-mtro-mcp-tools": [
          "conversations_get"
        ]
      }
    },
    "/conversations/get/entity/{entityId}": {
      "get": {
        "operationId": "conversations_get_by_entity",
        "tags": [
          "Conversations"
        ],
        "summary": "Get conversations for an entity.",
        "description": "Get conversations for an entity.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "Entity ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "conversations": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.read"
        ],
        "x-mtro-mcp-tools": [
          "conversations_get_by_entity",
          "conversations_list"
        ]
      }
    },
    "/conversations/mark-read/{conversationId}": {
      "post": {
        "operationId": "conversations_mark_read",
        "tags": [
          "Conversations"
        ],
        "summary": "Mark a conversation read.",
        "description": "Mark a conversation read.",
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "description": "Conversation ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.read"
        ],
        "x-mtro-mcp-tools": [
          "conversations_mark_read"
        ]
      }
    },
    "/conversations/mark-unread/{conversationId}": {
      "post": {
        "operationId": "conversations_mark_unread",
        "tags": [
          "Conversations"
        ],
        "summary": "Mark a conversation unread.",
        "description": "Mark a conversation unread.",
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "description": "Conversation ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.read"
        ],
        "x-mtro-mcp-tools": [
          "conversations_mark_unread"
        ]
      }
    },
    "/conversations/retry-message/{conversationId}/{messageId}": {
      "post": {
        "operationId": "conversations_retry_message",
        "tags": [
          "Conversations"
        ],
        "summary": "Retry delivery of a failed conversation message.",
        "description": "Retry delivery of a failed conversation message. This may send external communication and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "description": "Conversation ID.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "messageId",
            "in": "path",
            "required": true,
            "description": "Message ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.write"
        ],
        "x-mtro-mcp-tools": [
          "conversations_retry_message"
        ]
      }
    },
    "/conversations/send-message": {
      "post": {
        "operationId": "conversations_send_message",
        "tags": [
          "Conversations"
        ],
        "summary": "Send a message through email or SMS.",
        "description": "Send a message through email or SMS. This sends external communication and should require owner confirmation when used by an agent. Required final Core payload is conversationId, channel, and message. Convenience: instead of conversationId, pass bookingRef or bookingId and the MCP will find or create the booking guest conversation first. For an existing Lead, pass leadId from leads_list to find or create only that Lead's conversation after confirmation.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.write"
        ],
        "x-mtro-mcp-tools": [
          "conversations_send_message"
        ]
      }
    },
    "/conversations/update": {
      "post": {
        "operationId": "conversations_update",
        "tags": [
          "Conversations"
        ],
        "summary": "Update conversation metadata or status.",
        "description": "Update conversation metadata or status. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "conversations.write"
        ],
        "x-mtro-mcp-tools": [
          "conversations_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "conversationId": {},
                  "status": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/entities/get/{entityId}": {
      "get": {
        "operationId": "entities_get",
        "tags": [
          "Entities"
        ],
        "summary": "Get detailed information about a specific entity.",
        "description": "Get detailed information about a specific entity.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The entity ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entity": {
                      "type": "object",
                      "properties": {
                        "stripeCustomFeePercentByPaymentType": {
                          "type": "object",
                          "properties": {
                            "ach": {},
                            "card": {}
                          }
                        },
                        "_id": {
                          "type": "string"
                        },
                        "entityName": {
                          "type": "string"
                        },
                        "__v": {
                          "type": "integer"
                        },
                        "agentAssistantEnabled": {
                          "type": "boolean"
                        },
                        "automateLeaseToPayment": {
                          "type": "boolean"
                        },
                        "backgroundCheckProvider": {
                          "type": "string"
                        },
                        "country": {
                          "type": "string"
                        },
                        "creatorPageEnabled": {
                          "type": "boolean"
                        },
                        "entityType": {
                          "type": "string"
                        },
                        "lastUpdated": {
                          "type": "integer"
                        },
                        "showPeopleAlsoViewed": {
                          "type": "boolean"
                        },
                        "status": {
                          "type": "string"
                        },
                        "stripeAccountId": {},
                        "stripeAccountStatus": {},
                        "stripeCustomFeePercent": {},
                        "twilioPhoneNumber": {},
                        "twilioPhoneNumberAvailable": {
                          "type": "boolean"
                        },
                        "twilioPhoneNumberRequestedAt": {},
                        "twilioPhoneNumberRequestedBy": {},
                        "twilioPhoneNumberSid": {}
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "entities_get"
        ]
      }
    },
    "/entities/get/all": {
      "get": {
        "operationId": "entities_list",
        "tags": [
          "Entities"
        ],
        "summary": "List all entities (property management companies/owners).",
        "description": "List all entities (property management companies/owners). Admin only.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "entities_list"
        ]
      }
    },
    "/ff-import/scrape": {
      "post": {
        "operationId": "ff_import_scrape",
        "tags": [
          "Import jobs"
        ],
        "summary": "Start a Furnished Finder scrape through the Core proxy.",
        "description": "Start a Furnished Finder scrape through the Core proxy. This can create import data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "ff_import_scrape"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {},
                "description": "Core /ff-import/scrape request body."
              }
            }
          }
        }
      }
    },
    "/ff-import/upload-images": {
      "post": {
        "operationId": "ff_import_upload_images",
        "tags": [
          "Import jobs"
        ],
        "summary": "Upload Furnished Finder scraped images through the Core proxy.",
        "description": "Upload Furnished Finder scraped images through the Core proxy. This writes media and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "ff_import_upload_images"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {},
                "description": "Core /ff-import/upload-images request body."
              }
            }
          }
        }
      }
    },
    "/fields/create": {
      "post": {
        "operationId": "fields_create",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Create a custom field.",
        "description": "Create a custom field. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.write"
        ],
        "x-mtro-mcp-tools": [
          "fields_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "defaultToToday": {},
                  "entityId": {},
                  "fieldName": {},
                  "fieldType": {},
                  "options": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/fields/delete": {
      "post": {
        "operationId": "fields_delete",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Delete a custom field.",
        "description": "Delete a custom field. This is destructive and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.write"
        ],
        "x-mtro-mcp-tools": [
          "fields_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "fieldId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/fields/get/all": {
      "get": {
        "operationId": "fields_list",
        "tags": [
          "Admin utilities"
        ],
        "summary": "List custom fields.",
        "description": "List custom fields.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "fields": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "fields_list"
        ]
      }
    },
    "/fields/get/entity/{entityId}": {
      "get": {
        "operationId": "fields_get_by_entity",
        "tags": [
          "Admin utilities"
        ],
        "summary": "List custom fields for an entity.",
        "description": "List custom fields for an entity.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "Entity ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "fields": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "fields_get_by_entity"
        ]
      }
    },
    "/fields/update": {
      "post": {
        "operationId": "fields_update",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Update a custom field.",
        "description": "Update a custom field. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.write"
        ],
        "x-mtro-mcp-tools": [
          "fields_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "defaultToToday": {},
                  "fieldId": {},
                  "fieldName": {},
                  "fieldType": {},
                  "options": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/guests/delete": {
      "post": {
        "operationId": "guests_delete",
        "tags": [
          "Guests"
        ],
        "summary": "Delete a guest profile.",
        "description": "Delete a guest profile. This action cannot be undone.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "guests_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "guestId": {
                    "type": "string",
                    "description": "The guest ID to delete"
                  }
                },
                "required": [
                  "guestId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/guests/edit": {
      "post": {
        "operationId": "guests_update",
        "tags": [
          "Guests"
        ],
        "summary": "Update a guest's profile information.",
        "description": "Update a guest's profile information.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "guests_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "guestId": {
                    "type": "string",
                    "description": "The guest ID to update"
                  },
                  "name": {
                    "type": "string",
                    "description": "First name. Core requires it on every update, so send the current value when it is unchanged."
                  },
                  "surname": {
                    "type": "string",
                    "description": "Surname. Core requires it on every update, so send the current value when it is unchanged."
                  },
                  "email": {
                    "type": "string",
                    "description": "Email address. Core requires it on every update, so send the current value when it is unchanged."
                  },
                  "mobile": {
                    "type": "string",
                    "description": "Updated mobile number"
                  },
                  "birthday": {
                    "type": "number",
                    "description": "Updated birthday (timestamp ms)"
                  },
                  "country": {
                    "type": "string",
                    "description": "Updated country"
                  }
                },
                "required": [
                  "email",
                  "guestId",
                  "name",
                  "surname"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/guests/register": {
      "post": {
        "operationId": "guests_create",
        "tags": [
          "Guests"
        ],
        "summary": "Create a new guest profile.",
        "description": "Create a new guest profile. Required: email, name, surname, password. The password must contain at least 8 characters with an uppercase letter, a lowercase letter, a number, and a special character.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "guests_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Guest email address"
                  },
                  "name": {
                    "type": "string",
                    "description": "Guest first name"
                  },
                  "surname": {
                    "type": "string",
                    "description": "Guest last name"
                  },
                  "password": {
                    "type": "string",
                    "description": "Initial account password. At least 8 characters with uppercase, lowercase, a number, and a special character."
                  },
                  "mobile": {
                    "type": "string",
                    "description": "Guest mobile number"
                  },
                  "birthday": {
                    "type": "number",
                    "description": "Birthday as millisecond timestamp"
                  },
                  "country": {
                    "type": "string",
                    "description": "Guest country"
                  },
                  "source": {
                    "type": "string",
                    "description": "Source of the guest (e.g. LANDING_PAGE, MANUAL)"
                  }
                },
                "required": [
                  "email",
                  "name",
                  "password",
                  "surname"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/guests/search": {
      "post": {
        "operationId": "guests_search",
        "tags": [
          "Guests"
        ],
        "summary": "Search for guests by name, email, or other criteria.",
        "description": "Search for guests by name, email, or other criteria. Returns matching guest profiles.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "guests_search"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "Search term matched against guest name, surname, and email. Omit to list every guest."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/import-jobs": {
      "post": {
        "operationId": "import_jobs_create",
        "tags": [
          "Import jobs"
        ],
        "summary": "Create an async import job.",
        "description": "Create an async import job. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "import_jobs_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "entityId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/import-jobs/{id}": {
      "get": {
        "operationId": "import_jobs_get",
        "tags": [
          "Import jobs"
        ],
        "summary": "Get an async import job by ID.",
        "description": "Get an async import job by ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "import_jobs_get"
        ]
      }
    },
    "/import-jobs/{id}/cancel": {
      "post": {
        "operationId": "import_jobs_cancel",
        "tags": [
          "Import jobs"
        ],
        "summary": "Cancel an async import job.",
        "description": "Cancel an async import job. This changes import state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "import_jobs_cancel"
        ]
      }
    },
    "/import-jobs/{id}/mark-reviewed": {
      "post": {
        "operationId": "import_jobs_mark_reviewed",
        "tags": [
          "Import jobs"
        ],
        "summary": "Mark an async import job as reviewed.",
        "description": "Mark an async import job as reviewed. This writes account data and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "import_jobs_mark_reviewed"
        ]
      }
    },
    "/import-jobs/list": {
      "get": {
        "operationId": "import_jobs_list",
        "tags": [
          "Import jobs"
        ],
        "summary": "List async import jobs.",
        "description": "List async import jobs.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "jobs": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "import_jobs_list"
        ]
      }
    },
    "/inventory/{propertyId}": {
      "get": {
        "operationId": "inventory_list",
        "tags": [
          "Inventory"
        ],
        "summary": "List inventory rows for a property.",
        "description": "List inventory rows for a property.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "description": "Property ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "property": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "propertyName": {
                          "type": "string"
                        },
                        "internalName": {
                          "type": "string"
                        },
                        "address": {
                          "type": "string"
                        },
                        "heroImage": {},
                        "images": {
                          "type": "array",
                          "items": {}
                        }
                      }
                    },
                    "inventoryType": {
                      "type": "string"
                    },
                    "items": {
                      "type": "array",
                      "items": {}
                    },
                    "catalog": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "category": {
                            "type": "string"
                          },
                          "unit": {
                            "type": "string"
                          },
                          "suggestedMinimum": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "categories": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "units": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "lowStockCount": {
                      "type": "integer"
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "inventory.read"
        ],
        "x-mtro-mcp-tools": [
          "inventory_list"
        ]
      }
    },
    "/inventory/{propertyId}/items": {
      "post": {
        "operationId": "inventory_create_item",
        "tags": [
          "Inventory"
        ],
        "summary": "Create an inventory row for a property.",
        "description": "Create an inventory row for a property. This writes account data and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "description": "Property ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "inventory.write"
        ],
        "x-mtro-mcp-tools": [
          "inventory_create_item"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "brand": {},
                  "catalogKey": {},
                  "category": {},
                  "inventoryType": {},
                  "lastCheckedAt": {},
                  "location": {},
                  "minimumQuantity": {},
                  "model": {},
                  "name": {},
                  "notes": {},
                  "notifyBelowMinimum": {},
                  "quantity": {},
                  "serialNumber": {},
                  "sortOrder": {},
                  "unit": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/inventory/{propertyId}/items/{itemId}": {
      "delete": {
        "operationId": "inventory_delete_item",
        "tags": [
          "Inventory"
        ],
        "summary": "Delete an inventory row for a property.",
        "description": "Delete an inventory row for a property. This is destructive and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "description": "Property ID.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "description": "Inventory item ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "inventory.write"
        ],
        "x-mtro-mcp-tools": [
          "inventory_delete_item"
        ]
      },
      "patch": {
        "operationId": "inventory_update_item",
        "tags": [
          "Inventory"
        ],
        "summary": "Update an inventory row for a property.",
        "description": "Update an inventory row for a property. This writes account data and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "description": "Property ID.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "description": "Inventory item ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "inventory.write"
        ],
        "x-mtro-mcp-tools": [
          "inventory_update_item"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {},
                "description": "Inventory item fields to update."
              }
            }
          }
        }
      }
    },
    "/inventory/catalog": {
      "get": {
        "operationId": "inventory_catalog",
        "tags": [
          "Inventory"
        ],
        "summary": "List common property inventory catalog items, categories, and units.",
        "description": "List common property inventory catalog items, categories, and units.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "catalog": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "category": {
                            "type": "string"
                          },
                          "unit": {
                            "type": "string"
                          },
                          "suggestedMinimum": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "categories": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "units": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "inventory_catalog"
        ]
      }
    },
    "/leads": {
      "post": {
        "operationId": "leads_create",
        "tags": [
          "Leads"
        ],
        "summary": "Create a new lead in the CRM pipeline.",
        "description": "Create a new lead in the CRM pipeline.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.write"
        ],
        "x-mtro-mcp-tools": [
          "leads_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tenantName": {
                    "type": "string",
                    "description": "Lead contact name. Required by Core."
                  },
                  "emailAddress": {
                    "type": "string",
                    "description": "Lead email address"
                  },
                  "phoneNumber": {
                    "type": "string",
                    "description": "Lead phone number"
                  },
                  "service": {
                    "type": "string",
                    "description": "Lead source, e.g. Furnished Finder, Airbnb, Manual. Defaults to Manual."
                  },
                  "specialNotes": {
                    "type": "string",
                    "description": "Notes about the lead"
                  },
                  "stageId": {
                    "type": "string",
                    "description": "Pipeline stage ID. Read the stage list first, ids are per-entity."
                  },
                  "propertyId": {
                    "type": "string",
                    "description": "Property ID if the lead is interested in a specific property"
                  },
                  "destination": {
                    "type": "string",
                    "description": "Destination the lead is looking for"
                  },
                  "startDate": {
                    "type": "number",
                    "description": "Desired start date as millisecond timestamp"
                  },
                  "endDate": {
                    "type": "number",
                    "description": "Desired end date as millisecond timestamp"
                  },
                  "lengthOfStay": {
                    "type": "string",
                    "description": "Desired length of stay"
                  },
                  "numberOfTravelers": {
                    "type": "number",
                    "description": "Number of travelers"
                  },
                  "budget": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Guest budget in USD"
                  },
                  "monthlyRate": {
                    "type": "number",
                    "description": "Monthly rate the lead was quoted"
                  },
                  "staffingCompany": {
                    "type": "string",
                    "description": "Staffing or contracting company the lead works for"
                  },
                  "petInformation": {
                    "type": "string",
                    "description": "Pets travelling with the lead"
                  }
                },
                "required": [
                  "tenantName"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/leads/{leadId}": {
      "delete": {
        "operationId": "leads_delete",
        "tags": [
          "Leads"
        ],
        "summary": "Delete a lead from the CRM.",
        "description": "Delete a lead from the CRM. This action cannot be undone.",
        "parameters": [
          {
            "name": "leadId",
            "in": "path",
            "required": true,
            "description": "The lead ID to delete",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.write"
        ],
        "x-mtro-mcp-tools": [
          "leads_delete"
        ]
      },
      "patch": {
        "operationId": "leads_update",
        "tags": [
          "Leads"
        ],
        "summary": "Update an existing lead's information.",
        "description": "Update an existing lead's information.",
        "parameters": [
          {
            "name": "leadId",
            "in": "path",
            "required": true,
            "description": "The lead ID to update",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.write"
        ],
        "x-mtro-mcp-tools": [
          "leads_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tenantName": {
                    "type": "string",
                    "description": "Updated contact name"
                  },
                  "emailAddress": {
                    "type": "string",
                    "description": "Updated email address"
                  },
                  "phoneNumber": {
                    "type": "string",
                    "description": "Updated phone number"
                  },
                  "specialNotes": {
                    "type": "string",
                    "description": "Updated notes"
                  },
                  "propertyId": {
                    "type": "string",
                    "description": "Updated property ID"
                  },
                  "destination": {
                    "type": "string",
                    "description": "Updated destination"
                  },
                  "startDate": {
                    "type": "number",
                    "description": "Updated start date as millisecond timestamp"
                  },
                  "endDate": {
                    "type": "number",
                    "description": "Updated end date as millisecond timestamp"
                  },
                  "lengthOfStay": {
                    "type": "string",
                    "description": "Updated length of stay"
                  },
                  "numberOfTravelers": {
                    "type": "number",
                    "description": "Updated number of travelers"
                  },
                  "budget": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Guest budget in USD"
                  },
                  "monthlyRate": {
                    "type": "number",
                    "description": "Updated monthly rate"
                  },
                  "staffingCompany": {
                    "type": "string",
                    "description": "Updated staffing or contracting company"
                  },
                  "petInformation": {
                    "type": "string",
                    "description": "Updated pet information"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/leads/search": {
      "get": {
        "operationId": "leads_list",
        "tags": [
          "Leads"
        ],
        "summary": "Search compact Lead records for the current owner.",
        "description": "Search compact Lead records for the current owner. Date bounds are inclusive move-in calendar dates (YYYY-MM-DD). Closed/converted leads are excluded unless includeClosed is true. Follow pagination.nextCursor with the same filters until hasMore is false; an empty page can still have more records. Do not infer a complete count from one page.",
        "parameters": [
          {
            "name": "leadId",
            "in": "query",
            "required": false,
            "description": "Read exactly one Lead from a previous search.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "startDateFrom",
            "in": "query",
            "required": false,
            "description": "Inclusive earliest desired move-in date.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            }
          },
          {
            "name": "startDateTo",
            "in": "query",
            "required": false,
            "description": "Inclusive latest desired move-in date.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            }
          },
          {
            "name": "includeClosed",
            "in": "query",
            "required": false,
            "description": "Include converted/lost/closed leads only when requested.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "Literal name, email or destination filter.",
            "schema": {
              "type": "string",
              "maxLength": 100
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Exact nextCursor from the previous page, with unchanged filters.",
            "schema": {
              "type": "string",
              "maxLength": 400
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum matching leads in this page; defaults to 40.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "leads_list"
        ]
      }
    },
    "/leads/update-stage": {
      "post": {
        "operationId": "leads_update_stage",
        "tags": [
          "Leads"
        ],
        "summary": "Move a lead to a different pipeline stage.",
        "description": "Move a lead to a different pipeline stage.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.write"
        ],
        "x-mtro-mcp-tools": [
          "leads_update_stage"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "leadId": {
                    "type": "string",
                    "description": "The lead ID to move"
                  },
                  "stageId": {
                    "type": "string",
                    "description": "The target pipeline stage ID"
                  }
                },
                "required": [
                  "leadId",
                  "stageId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/logs/actions": {
      "post": {
        "operationId": "logs_actions",
        "tags": [
          "Admin utilities"
        ],
        "summary": "List audit log action types.",
        "description": "List audit log action types.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "logs_actions"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "not": {}
                  },
                  {
                    "type": "object",
                    "additionalProperties": {}
                  }
                ],
                "description": "Optional request body passed to MTRO Core."
              }
            }
          }
        }
      }
    },
    "/logs/get": {
      "post": {
        "operationId": "logs_get",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Search audit logs.",
        "description": "Search audit logs.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "logs_get"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "action": {},
                  "endDate": {},
                  "ip": {},
                  "limit": {},
                  "page": {},
                  "startDate": {},
                  "userEmail": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/logs/stats": {
      "post": {
        "operationId": "logs_stats",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Get audit log stats.",
        "description": "Get audit log stats.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "logs_stats"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "endDate": {},
                  "startDate": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/message-templates/create": {
      "post": {
        "operationId": "message_templates_create",
        "tags": [
          "Message templates"
        ],
        "summary": "Create a reusable message template.",
        "description": "Create a reusable message template. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "message_templates_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler. It also passes the body on to internal helpers, so it may accept fields beyond those listed here. Types are not yet documented.",
                "properties": {
                  "body": {},
                  "category": {},
                  "channel": {},
                  "entityOwner": {},
                  "name": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/message-templates/delete": {
      "post": {
        "operationId": "message_templates_delete",
        "tags": [
          "Message templates"
        ],
        "summary": "Delete a reusable message template.",
        "description": "Delete a reusable message template. This is destructive and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "message_templates_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "templateId": {
                    "type": "string",
                    "description": "Message template ID."
                  }
                },
                "required": [
                  "templateId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/message-templates/get/{templateId}": {
      "get": {
        "operationId": "message_templates_get",
        "tags": [
          "Message templates"
        ],
        "summary": "Get a message template by ID.",
        "description": "Get a message template by ID.",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "Message template ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "message_templates_get"
        ]
      }
    },
    "/message-templates/get/entity/{entityId}": {
      "get": {
        "operationId": "message_templates_list",
        "tags": [
          "Message templates"
        ],
        "summary": "List message templates for an entity.",
        "description": "List message templates for an entity.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "Entity ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "templates": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "entityOwner": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "body": {
                            "type": "string"
                          },
                          "category": {
                            "type": "string"
                          },
                          "channel": {
                            "type": "string"
                          },
                          "schedule": {
                            "type": "string"
                          },
                          "scheduleCustom": {},
                          "scheduleFixed": {},
                          "scheduleDescription": {
                            "type": "string"
                          },
                          "createdAt": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "message_templates_list"
        ]
      }
    },
    "/message-templates/update": {
      "post": {
        "operationId": "message_templates_update",
        "tags": [
          "Message templates"
        ],
        "summary": "Update a reusable message template.",
        "description": "Update a reusable message template. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "message_templates_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler. It also passes the body on to internal helpers, so it may accept fields beyond those listed here. Types are not yet documented.",
                "properties": {
                  "body": {},
                  "category": {},
                  "channel": {},
                  "name": {},
                  "schedule": {},
                  "scheduling": {},
                  "templateId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/nav/counts": {
      "get": {
        "operationId": "nav_counts",
        "tags": [
          "Admin utilities"
        ],
        "summary": "Get sidebar/navigation badge counts for the authenticated owner.",
        "description": "Get sidebar/navigation badge counts for the authenticated owner.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "newLeads": {
                      "type": "integer"
                    },
                    "pendingBookings": {
                      "type": "integer"
                    },
                    "applicationActions": {
                      "type": "integer"
                    },
                    "currentGuests": {
                      "type": "integer"
                    },
                    "unreadMessages": {
                      "type": "integer"
                    },
                    "pendingPayments": {
                      "type": "integer"
                    },
                    "todoTasks": {
                      "type": "integer"
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "applications.read",
          "bookings.read",
          "conversations.read",
          "guests.read",
          "leads.read",
          "payments.read",
          "tasks.read"
        ],
        "x-mtro-mcp-tools": [
          "nav_counts"
        ]
      }
    },
    "/notes/create": {
      "post": {
        "operationId": "notes_create",
        "tags": [
          "Notes"
        ],
        "summary": "Add a note to a lead or booking.",
        "description": "Add a note to a lead or booking.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notes_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entityId": {
                    "type": "string",
                    "description": "The lead or booking ID to add the note to"
                  },
                  "entityType": {
                    "type": "string",
                    "enum": [
                      "lead",
                      "booking"
                    ],
                    "description": "Type of entity: 'lead' or 'booking'"
                  },
                  "text": {
                    "type": "string",
                    "description": "The note text content"
                  }
                },
                "required": [
                  "entityId",
                  "entityType",
                  "text"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/notes/delete": {
      "post": {
        "operationId": "notes_delete",
        "tags": [
          "Notes"
        ],
        "summary": "Delete a note.",
        "description": "Delete a note. This action cannot be undone.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notes_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "noteId": {
                    "type": "string",
                    "description": "The note ID to delete"
                  }
                },
                "required": [
                  "noteId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/notes/get/booking/{entityId}": {
      "get": {
        "operationId": "notes_list_booking",
        "tags": [
          "Notes"
        ],
        "summary": "List all notes for a specific lead or booking.",
        "description": "List all notes for a specific lead or booking.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The lead or booking ID to get notes for",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "notes": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notes_list"
        ]
      }
    },
    "/notes/get/lead/{entityId}": {
      "get": {
        "operationId": "notes_list_lead",
        "tags": [
          "Notes"
        ],
        "summary": "List all notes for a specific lead or booking.",
        "description": "List all notes for a specific lead or booking.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The lead or booking ID to get notes for",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "notes": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notes_list"
        ]
      }
    },
    "/notifications/create": {
      "post": {
        "operationId": "notifications_create",
        "tags": [
          "Notifications"
        ],
        "summary": "Create an in-app notification.",
        "description": "Create an in-app notification. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notifications_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "action": {},
                  "link": {},
                  "message": {},
                  "metadata": {},
                  "title": {},
                  "type": {},
                  "userId": {},
                  "userType": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/notifications/delete": {
      "post": {
        "operationId": "notifications_delete",
        "tags": [
          "Notifications"
        ],
        "summary": "Delete a notification.",
        "description": "Delete a notification. This is destructive and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notifications_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "notificationId": {
                    "type": "string",
                    "description": "The notification ID to delete"
                  }
                },
                "required": [
                  "notificationId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/notifications/get": {
      "get": {
        "operationId": "notifications_list",
        "tags": [
          "Notifications"
        ],
        "summary": "List your notifications.",
        "description": "List your notifications. Supports pagination and filtering for unread only.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Number of notifications to return (default 50)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "required": false,
            "description": "Number of notifications to skip for pagination (default 0)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "unreadOnly",
            "in": "query",
            "required": false,
            "description": "Only return unread notifications",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "notifications": {
                      "type": "array",
                      "items": {}
                    },
                    "total": {
                      "type": "integer"
                    },
                    "unreadCount": {
                      "type": "integer"
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notifications_list"
        ]
      }
    },
    "/notifications/mark-all-read": {
      "post": {
        "operationId": "notifications_mark_all_read",
        "tags": [
          "Notifications"
        ],
        "summary": "Mark all notifications as read.",
        "description": "Mark all notifications as read.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notifications_mark_all_read"
        ]
      }
    },
    "/notifications/mark-read": {
      "post": {
        "operationId": "notifications_mark_read",
        "tags": [
          "Notifications"
        ],
        "summary": "Mark a specific notification as read.",
        "description": "Mark a specific notification as read.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notifications_mark_read"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "notificationId": {
                    "type": "string",
                    "description": "The notification ID to mark as read"
                  }
                },
                "required": [
                  "notificationId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/notifications/send-email": {
      "post": {
        "operationId": "notifications_send_email",
        "tags": [
          "Notifications"
        ],
        "summary": "Send an email with notification context.",
        "description": "Send an email with notification context. This sends external communication and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notifications_send_email"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "action": {},
                  "channels": {},
                  "message": {},
                  "sendNotification": {},
                  "subject": {},
                  "userId": {},
                  "userType": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/notifications/unread-count": {
      "get": {
        "operationId": "notifications_unread_count",
        "tags": [
          "Notifications"
        ],
        "summary": "Get the count of unread notifications.",
        "description": "Get the count of unread notifications.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "unreadCount": {
                      "type": "integer"
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "notifications_unread_count"
        ]
      }
    },
    "/payments/cancel/{id}": {
      "post": {
        "operationId": "payments_cancel",
        "tags": [
          "Payments"
        ],
        "summary": "Cancel a payment.",
        "description": "Cancel a payment. This changes financial state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "payments_cancel"
        ]
      }
    },
    "/payments/capture/{id}": {
      "post": {
        "operationId": "payments_capture",
        "tags": [
          "Payments"
        ],
        "summary": "Capture a payment when supported.",
        "description": "Capture a payment when supported. This changes financial state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "payments_capture"
        ]
      }
    },
    "/payments/check/{id}": {
      "post": {
        "operationId": "payments_check",
        "tags": [
          "Payments"
        ],
        "summary": "Check a payment's current provider status and synchronize MTRO state.",
        "description": "Check a payment's current provider status and synchronize MTRO state.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "payments.read"
        ],
        "x-mtro-mcp-tools": [
          "payments_check"
        ]
      }
    },
    "/payments/create": {
      "post": {
        "operationId": "payments_create",
        "tags": [
          "Payments"
        ],
        "summary": "Create an online Stripe payment.",
        "description": "Create an online Stripe payment. This is externally visible and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "payments.write"
        ],
        "x-mtro-mcp-tools": [
          "payments_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler. It also passes the body on to internal helpers, so it may accept fields beyond those listed here. Types are not yet documented.",
                "properties": {
                  "amount": {},
                  "bookingId": {},
                  "currency": {},
                  "description": {},
                  "dueDate": {},
                  "feePayer": {},
                  "note": {},
                  "notifyGuest": {},
                  "paymentFlow": {},
                  "paymentType": {},
                  "platformFeePayer": {},
                  "stripeAccountRef": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/payments/create-manual": {
      "post": {
        "operationId": "payments_create_manual",
        "tags": [
          "Payments"
        ],
        "summary": "Create a manual payment record.",
        "description": "Create a manual payment record. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "payments.write"
        ],
        "x-mtro-mcp-tools": [
          "payments_create_manual"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler. It also passes the body on to internal helpers, so it may accept fields beyond those listed here. Types are not yet documented.",
                "properties": {
                  "amount": {},
                  "bookingId": {},
                  "currency": {},
                  "description": {},
                  "dueDate": {},
                  "markAsPaid": {},
                  "note": {},
                  "notifyGuest": {},
                  "paymentMethod": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/payments/generate-link/{id}": {
      "post": {
        "operationId": "payments_generate_link",
        "tags": [
          "Payments"
        ],
        "summary": "Generate or refresh a payment checkout link.",
        "description": "Generate or refresh a payment checkout link. This may create a new Stripe session and should require owner confirmation when sent externally.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "payments_generate_link"
        ]
      }
    },
    "/payments/list": {
      "get": {
        "operationId": "payments_list",
        "tags": [
          "Payments"
        ],
        "summary": "List payments visible to the authenticated owner.",
        "description": "List payments visible to the authenticated owner. Returns compact live payment rows with simple paymentRef values like PAY001. Prefer paymentRef over raw ObjectIds in later tool calls.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "payments": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "payments.read"
        ],
        "x-mtro-mcp-tools": [
          "payments_list"
        ]
      }
    },
    "/payments/mark-paid/{id}": {
      "post": {
        "operationId": "payments_mark_paid",
        "tags": [
          "Payments"
        ],
        "summary": "Mark a payment as paid.",
        "description": "Mark a payment as paid. This changes financial state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "payments_mark_paid"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "not": {}
                  },
                  {
                    "type": "object",
                    "additionalProperties": {}
                  }
                ],
                "description": "Optional request body passed to MTRO Core."
              }
            }
          }
        }
      }
    },
    "/payments/recurring/cancel/{groupId}": {
      "post": {
        "operationId": "payments_recurring_cancel",
        "tags": [
          "Payments"
        ],
        "summary": "Cancel a recurring payment group.",
        "description": "Cancel a recurring payment group. This changes financial state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "description": "Recurring group ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "payments_recurring_cancel"
        ]
      }
    },
    "/payments/recurring/create": {
      "post": {
        "operationId": "payments_recurring_create",
        "tags": [
          "Payments"
        ],
        "summary": "Create a recurring payment group.",
        "description": "Create a recurring payment group. This writes financial records and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "payments.write"
        ],
        "x-mtro-mcp-tools": [
          "payments_recurring_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler. It also passes the body on to internal helpers, so it may accept fields beyond those listed here. Types are not yet documented.",
                "properties": {
                  "amount": {},
                  "bookingId": {},
                  "currency": {},
                  "dayOfWeek": {},
                  "description": {},
                  "feePayer": {},
                  "interval": {},
                  "note": {},
                  "notifyGuest": {},
                  "paymentType": {},
                  "platformFeePayer": {},
                  "recurringCount": {},
                  "startDate": {},
                  "stripeAccountRef": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/payments/recurring/list": {
      "get": {
        "operationId": "payments_recurring_list",
        "tags": [
          "Payments"
        ],
        "summary": "List recurring payment groups.",
        "description": "List recurring payment groups.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "groups": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "payments.read"
        ],
        "x-mtro-mcp-tools": [
          "payments_recurring_list"
        ]
      }
    },
    "/payments/recurring/reschedule/{groupId}": {
      "post": {
        "operationId": "payments_recurring_reschedule",
        "tags": [
          "Payments"
        ],
        "summary": "Reschedule a recurring payment group.",
        "description": "Reschedule a recurring payment group. This changes financial state and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "description": "Recurring group ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "payments_recurring_reschedule"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {},
                "description": "Core /payments/recurring/reschedule/:groupId request body."
              }
            }
          }
        }
      }
    },
    "/payments/send-reminder/{id}": {
      "post": {
        "operationId": "payments_send_reminder",
        "tags": [
          "Payments"
        ],
        "summary": "Send a payment reminder to a guest.",
        "description": "Send a payment reminder to a guest. This sends external communication and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "payments.write"
        ],
        "x-mtro-mcp-tools": [
          "payments_send_reminder"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customMessage": {
                    "type": "string",
                    "description": "Optional owner-written message included in the reminder."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/payments/stripe/accounts": {
      "get": {
        "operationId": "stripe_accounts_list",
        "tags": [
          "Payments"
        ],
        "summary": "List Stripe Connect accounts and routing metadata for the authenticated entity.",
        "description": "List Stripe Connect accounts and routing metadata for the authenticated entity.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "accounts": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "stripe_accounts_list"
        ]
      },
      "post": {
        "operationId": "stripe_accounts_create",
        "tags": [
          "Payments"
        ],
        "summary": "Create a Stripe Connect account and onboarding link.",
        "description": "Create a Stripe Connect account and onboarding link. This changes payout routing setup and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "stripe_accounts.manage"
        ],
        "x-mtro-mcp-tools": [
          "stripe_accounts_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "defaultForPropertyIds": {},
                  "label": {},
                  "linkedPropertyIds": {},
                  "paymentTypes": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/payments/stripe/accounts/{id}": {
      "delete": {
        "operationId": "stripe_accounts_delete",
        "tags": [
          "Payments"
        ],
        "summary": "Disconnect/delete a Stripe account.",
        "description": "Disconnect/delete a Stripe account. This changes payout routing and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "stripe_accounts_delete"
        ]
      }
    },
    "/payments/stripe/accounts/{id}/dashboard": {
      "get": {
        "operationId": "stripe_accounts_get_dashboard",
        "tags": [
          "Payments"
        ],
        "summary": "Get a Stripe Express dashboard link for a connected account.",
        "description": "Get a Stripe Express dashboard link for a connected account.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "stripe_accounts_get_dashboard"
        ]
      }
    },
    "/payments/stripe/accounts/{id}/onboarding-link": {
      "get": {
        "operationId": "stripe_accounts_get_onboarding_link",
        "tags": [
          "Payments"
        ],
        "summary": "Get a refreshed onboarding link for a Stripe account.",
        "description": "Get a refreshed onboarding link for a Stripe account.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "stripe_accounts_get_onboarding_link"
        ]
      }
    },
    "/payments/stripe/accounts/{id}/references": {
      "get": {
        "operationId": "stripe_accounts_get_references",
        "tags": [
          "Payments"
        ],
        "summary": "Get references that would block disconnecting a Stripe account.",
        "description": "Get references that would block disconnecting a Stripe account.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "stripe_accounts_get_references"
        ]
      }
    },
    "/payments/stripe/accounts/{id}/set-default": {
      "post": {
        "operationId": "stripe_accounts_set_default",
        "tags": [
          "Payments"
        ],
        "summary": "Set a Stripe account as the entity default.",
        "description": "Set a Stripe account as the entity default. This changes routing and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "stripe_accounts_set_default"
        ]
      }
    },
    "/payments/stripe/accounts/{id}/status": {
      "get": {
        "operationId": "stripe_accounts_refresh_status",
        "tags": [
          "Payments"
        ],
        "summary": "Refresh and return Stripe account onboarding/status information.",
        "description": "Refresh and return Stripe account onboarding/status information.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "stripe_accounts_refresh_status"
        ]
      }
    },
    "/payments/stripe/accounts/{id}/update": {
      "post": {
        "operationId": "stripe_accounts_update",
        "tags": [
          "Payments"
        ],
        "summary": "Update Stripe account label, payment type routing, linked properties, or property defaults.",
        "description": "Update Stripe account label, payment type routing, linked properties, or property defaults. This changes routing and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "stripe_accounts.manage"
        ],
        "x-mtro-mcp-tools": [
          "stripe_accounts_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "defaultForPropertyIds": {},
                  "label": {},
                  "linkedPropertyIds": {},
                  "paymentTypes": {},
                  "propertyIds": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/payments/update/{id}": {
      "post": {
        "operationId": "payments_update",
        "tags": [
          "Payments"
        ],
        "summary": "Update a payment.",
        "description": "Update a payment. This writes account data and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "payments_update"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {},
                "description": "Core /payments/update/:id request body."
              }
            }
          }
        }
      }
    },
    "/pipeline-stages/create": {
      "post": {
        "operationId": "pipeline_stages_create",
        "tags": [
          "Pipeline stages"
        ],
        "summary": "Create a new pipeline stage for the CRM.",
        "description": "Create a new pipeline stage for the CRM.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.write"
        ],
        "x-mtro-mcp-tools": [
          "pipeline_stages_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Stage name (e.g. New, Contacted, Qualified, Won, Lost)"
                  },
                  "color": {
                    "type": "string",
                    "description": "Hex color code for the stage (e.g. #3B82F6)"
                  },
                  "isDefault": {
                    "type": "boolean",
                    "description": "Whether this is the default stage for new leads"
                  },
                  "isTerminal": {
                    "type": "boolean",
                    "description": "Whether this is a terminal/final stage"
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/pipeline-stages/delete": {
      "post": {
        "operationId": "pipeline_stages_delete",
        "tags": [
          "Pipeline stages"
        ],
        "summary": "Delete a pipeline stage.",
        "description": "Delete a pipeline stage. This action cannot be undone.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.write"
        ],
        "x-mtro-mcp-tools": [
          "pipeline_stages_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "stageId": {
                    "type": "string",
                    "description": "The stage ID to delete"
                  }
                },
                "required": [
                  "stageId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/pipeline-stages/get/entity/{entityId}": {
      "get": {
        "operationId": "pipeline_stages_list",
        "tags": [
          "Pipeline stages"
        ],
        "summary": "List all pipeline stages for a given entity.",
        "description": "List all pipeline stages for a given entity. Pipeline stages define the CRM workflow for leads.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The entity ID to get stages for",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "stages": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "entityId": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "color": {
                            "type": "string"
                          },
                          "order": {
                            "type": "integer"
                          },
                          "isDefault": {
                            "type": "boolean"
                          },
                          "isTerminal": {
                            "type": "boolean"
                          },
                          "lastUpdated": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.read"
        ],
        "x-mtro-mcp-tools": [
          "pipeline_stages_list"
        ]
      }
    },
    "/pipeline-stages/reorder": {
      "post": {
        "operationId": "pipeline_stages_reorder",
        "tags": [
          "Pipeline stages"
        ],
        "summary": "Reorder CRM pipeline stages.",
        "description": "Reorder CRM pipeline stages. This writes workflow configuration and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.write"
        ],
        "x-mtro-mcp-tools": [
          "pipeline_stages_reorder"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "stageIds": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/pipeline-stages/update": {
      "post": {
        "operationId": "pipeline_stages_update",
        "tags": [
          "Pipeline stages"
        ],
        "summary": "Update a pipeline stage.",
        "description": "Update a pipeline stage.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "leads.write"
        ],
        "x-mtro-mcp-tools": [
          "pipeline_stages_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "stageId": {
                    "type": "string",
                    "description": "The stage ID to update"
                  },
                  "name": {
                    "type": "string",
                    "description": "Updated stage name"
                  },
                  "color": {
                    "type": "string",
                    "description": "Updated hex color code"
                  },
                  "isDefault": {
                    "type": "boolean",
                    "description": "Whether this is the default stage"
                  },
                  "isTerminal": {
                    "type": "boolean",
                    "description": "Whether this is a terminal stage"
                  }
                },
                "required": [
                  "stageId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/polls/active": {
      "get": {
        "operationId": "polls_active",
        "tags": [
          "Polls"
        ],
        "summary": "List polls active for the current owner.",
        "description": "List polls active for the current owner.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "polls": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "polls_active"
        ]
      }
    },
    "/polls/get/{pollId}": {
      "get": {
        "operationId": "polls_get",
        "tags": [
          "Polls"
        ],
        "summary": "Get a poll by ID.",
        "description": "Get a poll by ID.",
        "parameters": [
          {
            "name": "pollId",
            "in": "path",
            "required": true,
            "description": "Poll ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "polls_get"
        ]
      }
    },
    "/polls/get/all": {
      "get": {
        "operationId": "polls_list",
        "tags": [
          "Polls"
        ],
        "summary": "List polls.",
        "description": "List polls.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "polls_list"
        ]
      }
    },
    "/polls/results/{pollId}": {
      "get": {
        "operationId": "polls_results",
        "tags": [
          "Polls"
        ],
        "summary": "Get poll results.",
        "description": "Get poll results.",
        "parameters": [
          {
            "name": "pollId",
            "in": "path",
            "required": true,
            "description": "Poll ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "polls_results"
        ]
      }
    },
    "/polls/vote": {
      "post": {
        "operationId": "polls_vote",
        "tags": [
          "Polls"
        ],
        "summary": "Vote on a poll.",
        "description": "Vote on a poll. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "polls_vote"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "optionIndex": {},
                  "pollId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/properties/create": {
      "post": {
        "operationId": "properties_create",
        "tags": [
          "Properties"
        ],
        "summary": "Create a new property.",
        "description": "Create a new property. Required fields: propertyName, address, bedrooms, bathrooms, squareFootage. Optional: description, amenities, rate, minimumDays, maxGuests, pets, templateId, location.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "properties.create"
        ],
        "x-mtro-mcp-tools": [
          "properties_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "propertyName": {
                    "type": "string",
                    "description": "Property name (must be unique)"
                  },
                  "address": {
                    "type": "string",
                    "description": "Full address of the property"
                  },
                  "bedrooms": {
                    "type": "number",
                    "description": "Number of bedrooms"
                  },
                  "bathrooms": {
                    "type": "number",
                    "description": "Number of bathrooms"
                  },
                  "squareFootage": {
                    "type": "number",
                    "description": "Square footage of the property"
                  },
                  "description": {
                    "type": "string",
                    "description": "Property description (max 500 chars)"
                  },
                  "amenities": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "boolean"
                    },
                    "description": "Amenities object, e.g. {wifi: true, pool: true}"
                  },
                  "rate": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "month": {
                          "type": "number"
                        },
                        "rate": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "month",
                        "rate"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Monthly rates array, e.g. [{month: 1, rate: 150}, {month: 6, rate: 200}]"
                  },
                  "minimumDays": {
                    "type": "number",
                    "description": "Minimum booking days (default 1)"
                  },
                  "maxGuests": {
                    "type": "object",
                    "properties": {
                      "adults": {
                        "type": "number"
                      },
                      "children": {
                        "type": "number"
                      },
                      "infants": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "adults"
                    ],
                    "additionalProperties": false,
                    "description": "Maximum guests allowed"
                  },
                  "templateId": {
                    "type": "string",
                    "description": "Lease template ID to use for this property"
                  }
                },
                "required": [
                  "propertyName",
                  "address",
                  "bedrooms",
                  "bathrooms",
                  "squareFootage"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/properties/delete": {
      "post": {
        "operationId": "properties_delete",
        "tags": [
          "Properties"
        ],
        "summary": "Delete a property by its ID.",
        "description": "Delete a property by its ID. This action cannot be undone.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "properties.write"
        ],
        "x-mtro-mcp-tools": [
          "properties_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "propertyId": {
                    "type": "string",
                    "description": "The property ID to delete"
                  }
                },
                "required": [
                  "propertyId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/properties/get/{propertyId}": {
      "get": {
        "operationId": "properties_get",
        "tags": [
          "Properties"
        ],
        "summary": "Get detailed information about a specific property by its ID.",
        "description": "Get detailed information about a specific property by its ID.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "description": "The property ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "property": {
                      "type": "object",
                      "properties": {
                        "amenities": {
                          "type": "object",
                          "properties": {
                            "airConditioning": {
                              "type": "boolean"
                            },
                            "heating": {
                              "type": "boolean"
                            },
                            "balcony": {
                              "type": "boolean"
                            },
                            "bedLinens": {
                              "type": "boolean"
                            },
                            "booksAndReading": {
                              "type": "boolean"
                            },
                            "clothingStorage": {
                              "type": "boolean"
                            },
                            "coffee": {
                              "type": "boolean"
                            },
                            "diningTable": {
                              "type": "boolean"
                            },
                            "hangers": {
                              "type": "boolean"
                            },
                            "hotWater": {
                              "type": "boolean"
                            },
                            "laundry": {
                              "type": "boolean"
                            },
                            "storage": {
                              "type": "boolean"
                            },
                            "nonSmoking": {
                              "type": "boolean"
                            },
                            "breakfastIncluded": {
                              "type": "boolean"
                            },
                            "roomDarkeningShades": {
                              "type": "boolean"
                            },
                            "quietEnvironment": {
                              "type": "boolean"
                            },
                            "housekeeping": {
                              "type": "boolean"
                            },
                            "petFriendly": {
                              "type": "boolean"
                            },
                            "petsLiveOnProperty": {
                              "type": "boolean"
                            },
                            "indoorFireplace": {
                              "type": "boolean"
                            },
                            "packNPlayTravelCrib": {
                              "type": "boolean"
                            },
                            "portableFans": {
                              "type": "boolean"
                            },
                            "hotTub": {
                              "type": "boolean"
                            },
                            "dedicatedWorkspace": {
                              "type": "boolean"
                            },
                            "fullSizeIroningBoard": {
                              "type": "boolean"
                            },
                            "closeToPublicTransportation": {
                              "type": "boolean"
                            },
                            "washer": {
                              "type": "boolean"
                            },
                            "wifi": {
                              "type": "boolean"
                            },
                            "internet": {
                              "type": "boolean"
                            },
                            "tv": {
                              "type": "boolean"
                            },
                            "smartTv": {
                              "type": "boolean"
                            },
                            "cableTv": {
                              "type": "boolean"
                            },
                            "dvr": {
                              "type": "boolean"
                            },
                            "gameConsole": {
                              "type": "boolean"
                            },
                            "kitchen": {
                              "type": "boolean"
                            },
                            "fullKitchen": {
                              "type": "boolean"
                            },
                            "kitchenette": {
                              "type": "boolean"
                            },
                            "dishwasher": {
                              "type": "boolean"
                            },
                            "microwave": {
                              "type": "boolean"
                            },
                            "refrigerator": {
                              "type": "boolean"
                            },
                            "fullSizeFridge": {
                              "type": "boolean"
                            },
                            "stove": {
                              "type": "boolean"
                            },
                            "stovetop": {
                              "type": "boolean"
                            },
                            "toaster": {
                              "type": "boolean"
                            },
                            "coffeeMaker": {
                              "type": "boolean"
                            },
                            "blender": {
                              "type": "boolean"
                            },
                            "bakingSheet": {
                              "type": "boolean"
                            },
                            "cookingBasics": {
                              "type": "boolean"
                            },
                            "kitchenEssentials": {
                              "type": "boolean"
                            },
                            "starterKitchenEssentials": {
                              "type": "boolean"
                            },
                            "dishesAndSilverware": {
                              "type": "boolean"
                            },
                            "wineGlasses": {
                              "type": "boolean"
                            },
                            "bidet": {
                              "type": "boolean"
                            },
                            "hairDryer": {
                              "type": "boolean"
                            },
                            "shampoo": {
                              "type": "boolean"
                            },
                            "conditioner": {
                              "type": "boolean"
                            },
                            "showerGel": {
                              "type": "boolean"
                            },
                            "starterToiletries": {
                              "type": "boolean"
                            },
                            "cleaningProductsBathroom": {
                              "type": "boolean"
                            },
                            "rainShower": {
                              "type": "boolean"
                            },
                            "gym": {
                              "type": "boolean"
                            },
                            "pool": {
                              "type": "boolean"
                            },
                            "exerciseEquipment": {
                              "type": "boolean"
                            },
                            "carbonMonoxideAlarm": {
                              "type": "boolean"
                            },
                            "smokeAlarm": {
                              "type": "boolean"
                            },
                            "fireExtinguisher": {
                              "type": "boolean"
                            },
                            "firstAidKit": {
                              "type": "boolean"
                            },
                            "cleaningProducts": {
                              "type": "boolean"
                            },
                            "security": {
                              "type": "boolean"
                            },
                            "gated": {
                              "type": "boolean"
                            },
                            "alarm": {
                              "type": "boolean"
                            },
                            "parking": {
                              "type": "boolean"
                            },
                            "evCharger": {
                              "type": "boolean"
                            },
                            "elevator": {
                              "type": "boolean"
                            },
                            "wheelchairAccessible": {
                              "type": "boolean"
                            },
                            "disabledParkingAvailable": {
                              "type": "boolean"
                            },
                            "wideHallways": {
                              "type": "boolean"
                            },
                            "stairsAtEntranceOrInside": {
                              "type": "boolean"
                            },
                            "unfurnished": {
                              "type": "boolean"
                            },
                            "kindergarten": {
                              "type": "boolean"
                            }
                          }
                        },
                        "maxGuests": {
                          "type": "object",
                          "properties": {
                            "adults": {
                              "type": "integer"
                            },
                            "children": {
                              "type": "integer"
                            },
                            "infants": {
                              "type": "integer"
                            }
                          }
                        },
                        "pets": {
                          "type": "object",
                          "properties": {
                            "allowPets": {
                              "type": "boolean"
                            },
                            "petRateCalculation": {
                              "type": "string"
                            },
                            "petRateAmount": {
                              "type": "string"
                            },
                            "dogs": {
                              "type": "array",
                              "items": {}
                            },
                            "cats": {
                              "type": "array",
                              "items": {}
                            },
                            "others": {
                              "type": "array",
                              "items": {}
                            }
                          }
                        },
                        "_id": {
                          "type": "string"
                        },
                        "propertyName": {
                          "type": "string"
                        },
                        "internalName": {
                          "type": "string"
                        },
                        "furnishedFinderPropertyId": {
                          "type": "string"
                        },
                        "coHosting": {
                          "type": "boolean"
                        },
                        "isListed": {
                          "type": "boolean"
                        },
                        "description": {
                          "type": "string"
                        },
                        "address": {
                          "type": "string"
                        },
                        "city": {
                          "type": "string"
                        },
                        "state": {
                          "type": "string"
                        },
                        "zipCode": {
                          "type": "string"
                        },
                        "aptSuite": {
                          "type": "string"
                        },
                        "internalNotes": {
                          "type": "string"
                        },
                        "timezone": {
                          "type": "string"
                        },
                        "checkInTime": {
                          "type": "string"
                        },
                        "checkOutTime": {
                          "type": "string"
                        },
                        "turnoverBufferMinutes": {
                          "type": "integer"
                        },
                        "bedrooms": {
                          "type": "integer"
                        },
                        "bathrooms": {
                          "type": "integer"
                        },
                        "squareFootage": {
                          "type": "integer"
                        },
                        "entityOwner": {
                          "type": "string"
                        },
                        "additionalOwners": {
                          "type": "array",
                          "items": {}
                        },
                        "stripeAccountId": {},
                        "stripeAccountStatus": {},
                        "defaultStripeAccountId": {},
                        "images": {
                          "type": "array",
                          "items": {}
                        },
                        "heroImage": {},
                        "minimumDays": {
                          "type": "integer"
                        },
                        "paymentMethod": {
                          "type": "string"
                        },
                        "lateFeeAmount": {},
                        "lateFeePeriod": {
                          "type": "string"
                        },
                        "lastUpdated": {
                          "type": "integer"
                        },
                        "templateId": {
                          "type": "string"
                        },
                        "leaseDocuments": {
                          "type": "array",
                          "items": {}
                        },
                        "defaultMergeFieldValues": {
                          "type": "object",
                          "properties": {}
                        },
                        "rate": {
                          "type": "array",
                          "items": {}
                        },
                        "syncCalendars": {
                          "type": "array",
                          "items": {}
                        },
                        "__v": {
                          "type": "integer"
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "properties.read"
        ],
        "x-mtro-mcp-tools": [
          "properties_get"
        ]
      }
    },
    "/properties/get/{propertyId}/synced-calendar-events": {
      "get": {
        "operationId": "properties_get_synced_calendar_events",
        "tags": [
          "Properties"
        ],
        "summary": "Get imported/synced calendar events for a property.",
        "description": "Get imported/synced calendar events for a property.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "description": "The property ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "events": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "properties_get_synced_calendar_events"
        ]
      }
    },
    "/properties/get/all": {
      "get": {
        "operationId": "properties_list",
        "tags": [
          "Properties"
        ],
        "summary": "List all properties you have access to.",
        "description": "List all properties you have access to. Returns property names, addresses, bedrooms, bathrooms, rates, and more.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "properties": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "propertyName": {
                            "type": "string"
                          },
                          "internalName": {
                            "type": "string"
                          },
                          "furnishedFinderPropertyId": {
                            "type": "string"
                          },
                          "coHosting": {
                            "type": "boolean"
                          },
                          "isListed": {
                            "type": "boolean"
                          },
                          "description": {
                            "type": "string"
                          },
                          "address": {
                            "type": "string"
                          },
                          "city": {
                            "type": "string"
                          },
                          "state": {
                            "type": "string"
                          },
                          "zipCode": {
                            "type": "string"
                          },
                          "aptSuite": {
                            "type": "string"
                          },
                          "internalNotes": {
                            "type": "string"
                          },
                          "timezone": {
                            "type": "string"
                          },
                          "checkInTime": {
                            "type": "string"
                          },
                          "checkOutTime": {
                            "type": "string"
                          },
                          "turnoverBufferMinutes": {
                            "type": "integer"
                          },
                          "bedrooms": {
                            "type": "integer"
                          },
                          "bathrooms": {
                            "type": "integer"
                          },
                          "squareFootage": {
                            "type": "integer"
                          },
                          "amenities": {
                            "type": "object",
                            "properties": {
                              "airConditioning": {
                                "type": "boolean"
                              },
                              "heating": {
                                "type": "boolean"
                              },
                              "balcony": {
                                "type": "boolean"
                              },
                              "bedLinens": {
                                "type": "boolean"
                              },
                              "booksAndReading": {
                                "type": "boolean"
                              },
                              "clothingStorage": {
                                "type": "boolean"
                              },
                              "coffee": {
                                "type": "boolean"
                              },
                              "diningTable": {
                                "type": "boolean"
                              },
                              "hangers": {
                                "type": "boolean"
                              },
                              "hotWater": {
                                "type": "boolean"
                              },
                              "laundry": {
                                "type": "boolean"
                              },
                              "storage": {
                                "type": "boolean"
                              },
                              "nonSmoking": {
                                "type": "boolean"
                              },
                              "breakfastIncluded": {
                                "type": "boolean"
                              },
                              "roomDarkeningShades": {
                                "type": "boolean"
                              },
                              "quietEnvironment": {
                                "type": "boolean"
                              },
                              "housekeeping": {
                                "type": "boolean"
                              },
                              "petFriendly": {
                                "type": "boolean"
                              },
                              "petsLiveOnProperty": {
                                "type": "boolean"
                              },
                              "indoorFireplace": {
                                "type": "boolean"
                              },
                              "packNPlayTravelCrib": {
                                "type": "boolean"
                              },
                              "portableFans": {
                                "type": "boolean"
                              },
                              "hotTub": {
                                "type": "boolean"
                              },
                              "dedicatedWorkspace": {
                                "type": "boolean"
                              },
                              "fullSizeIroningBoard": {
                                "type": "boolean"
                              },
                              "closeToPublicTransportation": {
                                "type": "boolean"
                              },
                              "washer": {
                                "type": "boolean"
                              },
                              "wifi": {
                                "type": "boolean"
                              },
                              "internet": {
                                "type": "boolean"
                              },
                              "tv": {
                                "type": "boolean"
                              },
                              "smartTv": {
                                "type": "boolean"
                              },
                              "cableTv": {
                                "type": "boolean"
                              },
                              "dvr": {
                                "type": "boolean"
                              },
                              "gameConsole": {
                                "type": "boolean"
                              },
                              "kitchen": {
                                "type": "boolean"
                              },
                              "fullKitchen": {
                                "type": "boolean"
                              },
                              "kitchenette": {
                                "type": "boolean"
                              },
                              "dishwasher": {
                                "type": "boolean"
                              },
                              "microwave": {
                                "type": "boolean"
                              },
                              "refrigerator": {
                                "type": "boolean"
                              },
                              "fullSizeFridge": {
                                "type": "boolean"
                              },
                              "stove": {
                                "type": "boolean"
                              },
                              "stovetop": {
                                "type": "boolean"
                              },
                              "toaster": {
                                "type": "boolean"
                              },
                              "coffeeMaker": {
                                "type": "boolean"
                              },
                              "blender": {
                                "type": "boolean"
                              },
                              "bakingSheet": {
                                "type": "boolean"
                              },
                              "cookingBasics": {
                                "type": "boolean"
                              },
                              "kitchenEssentials": {
                                "type": "boolean"
                              },
                              "starterKitchenEssentials": {
                                "type": "boolean"
                              },
                              "dishesAndSilverware": {
                                "type": "boolean"
                              },
                              "wineGlasses": {
                                "type": "boolean"
                              },
                              "bidet": {
                                "type": "boolean"
                              },
                              "hairDryer": {
                                "type": "boolean"
                              },
                              "shampoo": {
                                "type": "boolean"
                              },
                              "conditioner": {
                                "type": "boolean"
                              },
                              "showerGel": {
                                "type": "boolean"
                              },
                              "starterToiletries": {
                                "type": "boolean"
                              },
                              "cleaningProductsBathroom": {
                                "type": "boolean"
                              },
                              "rainShower": {
                                "type": "boolean"
                              },
                              "gym": {
                                "type": "boolean"
                              },
                              "pool": {
                                "type": "boolean"
                              },
                              "exerciseEquipment": {
                                "type": "boolean"
                              },
                              "carbonMonoxideAlarm": {
                                "type": "boolean"
                              },
                              "smokeAlarm": {
                                "type": "boolean"
                              },
                              "fireExtinguisher": {
                                "type": "boolean"
                              },
                              "firstAidKit": {
                                "type": "boolean"
                              },
                              "cleaningProducts": {
                                "type": "boolean"
                              },
                              "security": {
                                "type": "boolean"
                              },
                              "gated": {
                                "type": "boolean"
                              },
                              "alarm": {
                                "type": "boolean"
                              },
                              "parking": {
                                "type": "boolean"
                              },
                              "evCharger": {
                                "type": "boolean"
                              },
                              "elevator": {
                                "type": "boolean"
                              },
                              "wheelchairAccessible": {
                                "type": "boolean"
                              },
                              "disabledParkingAvailable": {
                                "type": "boolean"
                              },
                              "wideHallways": {
                                "type": "boolean"
                              },
                              "stairsAtEntranceOrInside": {
                                "type": "boolean"
                              },
                              "unfurnished": {
                                "type": "boolean"
                              },
                              "kindergarten": {
                                "type": "boolean"
                              }
                            }
                          },
                          "entityOwner": {
                            "type": "string"
                          },
                          "additionalOwners": {
                            "type": "array",
                            "items": {}
                          },
                          "images": {
                            "type": "array",
                            "items": {}
                          },
                          "heroImage": {},
                          "rate": {
                            "type": "array",
                            "items": {}
                          },
                          "minimumDays": {
                            "type": "integer"
                          },
                          "paymentMethod": {
                            "type": "string"
                          },
                          "lateFeeAmount": {},
                          "lateFeePeriod": {
                            "type": "string"
                          },
                          "syncCalendars": {
                            "type": "array",
                            "items": {}
                          },
                          "lastUpdated": {
                            "type": "integer"
                          },
                          "location": {
                            "type": "object",
                            "properties": {}
                          },
                          "maxGuests": {
                            "type": "object",
                            "properties": {
                              "adults": {
                                "type": "integer"
                              },
                              "children": {
                                "type": "integer"
                              },
                              "infants": {
                                "type": "integer"
                              }
                            }
                          },
                          "pets": {
                            "type": "object",
                            "properties": {
                              "allowPets": {
                                "type": "boolean"
                              },
                              "petRateCalculation": {
                                "type": "string"
                              },
                              "petRateAmount": {
                                "type": "string"
                              },
                              "dogs": {
                                "type": "array",
                                "items": {}
                              },
                              "cats": {
                                "type": "array",
                                "items": {}
                              },
                              "others": {
                                "type": "array",
                                "items": {}
                              }
                            }
                          },
                          "templateId": {
                            "type": "string"
                          },
                          "leaseDocuments": {
                            "type": "array",
                            "items": {}
                          },
                          "defaultMergeFieldValues": {
                            "type": "object",
                            "properties": {}
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "properties.read"
        ],
        "x-mtro-mcp-tools": [
          "properties_list"
        ]
      }
    },
    "/properties/get/entity/{entityId}": {
      "get": {
        "operationId": "properties_get_by_entity",
        "tags": [
          "Properties"
        ],
        "summary": "Get all properties belonging to a specific entity (admin only).",
        "description": "Get all properties belonging to a specific entity (admin only).",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The entity ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "properties_get_by_entity"
        ]
      }
    },
    "/properties/invite-owners/{propertyId}": {
      "post": {
        "operationId": "properties_invite_owners",
        "tags": [
          "Properties"
        ],
        "summary": "Invite property owners to a property.",
        "description": "Invite property owners to a property. This sends external communication and should require owner confirmation when used by an agent.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "description": "The property ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "properties.write"
        ],
        "x-mtro-mcp-tools": [
          "properties_invite_owners"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entityIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Entity ids to invite as owners of this property."
                  }
                },
                "required": [
                  "entityIds"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/properties/public/calculate-rate": {
      "post": {
        "operationId": "properties_calculate_rate",
        "tags": [
          "Properties"
        ],
        "summary": "Calculate a public quote/rate for a property and date range.",
        "description": "Calculate a public quote/rate for a property and date range.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "properties_calculate_rate"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "endDate": {},
                  "propertyId": {},
                  "startDate": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/properties/send-invitation": {
      "post": {
        "operationId": "properties_send_invitation",
        "tags": [
          "Properties"
        ],
        "summary": "Send a property invitation.",
        "description": "Send a property invitation. This sends external communication and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.write"
        ],
        "x-mtro-mcp-tools": [
          "properties_send_invitation"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "endDate": {},
                  "guestEmail": {},
                  "guestName": {},
                  "propertyId": {},
                  "rate": {},
                  "startDate": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/properties/update": {
      "post": {
        "operationId": "properties_update",
        "tags": [
          "Properties"
        ],
        "summary": "Update an existing property.",
        "description": "Update an existing property. Pass the propertyId and any fields to update.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "properties.write"
        ],
        "x-mtro-mcp-tools": [
          "properties_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "propertyId": {
                    "type": "string",
                    "description": "The property ID to update"
                  },
                  "propertyName": {
                    "type": "string",
                    "description": "New property name"
                  },
                  "address": {
                    "type": "string",
                    "description": "New address"
                  },
                  "bedrooms": {
                    "type": "number",
                    "description": "Number of bedrooms"
                  },
                  "bathrooms": {
                    "type": "number",
                    "description": "Number of bathrooms"
                  },
                  "squareFootage": {
                    "type": "number",
                    "description": "Square footage"
                  },
                  "description": {
                    "type": "string",
                    "description": "Property description"
                  },
                  "amenities": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "boolean"
                    },
                    "description": "Amenities to update"
                  },
                  "rate": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "month": {
                          "type": "number"
                        },
                        "rate": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "month",
                        "rate"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Monthly rates array"
                  },
                  "minimumDays": {
                    "type": "number",
                    "description": "Minimum booking days"
                  },
                  "maxGuests": {
                    "type": "object",
                    "properties": {
                      "adults": {
                        "type": "number"
                      },
                      "children": {
                        "type": "number"
                      },
                      "infants": {
                        "type": "number"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Maximum guests"
                  },
                  "templateId": {
                    "type": "string",
                    "description": "Lease template ID"
                  }
                },
                "required": [
                  "propertyId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/reminders/create": {
      "post": {
        "operationId": "reminders_create",
        "tags": [
          "Reminders"
        ],
        "summary": "Create a reminder for a lead or booking.",
        "description": "Create a reminder for a lead or booking.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "reminders_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entityId": {
                    "type": "string",
                    "description": "The lead or booking ID"
                  },
                  "entityType": {
                    "type": "string",
                    "enum": [
                      "lead",
                      "booking"
                    ],
                    "description": "Type of entity: 'lead' or 'booking'"
                  },
                  "title": {
                    "type": "string",
                    "description": "Reminder title"
                  },
                  "note": {
                    "type": "string",
                    "description": "Additional notes for the reminder"
                  },
                  "reminderDate": {
                    "type": "number",
                    "description": "When to trigger the reminder (timestamp ms)"
                  }
                },
                "required": [
                  "entityId",
                  "entityType",
                  "title",
                  "reminderDate"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/reminders/delete": {
      "post": {
        "operationId": "reminders_delete",
        "tags": [
          "Reminders"
        ],
        "summary": "Delete a reminder.",
        "description": "Delete a reminder. This action cannot be undone.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "reminders_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "reminderId": {
                    "type": "string",
                    "description": "The reminder ID to delete"
                  }
                },
                "required": [
                  "reminderId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/reminders/get/all": {
      "get": {
        "operationId": "reminders_list",
        "tags": [
          "Reminders"
        ],
        "summary": "List all reminders across all leads and bookings.",
        "description": "List all reminders across all leads and bookings.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "reminders": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "entityId": {
                            "type": "string"
                          },
                          "entityType": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "note": {
                            "type": "string"
                          },
                          "createdAt": {
                            "type": "integer"
                          },
                          "reminderDate": {
                            "type": "integer"
                          },
                          "completed": {
                            "type": "boolean"
                          },
                          "completedAt": {}
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "reminders_list"
        ]
      }
    },
    "/reminders/get/booking/{entityId}": {
      "get": {
        "operationId": "reminders_list_by_entity_booking",
        "tags": [
          "Reminders"
        ],
        "summary": "List all reminders for a specific lead or booking.",
        "description": "List all reminders for a specific lead or booking.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The lead or booking ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "reminders": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "reminders_list_by_entity"
        ]
      }
    },
    "/reminders/get/lead/{entityId}": {
      "get": {
        "operationId": "reminders_list_by_entity_lead",
        "tags": [
          "Reminders"
        ],
        "summary": "List all reminders for a specific lead or booking.",
        "description": "List all reminders for a specific lead or booking.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The lead or booking ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "reminders": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "reminders_list_by_entity"
        ]
      }
    },
    "/reminders/update": {
      "post": {
        "operationId": "reminders_update",
        "tags": [
          "Reminders"
        ],
        "summary": "Update a reminder.",
        "description": "Update a reminder. Can mark as completed, change date, title, or notes.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "reminders_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "reminderId": {
                    "type": "string",
                    "description": "The reminder ID to update"
                  },
                  "title": {
                    "type": "string",
                    "description": "Updated title"
                  },
                  "note": {
                    "type": "string",
                    "description": "Updated notes"
                  },
                  "reminderDate": {
                    "type": "number",
                    "description": "Updated reminder date (timestamp ms)"
                  },
                  "completed": {
                    "type": "boolean",
                    "description": "Mark as completed (true) or uncompleted (false)"
                  }
                },
                "required": [
                  "reminderId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/report-widgets/ai-assist": {
      "post": {
        "operationId": "report_widgets_ai_assist",
        "tags": [
          "Report widgets"
        ],
        "summary": "Ask Core's report widget assistant to help generate widget logic.",
        "description": "Ask Core's report widget assistant to help generate widget logic.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "report_widgets_ai_assist"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "chartType": {},
                  "currentCode": {},
                  "dataSample": {},
                  "dataScope": {},
                  "messages": {},
                  "previewResult": {},
                  "screenshot": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/report-widgets/create": {
      "post": {
        "operationId": "report_widgets_create",
        "tags": [
          "Report widgets"
        ],
        "summary": "Create a report widget.",
        "description": "Create a report widget. This writes dashboard configuration and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "report_widgets_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "chartType": {},
                  "code": {},
                  "dataScope": {},
                  "description": {},
                  "entityOwner": {},
                  "filters": {},
                  "layout": {},
                  "name": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/report-widgets/data": {
      "post": {
        "operationId": "report_widgets_data",
        "tags": [
          "Report widgets"
        ],
        "summary": "Run a report widget and return its data.",
        "description": "Run a report widget and return its data.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "reports.read"
        ],
        "x-mtro-mcp-tools": [
          "report_widgets_data"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "dataScope": {},
                  "entityOwner": {},
                  "filters": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/report-widgets/delete": {
      "post": {
        "operationId": "report_widgets_delete",
        "tags": [
          "Report widgets"
        ],
        "summary": "Delete a report widget.",
        "description": "Delete a report widget. This is destructive and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "report_widgets_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "widgetId": {
                    "type": "string",
                    "description": "Report widget ID."
                  }
                },
                "required": [
                  "widgetId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/report-widgets/get/{widgetId}": {
      "get": {
        "operationId": "report_widgets_get",
        "tags": [
          "Report widgets"
        ],
        "summary": "Get a dashboard report widget by ID.",
        "description": "Get a dashboard report widget by ID.",
        "parameters": [
          {
            "name": "widgetId",
            "in": "path",
            "required": true,
            "description": "Report widget ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "report_widgets_get"
        ]
      }
    },
    "/report-widgets/get/all": {
      "get": {
        "operationId": "report_widgets_list",
        "tags": [
          "Report widgets"
        ],
        "summary": "List dashboard report widgets.",
        "description": "List dashboard report widgets.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "report_widgets_list"
        ]
      }
    },
    "/report-widgets/update": {
      "post": {
        "operationId": "report_widgets_update",
        "tags": [
          "Report widgets"
        ],
        "summary": "Update a report widget.",
        "description": "Update a report widget. This writes dashboard configuration and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "report_widgets_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler. It also passes the body on to internal helpers, so it may accept fields beyond those listed here. Types are not yet documented.",
                "properties": {
                  "code": {},
                  "dataScope": {},
                  "widgetId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/reports/property-summary": {
      "get": {
        "operationId": "reports_property_summary",
        "tags": [
          "Reports"
        ],
        "summary": "Get a financial summary report for properties, including revenue, occupancy rates, and per-property breakdowns.",
        "description": "Get a financial summary report for properties, including revenue, occupancy rates, and per-property breakdowns. Defaults to current month if no dates provided.",
        "parameters": [
          {
            "name": "startTimestamp",
            "in": "query",
            "required": false,
            "description": "Start of reporting period (timestamp ms). Defaults to start of current month.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "endTimestamp",
            "in": "query",
            "required": false,
            "description": "End of reporting period (timestamp ms). Defaults to end of current month.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "required": false,
            "description": "Entity ID to report on (admin only, defaults to your entity)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entity": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      }
                    },
                    "properties": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "propertyId": {
                            "type": "string"
                          },
                          "propertyName": {
                            "type": "string"
                          },
                          "revenue": {
                            "type": "integer"
                          },
                          "occupancy": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "totalRevenue": {
                      "type": "integer"
                    },
                    "averageOccupancy": {
                      "type": "integer"
                    },
                    "period": {
                      "type": "object",
                      "properties": {
                        "startDate": {
                          "type": "integer"
                        },
                        "endDate": {
                          "type": "integer"
                        },
                        "daysInPeriod": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "reports.read"
        ],
        "x-mtro-mcp-tools": [
          "reports_property_summary"
        ]
      }
    },
    "/reports/trends": {
      "get": {
        "operationId": "reports_trends",
        "tags": [
          "Reports"
        ],
        "summary": "Get trend data and analytics for properties over time.",
        "description": "Get trend data and analytics for properties over time.",
        "parameters": [
          {
            "name": "startTimestamp",
            "in": "query",
            "required": false,
            "description": "Start of trend period (timestamp ms)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "endTimestamp",
            "in": "query",
            "required": false,
            "description": "End of trend period (timestamp ms)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "required": false,
            "description": "Entity ID (admin only)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "trends": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "month": {
                            "type": "string"
                          },
                          "revenue": {
                            "type": "integer"
                          },
                          "occupancy": {
                            "type": "integer"
                          },
                          "period": {
                            "type": "object",
                            "properties": {
                              "startDate": {
                                "type": "integer"
                              },
                              "endDate": {
                                "type": "integer"
                              },
                              "daysInPeriod": {
                                "type": "integer"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "reports.read"
        ],
        "x-mtro-mcp-tools": [
          "reports_trends"
        ]
      }
    },
    "/subscriptions/cancel": {
      "post": {
        "operationId": "subscriptions_cancel",
        "tags": [
          "Subscriptions"
        ],
        "summary": "Cancel the current subscription.",
        "description": "Cancel the current subscription. This changes billing state and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "subscriptions_cancel"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "note": {},
                  "subscriptionId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/subscriptions/cancel-pending": {
      "post": {
        "operationId": "subscriptions_cancel_pending",
        "tags": [
          "Subscriptions"
        ],
        "summary": "Cancel a pending subscription change.",
        "description": "Cancel a pending subscription change. This changes billing state and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "subscriptions_cancel_pending"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "subscriptionId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/subscriptions/checkout": {
      "post": {
        "operationId": "subscriptions_checkout",
        "tags": [
          "Subscriptions"
        ],
        "summary": "Create a subscription checkout session.",
        "description": "Create a subscription checkout session. This starts billing flow and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "subscriptions_checkout"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "billingInterval": {},
                  "coHostingSuiteOptIn": {},
                  "planId": {},
                  "promoCode": {},
                  "subscriptionId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/subscriptions/my": {
      "get": {
        "operationId": "subscriptions_my",
        "tags": [
          "Subscriptions"
        ],
        "summary": "Get the current entity subscription.",
        "description": "Get the current entity subscription.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "subscription": {},
                    "plan": {},
                    "pendingSubscription": {},
                    "hasActiveSubscription": {
                      "type": "boolean"
                    },
                    "coHostingSuiteFirstInvoiceCreditAvailable": {
                      "type": "boolean"
                    },
                    "promoCodes": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "subscriptions_my"
        ]
      }
    },
    "/subscriptions/payments": {
      "get": {
        "operationId": "subscriptions_payments",
        "tags": [
          "Subscriptions"
        ],
        "summary": "Get subscription payment history.",
        "description": "Get subscription payment history.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "payments": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "subscriptions_payments"
        ]
      }
    },
    "/subscriptions/plans": {
      "get": {
        "operationId": "subscriptions_plans",
        "tags": [
          "Subscriptions"
        ],
        "summary": "List public subscription plans available to the current owner.",
        "description": "List public subscription plans available to the current owner.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "plans": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "_id": {
                            "type": "string"
                          },
                          "key": {
                            "type": "string"
                          },
                          "__v": {
                            "type": "integer"
                          },
                          "createdAt": {
                            "type": "integer"
                          },
                          "currency": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "features": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string"
                                },
                                "label": {
                                  "type": "string"
                                },
                                "_id": {
                                  "type": "string"
                                }
                              }
                            }
                          },
                          "isActive": {
                            "type": "boolean"
                          },
                          "isCanonical": {
                            "type": "boolean"
                          },
                          "isCustomPricing": {
                            "type": "boolean"
                          },
                          "isDefault": {
                            "type": "boolean"
                          },
                          "listingCount": {
                            "type": "string"
                          },
                          "monthlyPrice": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "priceLabel": {
                            "type": "string"
                          },
                          "sortOrder": {
                            "type": "integer"
                          },
                          "updatedAt": {
                            "type": "integer"
                          },
                          "userSeats": {
                            "type": "string"
                          },
                          "yearlyPrice": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "subscriptions_plans"
        ]
      }
    },
    "/subscriptions/plans/all": {
      "get": {
        "operationId": "subscriptions_plans_all",
        "tags": [
          "Subscriptions"
        ],
        "summary": "List all subscription plans.",
        "description": "List all subscription plans. Usually admin-only.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "subscriptions_plans_all"
        ]
      }
    },
    "/tasks/create": {
      "post": {
        "operationId": "tasks_create",
        "tags": [
          "Tasks"
        ],
        "summary": "Create a new maintenance/service task.",
        "description": "Create a new maintenance/service task. Required: propertyId, date (timestamp ms), vendorId. Optional: notes, status.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "tasks.write"
        ],
        "x-mtro-mcp-tools": [
          "tasks_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "propertyId": {
                    "type": "string",
                    "description": "Property ID where the task takes place"
                  },
                  "date": {
                    "type": "number",
                    "description": "Task date as millisecond timestamp"
                  },
                  "vendorId": {
                    "type": "string",
                    "description": "Vendor ID assigned to the task"
                  },
                  "notes": {
                    "type": "string",
                    "description": "Task notes/description"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "pending",
                      "in_progress",
                      "completed",
                      "cancelled"
                    ],
                    "description": "Task status (default: pending)"
                  }
                },
                "required": [
                  "propertyId",
                  "date",
                  "vendorId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/tasks/delete": {
      "post": {
        "operationId": "tasks_delete",
        "tags": [
          "Tasks"
        ],
        "summary": "Delete a task.",
        "description": "Delete a task. This action cannot be undone.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "tasks.write"
        ],
        "x-mtro-mcp-tools": [
          "tasks_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "taskId": {
                    "type": "string",
                    "description": "The task ID to delete"
                  }
                },
                "required": [
                  "taskId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/tasks/get/{taskId}": {
      "get": {
        "operationId": "tasks_get",
        "tags": [
          "Tasks"
        ],
        "summary": "Get detailed information about a specific task.",
        "description": "Get detailed information about a specific task.",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "description": "The task ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "task": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "propertyId": {
                          "type": "string"
                        },
                        "bookingId": {
                          "type": "string"
                        },
                        "guestId": {
                          "type": "string"
                        },
                        "scopeType": {
                          "type": "string"
                        },
                        "scopeId": {
                          "type": "string"
                        },
                        "date": {
                          "type": "integer"
                        },
                        "vendorId": {
                          "type": "string"
                        },
                        "assigneeType": {
                          "type": "string"
                        },
                        "assigneeId": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "notes": {
                          "type": "string"
                        },
                        "completionNotes": {
                          "type": "string"
                        },
                        "completionNotesUpdatedAt": {},
                        "completionNotesUpdatedBy": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "entityOwner": {
                          "type": "string"
                        },
                        "lastUpdated": {
                          "type": "integer"
                        },
                        "timeline": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string"
                              },
                              "at": {
                                "type": "integer"
                              },
                              "actorId": {
                                "type": "string"
                              },
                              "actorName": {
                                "type": "string"
                              },
                              "fromVendorId": {
                                "type": "string"
                              },
                              "toVendorId": {
                                "type": "string"
                              },
                              "fromAssigneeType": {
                                "type": "string"
                              },
                              "fromAssigneeId": {
                                "type": "string"
                              },
                              "toAssigneeType": {
                                "type": "string"
                              },
                              "toAssigneeId": {
                                "type": "string"
                              },
                              "fromStatus": {
                                "type": "string"
                              },
                              "toStatus": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "tasks.read"
        ],
        "x-mtro-mcp-tools": [
          "tasks_get"
        ]
      }
    },
    "/tasks/get/all": {
      "get": {
        "operationId": "tasks_list",
        "tags": [
          "Tasks"
        ],
        "summary": "List all maintenance/service tasks.",
        "description": "List all maintenance/service tasks. Returns task details including property, vendor, date, status, and notes.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tasks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "propertyId": {
                            "type": "string"
                          },
                          "bookingId": {
                            "type": "string"
                          },
                          "guestId": {
                            "type": "string"
                          },
                          "scopeType": {
                            "type": "string"
                          },
                          "scopeId": {
                            "type": "string"
                          },
                          "date": {
                            "type": "integer"
                          },
                          "vendorId": {
                            "type": "string"
                          },
                          "assigneeType": {
                            "type": "string"
                          },
                          "assigneeId": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "notes": {
                            "type": "string"
                          },
                          "completionNotes": {
                            "type": "string"
                          },
                          "completionNotesUpdatedAt": {},
                          "completionNotesUpdatedBy": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "entityOwner": {
                            "type": "string"
                          },
                          "lastUpdated": {
                            "type": "integer"
                          },
                          "timeline": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "at": {
                                  "type": "integer"
                                },
                                "actorId": {
                                  "type": "string"
                                },
                                "actorName": {
                                  "type": "string"
                                },
                                "fromVendorId": {
                                  "type": "string"
                                },
                                "toVendorId": {
                                  "type": "string"
                                },
                                "fromAssigneeType": {
                                  "type": "string"
                                },
                                "fromAssigneeId": {
                                  "type": "string"
                                },
                                "toAssigneeType": {
                                  "type": "string"
                                },
                                "toAssigneeId": {
                                  "type": "string"
                                },
                                "fromStatus": {
                                  "type": "string"
                                },
                                "toStatus": {
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "tasks.read"
        ],
        "x-mtro-mcp-tools": [
          "tasks_list"
        ]
      }
    },
    "/tasks/get/entity/{entityId}": {
      "get": {
        "operationId": "tasks_get_by_entity",
        "tags": [
          "Tasks"
        ],
        "summary": "Get all tasks belonging to a specific entity.",
        "description": "Get all tasks belonging to a specific entity.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The entity ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tasks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "propertyId": {
                            "type": "string"
                          },
                          "bookingId": {
                            "type": "string"
                          },
                          "guestId": {
                            "type": "string"
                          },
                          "scopeType": {
                            "type": "string"
                          },
                          "scopeId": {
                            "type": "string"
                          },
                          "date": {
                            "type": "integer"
                          },
                          "vendorId": {
                            "type": "string"
                          },
                          "assigneeType": {
                            "type": "string"
                          },
                          "assigneeId": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "notes": {
                            "type": "string"
                          },
                          "completionNotes": {
                            "type": "string"
                          },
                          "completionNotesUpdatedAt": {},
                          "completionNotesUpdatedBy": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "entityOwner": {
                            "type": "string"
                          },
                          "lastUpdated": {
                            "type": "integer"
                          },
                          "timeline": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "at": {
                                  "type": "integer"
                                },
                                "actorId": {
                                  "type": "string"
                                },
                                "actorName": {
                                  "type": "string"
                                },
                                "fromVendorId": {
                                  "type": "string"
                                },
                                "toVendorId": {
                                  "type": "string"
                                },
                                "fromAssigneeType": {
                                  "type": "string"
                                },
                                "fromAssigneeId": {
                                  "type": "string"
                                },
                                "toAssigneeType": {
                                  "type": "string"
                                },
                                "toAssigneeId": {
                                  "type": "string"
                                },
                                "fromStatus": {
                                  "type": "string"
                                },
                                "toStatus": {
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "tasks.read"
        ],
        "x-mtro-mcp-tools": [
          "tasks_get_by_entity"
        ]
      }
    },
    "/tasks/get/vendor/{vendorId}": {
      "get": {
        "operationId": "tasks_get_by_vendor",
        "tags": [
          "Tasks"
        ],
        "summary": "Get all tasks assigned to a specific vendor.",
        "description": "Get all tasks assigned to a specific vendor.",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "description": "The vendor ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tasks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "propertyId": {
                            "type": "string"
                          },
                          "bookingId": {
                            "type": "string"
                          },
                          "guestId": {
                            "type": "string"
                          },
                          "scopeType": {
                            "type": "string"
                          },
                          "scopeId": {
                            "type": "string"
                          },
                          "date": {
                            "type": "integer"
                          },
                          "vendorId": {
                            "type": "string"
                          },
                          "assigneeType": {
                            "type": "string"
                          },
                          "assigneeId": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "notes": {
                            "type": "string"
                          },
                          "completionNotes": {
                            "type": "string"
                          },
                          "completionNotesUpdatedAt": {},
                          "completionNotesUpdatedBy": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "entityOwner": {
                            "type": "string"
                          },
                          "lastUpdated": {
                            "type": "integer"
                          },
                          "timeline": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "at": {
                                  "type": "integer"
                                },
                                "actorId": {
                                  "type": "string"
                                },
                                "actorName": {
                                  "type": "string"
                                },
                                "fromVendorId": {
                                  "type": "string"
                                },
                                "toVendorId": {
                                  "type": "string"
                                },
                                "fromAssigneeType": {
                                  "type": "string"
                                },
                                "fromAssigneeId": {
                                  "type": "string"
                                },
                                "toAssigneeType": {
                                  "type": "string"
                                },
                                "toAssigneeId": {
                                  "type": "string"
                                },
                                "fromStatus": {
                                  "type": "string"
                                },
                                "toStatus": {
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "tasks.read"
        ],
        "x-mtro-mcp-tools": [
          "tasks_get_by_vendor"
        ]
      }
    },
    "/tasks/update": {
      "post": {
        "operationId": "tasks_update",
        "tags": [
          "Tasks"
        ],
        "summary": "Update an existing task.",
        "description": "Update an existing task.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "tasks.write"
        ],
        "x-mtro-mcp-tools": [
          "tasks_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "taskId": {
                    "type": "string",
                    "description": "The task ID to update"
                  },
                  "propertyId": {
                    "type": "string",
                    "description": "Updated property ID"
                  },
                  "date": {
                    "type": "number",
                    "description": "Updated task date (timestamp ms)"
                  },
                  "vendorId": {
                    "type": "string",
                    "description": "Updated vendor ID"
                  },
                  "notes": {
                    "type": "string",
                    "description": "Updated notes"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "pending",
                      "in_progress",
                      "completed",
                      "cancelled"
                    ],
                    "description": "Updated status"
                  }
                },
                "required": [
                  "taskId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/templates/create": {
      "post": {
        "operationId": "templates_create",
        "tags": [
          "Templates"
        ],
        "summary": "Create a lease template.",
        "description": "Create a lease template. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.write"
        ],
        "x-mtro-mcp-tools": [
          "templates_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "default": {},
                  "entityOwner": {},
                  "html": {},
                  "templateName": {},
                  "visibility": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/templates/delete": {
      "post": {
        "operationId": "templates_delete",
        "tags": [
          "Templates"
        ],
        "summary": "Delete a lease template.",
        "description": "Delete a lease template. This is destructive and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.write"
        ],
        "x-mtro-mcp-tools": [
          "templates_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "templateId": {
                    "type": "string",
                    "description": "Template ID."
                  }
                },
                "required": [
                  "templateId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/templates/generate-lease": {
      "post": {
        "operationId": "templates_generate_lease",
        "tags": [
          "Templates"
        ],
        "summary": "Generate a lease from a booking/template.",
        "description": "Generate a lease from a booking/template. This may produce guest-facing documents and should require owner confirmation before sending externally.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "bookings.read"
        ],
        "x-mtro-mcp-tools": [
          "templates_generate_lease"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "bookingId": {},
                  "css": {},
                  "templateId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/templates/get/{templateId}": {
      "get": {
        "operationId": "templates_get",
        "tags": [
          "Templates"
        ],
        "summary": "Get detailed information about a specific lease template, including its pages and merge fields.",
        "description": "Get detailed information about a specific lease template, including its pages and merge fields.",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "The template ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "templates_get"
        ]
      }
    },
    "/templates/get/all": {
      "get": {
        "operationId": "templates_list",
        "tags": [
          "Templates"
        ],
        "summary": "List all lease templates available to you.",
        "description": "List all lease templates available to you.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "templates": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.read"
        ],
        "x-mtro-mcp-tools": [
          "templates_list"
        ]
      }
    },
    "/templates/get/entity/{entityId}": {
      "get": {
        "operationId": "templates_get_by_entity",
        "tags": [
          "Templates"
        ],
        "summary": "Get all lease templates belonging to a specific entity.",
        "description": "Get all lease templates belonging to a specific entity.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The entity ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "templates": {
                      "type": "array",
                      "items": {}
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.read"
        ],
        "x-mtro-mcp-tools": [
          "templates_get_by_entity"
        ]
      }
    },
    "/templates/get/public": {
      "get": {
        "operationId": "templates_get_public",
        "tags": [
          "Templates"
        ],
        "summary": "List public lease templates.",
        "description": "List public lease templates.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "templates_get_public"
        ]
      }
    },
    "/templates/import-word": {
      "post": {
        "operationId": "templates_import_word",
        "tags": [
          "Templates"
        ],
        "summary": "Import a Word document as a lease template.",
        "description": "Import a Word document as a lease template. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.write"
        ],
        "x-mtro-mcp-tools": [
          "templates_import_word"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        }
      }
    },
    "/templates/preview-render": {
      "post": {
        "operationId": "templates_preview_render",
        "tags": [
          "Templates"
        ],
        "summary": "Preview-render a template with merge fields without saving a booking document.",
        "description": "Preview-render a template with merge fields without saving a booking document.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.write"
        ],
        "x-mtro-mcp-tools": [
          "templates_preview_render"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "css": {},
                  "html": {},
                  "templateId": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/templates/update": {
      "post": {
        "operationId": "templates_update",
        "tags": [
          "Templates"
        ],
        "summary": "Update a lease template.",
        "description": "Update a lease template. This writes account data and should require owner confirmation when used by an agent.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "templates.write"
        ],
        "x-mtro-mcp-tools": [
          "templates_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.",
                "properties": {
                  "default": {},
                  "html": {},
                  "templateId": {},
                  "templateName": {},
                  "visibility": {}
                },
                "additionalProperties": true,
                "x-mtro-fields-source": "core-handler"
              }
            }
          }
        }
      }
    },
    "/users/get": {
      "get": {
        "operationId": "whoami",
        "tags": [
          "Users"
        ],
        "summary": "Get the currently authenticated user's profile information including name, email, role, and entity.",
        "description": "Get the currently authenticated user's profile information including name, email, role, and entity.",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "error": {
                      "type": "boolean"
                    },
                    "user": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "email": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "surname": {
                          "type": "string"
                        },
                        "emailVerified": {
                          "type": "boolean"
                        },
                        "mobileVerified": {
                          "type": "boolean"
                        },
                        "type": {
                          "type": "string"
                        },
                        "emailNotificationsActive": {
                          "type": "boolean"
                        },
                        "smsNotificationsActive": {
                          "type": "boolean"
                        },
                        "whatsappNotificationsActive": {
                          "type": "boolean"
                        },
                        "preferences": {
                          "type": "object",
                          "properties": {
                            "autoSaveEnabled": {
                              "type": "boolean"
                            },
                            "hiddenTemplateIds": {
                              "type": "array",
                              "items": {}
                            }
                          }
                        },
                        "blockchainAddress": {
                          "type": "string"
                        },
                        "profileImage": {
                          "type": "string"
                        },
                        "twoFactor": {
                          "type": "object",
                          "properties": {
                            "enabled": {
                              "type": "boolean"
                            },
                            "method": {},
                            "enabledAt": {},
                            "lastVerifiedAt": {}
                          }
                        },
                        "entityRole": {
                          "type": "string"
                        },
                        "propertyAccess": {
                          "type": "string"
                        },
                        "allowedPropertyIds": {
                          "type": "array",
                          "items": {}
                        },
                        "passwordChanged": {
                          "type": "boolean"
                        },
                        "onboardingCompleted": {
                          "type": "boolean"
                        },
                        "onboardingProgress": {
                          "type": "object",
                          "properties": {
                            "tourName": {},
                            "completedCapabilities": {
                              "type": "array",
                              "items": {}
                            },
                            "completedStepIds": {
                              "type": "array",
                              "items": {}
                            },
                            "startedAt": {},
                            "lastStepAt": {}
                          }
                        }
                      }
                    },
                    "entity": {
                      "type": "object",
                      "properties": {
                        "stripeCustomFeePercentByPaymentType": {
                          "type": "object",
                          "properties": {
                            "ach": {},
                            "card": {}
                          }
                        },
                        "_id": {
                          "type": "string"
                        },
                        "entityName": {
                          "type": "string"
                        },
                        "__v": {
                          "type": "integer"
                        },
                        "agentAssistantEnabled": {
                          "type": "boolean"
                        },
                        "automateLeaseToPayment": {
                          "type": "boolean"
                        },
                        "backgroundCheckProvider": {
                          "type": "string"
                        },
                        "country": {
                          "type": "string"
                        },
                        "creatorPageEnabled": {
                          "type": "boolean"
                        },
                        "entityType": {
                          "type": "string"
                        },
                        "lastUpdated": {
                          "type": "integer"
                        },
                        "showPeopleAlsoViewed": {
                          "type": "boolean"
                        },
                        "status": {
                          "type": "string"
                        },
                        "stripeAccountId": {},
                        "stripeAccountStatus": {},
                        "stripeCustomFeePercent": {},
                        "twilioPhoneNumber": {},
                        "twilioPhoneNumberAvailable": {
                          "type": "boolean"
                        },
                        "twilioPhoneNumberRequestedAt": {},
                        "twilioPhoneNumberRequestedBy": {},
                        "twilioPhoneNumberSid": {}
                      }
                    },
                    "memberships": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "entityId": {
                            "type": "string"
                          },
                          "entityName": {
                            "type": "string"
                          },
                          "entityRole": {
                            "type": "string"
                          },
                          "propertyAccess": {
                            "type": "string"
                          },
                          "allowedPropertyIds": {
                            "type": "array",
                            "items": {}
                          },
                          "accessOverrides": {
                            "type": "object",
                            "properties": {}
                          },
                          "isActive": {
                            "type": "boolean"
                          }
                        }
                      }
                    },
                    "activeMembership": {
                      "type": "object",
                      "properties": {
                        "entityId": {
                          "type": "string"
                        },
                        "entityRole": {
                          "type": "string"
                        },
                        "propertyAccess": {
                          "type": "string"
                        },
                        "allowedPropertyIds": {
                          "type": "array",
                          "items": {}
                        },
                        "accessOverrides": {
                          "type": "object",
                          "properties": {}
                        }
                      }
                    },
                    "capabilities": {
                      "type": "object",
                      "properties": {
                        "api_keys.manage": {
                          "type": "boolean"
                        },
                        "billing.manage": {
                          "type": "boolean"
                        },
                        "applications.read": {
                          "type": "boolean"
                        },
                        "applications.write": {
                          "type": "boolean"
                        },
                        "bookings.read": {
                          "type": "boolean"
                        },
                        "bookings.write": {
                          "type": "boolean"
                        },
                        "conversations.read": {
                          "type": "boolean"
                        },
                        "conversations.write": {
                          "type": "boolean"
                        },
                        "creator.manage": {
                          "type": "boolean"
                        },
                        "entity_settings.manage": {
                          "type": "boolean"
                        },
                        "guests.read": {
                          "type": "boolean"
                        },
                        "guests.write": {
                          "type": "boolean"
                        },
                        "inventory.read": {
                          "type": "boolean"
                        },
                        "inventory.write": {
                          "type": "boolean"
                        },
                        "leases.sign": {
                          "type": "boolean"
                        },
                        "leads.read": {
                          "type": "boolean"
                        },
                        "leads.write": {
                          "type": "boolean"
                        },
                        "payments.read": {
                          "type": "boolean"
                        },
                        "payments.write": {
                          "type": "boolean"
                        },
                        "properties.create": {
                          "type": "boolean"
                        },
                        "properties.read": {
                          "type": "boolean"
                        },
                        "properties.write": {
                          "type": "boolean"
                        },
                        "reports.read": {
                          "type": "boolean"
                        },
                        "stripe_accounts.manage": {
                          "type": "boolean"
                        },
                        "tasks.read": {
                          "type": "boolean"
                        },
                        "tasks.write": {
                          "type": "boolean"
                        },
                        "team.manage": {
                          "type": "boolean"
                        },
                        "templates.read": {
                          "type": "boolean"
                        },
                        "templates.write": {
                          "type": "boolean"
                        },
                        "twilio_numbers.manage": {
                          "type": "boolean"
                        },
                        "users.read": {
                          "type": "boolean"
                        },
                        "vendors.read": {
                          "type": "boolean"
                        },
                        "vendors.write": {
                          "type": "boolean"
                        }
                      }
                    },
                    "featureAccess": {
                      "type": "object",
                      "properties": {
                        "bro": {
                          "type": "boolean"
                        },
                        "seam": {
                          "type": "boolean"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-mcp-tools": [
          "whoami"
        ]
      }
    },
    "/vendors/create": {
      "post": {
        "operationId": "vendors_create",
        "tags": [
          "Vendors"
        ],
        "summary": "Create a new vendor (service provider).",
        "description": "Create a new vendor (service provider). Required: name, role, mobile, email.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "vendors.write"
        ],
        "x-mtro-mcp-tools": [
          "vendors_create"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Vendor name"
                  },
                  "role": {
                    "type": "string",
                    "description": "Vendor role (e.g. Plumber, Electrician, Cleaner)"
                  },
                  "mobile": {
                    "type": "string",
                    "description": "Vendor mobile number"
                  },
                  "email": {
                    "type": "string",
                    "description": "Vendor email address"
                  }
                },
                "required": [
                  "name",
                  "role",
                  "mobile",
                  "email"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/vendors/delete": {
      "post": {
        "operationId": "vendors_delete",
        "tags": [
          "Vendors"
        ],
        "summary": "Delete a vendor.",
        "description": "Delete a vendor. This action cannot be undone.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "vendors.write"
        ],
        "x-mtro-mcp-tools": [
          "vendors_delete"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "vendorId": {
                    "type": "string",
                    "description": "The vendor ID to delete"
                  }
                },
                "required": [
                  "vendorId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/vendors/get/{vendorId}": {
      "get": {
        "operationId": "vendors_get",
        "tags": [
          "Vendors"
        ],
        "summary": "Get detailed information about a specific vendor.",
        "description": "Get detailed information about a specific vendor.",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "description": "The vendor ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "vendor": {
                      "type": "object",
                      "properties": {
                        "_id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "role": {
                          "type": "string"
                        },
                        "staffRole": {
                          "type": "string"
                        },
                        "ownerName": {
                          "type": "string"
                        },
                        "mobile": {
                          "type": "string"
                        },
                        "phone": {
                          "type": "string"
                        },
                        "email": {
                          "type": "string"
                        },
                        "services": {
                          "type": "string"
                        },
                        "address": {
                          "type": "string"
                        },
                        "city": {
                          "type": "string"
                        },
                        "markets": {
                          "type": "array",
                          "items": {}
                        },
                        "groups": {
                          "type": "string"
                        },
                        "referredBy": {
                          "type": "string"
                        },
                        "shareVendor": {
                          "type": "boolean"
                        },
                        "internalNotes": {
                          "type": "string"
                        },
                        "entityOwner": {
                          "type": "string"
                        },
                        "images": {
                          "type": "array",
                          "items": {}
                        },
                        "lastUpdated": {
                          "type": "integer"
                        },
                        "__v": {
                          "type": "integer"
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "vendors.read"
        ],
        "x-mtro-mcp-tools": [
          "vendors_get"
        ]
      }
    },
    "/vendors/get/all": {
      "get": {
        "operationId": "vendors_list",
        "tags": [
          "Vendors"
        ],
        "summary": "List all vendors (service providers like plumbers, electricians, cleaners, etc.).",
        "description": "List all vendors (service providers like plumbers, electricians, cleaners, etc.).",
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "vendors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "role": {
                            "type": "string"
                          },
                          "staffRole": {
                            "type": "string"
                          },
                          "ownerName": {
                            "type": "string"
                          },
                          "mobile": {
                            "type": "string"
                          },
                          "phone": {
                            "type": "string"
                          },
                          "email": {
                            "type": "string"
                          },
                          "services": {
                            "type": "string"
                          },
                          "address": {
                            "type": "string"
                          },
                          "city": {
                            "type": "string"
                          },
                          "markets": {
                            "type": "array",
                            "items": {}
                          },
                          "groups": {
                            "type": "string"
                          },
                          "referredBy": {
                            "type": "string"
                          },
                          "shareVendor": {
                            "type": "boolean"
                          },
                          "internalNotes": {
                            "type": "string"
                          },
                          "entityOwner": {
                            "type": "string"
                          },
                          "images": {
                            "type": "array",
                            "items": {}
                          },
                          "lastUpdated": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "vendors.read"
        ],
        "x-mtro-mcp-tools": [
          "vendors_list"
        ]
      }
    },
    "/vendors/get/entity/{entityId}": {
      "get": {
        "operationId": "vendors_get_by_entity",
        "tags": [
          "Vendors"
        ],
        "summary": "Get all vendors belonging to a specific entity.",
        "description": "Get all vendors belonging to a specific entity.",
        "parameters": [
          {
            "name": "entityId",
            "in": "path",
            "required": true,
            "description": "The entity ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. This shape was observed from a real reply; fields that were empty in the observed record may be absent here.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "vendors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "role": {
                            "type": "string"
                          },
                          "staffRole": {
                            "type": "string"
                          },
                          "ownerName": {
                            "type": "string"
                          },
                          "mobile": {
                            "type": "string"
                          },
                          "phone": {
                            "type": "string"
                          },
                          "email": {
                            "type": "string"
                          },
                          "services": {
                            "type": "string"
                          },
                          "address": {
                            "type": "string"
                          },
                          "city": {
                            "type": "string"
                          },
                          "markets": {
                            "type": "array",
                            "items": {}
                          },
                          "groups": {
                            "type": "string"
                          },
                          "referredBy": {
                            "type": "string"
                          },
                          "shareVendor": {
                            "type": "boolean"
                          },
                          "internalNotes": {
                            "type": "string"
                          },
                          "entityOwner": {
                            "type": "string"
                          },
                          "images": {
                            "type": "array",
                            "items": {}
                          },
                          "lastUpdated": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "vendors.read"
        ],
        "x-mtro-mcp-tools": [
          "vendors_get_by_entity"
        ]
      }
    },
    "/vendors/update": {
      "post": {
        "operationId": "vendors_update",
        "tags": [
          "Vendors"
        ],
        "summary": "Update a vendor's information.",
        "description": "Update a vendor's information.",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The API key is valid but lacks the required scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-mtro-scopes": [
          "vendors.write"
        ],
        "x-mtro-mcp-tools": [
          "vendors_update"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "vendorId": {
                    "type": "string",
                    "description": "The vendor ID to update"
                  },
                  "name": {
                    "type": "string",
                    "description": "Updated name"
                  },
                  "role": {
                    "type": "string",
                    "description": "Updated role"
                  },
                  "mobile": {
                    "type": "string",
                    "description": "Updated mobile number"
                  },
                  "email": {
                    "type": "string",
                    "description": "Updated email"
                  }
                },
                "required": [
                  "vendorId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "An MTRO PRO API key, prefixed with `mtro_`. Generate one in the admin\npanel under Settings, or with `POST /api-keys/generate` using a key that\nalready holds the `api_keys.manage` scope."
      }
    },
    "schemas": {
      "SuccessEnvelope": {
        "type": "object",
        "description": "Successful responses are plain JSON objects. The payload key varies by\nendpoint (`property`, `properties`, `booking`, and so on).",
        "additionalProperties": true
      },
      "ErrorResponse": {
        "type": "object",
        "description": "The error envelope. Core returns some errors with HTTP 200 and\n`error: true` in the body, so clients must check this field rather than\nrelying on the status code alone.",
        "properties": {
          "error": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "error",
          "message"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "x-mtro-scopes-available": [
    "api_keys.manage",
    "applications.read",
    "applications.write",
    "billing.manage",
    "bookings.read",
    "bookings.write",
    "conversations.read",
    "conversations.write",
    "creator.manage",
    "entity_settings.manage",
    "guests.read",
    "guests.write",
    "inventory.read",
    "inventory.write",
    "leads.read",
    "leads.write",
    "leases.sign",
    "payments.read",
    "payments.write",
    "properties.create",
    "properties.read",
    "properties.write",
    "reports.read",
    "stripe_accounts.manage",
    "tasks.read",
    "tasks.write",
    "team.manage",
    "templates.read",
    "templates.write",
    "twilio_numbers.manage",
    "users.read",
    "vendors.read",
    "vendors.write"
  ]
}
