{
  "schema": "agent-interface.v0",
  "site_id": "canadian-rockies-planner",
  "generated_on": "2026-06-02",
  "base_url": "https://canadianrockiesplanner.com",
  "purpose": "Read-first digital twin interface for external agents that need practical Canadian Rockies visitor answers, source-backed facts, place nodes, route context, and future local-service handoff capabilities.",
  "languages": [
    {
      "language": "en",
      "label": "English",
      "html_lang": "en",
      "schema_language": "en-CA",
      "human_root": "/",
      "core_pages": {
        "home": "/",
        "banff": "/banff/",
        "legacy_trail": "/legacy-trail/",
        "visual_credits": "/visual-credits/"
      },
      "machine_facts": {
        "status": "available",
        "path": "/facts/banff-facts-en.md",
        "canonical_source": null,
        "notes": "Use this facts file directly for machine-readable Banff Q&A."
      }
    },
    {
      "language": "zh",
      "label": "\u4e2d\u6587",
      "html_lang": "zh-Hans",
      "schema_language": "zh-Hans",
      "human_root": "/zh/",
      "core_pages": {
        "home": "/zh/",
        "banff": "/zh/banff/",
        "legacy_trail": "/zh/legacy-trail/",
        "visual_credits": "/zh/visual-credits/"
      },
      "machine_facts": {
        "status": "available",
        "path": "/facts/banff-facts-zh.md",
        "canonical_source": "/facts/banff-facts-en.md",
        "notes": "Use this localized machine facts file first, then open same-language HTML pages for deeper context and current-source links."
      }
    },
    {
      "language": "fr",
      "label": "Fran\u00e7ais",
      "html_lang": "fr-CA",
      "schema_language": "fr-CA",
      "human_root": "/fr/",
      "core_pages": {
        "home": "/fr/",
        "banff": "/fr/banff/",
        "legacy_trail": "/fr/legacy-trail/",
        "visual_credits": "/fr/visual-credits/"
      },
      "machine_facts": {
        "status": "available",
        "path": "/facts/banff-facts-fr.md",
        "canonical_source": "/facts/banff-facts-en.md",
        "notes": "Use this localized machine facts file first, then open same-language HTML pages for deeper context and current-source links."
      }
    },
    {
      "language": "ja",
      "label": "\u65e5\u672c\u8a9e",
      "html_lang": "ja",
      "schema_language": "ja",
      "human_root": "/ja/",
      "core_pages": {
        "home": "/ja/",
        "banff": "/ja/banff/",
        "legacy_trail": "/ja/legacy-trail/",
        "visual_credits": "/ja/visual-credits/"
      },
      "machine_facts": {
        "status": "available",
        "path": "/facts/banff-facts-ja.md",
        "canonical_source": "/facts/banff-facts-en.md",
        "notes": "Use this localized machine facts file first, then open same-language HTML pages for deeper context and current-source links."
      }
    }
  ],
  "localized_entrypoints": {
    "supported_languages": [
      "en",
      "zh",
      "fr",
      "ja"
    ],
    "preferred_behavior": "If the end user asks in Chinese, French, or Japanese, read the matching localized machine facts file first, then use same-language human pages for deeper context and source links. Translate English only when the localized fact is missing or ambiguous.",
    "hreflang_policy": "Every published human page has reciprocal hreflang alternates for en, zh, fr, ja, and x-default.",
    "machine_facts_status": "Localized machine facts Markdown is available for en, zh, fr, and ja.",
    "core_pages": {
      "en": {
        "home": "/",
        "banff": "/banff/",
        "legacy_trail": "/legacy-trail/",
        "visual_credits": "/visual-credits/"
      },
      "zh": {
        "home": "/zh/",
        "banff": "/zh/banff/",
        "legacy_trail": "/zh/legacy-trail/",
        "visual_credits": "/zh/visual-credits/"
      },
      "fr": {
        "home": "/fr/",
        "banff": "/fr/banff/",
        "legacy_trail": "/fr/legacy-trail/",
        "visual_credits": "/fr/visual-credits/"
      },
      "ja": {
        "home": "/ja/",
        "banff": "/ja/banff/",
        "legacy_trail": "/ja/legacy-trail/",
        "visual_credits": "/ja/visual-credits/"
      }
    },
    "facts_by_language": {
      "en": "/facts/banff-facts-en.md",
      "zh": "/facts/banff-facts-zh.md",
      "fr": "/facts/banff-facts-fr.md",
      "ja": "/facts/banff-facts-ja.md"
    }
  },
  "localized_page_index": [
    {
      "id": "home",
      "name": "Canadian Rockies Planner",
      "kind": "site_home",
      "description": "Project home and route into Banff and Legacy Trail pages.",
      "urls": {
        "en": "/",
        "zh": "/zh/",
        "fr": "/fr/",
        "ja": "/ja/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/",
        "zh": "https://canadianrockiesplanner.com/zh/",
        "fr": "https://canadianrockiesplanner.com/fr/",
        "ja": "https://canadianrockiesplanner.com/ja/"
      }
    },
    {
      "id": "banff",
      "name": "Banff",
      "kind": "destination_home",
      "description": "Banff practical place twin.",
      "urls": {
        "en": "/banff/",
        "zh": "/zh/banff/",
        "fr": "/fr/banff/",
        "ja": "/ja/banff/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/"
      }
    },
    {
      "id": "legacy-trail",
      "name": "Rocky Mountain Legacy Trail",
      "kind": "route_home",
      "description": "Canmore to Banff Legacy Trail bike-day twin.",
      "urls": {
        "en": "/legacy-trail/",
        "zh": "/zh/legacy-trail/",
        "fr": "/fr/legacy-trail/",
        "ja": "/ja/legacy-trail/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/legacy-trail/",
        "zh": "https://canadianrockiesplanner.com/zh/legacy-trail/",
        "fr": "https://canadianrockiesplanner.com/fr/legacy-trail/",
        "ja": "https://canadianrockiesplanner.com/ja/legacy-trail/"
      }
    },
    {
      "id": "visual-credits",
      "name": "Visual Credits",
      "kind": "source_policy",
      "description": "Image credits, licenses, and visual-asset topic policy.",
      "urls": {
        "en": "/visual-credits/",
        "zh": "/zh/visual-credits/",
        "fr": "/fr/visual-credits/",
        "ja": "/ja/visual-credits/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/visual-credits/",
        "zh": "https://canadianrockiesplanner.com/zh/visual-credits/",
        "fr": "https://canadianrockiesplanner.com/fr/visual-credits/",
        "ja": "https://canadianrockiesplanner.com/ja/visual-credits/"
      }
    },
    {
      "id": "banff.itineraries",
      "name": "Banff Itineraries by Visitor Type",
      "kind": "decision_system",
      "description": "One-day Banff plans for first timers, families, older visitors, no-car travelers, food-focused visitors, rainy days, and photo-story trips.",
      "urls": {
        "en": "/banff/itineraries/",
        "zh": "/zh/banff/itineraries/",
        "fr": "/fr/banff/itineraries/",
        "ja": "/ja/banff/itineraries/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/itineraries/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/itineraries/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/itineraries/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/itineraries/"
      }
    },
    {
      "id": "banff.getting-here",
      "name": "Getting to Banff from Calgary and YYC",
      "kind": "arrival_transport_decision",
      "description": "How to get from Calgary or YYC Calgary International Airport to Banff by rental car, shuttle, coach bus, seasonal transit, or no-car arrival plan.",
      "urls": {
        "en": "/banff/getting-here/",
        "zh": "/zh/banff/getting-here/",
        "fr": "/fr/banff/getting-here/",
        "ja": "/ja/banff/getting-here/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/getting-here/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/getting-here/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/getting-here/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/getting-here/"
      }
    },
    {
      "id": "banff.lake-louise-moraine-lake",
      "name": "Lake Louise and Moraine Lake from Banff",
      "kind": "regional_day_trip_decision",
      "description": "How to plan Lake Louise and Moraine Lake from Banff in 2026: Parks Canada shuttle reservations, Roam 8X and Super Pass, no Route 10, Lake Louise parking risk, Moraine Lake no-private-car access, timing, fallback plans, and photo-story stops.",
      "urls": {
        "en": "/banff/lake-louise-moraine-lake/",
        "zh": "/zh/banff/lake-louise-moraine-lake/",
        "fr": "/fr/banff/lake-louise-moraine-lake/",
        "ja": "/ja/banff/lake-louise-moraine-lake/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/lake-louise-moraine-lake/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/lake-louise-moraine-lake/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/lake-louise-moraine-lake/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/lake-louise-moraine-lake/"
      }
    },
    {
      "id": "banff.johnston-canyon",
      "name": "Johnston Canyon from Banff",
      "kind": "regional_hike_decision",
      "description": "How to plan Johnston Canyon from Banff: Lower Falls, Upper Falls, Ink Pots, Bow Valley Parkway access, parking risk, Roam Route 9, strollers, winter traction, and photo-story timing.",
      "urls": {
        "en": "/banff/johnston-canyon/",
        "zh": "/zh/banff/johnston-canyon/",
        "fr": "/fr/banff/johnston-canyon/",
        "ja": "/ja/banff/johnston-canyon/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/johnston-canyon/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/johnston-canyon/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/johnston-canyon/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/johnston-canyon/"
      }
    },
    {
      "id": "banff.book-ahead",
      "name": "Banff Tickets, Reservations, and What to Verify",
      "kind": "booking_decision_system",
      "description": "What to buy, reserve, or verify before a Banff day: park pass, lake shuttles, Roam reservations, gondola tickets, Lake Minnewanka cruise, hot springs, parking, restaurants, weather, and cancellation risk.",
      "urls": {
        "en": "/banff/book-ahead/",
        "zh": "/zh/banff/book-ahead/",
        "fr": "/fr/banff/book-ahead/",
        "ja": "/ja/banff/book-ahead/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/book-ahead/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/book-ahead/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/book-ahead/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/book-ahead/"
      }
    },
    {
      "id": "banff.park-pass",
      "name": "Banff Park Pass",
      "kind": "rule_service",
      "description": "Why visitors need a Banff National Park entry pass, when through-traffic does not need one, where to buy it, what Canada Strong Pass changes in 2026, and why it is separate from parking, shuttles, camping, and attraction tickets.",
      "urls": {
        "en": "/banff/park-pass/",
        "zh": "/zh/banff/park-pass/",
        "fr": "/fr/banff/park-pass/",
        "ja": "/ja/banff/park-pass/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/park-pass/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/park-pass/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/park-pass/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/park-pass/"
      }
    },
    {
      "id": "banff.visitor-centre",
      "name": "Banff Visitor Centre",
      "kind": "service",
      "description": "When to use the Banff Visitor Centre as the downtown official-help anchor: park passes, maps, brochures, permits, current conditions, trail and road reports, accessibility, weather pivots, parking/washroom handoffs, and same-day itinerary repair.",
      "urls": {
        "en": "/banff/visitor-centre/",
        "zh": "/zh/banff/visitor-centre/",
        "fr": "/fr/banff/visitor-centre/",
        "ja": "/ja/banff/visitor-centre/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/visitor-centre/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/visitor-centre/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/visitor-centre/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/visitor-centre/"
      }
    },
    {
      "id": "banff.parking",
      "name": "Banff Parking",
      "kind": "parking_decision",
      "description": "Where to park in Banff by visitor need: train station public parking, Bear Street Parkade, short downtown errands, hotel or restaurant plans, accessibility needs, payment rules, and what to do if parking fails.",
      "urls": {
        "en": "/banff/parking/",
        "zh": "/zh/banff/parking/",
        "fr": "/fr/banff/parking/",
        "ja": "/ja/banff/parking/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/parking/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/parking/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/parking/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/parking/"
      }
    },
    {
      "id": "banff.parking-tickets",
      "name": "Banff Parking Tickets",
      "kind": "civic_problem",
      "description": "What to do if you get a Banff parking ticket or related violation notice: confirm ticket type, pay through the right official portal, request review, handle rental-car timing, and keep the trip moving.",
      "urls": {
        "en": "/banff/parking-tickets/",
        "zh": "/zh/banff/parking-tickets/",
        "fr": "/fr/banff/parking-tickets/",
        "ja": "/ja/banff/parking-tickets/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/parking-tickets/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/parking-tickets/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/parking-tickets/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/parking-tickets/"
      }
    },
    {
      "id": "banff.unexpected-problems",
      "name": "Unexpected Problems in Banff",
      "kind": "problem_router",
      "description": "A practical Banff triage page for problems visitors rarely plan for: medical help, parking ticket payment/review, provincial ticket routing, washrooms, garbage, bottle returns, lost property, emergency alerts, road problems, wildlife reports, transit fallback, and official help.",
      "urls": {
        "en": "/banff/unexpected-problems/",
        "zh": "/zh/banff/unexpected-problems/",
        "fr": "/fr/banff/unexpected-problems/",
        "ja": "/ja/banff/unexpected-problems/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/unexpected-problems/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/unexpected-problems/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/unexpected-problems/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/unexpected-problems/"
      }
    },
    {
      "id": "banff.emergency-alerts",
      "name": "Banff Alerts, Safety, and Road Problems",
      "kind": "safety_alert_system",
      "description": "What to check when Banff plans change because of emergency alerts, road conditions, wildfire smoke, wildlife encounters, closures, police/lost-property issues, or low-signal areas.",
      "urls": {
        "en": "/banff/emergency-alerts/",
        "zh": "/zh/banff/emergency-alerts/",
        "fr": "/fr/banff/emergency-alerts/",
        "ja": "/ja/banff/emergency-alerts/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/emergency-alerts/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/emergency-alerts/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/emergency-alerts/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/emergency-alerts/"
      }
    },
    {
      "id": "banff.washrooms",
      "name": "Banff Public Washrooms",
      "kind": "public_service",
      "description": "A practical Banff washroom, water refill, change-table, shower, family reset, bike-start, lake-drive, and evening-route decision node.",
      "urls": {
        "en": "/banff/washrooms/",
        "zh": "/zh/banff/washrooms/",
        "fr": "/fr/banff/washrooms/",
        "ja": "/ja/banff/washrooms/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/washrooms/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/washrooms/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/washrooms/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/washrooms/"
      }
    },
    {
      "id": "banff.waste-recycling",
      "name": "Banff Garbage, Recycling, and Bottle Returns",
      "kind": "civic_service",
      "description": "Where visitors should handle picnic waste, bottles and cans, recycling, bear-safe garbage, larger drop-offs, reusable items, electronics, and awkward waste questions in Banff.",
      "urls": {
        "en": "/banff/waste-recycling/",
        "zh": "/zh/banff/waste-recycling/",
        "fr": "/fr/banff/waste-recycling/",
        "ja": "/ja/banff/waste-recycling/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/waste-recycling/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/waste-recycling/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/waste-recycling/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/waste-recycling/"
      }
    },
    {
      "id": "banff.transit",
      "name": "Banff Transit Without Guesswork",
      "kind": "transport",
      "description": "How to use Roam Transit for Banff downtown, gondola, hot springs, Tunnel Mountain, Lake Minnewanka, Cave and Basin, Canmore, Lake Louise, Johnston Canyon, bikes, strollers, hotel passes, and no-driving-after-dinner plans.",
      "urls": {
        "en": "/banff/transit/",
        "zh": "/zh/banff/transit/",
        "fr": "/fr/banff/transit/",
        "ja": "/ja/banff/transit/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/transit/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/transit/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/transit/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/transit/"
      }
    },
    {
      "id": "banff.gondola",
      "name": "Banff Gondola",
      "kind": "paid_attraction",
      "description": "Tickets, map, how to get there, summit views, food, washrooms, weather, and what to bring.",
      "urls": {
        "en": "/banff/gondola/",
        "zh": "/zh/banff/gondola/",
        "fr": "/fr/banff/gondola/",
        "ja": "/ja/banff/gondola/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/gondola/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/gondola/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/gondola/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/gondola/"
      }
    },
    {
      "id": "banff.hot-springs",
      "name": "Banff Upper Hot Springs",
      "kind": "paid_attraction",
      "description": "How to fit Banff Upper Hot Springs into a Banff day: first-come entry, Route 1, gondola pairing, park pass, towels/swimsuits/lockers, health rules, kids, weather, and evening plans.",
      "urls": {
        "en": "/banff/hot-springs/",
        "zh": "/zh/banff/hot-springs/",
        "fr": "/fr/banff/hot-springs/",
        "ja": "/ja/banff/hot-springs/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/hot-springs/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/hot-springs/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/hot-springs/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/hot-springs/"
      }
    },
    {
      "id": "banff.downtown-shopping",
      "name": "Downtown Banff Shopping Walk",
      "kind": "town_area",
      "description": "How to use downtown Banff as a first-hour visitor node: park once, get oriented, find washrooms and water, shop Banff Avenue and Bear Street, buy forgotten gear, choose food, and create a map-story opening chapter.",
      "urls": {
        "en": "/banff/downtown-shopping/",
        "zh": "/zh/banff/downtown-shopping/",
        "fr": "/fr/banff/downtown-shopping/",
        "ja": "/ja/banff/downtown-shopping/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/downtown-shopping/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/downtown-shopping/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/downtown-shopping/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/downtown-shopping/"
      }
    },
    {
      "id": "banff.postcard-memory",
      "name": "Banff Postcard Memory",
      "kind": "memory_product",
      "description": "How to turn a Banff postcard into a physical travel memory: buy a card downtown, write it while the day is fresh, verify postage with Canada Post, mail it, and add the moment to a photo-story route.",
      "urls": {
        "en": "/banff/postcard-memory/",
        "zh": "/zh/banff/postcard-memory/",
        "fr": "/fr/banff/postcard-memory/",
        "ja": "/ja/banff/postcard-memory/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/postcard-memory/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/postcard-memory/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/postcard-memory/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/postcard-memory/"
      }
    },
    {
      "id": "banff.cascade-gardens",
      "name": "Cascade Gardens and Downtown Garden Walk",
      "kind": "scenic_walk",
      "description": "How to use Cascade of Time Garden as a low-effort Banff walk: after dinner, between downtown and the gondola road, with older visitors, for photos, postcards, and a calm story ending.",
      "urls": {
        "en": "/banff/cascade-gardens/",
        "zh": "/zh/banff/cascade-gardens/",
        "fr": "/fr/banff/cascade-gardens/",
        "ja": "/ja/banff/cascade-gardens/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/cascade-gardens/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/cascade-gardens/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/cascade-gardens/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/cascade-gardens/"
      }
    },
    {
      "id": "banff.restaurants",
      "name": "Banff Restaurants by Visitor Need",
      "kind": "food_cluster",
      "description": "How to choose Banff restaurants for Chinese food, Japanese food, ramen, steak, family meals, drinks, parking, reservations, and what to do after dinner.",
      "urls": {
        "en": "/banff/restaurants/",
        "zh": "/zh/banff/restaurants/",
        "fr": "/fr/banff/restaurants/",
        "ja": "/ja/banff/restaurants/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/restaurants/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/restaurants/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/restaurants/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/restaurants/"
      }
    },
    {
      "id": "banff.food-decisions",
      "name": "Banff Food Decisions",
      "kind": "decision_system",
      "description": "How to choose Chinese, Japanese, steak, casual family food, coffee, dessert, drinks, and dinner in Banff while planning parking, walking, reservations, and no-driving-after-alcohol choices.",
      "urls": {
        "en": "/banff/food-decisions/",
        "zh": "/zh/banff/food-decisions/",
        "fr": "/fr/banff/food-decisions/",
        "ja": "/ja/banff/food-decisions/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/food-decisions/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/food-decisions/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/food-decisions/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/food-decisions/"
      }
    },
    {
      "id": "banff.bike-rentals",
      "name": "Banff Bike Rentals and Ride Choices",
      "kind": "service_decision",
      "description": "How to decide whether to rent a bike in Banff, ride around town, connect to the Legacy Trail, use e-bikes, ride with kids, and solve return logistics.",
      "urls": {
        "en": "/banff/bike-rentals/",
        "zh": "/zh/banff/bike-rentals/",
        "fr": "/fr/banff/bike-rentals/",
        "ja": "/ja/banff/bike-rentals/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/bike-rentals/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/bike-rentals/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/bike-rentals/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/bike-rentals/"
      }
    },
    {
      "id": "banff.family-accessibility",
      "name": "Banff for Families, Older Visitors, and Low-Walking Days",
      "kind": "decision_system",
      "description": "A Banff planning node for families, kids, older visitors, low-walking groups, wheelchairs, strollers, washrooms, playgrounds, snacks, short walks, and weather backups.",
      "urls": {
        "en": "/banff/family-accessibility/",
        "zh": "/zh/banff/family-accessibility/",
        "fr": "/fr/banff/family-accessibility/",
        "ja": "/ja/banff/family-accessibility/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/family-accessibility/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/family-accessibility/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/family-accessibility/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/family-accessibility/"
      }
    },
    {
      "id": "banff.bow-falls",
      "name": "Bow Falls and Bow River Short Stop",
      "kind": "scenic_stop",
      "description": "How to use Bow Falls as a short Banff water-and-view chapter with walking, driving, Roam Route 2, parking, washrooms, photo-story cues, winter limits, and safety.",
      "urls": {
        "en": "/banff/bow-falls/",
        "zh": "/zh/banff/bow-falls/",
        "fr": "/fr/banff/bow-falls/",
        "ja": "/ja/banff/bow-falls/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/bow-falls/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/bow-falls/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/bow-falls/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/bow-falls/"
      }
    },
    {
      "id": "banff.surprise-corner",
      "name": "Surprise Corner and Fairmont Viewpoint",
      "kind": "viewpoint",
      "description": "How to use Surprise Corner as a quick Banff viewpoint for Fairmont Banff Springs, Bow River, photos, walking routes, parking, safety boundaries, and short-stop planning.",
      "urls": {
        "en": "/banff/surprise-corner/",
        "zh": "/zh/banff/surprise-corner/",
        "fr": "/fr/banff/surprise-corner/",
        "ja": "/ja/banff/surprise-corner/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/surprise-corner/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/surprise-corner/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/surprise-corner/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/surprise-corner/"
      }
    },
    {
      "id": "banff.cave-and-basin",
      "name": "Cave and Basin National Historic Site",
      "kind": "historic_site",
      "description": "How to decide if Cave and Basin fits a Banff day: national-park origin story, hours, fees, Route 4, boardwalks, family learning, hot-springs expectations, food timing, and photo-story role.",
      "urls": {
        "en": "/banff/cave-and-basin/",
        "zh": "/zh/banff/cave-and-basin/",
        "fr": "/fr/banff/cave-and-basin/",
        "ja": "/ja/banff/cave-and-basin/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/cave-and-basin/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/cave-and-basin/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/cave-and-basin/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/cave-and-basin/"
      }
    },
    {
      "id": "banff.banff-park-museum",
      "name": "Banff Park Museum and Rainy-Day Indoor Plan",
      "kind": "indoor_historic_site",
      "description": "A Banff rainy-day, smoke-day, low-walking, and downtown-history planning node centered on Banff Park Museum, current Parks Canada hours and fees, food, washrooms, shops, Bow River, Central Park, and Photo Story Studio.",
      "urls": {
        "en": "/banff/banff-park-museum/",
        "zh": "/zh/banff/banff-park-museum/",
        "fr": "/fr/banff/banff-park-museum/",
        "ja": "/ja/banff/banff-park-museum/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/banff-park-museum/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/banff-park-museum/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/banff-park-museum/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/banff-park-museum/"
      }
    },
    {
      "id": "banff.where-to-stay",
      "name": "Where to Stay in Banff",
      "kind": "lodging_decision",
      "description": "How to choose where to stay in Banff by itinerary shape, walking distance, parking, Roam routes, family needs, legal accommodation, dinner plans, budget, and early-start attractions.",
      "urls": {
        "en": "/banff/where-to-stay/",
        "zh": "/zh/banff/where-to-stay/",
        "fr": "/fr/banff/where-to-stay/",
        "ja": "/ja/banff/where-to-stay/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/where-to-stay/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/where-to-stay/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/where-to-stay/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/where-to-stay/"
      }
    },
    {
      "id": "banff.groceries",
      "name": "Banff Groceries and Picnic Supplies",
      "kind": "grocery_cluster",
      "description": "Where to buy groceries, snacks, water, picnic food, breakfast supplies, kid food, and hotel basics in Banff without creating a parking, wildlife, or timing problem.",
      "urls": {
        "en": "/banff/groceries/",
        "zh": "/zh/banff/groceries/",
        "fr": "/fr/banff/groceries/",
        "ja": "/ja/banff/groceries/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/groceries/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/groceries/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/groceries/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/groceries/"
      }
    },
    {
      "id": "banff.lake-minnewanka",
      "name": "Lake Minnewanka Day Plan",
      "kind": "lake_scenic_area",
      "description": "How to plan Lake Minnewanka from Banff: drive or Roam Route 6, cruise or shoreline, parking, picnic, washrooms, water rules, fishing, photo spots, and return timing.",
      "urls": {
        "en": "/banff/lake-minnewanka/",
        "zh": "/zh/banff/lake-minnewanka/",
        "fr": "/fr/banff/lake-minnewanka/",
        "ja": "/ja/banff/lake-minnewanka/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/lake-minnewanka/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/lake-minnewanka/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/lake-minnewanka/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/lake-minnewanka/"
      }
    },
    {
      "id": "banff.lake-minnewanka-cruise",
      "name": "Lake Minnewanka Cruise Tickets and Timing",
      "kind": "paid_attraction",
      "description": "How to decide whether to book the Lake Minnewanka Cruise from Banff: what the ticket solves, when not to buy yet, parking, Roam Route 6, weather, water rules, photos, and return timing.",
      "urls": {
        "en": "/banff/lake-minnewanka-cruise/",
        "zh": "/zh/banff/lake-minnewanka-cruise/",
        "fr": "/fr/banff/lake-minnewanka-cruise/",
        "ja": "/ja/banff/lake-minnewanka-cruise/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/lake-minnewanka-cruise/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/lake-minnewanka-cruise/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/lake-minnewanka-cruise/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/lake-minnewanka-cruise/"
      }
    },
    {
      "id": "banff.canoe-club",
      "name": "Banff Canoe Club and Bow River Paddling",
      "kind": "paid_water_activity",
      "description": "How to decide whether to rent a canoe, kayak, SUP, or raft in Banff: official rental link, Bow River fit, parking, weather, water rules, washrooms, photos, and return timing.",
      "urls": {
        "en": "/banff/canoe-club/",
        "zh": "/zh/banff/canoe-club/",
        "fr": "/fr/banff/canoe-club/",
        "ja": "/ja/banff/canoe-club/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/canoe-club/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/canoe-club/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/canoe-club/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/canoe-club/"
      }
    },
    {
      "id": "banff.bow-river-central-park",
      "name": "Bow River Trail and Central Park Banff",
      "kind": "town_river_reset",
      "description": "A practical downtown Banff river-walk node: Central Park, Bow River Trail, picnic tables, playground, washrooms, water refill, wheelchair-friendly sections, photos, and route decisions.",
      "urls": {
        "en": "/banff/bow-river-central-park/",
        "zh": "/zh/banff/bow-river-central-park/",
        "fr": "/fr/banff/bow-river-central-park/",
        "ja": "/ja/banff/bow-river-central-park/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/bow-river-central-park/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/bow-river-central-park/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/bow-river-central-park/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/bow-river-central-park/"
      }
    },
    {
      "id": "banff.scenic-drives",
      "name": "Banff Scenic Drives",
      "kind": "route_decision",
      "description": "How to choose Banff scenic drives by visitor need: Lake Minnewanka Loop, Vermilion Lakes, Mount Norquay viewpoint, Bow Valley Parkway, closures, wildlife stops, washrooms, food gaps, and photo-story beats.",
      "urls": {
        "en": "/banff/scenic-drives/",
        "zh": "/zh/banff/scenic-drives/",
        "fr": "/fr/banff/scenic-drives/",
        "ja": "/ja/banff/scenic-drives/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/scenic-drives/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/scenic-drives/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/scenic-drives/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/scenic-drives/"
      }
    },
    {
      "id": "banff.easy-walks",
      "name": "Easy Banff Walks",
      "kind": "walking_decision",
      "description": "Low-effort Banff walks for families, first-time visitors, older visitors, rainy breaks, after-dinner loops, and photo-story moments.",
      "urls": {
        "en": "/banff/easy-walks/",
        "zh": "/zh/banff/easy-walks/",
        "fr": "/fr/banff/easy-walks/",
        "ja": "/ja/banff/easy-walks/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/easy-walks/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/easy-walks/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/easy-walks/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/easy-walks/"
      }
    },
    {
      "id": "banff.water-play",
      "name": "Water and Lake Time Near Banff",
      "kind": "water_decision",
      "description": "How to choose Banff water stops: Lake Minnewanka, Johnson Lake, Two Jack Lake, Cascade Ponds, Bow River walks, swimming, paddling rules, transit, parking, washrooms, and safety.",
      "urls": {
        "en": "/banff/water-play/",
        "zh": "/zh/banff/water-play/",
        "fr": "/fr/banff/water-play/",
        "ja": "/ja/banff/water-play/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/water-play/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/water-play/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/water-play/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/water-play/"
      }
    },
    {
      "id": "banff.medical-help",
      "name": "Medical Help in Banff",
      "kind": "medical_service",
      "description": "What to do if someone is hurt or sick in Banff: 911 versus 811, Banff Mineral Springs Hospital, urgent mental health, what to bring, trail/lake location scripts, and how to keep the group safe.",
      "urls": {
        "en": "/banff/medical-help/",
        "zh": "/zh/banff/medical-help/",
        "fr": "/fr/banff/medical-help/",
        "ja": "/ja/banff/medical-help/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/medical-help/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/medical-help/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/medical-help/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/medical-help/"
      }
    },
    {
      "id": "banff.pharmacy-first-aid",
      "name": "Banff Pharmacy and First-Aid Supplies",
      "kind": "pharmacy_first_aid_service",
      "description": "Where pharmacy, lost medication, basic first-aid, sunscreen, blister care, child medicine, PADIS, AQHI, and pharmacist/811/911 decisions fit into a Banff day.",
      "urls": {
        "en": "/banff/pharmacy-first-aid/",
        "zh": "/zh/banff/pharmacy-first-aid/",
        "fr": "/fr/banff/pharmacy-first-aid/",
        "ja": "/ja/banff/pharmacy-first-aid/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/pharmacy-first-aid/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/pharmacy-first-aid/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/pharmacy-first-aid/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/pharmacy-first-aid/"
      }
    },
    {
      "id": "banff.photo-story",
      "name": "Banff Photo Story Studio",
      "kind": "memory_product",
      "description": "A map-linked Banff memory movie product: upload trip photos, place them on the Banff map with GPS or manual confirmation, build story beats, add captions, and export a short shareable trip story.",
      "urls": {
        "en": "/banff/photo-story/",
        "zh": "/zh/banff/photo-story/",
        "fr": "/fr/banff/photo-story/",
        "ja": "/ja/banff/photo-story/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/photo-story/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/photo-story/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/photo-story/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/photo-story/"
      }
    },
    {
      "id": "banff.ambient-moments",
      "name": "Ambient Moment Studio",
      "kind": "ambient_memory_product",
      "description": "A research-led MVP for turning a quiet Banff, Canmore, lake, trail, or town moment into a looping ambient memory: place context, source-safe visual rules, sound layers, and a share-ready export concept.",
      "urls": {
        "en": "/banff/ambient-moments/",
        "zh": "/zh/banff/ambient-moments/",
        "fr": "/fr/banff/ambient-moments/",
        "ja": "/ja/banff/ambient-moments/"
      },
      "absolute_urls": {
        "en": "https://canadianrockiesplanner.com/banff/ambient-moments/",
        "zh": "https://canadianrockiesplanner.com/zh/banff/ambient-moments/",
        "fr": "https://canadianrockiesplanner.com/fr/banff/ambient-moments/",
        "ja": "https://canadianrockiesplanner.com/ja/banff/ambient-moments/"
      }
    }
  ],
  "primary_destinations": [
    {
      "id": "banff",
      "name": "Banff",
      "human_url": "/banff/",
      "localized_human_urls": {
        "en": "/banff/",
        "zh": "/zh/banff/",
        "fr": "/fr/banff/",
        "ja": "/ja/banff/"
      },
      "facts_by_language": {
        "en": "/facts/banff-facts-en.md",
        "zh": "/facts/banff-facts-zh.md",
        "fr": "/facts/banff-facts-fr.md",
        "ja": "/facts/banff-facts-ja.md"
      },
      "place_twin": "/data/banff/place-twin.v0.json",
      "memory_markdown": "/data/banff/digital-twin-memory.en.md",
      "memory_json": "/data/banff/digital-twin-memory.v0.json"
    },
    {
      "id": "legacy-trail",
      "name": "Rocky Mountain Legacy Trail",
      "human_url": "/legacy-trail/",
      "localized_human_urls": {
        "en": "/legacy-trail/",
        "zh": "/zh/legacy-trail/",
        "fr": "/fr/legacy-trail/",
        "ja": "/ja/legacy-trail/"
      },
      "related_destination": "banff"
    }
  ],
  "entrypoints": {
    "llms": "/llms.txt",
    "sitemap": "/sitemap.xml",
    "robots": "/robots.txt",
    "structured_data": "/structured-data.json",
    "facts": "/facts/banff-facts-en.md",
    "facts_by_language": {
      "en": "/facts/banff-facts-en.md",
      "zh": "/facts/banff-facts-zh.md",
      "fr": "/facts/banff-facts-fr.md",
      "ja": "/facts/banff-facts-ja.md"
    },
    "place_twin": "/data/banff/place-twin.v0.json",
    "digital_twin_memory_markdown": "/data/banff/digital-twin-memory.en.md",
    "digital_twin_memory_json": "/data/banff/digital-twin-memory.v0.json",
    "visual_assets": "/data/visual-assets.v0.json",
    "agent_demand_schema": "/data/agent-demand-schema.v0.json"
  },
  "agent_jobs": [
    {
      "id": "answer_in_user_language",
      "description": "Answer in the user's requested language by reading the matching localized facts file and localized page from localized_page_index before translating English.",
      "preferred_sources": [
        "/agent-interface.v0.json",
        "/llms.txt",
        "/facts/banff-facts-zh.md",
        "/facts/banff-facts-fr.md",
        "/facts/banff-facts-ja.md"
      ],
      "sample_questions": [
        "Chinese visitor asks about Banff parking; read /facts/banff-facts-zh.md and /zh/banff/parking/ first.",
        "French visitor asks about Banff transit; read /facts/banff-facts-fr.md and /fr/banff/transit/ first.",
        "Japanese visitor asks about Legacy Trail; read /facts/banff-facts-ja.md and /ja/legacy-trail/ first."
      ]
    },
    {
      "id": "answer_practical_trip_question",
      "description": "Answer visitor questions that combine why go, how to get there, what to verify, what can fail, and what to do next.",
      "preferred_sources": [
        "/facts/banff-facts-en.md",
        "/data/banff/digital-twin-memory.en.md",
        "/data/banff/place-twin.v0.json"
      ],
      "sample_questions": [
        "Do I need a Banff park pass if I am only driving through?",
        "Where should a family start a rainy Banff day?",
        "How do I get from Banff to Lake Louise without a car?",
        "Where can I pay or review a Banff parking ticket?"
      ]
    },
    {
      "id": "build_place_graph_context",
      "description": "Extract destination nodes, related decisions, map hints, official-source policy, and trust levels for an agent's own planning graph.",
      "preferred_sources": [
        "/data/banff/place-twin.v0.json",
        "/data/banff/digital-twin-memory.v0.json",
        "/structured-data.json"
      ]
    },
    {
      "id": "detect_missing_agent_need",
      "description": "Classify a question or requested action the current site cannot answer or execute, then write a demand-ledger candidate for review.",
      "preferred_sources": [
        "/data/agent-demand-schema.v0.json",
        "/agent-interface.v0.json"
      ]
    },
    {
      "id": "route_to_official_action",
      "description": "Send users or downstream agents to official sources for changing facts, tickets, payments, transit, passes, medical help, and legal/safety actions.",
      "preferred_sources": [
        "/llms.txt",
        "/facts/banff-facts-en.md",
        "/banff/book-ahead/"
      ]
    }
  ],
  "answer_contract": [
    "Start from the visitor or agent job, not an attraction ranking.",
    "When a localized facts file and localized page exist for the user's language, read them before translating or summarizing the English version.",
    "For zh/fr/ja, use /facts/banff-facts-{lang}.md plus same-language HTML pages as the answer source; use /facts/banff-facts-en.md only as canonical-source fallback.",
    "Use official or primary sources for prices, hours, tickets, passes, parking, transit, medical, legal, and safety facts.",
    "Separate confirmed facts, editorial advice, user-reported memory, and future planned capabilities.",
    "Do not claim the site can perform a real-world action unless the action registry marks it active."
  ],
  "capabilities": [
    {
      "id": "read_public_facts",
      "status": "active",
      "mode": "public_static",
      "entrypoints": [
        "/llms.txt",
        "/facts/banff-facts-en.md",
        "/facts/banff-facts-zh.md",
        "/facts/banff-facts-fr.md",
        "/facts/banff-facts-ja.md",
        "/structured-data.json"
      ]
    },
    {
      "id": "read_localized_human_pages",
      "status": "active",
      "mode": "public_static",
      "entrypoints": [
        "/zh/",
        "/fr/",
        "/ja/"
      ],
      "notes": "Use localized_page_index for exact page matches and pair it with /facts/banff-facts-{lang}.md for machine-readable same-language answers."
    },
    {
      "id": "read_place_graph",
      "status": "active",
      "mode": "public_static",
      "entrypoints": [
        "/data/banff/place-twin.v0.json",
        "/data/banff/digital-twin-memory.v0.json"
      ]
    },
    {
      "id": "open_official_source_or_map",
      "status": "active",
      "mode": "link_handoff",
      "notes": "Use page links, source anchors, and Google Maps/Open Maps links; verify live routing in the map app."
    },
    {
      "id": "site_search_url",
      "status": "active",
      "mode": "public_static",
      "template": "/banff/?q={search_term_string}"
    },
    {
      "id": "agent_demand_capture",
      "status": "planned",
      "mode": "project_local_ledger_today",
      "public_schema": "/data/agent-demand-schema.v0.json",
      "project_local_ledger": "data/living-site/agent-demand-ledger.json",
      "notes": "There is no public write endpoint yet. Capture missing needs in the local ledger during monitor/review runs."
    },
    {
      "id": "photo_story_generation",
      "status": "unconfigured",
      "mode": "future_service",
      "notes": "Static demo exists, but upload, render, storage, checkout, and delivery are not active."
    },
    {
      "id": "payment_checkout",
      "status": "unconfigured",
      "mode": "future_service",
      "notes": "No Stripe Payment Link or secret API integration is active in this site interface."
    },
    {
      "id": "email_sms_business_handoff",
      "status": "planned",
      "mode": "future_service",
      "notes": "Requires provider setup, consent, rate limits, audit logs, and partner/business agreements before activation."
    },
    {
      "id": "booking_or_reservation_proxy",
      "status": "blocked",
      "mode": "not_enabled",
      "notes": "Use official booking/ticket/reservation links. Do not proxy reservations until a real provider integration and legal/commercial terms exist."
    }
  ],
  "agent_demand_capture": {
    "current_public_status": "read_only_schema",
    "public_schema": "/data/agent-demand-schema.v0.json",
    "project_local_ledger": "data/living-site/agent-demand-ledger.json",
    "capture_when": [
      "An agent asks a Banff/Canmore/Lake Louise/Legacy Trail question the current facts layer cannot answer.",
      "An agent expects a tool action that is not active in the capability registry.",
      "An agent needs local-business data, availability, pricing, booking, contact, or payment integration that is not source-backed.",
      "A human or agent repeatedly searches for the same missing visitor decision."
    ],
    "blocked_payloads": [
      "personal contact details",
      "payment data",
      "confirmation codes",
      "private photo URLs",
      "medical details",
      "precise private location traces"
    ],
    "promotion_rule": "A repeated or high-value demand candidate can become a page update, schema update, source-research task, local-business integration experiment, or monetization experiment after source, privacy, and business guardrails pass."
  },
  "node_index": [
    {
      "id": "banff.itineraries",
      "name": "Banff Itineraries by Visitor Type",
      "url": "/banff/itineraries/",
      "description": "One-day Banff plans for first timers, families, older visitors, no-car travelers, food-focused visitors, rainy days, and photo-story trips.",
      "map_query": "Banff Visitor Centre 224 Banff Avenue Banff AB",
      "node_type": "decision_system"
    },
    {
      "id": "banff.getting-here",
      "name": "Getting to Banff from Calgary and YYC",
      "url": "/banff/getting-here/",
      "description": "How to get from Calgary or YYC Calgary International Airport to Banff by rental car, shuttle, coach bus, seasonal transit, or no-car arrival plan.",
      "map_query": "YYC Calgary International Airport to Banff AB",
      "node_type": "arrival_transport_decision"
    },
    {
      "id": "banff.lake-louise-moraine-lake",
      "name": "Lake Louise and Moraine Lake from Banff",
      "url": "/banff/lake-louise-moraine-lake/",
      "description": "How to plan Lake Louise and Moraine Lake from Banff in 2026: Parks Canada shuttle reservations, Roam 8X and Super Pass, no Route 10, Lake Louise parking risk, Moraine Lake no-private-car access, timing, fallback plans, and photo-story stops.",
      "map_query": "Lake Louise Lakeshore and Moraine Lake from Banff AB",
      "node_type": "regional_day_trip_decision"
    },
    {
      "id": "banff.johnston-canyon",
      "name": "Johnston Canyon from Banff",
      "url": "/banff/johnston-canyon/",
      "description": "How to plan Johnston Canyon from Banff: Lower Falls, Upper Falls, Ink Pots, Bow Valley Parkway access, parking risk, Roam Route 9, strollers, winter traction, and photo-story timing.",
      "map_query": "Johnston Canyon Day-use Area Bow Valley Parkway",
      "node_type": "regional_hike_decision"
    },
    {
      "id": "banff.book-ahead",
      "name": "Banff Tickets, Reservations, and What to Verify",
      "url": "/banff/book-ahead/",
      "description": "What to buy, reserve, or verify before a Banff day: park pass, lake shuttles, Roam reservations, gondola tickets, Lake Minnewanka cruise, hot springs, parking, restaurants, weather, and cancellation risk.",
      "map_query": "Banff Visitor Centre 224 Banff Avenue Banff AB",
      "node_type": "booking_decision_system"
    },
    {
      "id": "banff.park-pass",
      "name": "Banff Park Pass",
      "url": "/banff/park-pass/",
      "description": "Why visitors need a Banff National Park entry pass, when through-traffic does not need one, where to buy it, what Canada Strong Pass changes in 2026, and why it is separate from parking, shuttles, camping, and attraction tickets.",
      "map_query": "Banff Visitor Centre 224 Banff Avenue",
      "node_type": "rule_service"
    },
    {
      "id": "banff.visitor-centre",
      "name": "Banff Visitor Centre",
      "url": "/banff/visitor-centre/",
      "description": "When to use the Banff Visitor Centre as the downtown official-help anchor: park passes, maps, brochures, permits, current conditions, trail and road reports, accessibility, weather pivots, parking/washroom handoffs, and same-day itinerary repair.",
      "map_query": "Banff Visitor Centre 224 Banff Avenue",
      "node_type": "service"
    },
    {
      "id": "banff.parking",
      "name": "Banff Parking",
      "url": "/banff/parking/",
      "description": "Where to park in Banff by visitor need: train station public parking, Bear Street Parkade, short downtown errands, hotel or restaurant plans, accessibility needs, payment rules, and what to do if parking fails.",
      "map_query": "Banff Train Station Public Parking 327 Railway Avenue",
      "node_type": "parking_decision"
    },
    {
      "id": "banff.parking-tickets",
      "name": "Banff Parking Tickets",
      "url": "/banff/parking-tickets/",
      "description": "What to do if you get a Banff parking ticket or related violation notice: confirm ticket type, pay through the right official portal, request review, handle rental-car timing, and keep the trip moving.",
      "map_query": "Banff Town Hall 110 Bear Street",
      "node_type": "civic_problem"
    },
    {
      "id": "banff.unexpected-problems",
      "name": "Unexpected Problems in Banff",
      "url": "/banff/unexpected-problems/",
      "description": "A practical Banff triage page for problems visitors rarely plan for: medical help, parking ticket payment/review, provincial ticket routing, washrooms, garbage, bottle returns, lost property, emergency alerts, road problems, wildlife reports, transit fallback, and official help.",
      "map_query": "Banff Visitor Centre 224 Banff Avenue",
      "node_type": "problem_router"
    },
    {
      "id": "banff.emergency-alerts",
      "name": "Banff Alerts, Safety, and Road Problems",
      "url": "/banff/emergency-alerts/",
      "description": "What to check when Banff plans change because of emergency alerts, road conditions, wildfire smoke, wildlife encounters, closures, police/lost-property issues, or low-signal areas.",
      "map_query": "Banff Visitor Centre 224 Banff Avenue",
      "node_type": "safety_alert_system"
    },
    {
      "id": "banff.washrooms",
      "name": "Banff Public Washrooms",
      "url": "/banff/washrooms/",
      "description": "A practical Banff washroom, water refill, change-table, shower, family reset, bike-start, lake-drive, and evening-route decision node.",
      "map_query": "Banff Central Park public washrooms",
      "node_type": "public_service"
    },
    {
      "id": "banff.waste-recycling",
      "name": "Banff Garbage, Recycling, and Bottle Returns",
      "url": "/banff/waste-recycling/",
      "description": "Where visitors should handle picnic waste, bottles and cans, recycling, bear-safe garbage, larger drop-offs, reusable items, electronics, and awkward waste questions in Banff.",
      "map_query": "Banff Transfer Site 160 Hawk Avenue",
      "node_type": "civic_service"
    },
    {
      "id": "banff.transit",
      "name": "Banff Transit Without Guesswork",
      "url": "/banff/transit/",
      "description": "How to use Roam Transit for Banff downtown, gondola, hot springs, Tunnel Mountain, Lake Minnewanka, Cave and Basin, Canmore, Lake Louise, Johnston Canyon, bikes, strollers, hotel passes, and no-driving-after-dinner plans.",
      "map_query": "Banff High School Transit Hub",
      "node_type": "transport"
    },
    {
      "id": "banff.gondola",
      "name": "Banff Gondola",
      "url": "/banff/gondola/",
      "description": "Tickets, map, how to get there, summit views, food, washrooms, weather, and what to bring.",
      "map_query": "Banff Gondola 100 Mountain Avenue",
      "node_type": "paid_attraction"
    },
    {
      "id": "banff.hot-springs",
      "name": "Banff Upper Hot Springs",
      "url": "/banff/hot-springs/",
      "description": "How to fit Banff Upper Hot Springs into a Banff day: first-come entry, Route 1, gondola pairing, park pass, towels/swimsuits/lockers, health rules, kids, weather, and evening plans.",
      "map_query": "Banff Upper Hot Springs",
      "node_type": "paid_attraction"
    },
    {
      "id": "banff.downtown-shopping",
      "name": "Downtown Banff Shopping Walk",
      "url": "/banff/downtown-shopping/",
      "description": "How to use downtown Banff as a first-hour visitor node: park once, get oriented, find washrooms and water, shop Banff Avenue and Bear Street, buy forgotten gear, choose food, and create a map-story opening chapter.",
      "map_query": "Cascade Shops Banff Avenue",
      "node_type": "town_area"
    },
    {
      "id": "banff.postcard-memory",
      "name": "Banff Postcard Memory",
      "url": "/banff/postcard-memory/",
      "description": "How to turn a Banff postcard into a physical travel memory: buy a card downtown, write it while the day is fresh, verify postage with Canada Post, mail it, and add the moment to a photo-story route.",
      "map_query": "Canada Post Banff Main 204 Buffalo Street",
      "node_type": "memory_product"
    },
    {
      "id": "banff.cascade-gardens",
      "name": "Cascade Gardens and Downtown Garden Walk",
      "url": "/banff/cascade-gardens/",
      "description": "How to use Cascade of Time Garden as a low-effort Banff walk: after dinner, between downtown and the gondola road, with older visitors, for photos, postcards, and a calm story ending.",
      "map_query": "Cascade of Time Garden Banff",
      "node_type": "scenic_walk"
    },
    {
      "id": "banff.restaurants",
      "name": "Banff Restaurants by Visitor Need",
      "url": "/banff/restaurants/",
      "description": "How to choose Banff restaurants for Chinese food, Japanese food, ramen, steak, family meals, drinks, parking, reservations, and what to do after dinner.",
      "map_query": "restaurants Banff Avenue Banff AB",
      "node_type": "food_cluster"
    },
    {
      "id": "banff.food-decisions",
      "name": "Banff Food Decisions",
      "url": "/banff/food-decisions/",
      "description": "How to choose Chinese, Japanese, steak, casual family food, coffee, dessert, drinks, and dinner in Banff while planning parking, walking, reservations, and no-driving-after-alcohol choices.",
      "map_query": "Banff Avenue Bear Street Banff",
      "node_type": "decision_system"
    },
    {
      "id": "banff.bike-rentals",
      "name": "Banff Bike Rentals and Ride Choices",
      "url": "/banff/bike-rentals/",
      "description": "How to decide whether to rent a bike in Banff, ride around town, connect to the Legacy Trail, use e-bikes, ride with kids, and solve return logistics.",
      "map_query": "bike rentals Banff AB",
      "node_type": "service_decision"
    },
    {
      "id": "banff.family-accessibility",
      "name": "Banff for Families, Older Visitors, and Low-Walking Days",
      "url": "/banff/family-accessibility/",
      "description": "A Banff planning node for families, kids, older visitors, low-walking groups, wheelchairs, strollers, washrooms, playgrounds, snacks, short walks, and weather backups.",
      "map_query": "Banff Central Park Banff AB",
      "node_type": "decision_system"
    },
    {
      "id": "banff.bow-falls",
      "name": "Bow Falls and Bow River Short Stop",
      "url": "/banff/bow-falls/",
      "description": "How to use Bow Falls as a short Banff water-and-view chapter with walking, driving, Roam Route 2, parking, washrooms, photo-story cues, winter limits, and safety.",
      "map_query": "Bow Falls Banff",
      "node_type": "scenic_stop"
    },
    {
      "id": "banff.surprise-corner",
      "name": "Surprise Corner and Fairmont Viewpoint",
      "url": "/banff/surprise-corner/",
      "description": "How to use Surprise Corner as a quick Banff viewpoint for Fairmont Banff Springs, Bow River, photos, walking routes, parking, safety boundaries, and short-stop planning.",
      "map_query": "Surprise Corner Viewpoint Banff",
      "node_type": "viewpoint"
    },
    {
      "id": "banff.cave-and-basin",
      "name": "Cave and Basin National Historic Site",
      "url": "/banff/cave-and-basin/",
      "description": "How to decide if Cave and Basin fits a Banff day: national-park origin story, hours, fees, Route 4, boardwalks, family learning, hot-springs expectations, food timing, and photo-story role.",
      "map_query": "Cave and Basin National Historic Site Banff",
      "node_type": "historic_site"
    },
    {
      "id": "banff.banff-park-museum",
      "name": "Banff Park Museum and Rainy-Day Indoor Plan",
      "url": "/banff/banff-park-museum/",
      "description": "A Banff rainy-day, smoke-day, low-walking, and downtown-history planning node centered on Banff Park Museum, current Parks Canada hours and fees, food, washrooms, shops, Bow River, Central Park, and Photo Story Studio.",
      "map_query": "Banff Park Museum 91 Banff Avenue",
      "node_type": "indoor_historic_site"
    },
    {
      "id": "banff.where-to-stay",
      "name": "Where to Stay in Banff",
      "url": "/banff/where-to-stay/",
      "description": "How to choose where to stay in Banff by itinerary shape, walking distance, parking, Roam routes, family needs, legal accommodation, dinner plans, budget, and early-start attractions.",
      "map_query": "Banff Avenue hotels Banff AB",
      "node_type": "lodging_decision"
    },
    {
      "id": "banff.groceries",
      "name": "Banff Groceries and Picnic Supplies",
      "url": "/banff/groceries/",
      "description": "Where to buy groceries, snacks, water, picnic food, breakfast supplies, kid food, and hotel basics in Banff without creating a parking, wildlife, or timing problem.",
      "map_query": "IGA Banff 318 Marten Street",
      "node_type": "grocery_cluster"
    },
    {
      "id": "banff.lake-minnewanka",
      "name": "Lake Minnewanka Day Plan",
      "url": "/banff/lake-minnewanka/",
      "description": "How to plan Lake Minnewanka from Banff: drive or Roam Route 6, cruise or shoreline, parking, picnic, washrooms, water rules, fishing, photo spots, and return timing.",
      "map_query": "Lake Minnewanka",
      "node_type": "lake_scenic_area"
    },
    {
      "id": "banff.lake-minnewanka-cruise",
      "name": "Lake Minnewanka Cruise Tickets and Timing",
      "url": "/banff/lake-minnewanka-cruise/",
      "description": "How to decide whether to book the Lake Minnewanka Cruise from Banff: what the ticket solves, when not to buy yet, parking, Roam Route 6, weather, water rules, photos, and return timing.",
      "map_query": "Lake Minnewanka Cruise Banff",
      "node_type": "paid_attraction"
    },
    {
      "id": "banff.canoe-club",
      "name": "Banff Canoe Club and Bow River Paddling",
      "url": "/banff/canoe-club/",
      "description": "How to decide whether to rent a canoe, kayak, SUP, or raft in Banff: official rental link, Bow River fit, parking, weather, water rules, washrooms, photos, and return timing.",
      "map_query": "Banff Canoe Club Wolf Street Bow Avenue",
      "node_type": "paid_water_activity"
    },
    {
      "id": "banff.bow-river-central-park",
      "name": "Bow River Trail and Central Park Banff",
      "url": "/banff/bow-river-central-park/",
      "description": "A practical downtown Banff river-walk node: Central Park, Bow River Trail, picnic tables, playground, washrooms, water refill, wheelchair-friendly sections, photos, and route decisions.",
      "map_query": "Central Park Banff Bow River Trail",
      "node_type": "town_river_reset"
    },
    {
      "id": "banff.scenic-drives",
      "name": "Banff Scenic Drives",
      "url": "/banff/scenic-drives/",
      "description": "How to choose Banff scenic drives by visitor need: Lake Minnewanka Loop, Vermilion Lakes, Mount Norquay viewpoint, Bow Valley Parkway, closures, wildlife stops, washrooms, food gaps, and photo-story beats.",
      "map_query": "Lake Minnewanka Scenic Drive Banff",
      "node_type": "route_decision"
    },
    {
      "id": "banff.easy-walks",
      "name": "Easy Banff Walks",
      "url": "/banff/easy-walks/",
      "description": "Low-effort Banff walks for families, first-time visitors, older visitors, rainy breaks, after-dinner loops, and photo-story moments.",
      "map_query": "Banff Central Park Banff AB",
      "node_type": "walking_decision"
    },
    {
      "id": "banff.water-play",
      "name": "Water and Lake Time Near Banff",
      "url": "/banff/water-play/",
      "description": "How to choose Banff water stops: Lake Minnewanka, Johnson Lake, Two Jack Lake, Cascade Ponds, Bow River walks, swimming, paddling rules, transit, parking, washrooms, and safety.",
      "map_query": "Lake Minnewanka Two Jack Lake Johnson Lake Banff",
      "node_type": "water_decision"
    },
    {
      "id": "banff.medical-help",
      "name": "Medical Help in Banff",
      "url": "/banff/medical-help/",
      "description": "What to do if someone is hurt or sick in Banff: 911 versus 811, Banff Mineral Springs Hospital, urgent mental health, what to bring, trail/lake location scripts, and how to keep the group safe.",
      "map_query": "Banff Mineral Springs Hospital",
      "node_type": "medical_service"
    },
    {
      "id": "banff.pharmacy-first-aid",
      "name": "Banff Pharmacy and First-Aid Supplies",
      "url": "/banff/pharmacy-first-aid/",
      "description": "Where pharmacy, lost medication, basic first-aid, sunscreen, blister care, child medicine, PADIS, AQHI, and pharmacist/811/911 decisions fit into a Banff day.",
      "map_query": "Cascade Plaza Rexall Drug Store 317 Banff Avenue",
      "node_type": "pharmacy_first_aid_service"
    },
    {
      "id": "banff.photo-story",
      "name": "Banff Photo Story Studio",
      "url": "/banff/photo-story/",
      "description": "A map-linked Banff memory movie product: upload trip photos, place them on the Banff map with GPS or manual confirmation, build story beats, add captions, and export a short shareable trip story.",
      "map_query": "Banff Visitor Centre 224 Banff Avenue Banff AB",
      "node_type": "memory_product"
    },
    {
      "id": "banff.ambient-moments",
      "name": "Ambient Moment Studio",
      "url": "/banff/ambient-moments/",
      "description": "A research-led MVP for turning a quiet Banff, Canmore, lake, trail, or town moment into a looping ambient memory: place context, source-safe visual rules, sound layers, and a share-ready export concept.",
      "map_query": "Lake Louise Banff Avenue Canmore Centennial Park 609 5 Ave",
      "node_type": "ambient_memory_product"
    }
  ],
  "starter_plans": [
    {
      "id": "first-time",
      "position": 1,
      "name": "First time",
      "description": "Entry, parking, high view, dinner, postcard ending.",
      "audience": "First-time visitors who need orientation, one paid or scenic anchor, and a memory ending without over-planning the day.",
      "path": "/banff/?plan=visitor-centre,park-pass,parking,gondola,restaurants,postcard-memory#map",
      "url": "https://canadianrockiesplanner.com/banff/?plan=visitor-centre,park-pass,parking,gondola,restaurants,postcard-memory#map",
      "stop_slugs": [
        "visitor-centre",
        "park-pass",
        "parking",
        "gondola",
        "restaurants",
        "postcard-memory"
      ],
      "stop_nodes": [
        {
          "id": "visitor-centre",
          "name": "Banff Visitor Centre",
          "url": "/banff/visitor-centre/"
        },
        {
          "id": "park-pass",
          "name": "Banff Park Pass",
          "url": "/banff/park-pass/"
        },
        {
          "id": "parking",
          "name": "Banff Parking",
          "url": "/banff/parking/"
        },
        {
          "id": "gondola",
          "name": "Banff Gondola",
          "url": "/banff/gondola/"
        },
        {
          "id": "restaurants",
          "name": "Banff Restaurants by Visitor Need",
          "url": "/banff/restaurants/"
        },
        {
          "id": "postcard-memory",
          "name": "Banff Postcard Memory",
          "url": "/banff/postcard-memory/"
        }
      ],
      "source_policy": "Editorial starter plan. Use it as a shareable route shortcut, then verify changing facts on each stop page and official source."
    },
    {
      "id": "family-easy",
      "position": 2,
      "name": "Family / easy",
      "description": "Parking, washrooms, river reset, indoor backup, food.",
      "audience": "Families, older visitors, stroller users, and low-walking groups who need comfort, short transitions, seating, washrooms, and flexible backup.",
      "path": "/banff/?plan=parking,washrooms,family-accessibility,bow-river-central-park,banff-park-museum,food-decisions#map",
      "url": "https://canadianrockiesplanner.com/banff/?plan=parking,washrooms,family-accessibility,bow-river-central-park,banff-park-museum,food-decisions#map",
      "stop_slugs": [
        "parking",
        "washrooms",
        "family-accessibility",
        "bow-river-central-park",
        "banff-park-museum",
        "food-decisions"
      ],
      "stop_nodes": [
        {
          "id": "parking",
          "name": "Banff Parking",
          "url": "/banff/parking/"
        },
        {
          "id": "washrooms",
          "name": "Banff Public Washrooms",
          "url": "/banff/washrooms/"
        },
        {
          "id": "family-accessibility",
          "name": "Banff for Families, Older Visitors, and Low-Walking Days",
          "url": "/banff/family-accessibility/"
        },
        {
          "id": "bow-river-central-park",
          "name": "Bow River Trail and Central Park Banff",
          "url": "/banff/bow-river-central-park/"
        },
        {
          "id": "banff-park-museum",
          "name": "Banff Park Museum and Rainy-Day Indoor Plan",
          "url": "/banff/banff-park-museum/"
        },
        {
          "id": "food-decisions",
          "name": "Banff Food Decisions",
          "url": "/banff/food-decisions/"
        }
      ],
      "source_policy": "Editorial starter plan. Use it as a shareable route shortcut, then verify changing facts on each stop page and official source."
    },
    {
      "id": "no-car",
      "position": 3,
      "name": "No car",
      "description": "Transit, gondola, hot springs, downtown, dinner.",
      "audience": "Visitors using Roam, hotel shuttles, walking, or taxi instead of driving who must solve the last useful return before committing to attractions or dinner.",
      "path": "/banff/?plan=transit,gondola,hot-springs,food-decisions,restaurants#map",
      "url": "https://canadianrockiesplanner.com/banff/?plan=transit,gondola,hot-springs,food-decisions,restaurants#map",
      "stop_slugs": [
        "transit",
        "gondola",
        "hot-springs",
        "food-decisions",
        "restaurants"
      ],
      "stop_nodes": [
        {
          "id": "transit",
          "name": "Banff Transit Without Guesswork",
          "url": "/banff/transit/"
        },
        {
          "id": "gondola",
          "name": "Banff Gondola",
          "url": "/banff/gondola/"
        },
        {
          "id": "hot-springs",
          "name": "Banff Upper Hot Springs",
          "url": "/banff/hot-springs/"
        },
        {
          "id": "food-decisions",
          "name": "Banff Food Decisions",
          "url": "/banff/food-decisions/"
        },
        {
          "id": "restaurants",
          "name": "Banff Restaurants by Visitor Need",
          "url": "/banff/restaurants/"
        }
      ],
      "source_policy": "Editorial starter plan. Use it as a shareable route shortcut, then verify changing facts on each stop page and official source."
    },
    {
      "id": "food-shopping",
      "position": 4,
      "name": "Food + shopping",
      "description": "Park once, walk downtown, choose food, mail a memory.",
      "audience": "Visitors who want Banff Avenue, Bear Street, outdoor gear, souvenirs, dessert, a meal decision, and a low-friction physical memory.",
      "path": "/banff/?plan=parking,food-decisions,restaurants,postcard-memory,bow-river-central-park#map",
      "url": "https://canadianrockiesplanner.com/banff/?plan=parking,food-decisions,restaurants,postcard-memory,bow-river-central-park#map",
      "stop_slugs": [
        "parking",
        "food-decisions",
        "restaurants",
        "postcard-memory",
        "bow-river-central-park"
      ],
      "stop_nodes": [
        {
          "id": "parking",
          "name": "Banff Parking",
          "url": "/banff/parking/"
        },
        {
          "id": "food-decisions",
          "name": "Banff Food Decisions",
          "url": "/banff/food-decisions/"
        },
        {
          "id": "restaurants",
          "name": "Banff Restaurants by Visitor Need",
          "url": "/banff/restaurants/"
        },
        {
          "id": "postcard-memory",
          "name": "Banff Postcard Memory",
          "url": "/banff/postcard-memory/"
        },
        {
          "id": "bow-river-central-park",
          "name": "Bow River Trail and Central Park Banff",
          "url": "/banff/bow-river-central-park/"
        }
      ],
      "source_policy": "Editorial starter plan. Use it as a shareable route shortcut, then verify changing facts on each stop page and official source."
    },
    {
      "id": "photo-story",
      "position": 5,
      "name": "Photo story",
      "description": "Town start, river, lake, high view, meal, postcard close.",
      "audience": "Visitors who want a shareable map-linked story: arrival, easy scenic chapter, lake or viewpoint, meal, and a physical or social-memory ending.",
      "path": "/banff/?plan=visitor-centre,bow-river-central-park,lake-minnewanka,gondola,restaurants,postcard-memory#map",
      "url": "https://canadianrockiesplanner.com/banff/?plan=visitor-centre,bow-river-central-park,lake-minnewanka,gondola,restaurants,postcard-memory#map",
      "stop_slugs": [
        "visitor-centre",
        "bow-river-central-park",
        "lake-minnewanka",
        "gondola",
        "restaurants",
        "postcard-memory"
      ],
      "stop_nodes": [
        {
          "id": "visitor-centre",
          "name": "Banff Visitor Centre",
          "url": "/banff/visitor-centre/"
        },
        {
          "id": "bow-river-central-park",
          "name": "Bow River Trail and Central Park Banff",
          "url": "/banff/bow-river-central-park/"
        },
        {
          "id": "lake-minnewanka",
          "name": "Lake Minnewanka Day Plan",
          "url": "/banff/lake-minnewanka/"
        },
        {
          "id": "gondola",
          "name": "Banff Gondola",
          "url": "/banff/gondola/"
        },
        {
          "id": "restaurants",
          "name": "Banff Restaurants by Visitor Need",
          "url": "/banff/restaurants/"
        },
        {
          "id": "postcard-memory",
          "name": "Banff Postcard Memory",
          "url": "/banff/postcard-memory/"
        }
      ],
      "source_policy": "Editorial starter plan. Use it as a shareable route shortcut, then verify changing facts on each stop page and official source."
    }
  ],
  "version_notes": "This is the first public agent-facing interface. It is intentionally read-first and fail-closed for real-world actions."
}