{
  "$comment": "Non-standard developer self-description. WebMCP discovery happens at runtime through document.modelContext; the registered runtime tools are authoritative. Tool behavior and result summaries are documented on the linked developer page.",
  "name": "NaCzarter",
  "description": "Read-only remote yacht search and pricing, plus authenticated human-confirmed browser booking on the Great Masurian Lakes in Poland.",
  "url": "https://naczarter.pl",
  "documentation": "https://naczarter.pl/en/developers/webmcp",
  "documentationLanguage": "en",
  "siteLanguages": ["pl", "en", "de", "cs", "lt", "nl", "ru", "uk", "fr", "it", "sk", "hu"],
  "provider": {
    "name": "NaCzarter",
    "url": "https://naczarter.pl",
    "area": "Great Masurian Lakes, Poland"
  },
  "webmcp": {
    "spec": "https://webmachinelearning.github.io/webmcp/",
    "discovery": "runtime",
    "api": ["document.modelContext"],
    "register": "document.modelContext.registerTool({ name, title, description, inputSchema, annotations, execute })",
    "originTrial": true,
    "paymentModel": "The browser-only book_charter tool returns a sign-in hand-off until the customer has a verified account. The booking e-mail must match the account, NaCzarter displays an in-tab confirmation dialog with human verification, and the tool creates an unpaid PENDING hold but never charges. A checkout failure returns a handoff to the authenticated account page.",
    "bookingRequirements": ["signed-in NaCzarter account", "verified account e-mail", "matching booking e-mail", "explicit confirmation and human verification in NaCzarter's in-tab dialog"]
  },
  "remoteMcp": {
    "endpoint": "https://naczarter.pl/api/mcp",
    "transport": "Streamable HTTP",
    "contentType": "application/json",
    "protocolEra": "legacy-handshake",
    "protocolVersions": ["2025-11-25", "2025-06-18"],
    "tools": ["search_charters", "quote_charter", "get_charter_details"],
    "readOnly": true,
    "note": "The remote tools/list response is authoritative. Remote MCP exposes three read-only tools and does not expose book_charter or any other reservation or payment mutation."
  },
  "limits": {
    "maximumCharterDays": 31,
    "bookingHorizonDays": 730,
    "remoteRequestBodyBytes": 32768,
    "remoteRequestsPerMinute": 60
  },
  "tools": [
    {
      "name": "search_charters",
      "title": "Search charters",
      "description": "Search yacht charters on the Masurian Lakes. Filter by city or port, dates, category, people and maximum daily price. Returns up to six yachts per page with a starting daily price. Call quote_charter for an exact price.",
      "availability": "browser and remote MCP",
      "businessStateChanges": false,
      "telemetryRecorded": true,
      "annotations": { "readOnlyHint": true, "untrustedContentHint": true },
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": { "type": "string", "minLength": 1, "maxLength": 80, "description": "City or port, for example Giżycko or Mikołajki" },
          "from": { "type": "string", "format": "date", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "minLength": 10, "maxLength": 10, "description": "Charter start date in YYYY-MM-DD format" },
          "to": { "type": "string", "format": "date", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "minLength": 10, "maxLength": 10, "description": "Charter end date in YYYY-MM-DD format" },
          "category": { "type": "string", "enum": ["sailing", "motor", "houseboat", "scooter"] },
          "minPeople": { "type": "integer", "minimum": 1, "maximum": 50, "description": "Minimum number of people or berths" },
          "priceMax": { "type": "number", "exclusiveMinimum": 0, "maximum": 2000000, "description": "Maximum starting price per day in PLN" },
          "page": { "type": "integer", "minimum": 0, "maximum": 100, "description": "Zero-based page; six results per page" }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "quote_charter",
      "title": "Quote a charter",
      "description": "Return the authoritative server-computed price and availability for one yacht and exact dates: online charter price, mandatory fees paid on site, total, currency and a server-revalidated acceptedQuote snapshot, or an actionable rejection reason.",
      "availability": "browser and remote MCP",
      "businessStateChanges": false,
      "telemetryRecorded": true,
      "annotations": { "readOnlyHint": true, "untrustedContentHint": true },
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": { "type": "string", "pattern": "^[a-z0-9-]+$", "minLength": 1, "maxLength": 160, "description": "Yacht slug returned by search_charters" },
          "from": { "type": "string", "format": "date", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "minLength": 10, "maxLength": 10, "description": "Charter start date in YYYY-MM-DD format" },
          "to": { "type": "string", "format": "date", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "minLength": 10, "maxLength": 10, "description": "Charter end date in YYYY-MM-DD format" },
          "oneWay": { "type": "boolean", "description": "Return at a different port; may add a one-way fee" }
        },
        "required": ["slug", "from", "to"],
        "additionalProperties": false
      }
    },
    {
      "name": "get_charter_details",
      "title": "Yacht details",
      "description": "Read the specification and stay rules for one yacht: model, year, berths, length, engine, home port, licence and skipper options, and minimum or maximum stay. For price and availability, use quote_charter.",
      "availability": "browser and remote MCP",
      "businessStateChanges": false,
      "telemetryRecorded": true,
      "annotations": { "readOnlyHint": true, "untrustedContentHint": true },
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": { "type": "string", "pattern": "^[a-z0-9-]+$", "minLength": 1, "maxLength": 160, "description": "Yacht slug returned by search_charters" }
        },
        "required": ["slug"],
        "additionalProperties": false
      }
    },
    {
      "name": "book_charter",
      "title": "Hold a reservation",
      "description": "Create a provisional unpaid reservation for the signed-in customer. This browser-only tool returns a sign-in hand-off until the customer has a verified e-mail on the account, requires the booking e-mail to match that account, and shows NaCzarter's confirmation dialog with a fresh server quote, linked terms and human verification before creating a PENDING hold. It never charges. A checkout failure returns an authenticated account-page handoff.",
      "availability": "browser WebMCP only; sign-in hand-off until the account e-mail is verified",
      "annotations": { "readOnlyHint": false, "consequentialHint": true },
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": { "type": "string", "pattern": "^[a-z0-9-]+$", "minLength": 1, "maxLength": 160, "description": "Yacht slug returned by search_charters" },
          "from": { "type": "string", "format": "date", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "minLength": 10, "maxLength": 10, "description": "Charter start date in YYYY-MM-DD format" },
          "to": { "type": "string", "format": "date", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "minLength": 10, "maxLength": 10, "description": "Charter end date in YYYY-MM-DD format" },
          "firstName": { "type": "string", "minLength": 2, "maxLength": 100 },
          "lastName": { "type": "string", "minLength": 2, "maxLength": 100 },
          "email": { "type": "string", "format": "email", "maxLength": 254 },
          "phone": { "type": "string", "pattern": "^[+()0-9 .\\-]{9,40}$", "minLength": 9, "maxLength": 40 },
          "agreementAccepted": { "type": "boolean", "const": true, "description": "True only after the customer accepts the booking and cancellation terms" },
          "oneWay": { "type": "boolean" },
          "paymentProvider": { "type": "string", "enum": ["payu", "stripe"] }
        },
        "required": ["slug", "from", "to", "firstName", "lastName", "email", "phone", "agreementAccepted"],
        "additionalProperties": false
      }
    }
  ],
  "lastVerified": "2026-09-04"
}
