Plan US National Park Service trips — find parks, check alerts and closures, find campgrounds, browse things to do and events via the NPS Data API.
Five tools with comprehensive descriptions (194 - 350 chars, well above baseline 194 avg) and detailed parameter documentation. All tools have explicit JSON Schema with types, descriptions, and constraints (enums, patterns, defaults). Output schemas are documented in descriptions. Tool names follow verb_noun convention (nps_find_*, nps_get_*). Error handling guidance present (e.g., 'empty result is not an error'). Pagination properly implemented with limit/start and totalCount. Strengths: excellent parameter descriptions with format guidance ('4-letter lowercase codes'), activity/category filtering with local re-ranking explained, and trip-planning context. Gaps: no explicit error recovery guidance for API failures, no confirmation patterns for destructive ops (none exist, but worth noting), and output field naming could be more explicit in schema documentation.
Campgrounds at a park or across a state: amenities (potable water, showers, RV dump station, toilets, trash collection, RV access), reservable vs. first-come-first-served site counts, reservation guidance and booking URL, accessibility, and fees — answering "where can I camp at Zion, and can I get an RV hookup?" Get park codes from nps_find_parks. Some parks list lodging or backcountry permits instead of NPS-managed campgrounds; an empty result is not an error.
Scheduled events at a park within a date range — ranger programs, festivals, tours, interpretive events — answering "what's happening at Yellowstone this weekend?" with title, dates and times, location, category, fee, and registration links. Get park codes from nps_find_parks. Paginates by page number, not offset. The events feed is sparser and less consistent than alerts or campgrounds; many parks list few or no events, and an empty result is not an error.
Resolve a place name, US state, or free-text query to National Park Service parks — the required first step before the detail tools. Returns each park's parkCode (the key nps_get_park, nps_get_alerts, nps_find_campgrounds, nps_get_activities, and nps_find_events all use) plus a compact trip-planning summary (designation, states, description, coordinates, headline activities, entrance fee, NPS page). Coverage is US NPS sites only — national parks, monuments, historic sites, seashores — not state parks and not Forest Service or BLM land.
Output schemas not formally documented in JSON Schema format. Descriptions explain fields (e.g., 'parkCode', 'designation', 'coordinates') but no explicit response schema definition visible in tool registration.
nps_find_events uses 1-based pageNumber pagination while other tools use 0-based start offset. Inconsistent pagination model across tool suite increases LLM confusion and multi-tool composition errors.
No explicit error recovery guidance for API failures (e.g., 'If the NPS API is unavailable, retry after 30 seconds'). Descriptions note 'empty result is not an error' but do not guide LLM on transient vs. permanent failures.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Curated things to do and points of interest at a park — title, description, time commitment, location, accessibility, and fee/pet/reservation flags — answering "what should I do at Acadia?" Covers the NPS editorially-curated activity list (distinct from a park's raw activity tags in nps_get_park). Accepts a single 4-letter park code or a single two-letter state code, and at least one is required. Not every park has a curated list; an empty result is not an error.
Current alerts for a park or a whole state — closures, hazards, caution notices, and information — with category and recency surfaced first so "is anything closed at Glacier right now?" is answered at a glance. Get park codes from nps_find_parks, or pass a stateCode for a statewide "what's closed" sweep. Returns most-recent-first; an empty result with totalCount 0 means the park reports nothing closed or hazardous — good news, not an error. An empty page with a non-zero totalCount only means start ran past the end, so read the notice rather than the empty list. Closures and road conditions change daily — re-check before departure.
Parameter descriptions include example values (e.g., 'e.g. "yosemite", "civil war", "redwood"' in nps_find_parks query). LLMs may reuse examples literally rather than adapting to context.
nps_get_activities accepts only single parkCode or stateCode (pattern '^[a-z]{4}$' and '^[A-Za-z]{2}$'), while nps_find_parks and nps_get_alerts accept comma-separated lists. Inconsistent multi-resource handling across suite.