{
  "schemaVersion": 1,
  "name": "Milford Sound Tourism",
  "url": "https://milfordsoundtourism.com/",
  "readOnly": true,
  "endpoint": "https://milfordsoundtourism.com/mcp",
  "transport": "streamable-http",
  "updated": "2026-11-11",
  "tools": [
    {
      "name": "get_site_info",
      "description": "The site name, address, place, language and time zone.",
      "input": "[]",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    },
    {
      "name": "ask_about_place",
      "description": "A grounded answer from reviewed passages with their sources and dates, or a refusal (price, availability, live conditions and medical questions are never answered; a refusal names the live tool to use instead, where there is one).",
      "input": "[\"question\"]",
      "inputSchema": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "minLength": 3,
            "maxLength": 300
          }
        },
        "required": [
          "question"
        ],
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    },
    {
      "name": "list_claims",
      "description": "Reviewed, non volatile, unexpired claims about the place with their source and the date until which each was checked; a claim with status conflicted is shown alongside the claims it conflicts with, never as settled fact. Optional topic filter.",
      "input": "[\"topic\"]",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string",
            "maxLength": 80
          }
        },
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    },
    {
      "name": "list_content",
      "description": "The published records of one content type: slug, title and address. Guides and place records also carry their review status (draft, reviewed-draft with its date, or accepted for a guide the owner signed off) and place records their indexable flag.",
      "input": "[\"type\"]",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "guide",
              "news",
              "event",
              "trail",
              "community",
              "place"
            ]
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    },
    {
      "name": "get_record",
      "description": "One published record of a content type by slug. A community page or place record is returned through the same consent safe projection as get_place, never as the raw file.",
      "input": "[\"type\",\"slug\"]",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "guide",
              "news",
              "event",
              "trail",
              "community",
              "place"
            ]
          },
          "slug": {
            "type": "string",
            "maxLength": 120
          }
        },
        "required": [
          "type",
          "slug"
        ],
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    },
    {
      "name": "live_conditions",
      "description": "Weather, river levels, flood alerts, weather warnings and events from the location's conditions pack, each judged against its freshness limit now: a reading past its limit, undated or missing reads \"checking\", never a saved value. A forecast is not a path, road or access condition, and a river gauge height is not the depth of water on a road.",
      "input": "[]",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    },
    {
      "name": "search_experiences",
      "description": "Bookable experiences from the location's catalogue with their tier, tier basis and larger area (the field the location names as its regionField). Optional tier and area filters. Each result carries its price state: a price only when the price rule allows it (from the booking partner, in the site currency, checked within the limit and confirmed by the weekly test), otherwise \"Check price on the booking page\". Booking links are commission links.",
      "input": "[\"tier\",\"area\",\"limit\"]",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tier": {
            "type": "string",
            "maxLength": 40,
            "pattern": "^[a-z-]+$"
          },
          "area": {
            "type": "string",
            "maxLength": 40,
            "pattern": "^[a-z-]+$"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          }
        },
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    },
    {
      "name": "get_place",
      "description": "One community place page (village, town or group) by id: council and larger area with its label (both null where the location's words keep them off that kind of page), hamlets only when sourced, community links only with the organiser's recorded consent and a recent check, the events, news, guides and experiences that name it, whether the page is indexable (a kind with no consent route never is), and the record's review status (draft, or reviewed-draft with its date). Only while the page is indexable, also what its page shows from the record: the short version, key facts (each with its claim ids, source and capture date, or labelled derived with its method and date), sections as quoted text with their claim ids, questions with their sources and the links the page shows by type. A page that is not indexable gives none of the record (contentWithheld says so). Never a contact role, channel or named person.",
      "input": "[\"id\"]",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 120,
            "pattern": "^[a-z0-9-]+$"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    },
    {
      "name": "today_news",
      "description": "Local news inside its current window now (published, not expired, not due for a recheck), with the original source and its date. May be empty; zero stories is a normal answer.",
      "input": "[\"limit\"]",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          }
        },
        "additionalProperties": false
      },
      "doc": "docs/MCP-TOOLS.md"
    }
  ]
}
