{
  "name": "campnotice",
  "title": "Camp Notice",
  "version": "1.1.0",
  "description": "Public, read-only MCP server for Camp Notice — the service that emails parents when a seat opens at a sold-out camp. Serves its pages, its pricing, its camp directory, and the live open/full status of watched camps.",
  "websiteUrl": "https://campnotice.com/",
  "serverInfo": {
    "name": "campnotice",
    "title": "Camp Notice",
    "version": "1.1.0",
    "websiteUrl": "https://campnotice.com/"
  },
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://campnotice.com/mcp"
  },
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://campnotice.com/mcp"
    }
  ],
  "protocolVersion": "2025-11-25",
  "supportedProtocolVersions": [
    "2025-11-25",
    "2025-06-18",
    "2025-03-26"
  ],
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "tools": [
    {
      "name": "list_pages",
      "title": "List public pages",
      "description": "List every public Camp Notice page — home, the watch wizard, pricing, and the policies — with its path, title and one-line description. Start here, then read one with get_page.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_page",
      "title": "Read a page",
      "description": "Read one public Camp Notice page as markdown — its full prose, key points, any step-by-step guide, and its FAQ. Takes a path from list_pages, e.g. \"/pricing\" or \"/watch\".",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Page path, e.g. \"/watch\"."
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "search_docs",
      "title": "Search the guides",
      "description": "Search Camp Notice pages and FAQs by keyword — waitlist, full camp, alerts, pricing — and get back the matching pages with the passage that matched.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Keywords or a question."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Maximum pages to return (default 5)."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_pricing",
      "title": "Get pricing",
      "description": "Get what Camp Notice costs: one price, per camp, paid once — no subscription and no tiers. Read from the same constant the site prints, so it is never a stale quote.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_camp_states",
      "title": "List states with camps",
      "description": "List the US states the camp directory covers, each with how many camps it lists. Use a state code from here as the \"state\" filter of search_camps.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "search_camps",
      "title": "Search camps",
      "description": "Search the summer camp directory by camp name or town, optionally within a state and by type (day, overnight, family). Returns each camp's id, town, ages, accreditation, its page, and watchUrl — the link a parent opens to get emailed when a seat opens. \"watched: true\" means live session status is available from get_camp.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Camp name or town words, e.g. \"pine hollow\" or \"austin\"."
          },
          "state": {
            "type": "string",
            "description": "Two-letter state code or state name, e.g. \"CA\" or \"New York\"."
          },
          "type": {
            "type": "string",
            "enum": [
              "day",
              "overnight",
              "family"
            ],
            "description": "Camp type."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Camps to return (default 10)."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Camps to skip, for the next page."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_camp",
      "title": "Get a camp",
      "description": "Get one camp by its id from search_camps (e.g. \"california/camp-kennolyn\") or its page URL: its facts, the programs its directory listing publishes, and — for a camp parents are watching — each session's live open/full status as last read from the camp's own registration page, with when it was read. Status can lag; registration and any seat are only ever on the camp's own site.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Camp id from search_camps, or its page URL."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    }
  ],
  "authentication": {
    "type": "none",
    "documentation": "https://campnotice.com/auth.md"
  },
  "documentation": "https://campnotice.com/agents.md",
  "contact": "mailto:hello@campnotice.com"
}