{"ok":true,"site":{"host":"switchback-mvp-igor.netlify.app","url":"https://switchback-mvp-igor.netlify.app/","type":"live","desc":"Switchback","tools":[{"name":"list_circuit_options","kind":"answer","impl":"imperative","description":"List every selectable Collserola circuit origin, its arrival mode, and graph-verified short, medium, or long distance profiles. These are not difficulty ratings.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"validate_circuit","kind":"answer","impl":"imperative","description":"Dry-run a listed start and verified target against the loaded directed TrailPack. It proves closure and distance without rendering or changing the customer’s active route.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["start","target_km","prefer_waymarked"],"properties":{"start":{"type":"string","enum":["vista_rica_parking","passeig_aigues_parking","budellera_parking","panta_vallvidrera","santa_creu_olorda","can_jane_sant_cugat","can_coll_cerdanyola","mirador_xiprers"]},"target_km":{"type":"number","description":"One of the verified_targets_km values returned by list_circuit_options."},"prefer_waymarked":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"record_session_note","kind":"act","impl":"imperative","description":"Record a short agent test result, product insight, or human handoff in the page’s visible session worklog. It is local to the current tab and makes agent work reviewable.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["kind","note"],"properties":{"kind":{"type":"string","enum":["test","product_insight","handoff"]},"note":{"type":"string","minLength":1,"maxLength":240}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"plan_route","kind":"act","impl":"imperative","description":"Plan and render a genuine Collserola circuit, then automatically check the next-three-day forecast and official Park alerts for a conversational, source-labelled recommendation. Either live source can be unavailable without invalidating the graph-verified route. Every listed start has a small set of graph-verified target distances; use only its published values, returned in errors when needed. The pack excludes urban footways and paved access roads. An ICGC LiDAR-based ascent estimate is added after rendering.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["start","target_km","prefer_waymarked"],"properties":{"start":{"type":"string","enum":["vista_rica_parking","passeig_aigues_parking","budellera_parking","panta_vallvidrera","santa_creu_olorda","can_jane_sant_cugat","can_coll_cerdanyola","mirador_xiprers"],"description":"Verified circuit origin. Use arrival_mode to choose car or public transport; the enum contains all currently selectable origins."},"arrival_mode":{"type":"string","enum":["car","public_transport"],"description":"Optional arrival context. When supplied, it must agree with the chosen origin."},"target_km":{"type":"number","minimum":1,"maximum":30,"multipleOf":0.5,"description":"Desired circuit distance in 0.5 km steps, from 1 through 30. A result is accepted only within ±0.5 km."},"prefer_waymarked":{"type":"boolean","description":"Bias toward the Park’s published A–E marked-path network while retaining OSM trail connectors needed to close a loop. It does not confirm present-day conditions."},"max_ascent_m":{"type":"number","description":"Unsupported at plan-selection time; ascent is estimated after the route has rendered."},"max_grade":{"type":"string","description":"Unsupported: this TrailPack has incomplete grade tags."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_route_summary","kind":"answer","impl":"imperative","description":"Read the active data-backed route totals and at most five TrailPack segments.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"explain_difficulty","kind":"act","impl":"imperative","description":"Classify the active route against Switchback's easy, moderate, and difficult walking rubric, with its measured ascent, evidence, and missing terrain data.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"explain_segment","kind":"act","impl":"imperative","description":"Read OSM terrain tags and official-match evidence for a segment of the active route.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["segment_name"],"properties":{"segment_name":{"type":"string","maxLength":120,"description":"physical_id from get_route_summary.notable_segments."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"avoid_segment","kind":"act","impl":"imperative","description":"Replan the active directed TrailPack loop while blocking one active physical segment. The route changes only after a verified replacement loop is found and rendered; otherwise it fails closed.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["segment_name"],"properties":{"segment_name":{"type":"string","maxLength":120,"description":"physical_id from get_route_summary.notable_segments."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prepare_gpx","kind":"act","impl":"imperative","description":"Prepare a full-resolution GPX 1.1 trail trace with five named TrailPack transitions and reveal a user-gesture download control. It never starts a download or shares a file itself.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_trail_weather","kind":"answer","impl":"imperative","description":"Compare the next three local forecast days for the active route, including a 17:00–20:00 evening candidate and sunrise/sunset. Set time_of_day to evening when the person asks about an evening hike. This is planning context, not a trail-safety or weather-alert assessment.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"time_of_day":{"type":"string","enum":["any","morning","afternoon","evening"],"description":"Optional preference for the recommended forecast window. Use evening for an after-work hike."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_hiking_conditions","kind":"answer","impl":"imperative","description":"Assemble the active route’s decision context for a hiking conversation: graph route facts, conservative difficulty evidence, requested-time forecast and daylight, plus the Park’s official active-alert count. It never certifies that hiking is safe; the agent must explain what remains to be checked locally.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"time_of_day":{"type":"string","enum":["any","morning","afternoon","evening"],"description":"Use evening when the person asks whether an after-work hike is sensible."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_park_alerts","kind":"answer","impl":"imperative","description":"Read the Park's official active-alert list through Switchback's same-origin adapter. It returns notices with their publication dates and source links; it does not decide whether a notice applies to this exact route or remains in force. Request up to eight notice summaries when analysing hiking conditions.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"notice_limit":{"type":"integer","minimum":1,"maximum":8,"description":"Optional number of active notices to return. Use 8 for a fuller hiking-conditions review."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prepare_route_briefing","kind":"act","impl":"imperative","description":"Prepare a concise, copyable route briefing for a family or friends chat and reveal the same text in the page for the person to review. It never sends a message or accesses a messaging account.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"describe_last_edit","kind":"answer","impl":"imperative","description":"Read the most recent manual map edit and its measured route effect.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Travel & Events","apiSurface":"spec","toolCount":14}}