national-parks-mcp-server
Was dieses MCP kann
Supports US National Park trip planning with park details, activities, campgrounds, events, fees, operating information, and alerts.
Tools
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 15, 'maximum': 50, 'minimum': 1, 'description': 'Maximum campgrounds to return (1â\x80\x9350).'}, 'query': {'type': 'string', 'description': 'Free-text search across campground names/descriptions (e.g. "river", "group", "rv").'}, 'start': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based pagination offset.'}, 'parkCode': {'type': 'string', 'description': 'Park code, or comma-separated list (e.g. "zion") â\x80\x94 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode.'}, 'stateCode': {'type': 'string', 'description': 'Two-letter state code, or comma-separated list. Returns campgrounds across all NPS sites in those states.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['campgrounds', 'totalCount', 'appliedFilters']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'Limit applied (populated when results were truncated).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_park_code', 'invalid_state_code'], 'description': "Machine-readable failure mode. Declared by this tool: `invalid_park_code`: A parkCode token isn't 4 lowercase letters. `invalid_state_code`: A stateCode token isn't two letters. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Campgrounds returned in this response (populated when capped by limit).'}, 'notice': {'type': 'string', 'description': 'Guidance on the result set: where else to look when no campgrounds matched, the start value for the next page when more matched, or the way back when start ran past the end.'}, 'truncated': {'type': 'boolean', 'description': 'True when more campgrounds matched than this response returned; absent on a complete result.'}, 'totalCount': {'type': 'number', 'description': 'Total campgrounds matching the filter before the limit was applied.'}, 'campgrounds': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'parkCode', 'description', 'latitude', 'longitude', 'totalSites', 'reservableSites', 'firstComeSites', 'reservationInfo', 'reservationUrl', 'fee', 'amenities', 'accessibility', 'url'], 'properties': {'id': {'type': 'string', 'description': 'Campground ID.'}, 'fee': {'type': ['string', 'null'], 'description': 'Lowest campground fee as a dollar string (e.g. "30.00"), or null if free / unspecified.'}, 'url': {'type': ['string', 'null'], 'description': "Campground's NPS.gov page with the full amenity and site detail, or null."}, 'name': {'type': 'string', 'description': 'Campground name (e.g. "Watchman Campground").'}, 'latitude': {'type': ['number', 'null'], 'description': 'Latitude (decimal degrees) or null.'}, 'parkCode': {'type': 'string', 'description': 'Park code the campground belongs to.'}, 'amenities': {'type': 'object', 'required': ['potableWater', 'showers', 'dumpStation', 'rvAllowed', 'toilets', 'trashCollection'], 'properties': {'showers': {'type': ['boolean', 'null'], 'description': 'Showers available, or null when NPS published no value.'}, 'toilets': {'type': ['boolean', 'null'], 'description': 'Toilets of any type (flush, vault, portable, composting) available, or null when NPS published no value.'}, 'rvAllowed': {'type': ['boolean', 'null'], 'description': 'RVs permitted, or null when NPS published no value.'}, 'dumpStation': {'type': ['boolean', 'null'], 'description': 'RV dump station available, or null when NPS published no value.'}, 'potableWater': {'type': ['boolean', 'null'], 'description': 'Drinking water available on site, or null when NPS published no value.'}, 'trashCollection': {'type': ['boolean', 'null'], 'description': 'Trash/recycling collection on site, or null when NPS published no value.'}}, 'description': "Key amenities: true, false, or null when NPS published no value (unknown, not absent). The campground's NPS page has the full amenity list.", 'additionalProperties': False}, 'longitude': {'type': ['number', 'null'], 'description': 'Longitude (decimal degrees) or null.'}, 'totalSites': {'type': ['number', 'null'], 'description': 'Total number of campsites, or null if unspecified.'}, 'description': {'type': 'string', 'description': 'Short campground description.'}, 'accessibility': {'type': ['string', 'null'], 'description': 'Free-text accessibility summary, or null if NPS publishes none.'}, 'firstComeSites': {'type': ['number', 'null'], 'description': 'Number of first-come-first-served sites, or null.'}, 'reservationUrl': {'type': ['string', 'null'], 'description': 'Booking URL (often recreation.gov), or null.'}, 'reservableSites': {'type': ['number', 'null'], 'description': 'Number of reservable sites, or null. 0 means first-come-first-served only.'}, 'reservationInfo': {'type': ['string', 'null'], 'description': 'Free-text reservation guidance (how/where to book), or null.'}}, 'description': 'A single campground with amenities, site counts, and reservation info.', 'additionalProperties': False}, 'description': 'Campgrounds at the requested park(s)/state(s).'}, 'appliedFilters': {'type': 'string', 'description': 'Echo of parkCode/stateCode/query as applied.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'query': {'type': 'string', 'description': 'Free-text search across event titles/descriptions (e.g. "ranger", "astronomy", "guided").'}, 'dateEnd': {'type': 'string', 'description': 'End of the date window (YYYY-MM-DD). Use with dateStart.'}, 'pageSize': {'type': 'integer', 'default': 15, 'maximum': 50, 'minimum': 1, 'description': 'Maximum events to return per page (1â\x80\x9350). Paginates by page number, not offset â\x80\x94 use with pageNumber to walk through results.'}, 'parkCode': {'type': 'string', 'description': 'Park code, or comma-separated list (e.g. "yell") â\x80\x94 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode.'}, 'dateStart': {'type': 'string', 'description': 'Start of the date window (YYYY-MM-DD). Combine with dateEnd to bound the search (e.g. a weekend). Omit for upcoming events from today.'}, 'stateCode': {'type': 'string', 'description': 'Two-letter state code, or comma-separated list (e.g. "WY", "WY,MT,ID"). Returns events across NPS sites in those states.'}, 'pageNumber': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based page number. Increment to page through results beyond the first page.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['events', 'totalCount', 'appliedFilters']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'Page size applied (populated when results were truncated).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_date', 'invalid_park_code', 'invalid_state_code'], 'description': "Machine-readable failure mode. Declared by this tool: `invalid_date`: dateStart/dateEnd not YYYY-MM-DD, not a real calendar date (e.g. 2026-02-31), or dateEnd < dateStart. `invalid_park_code`: A parkCode token isn't 4 lowercase letters. `invalid_state_code`: A stateCode token isn't two letters. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Events returned on this page (populated when the page was capped by pageSize).'}, 'events': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'parkCode', 'description', 'location', 'dateStart', 'dateEnd', 'occurrenceDates', 'isRecurring', 'times', 'category', 'isFree', 'feeInfo', 'registrationUrl', 'infoUrl'], 'properties': {'id': {'type': 'string', 'description': 'Event ID.'}, 'times': {'type': 'array', 'items': {'type': 'object', 'required': ['timeStart', 'timeEnd'], 'properties': {'timeEnd': {'type': 'string', 'description': 'End time (e.g. "02:30 PM").'}, 'timeStart': {'type': 'string', 'description': 'Start time (e.g. "02:00 PM").'}}, 'description': 'A single scheduled time slot.', 'additionalProperties': False}, 'description': 'Scheduled time slots for the event. May be empty (all-day or unspecified).'}, 'title': {'type': 'string', 'description': 'Event title.'}, 'isFree': {'type': 'boolean', 'description': 'Whether the event is free.'}, 'dateEnd': {'type': ['string', 'null'], 'description': 'Event end date (YYYY-MM-DD), or null. For a recurring event this is the anchor date, not the last occurrence â\x80\x94 see occurrenceDates and isRecurring.'}, 'feeInfo': {'type': ['string', 'null'], 'description': 'Fee details when not free (free text), or null.'}, 'infoUrl': {'type': ['string', 'null'], 'description': 'More-info URL, or null.'}, 'category': {'type': ['string', 'null'], 'description': 'Event category (e.g. "Regular Event", "Ranger Programs"), or null.'}, 'location': {'type': ['string', 'null'], 'description': 'Event location within the park (free text), or null.'}, 'parkCode': {'type': ['string', 'null'], 'description': 'Park code the event belongs to, or null if absent.'}, 'dateStart': {'type': ['string', 'null'], 'description': 'Event start date (YYYY-MM-DD), or null. For a recurring event this is the series anchor (its original first date), which can predate your requested window â\x80\x94 use occurrenceDates for the dates that actually fall in the window.'}, 'description': {'type': 'string', 'description': 'Event description as plain text.'}, 'isRecurring': {'type': 'boolean', 'description': 'True when this is a recurring series (multiple occurrence dates); dateStart/dateEnd then hold the series anchor and occurrenceDates the actual dates.'}, 'occurrenceDates': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dates (YYYY-MM-DD) the event actually occurs within the requested dateStart/dateEnd window; with no window, every remaining occurrence from today through the series end. Empty when the window matches no occurrence. For a recurring series, dateStart/dateEnd hold the series anchor instead.'}, 'registrationUrl': {'type': ['string', 'null'], 'description': 'Registration/reservation URL, or null.'}}, 'description': 'A single scheduled event with dates, times, and registration links.', 'additionalProperties': False}, 'description': 'Events matching the park/state and date window.'}, 'notice': {'type': 'string', 'description': 'Guidance on the result set: how to widen a search that matched nothing, the pageNumber for the next page when more events matched, the way back when pageNumber ran past the end, and a warning when NPS reports errors for the request.'}, 'truncated': {'type': 'boolean', 'description': 'True when more matching events follow this page; absent on the last page of the result.'}, 'totalCount': {'type': 'number', 'description': 'Total events matching the filter before the page limit.'}, 'appliedFilters': {'type': 'string', 'description': 'Echo of parkCode/stateCode/date window/query as applied.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum parks to return (1â\x80\x9350). The full set is ~470 sites; narrow with query/stateCode rather than paging through everything.'}, 'query': {'type': 'string', 'description': 'Free-text search across park names and descriptions (e.g. "yosemite", "civil war", "redwood"). Exact parkCode or name matches lead, then other name matches, then parks that only mention the term in their description â\x80\x94 ranked across every match before start/limit apply. Omit to browse by state. At least one of query or stateCode is recommended; with neither, returns the first page of all ~470 NPS sites.'}, 'start': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination within the matched set. Use with limit to page through results.'}, 'activity': {'type': 'string', 'description': 'Filter to parks offering an activity, matched against each park\'s activities list (e.g. "hiking", "camping", "stargazing"). Case-insensitive substring match, combined with query/stateCode and applied before start/limit, so totalCount counts every matching park, not one page. Use nps_get_park to see a park\'s full activity list.'}, 'stateCode': {'type': 'string', 'description': 'Two-letter US state/territory code, or comma-separated list (e.g. "CA", "WY,MT,ID"). Filters to parks located in those states. Combine with query to narrow.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['parks', 'totalCount', 'appliedFilters']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied to this response (populated when results were truncated).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_state_code'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_state_code`: A stateCode token is not two letters. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'parks': {'type': 'array', 'items': {'type': 'object', 'required': ['parkCode', 'fullName', 'designation', 'states', 'description', 'latitude', 'longitude', 'activities', 'entranceFee', 'url'], 'properties': {'url': {'type': 'string', 'description': "Park's official NPS.gov page, with fuller detail than this summary."}, 'states': {'type': 'string', 'description': 'Comma-separated state codes the park spans (e.g. "CA", "WY,MT,ID").'}, 'fullName': {'type': 'string', 'description': 'Full official name (e.g. "Yosemite National Park").'}, 'latitude': {'type': ['number', 'null'], 'description': 'Center latitude (decimal degrees), or null if the park record has no coordinates.'}, 'parkCode': {'type': 'string', 'description': 'Park code â\x80\x94 the key for nps_get_park, nps_get_alerts, nps_find_campgrounds, nps_get_activities, nps_find_events (e.g. "yose").'}, 'longitude': {'type': ['number', 'null'], 'description': 'Center longitude (decimal degrees), or null if absent.'}, 'activities': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Activity names available at the park (e.g. "Hiking", "Camping"). May be empty.'}, 'description': {'type': 'string', 'description': 'Short park description.'}, 'designation': {'type': 'string', 'description': 'Site type (e.g. "National Park", "National Monument", "National Historic Site"). Empty string for sites without a designation.'}, 'entranceFee': {'type': ['string', 'null'], 'description': 'Lowest standard entrance fee as a dollar string (e.g. "35.00"), or null if the park is fee-free or lists no fee. Full fee/pass breakdown is in nps_get_park.'}}, 'description': 'A matching park with its parkCode and trip-planning summary.', 'additionalProperties': False}, 'description': 'Matching parks, each carrying the parkCode needed to chain into the detail tools.'}, 'shown': {'type': 'number', 'description': 'Number of parks returned in this response (populated when the result set was capped by limit).'}, 'notice': {'type': 'string', 'description': 'Guidance on the result set: how to broaden a search that matched nothing, the start value for the next page when more parks matched, the way back when start ran past the end, and a best-effort disclosure when the activity scan could not cover every site.'}, 'truncated': {'type': 'boolean', 'description': 'True when more parks matched than this response returned; absent on a complete result.'}, 'totalCount': {'type': 'number', 'description': 'Total parks matching every filter, before start/limit were applied.'}, 'appliedFilters': {'type': 'string', 'description': 'Echo of the filters as applied (query / stateCode / activity).'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 15, 'maximum': 50, 'minimum': 1, 'description': 'Maximum activities to return (1â\x80\x9350).'}, 'query': {'type': 'string', 'description': 'Free-text search across activity titles/descriptions (e.g. "sunrise", "hike", "tour").'}, 'start': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based pagination offset.'}, 'parkCode': {'type': 'string', 'description': 'A single 4-letter lowercase park code (e.g. "acad"). Get it from nps_find_parks. Accepts one park code, not a list. Provide parkCode or stateCode.'}, 'stateCode': {'type': 'string', 'description': 'A single two-letter state code (e.g. "ME"). Returns curated activities across NPS sites in that state.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['activities', 'totalCount', 'appliedFilters']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'Limit applied (populated when results were truncated).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['missing_filter', 'invalid_park_code', 'invalid_state_code'], 'description': "Machine-readable failure mode. Declared by this tool: `missing_filter`: Neither parkCode nor stateCode provided. `invalid_park_code`: parkCode isn't a single 4-letter lowercase code. `invalid_state_code`: stateCode isn't a single two-letter code. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Activities returned in this response (populated when capped by limit).'}, 'notice': {'type': 'string', 'description': 'Guidance on the result set: where else to look when no curated activities matched, the start value for the next page when more matched, or the way back when start ran past the end.'}, 'truncated': {'type': 'boolean', 'description': 'True when more activities matched than this response returned; absent on a complete result.'}, 'activities': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'parkCode', 'shortDescription', 'location', 'latitude', 'longitude', 'duration', 'reservationRequired', 'feeDescription', 'petsPermitted', 'accessibility', 'season', 'url'], 'properties': {'id': {'type': 'string', 'description': 'Activity ID.'}, 'url': {'type': ['string', 'null'], 'description': "Activity's NPS.gov page, or null."}, 'title': {'type': 'string', 'description': 'Activity title (e.g. "Watch the Sunrise from Cadillac Mountain").'}, 'season': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Seasons when the activity is available (e.g. ["Summer", "Fall"]). May be empty.'}, 'duration': {'type': ['string', 'null'], 'description': 'Time commitment (e.g. "1-3 Hours"), or null.'}, 'latitude': {'type': ['number', 'null'], 'description': 'Activity latitude (decimal degrees) or null.'}, 'location': {'type': ['string', 'null'], 'description': 'Where in the park this happens (free text), or null.'}, 'parkCode': {'type': ['string', 'null'], 'description': 'Park code the activity belongs to, or null if absent.'}, 'longitude': {'type': ['number', 'null'], 'description': 'Activity longitude (decimal degrees) or null.'}, 'accessibility': {'type': ['string', 'null'], 'description': 'Accessibility information (free text), or null.'}, 'petsPermitted': {'type': 'boolean', 'description': 'Whether pets are permitted.'}, 'feeDescription': {'type': ['string', 'null'], 'description': 'Fee info if any (free text), or null. Absence does not guarantee free â\x80\x94 check the park page.'}, 'shortDescription': {'type': 'string', 'description': 'Concise description of the activity.'}, 'reservationRequired': {'type': 'boolean', 'description': 'Whether a reservation is required.'}}, 'description': 'A single curated activity or point of interest.', 'additionalProperties': False}, 'description': 'Curated activities and points of interest for the requested park/state.'}, 'totalCount': {'type': 'number', 'description': 'Total activities matching the filter before the limit was applied.'}, 'appliedFilters': {'type': 'string', 'description': 'Echo of parkCode/stateCode/query as applied.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum alerts to return (1â\x80\x9350), most-recent first.'}, 'query': {'type': 'string', 'description': 'Free-text search within alert titles/descriptions (e.g. "road", "wildfire", "trail").'}, 'start': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination within the matched set. Use with limit to page through results â\x80\x94 when totalCount exceeds what was returned, re-request with start advanced by limit.'}, 'category': {'enum': ['Danger', 'Caution', 'Information', 'Park Closure'], 'type': 'string', 'description': 'Filter to one alert category. "Danger" and "Park Closure" are trip-affecting. Combined with parkCode/stateCode/query and applied before start/limit, so totalCount counts every matching alert, not one page. Omit to see all categories.'}, 'parkCode': {'type': 'string', 'description': 'Park code, or comma-separated list (e.g. "glac", "yose,zion") â\x80\x94 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode; with neither, returns recent alerts service-wide.'}, 'stateCode': {'type': 'string', 'description': 'Two-letter state code, or comma-separated list (e.g. "MT", "WY,MT,ID"). Returns alerts for all NPS sites in those states â\x80\x94 use for a statewide sweep rather than one park.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['alerts', 'totalCount', 'categoryBreakdown', 'appliedFilters']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'Limit applied (populated when results were truncated).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_park_code', 'invalid_state_code'], 'description': "Machine-readable failure mode. Declared by this tool: `invalid_park_code`: A parkCode token isn't 4 lowercase letters. `invalid_state_code`: A stateCode token isn't two letters. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Alerts returned in this response (populated when capped by limit).'}, 'alerts': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'parkCode', 'category', 'title', 'description', 'url', 'lastIndexedDate'], 'properties': {'id': {'type': 'string', 'description': 'Alert ID.'}, 'url': {'type': ['string', 'null'], 'description': 'Link to more detail on NPS.gov, or null when absent.'}, 'title': {'type': 'string', 'description': 'Short alert headline (e.g. "Tioga Road Closed for the Season").'}, 'category': {'type': 'string', 'description': 'Alert category: "Danger", "Park Closure", "Caution", or "Information". Danger and Park Closure are trip-affecting.'}, 'parkCode': {'type': 'string', 'description': 'Park code the alert belongs to â\x80\x94 useful when querying by state across multiple parks.'}, 'description': {'type': 'string', 'description': 'Full alert text â\x80\x94 what is affected and any guidance.'}, 'lastIndexedDate': {'type': ['string', 'null'], 'description': 'When NPS last updated/indexed this alert (YYYY-MM-DD), or null. The recency signal â\x80\x94 a stale date may mean the condition has changed.'}}, 'description': 'A single alert with its category, recency, and detail.', 'additionalProperties': False}, 'description': 'Current alerts, most-recent first. Empty with totalCount 0 means no active alerts match the request; empty with a non-zero totalCount means start ran past the end of the matches.'}, 'notice': {'type': 'string', 'description': 'Guidance on the result set: whether an empty page means no active alerts match (totalCount 0) or start ran past the end of the matches, the start value for the next page when more alerts matched, and a best-effort disclosure when the category filter could not cover every alert.'}, 'truncated': {'type': 'boolean', 'description': 'True when more alerts matched than this response returned; absent on a complete result.'}, 'totalCount': {'type': 'number', 'description': 'Total alerts matching the filter before the limit was applied.'}, 'appliedFilters': {'type': 'string', 'description': 'Echo of parkCode/stateCode/category/query as applied.'}, 'categoryBreakdown': {'type': 'string', 'description': 'Count of returned alerts per category, most severe first (e.g. "Park Closure: 3, Caution: 1, Information: 2").'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['parkCode'], 'properties': {'fields': {'type': 'array', 'items': {'enum': ['activities', 'topics', 'fees', 'hours', 'contacts', 'directions', 'images'], 'type': 'string'}, 'description': 'Optional detail sections to include beyond the always-present core (name, designation, states, description, coordinates, weather, url). Omit for all sections. Narrow to reduce payload when you only need, say, hours and fees.'}, 'parkCode': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'minItems': 1, 'description': 'One to ten park codes per call, each a 4-letter lowercase code (e.g. "yose", "grca", "zion"). Get codes from nps_find_parks.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['parks', 'requestedCount', 'returnedCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_park_code', 'no_parks_found'], 'description': "Machine-readable failure mode. Declared by this tool: `invalid_park_code`: A parkCode element isn't 4 lowercase letters. `no_parks_found`: None of the requested codes matched an NPS site. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'parks': {'type': 'array', 'items': {'type': 'object', 'required': ['parkCode', 'fullName', 'designation', 'states', 'description', 'latitude', 'longitude', 'weatherOverview', 'url'], 'properties': {'url': {'type': 'string', 'description': "Park's official NPS.gov page."}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'altText', 'title'], 'properties': {'url': {'type': 'string', 'description': 'Image URL.'}, 'title': {'type': 'string', 'description': 'Image title.'}, 'altText': {'type': 'string', 'description': 'Alt text / caption.'}}, 'description': 'A single representative park image.', 'additionalProperties': False}, 'description': 'Representative park images (included unless fields excludes "images"). Capped at 5; imagesTruncated flags when the park has more. May be empty.'}, 'states': {'type': 'string', 'description': 'Comma-separated state codes the park spans.'}, 'topics': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Topic names â\x80\x94 what the park is about, e.g. "Volcanoes", "Civil War" (included unless fields excludes "topics").'}, 'contacts': {'type': 'object', 'required': ['phoneNumbers', 'emailAddresses'], 'properties': {'phoneNumbers': {'type': 'array', 'items': {'type': 'object', 'required': ['phoneNumber', 'type'], 'properties': {'type': {'type': 'string', 'description': 'Type (e.g. "Voice", "Fax").'}, 'phoneNumber': {'type': 'string', 'description': 'The number.'}}, 'description': 'A single phone contact.', 'additionalProperties': False}, 'description': 'Phone contacts. May be empty.'}, 'emailAddresses': {'type': 'array', 'items': {'type': 'object', 'required': ['emailAddress'], 'properties': {'emailAddress': {'type': 'string', 'description': 'The email address.'}}, 'description': 'A single email contact.', 'additionalProperties': False}, 'description': 'Email contacts. May be empty.'}}, 'description': 'Park contact info (included unless fields excludes "contacts").', 'additionalProperties': False}, 'fullName': {'type': 'string', 'description': 'Full official park name.'}, 'latitude': {'type': ['number', 'null'], 'description': 'Center latitude (decimal degrees) or null.'}, 'parkCode': {'type': 'string', 'description': 'Park code (echoes the request).'}, 'longitude': {'type': ['number', 'null'], 'description': 'Center longitude (decimal degrees) or null.'}, 'activities': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Activity names (included unless fields excludes "activities").'}, 'description': {'type': 'string', 'description': 'Full park description.'}, 'designation': {'type': 'string', 'description': 'Site type (e.g. "National Park"). Empty string if none.'}, 'entranceFees': {'type': 'array', 'items': {'type': 'object', 'required': ['cost', 'title', 'description'], 'properties': {'cost': {'type': 'string', 'description': 'Fee amount as a dollar string (e.g. "35.00"). "0.00" means no charge for that category.'}, 'title': {'type': 'string', 'description': 'Fee title (e.g. "Entrance - Private Vehicle").'}, 'description': {'type': 'string', 'description': 'What the fee covers and for how long.'}}, 'description': 'A single entrance fee category.', 'additionalProperties': False}, 'description': 'Entrance fees by category (included unless fields excludes "fees"). Empty array means the park lists no entrance fee.'}, 'directionsUrl': {'type': ['string', 'null'], 'description': 'NPS directions page URL, or null when NPS publishes none (included unless fields excludes "directions").'}, 'directionsInfo': {'type': ['string', 'null'], 'description': 'Free-text driving/access directions, or null when NPS publishes none (included unless fields excludes "directions").'}, 'entrancePasses': {'type': 'array', 'items': {'type': 'object', 'required': ['cost', 'title', 'description'], 'properties': {'cost': {'type': 'string', 'description': 'Pass cost as a dollar string.'}, 'title': {'type': 'string', 'description': 'Pass title (e.g. "Yosemite Annual Pass").'}, 'description': {'type': 'string', 'description': 'Pass coverage and validity.'}}, 'description': 'A single annual or park-specific pass.', 'additionalProperties': False}, 'description': 'Annual/park-specific passes (included unless fields excludes "fees"). May be empty.'}, 'operatingHours': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'description', 'standardHours'], 'properties': {'name': {'type': 'string', 'description': 'Schedule name (e.g. "Yosemite Valley").'}, 'description': {'type': 'string', 'description': 'Free-text hours/seasonality notes.'}, 'standardHours': {'type': 'object', 'required': ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'], 'properties': {'friday': {'type': 'string', 'description': 'Friday hours.'}, 'monday': {'type': 'string', 'description': 'Monday hours (e.g. "All Day", "Closed", "9:00AM - 5:00PM").'}, 'sunday': {'type': 'string', 'description': 'Sunday hours.'}, 'tuesday': {'type': 'string', 'description': 'Tuesday hours.'}, 'saturday': {'type': 'string', 'description': 'Saturday hours.'}, 'thursday': {'type': 'string', 'description': 'Thursday hours.'}, 'wednesday': {'type': 'string', 'description': 'Wednesday hours.'}}, 'description': 'Per-weekday operating hours. Values are free-text strings from NPS.', 'additionalProperties': False}}, 'description': 'Operating hours for one area or season.', 'additionalProperties': False}, 'description': 'Operating hours by area/season (included unless fields excludes "hours"). May be empty.'}, 'imagesTruncated': {'type': 'boolean', 'description': 'True when the park has more than the 5 images returned here; the park url has the full set. Present only when the images section is included.'}, 'weatherOverview': {'type': ['string', 'null'], 'description': 'NPS free-text weather/seasonal overview for the park, or null. General seasonal guidance, not a forecast.'}}, 'description': 'One park with its trip-planning detail.', 'additionalProperties': False}, 'description': 'Requested parks with trip-planning detail.'}, 'notice': {'type': 'string', 'description': 'Guidance when one or more codes did not resolve, or when none did.'}, 'missingCodes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Requested park codes that matched no NPS site â\x80\x94 likely misspelled. Populated only when some codes did not resolve.'}, 'returnedCount': {'type': 'number', 'description': 'Number of requested parks found.'}, 'requestedCount': {'type': 'number', 'description': 'Number of park codes requested.'}}, 'additionalProperties': False}
Letzte Tool-Änderungen
Ähnliche MCP-Server
Award Travel Finder
Searches award flights and hotels, tracks bookings and loyalty balances, evaluates points and credit cards, and monitors travel r…
AI 代理人任務中樞
Aggregates Taiwan-focused tools for AI service comparisons, cryptocurrency data, game information, health guidance, and other con…
Good Turn Studio (all tools)
Offers consumer utilities for insurance claim appeals, subscription cancellation, flight fare research, financial recovery resour…
Gover MCP
Searches and manages corporate travel requests, flights, hotels, rental vehicles, passengers, carts, approvals, reservations, and…
DC Member API
Provides access to Dynamite Circle membership data, community profiles, chapters, events, trips, calendars, alerts, follows, agen…
Nomad Stays
Searches and books remote-work accommodations while supporting host listing management, rooms, packages, availability, and hospit…
lilo Vacation Rentals
Supports vacation-rental discovery, availability and direct booking, property operations, short-term-rental compliance, guest and…
mcp-server
Provides immigration, citizenship and residency programme research alongside tax, wealth structuring, banking, visa, treaty and c…