{"id":"7c14229c-8120-4358-b2ec-a56414435bb2","entityType":"agent","slug":"clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int","name":"Kontour Travel Planner","canonicalUrl":"https://www.xpersona.co/agent/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int","canonicalPath":"/agent/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int","generatedAt":"2026-10-10T06:14:47.171Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T04:04:33.585Z","emptyReason":null},"description":"Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow. Skill: Kontour Travel Planner Owner: skylinehk Summary: Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow. Tags: itinerary:2.0.3, latest:2.0.43, offline:2.0.3, planning:2.0.3, travel:2.0.3 Version history: v2.0.43 | 2026-09-22T10:41:52.022Z | user Add post-nudge hold packet so operators wait after one reminder instead o","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 5.4K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s172w5phb33spv0zh9b324d7g583egdn:travel-planner-notion-ai-obsidian-kontour-integration","sourceUrl":"https://clawhub.ai/skylinehk/travel-planner-notion-ai-obsidian-kontour-integration","homepage":"https://clawhub.ai/skylinehk/skills/travel-planner-notion-ai-obsidian-kontour-integration","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/skylinehk/travel-planner-notion-ai-obsidian-kontour-integration","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/skylinehk/skills/travel-planner-notion-ai-obsidian-kontour-integration","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":75,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow. Skill: Kon"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:04:33.585Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:04:33.585Z","emptyReason":null},"stars":null,"forks":null,"downloads":5359,"packageName":null,"latestVersion":"2.0.43","tractionLabel":"5.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:04:33.584Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T04:04:33.585Z","lastCrawledAt":"2026-10-09T04:04:33.584Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T04:04:33.584Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.43","createdAt":"2026-09-22T10:41:52.022Z","changelog":"Add post-nudge hold packet so operators wait after one reminder instead of treating continued silence as a final itinerary.","fileCount":16,"zipByteSize":113699},{"version":"2.0.42","createdAt":"2026-09-22T05:58:50.905Z","changelog":"Add copy-ready no-reply nudge packet so operators can remind a silent traveler without treating silence as a go-ahead for a final itinerary.","fileCount":16,"zipByteSize":112376},{"version":"2.0.41","createdAt":"2026-09-15T01:09:53.190Z","changelog":"Add copy-ready unclear-reply packet so operators can retry when a traveler answer is vague without sending a fake final itinerary.","fileCount":16,"zipByteSize":111144},{"version":"2.0.40","createdAt":"2026-09-14T21:11:55.662Z","changelog":"Add copy-ready two-turn send script stitching outbound message, expected reply, and follow-up while keeping the still-do-not final-itinerary guard.","fileCount":16,"zipByteSize":110272},{"version":"2.0.39","createdAt":"2026-09-10T12:11:39.528Z","changelog":"Add copy-ready follow-up send packet after traveler reply so acknowledgement is not treated as a final itinerary.","fileCount":16,"zipByteSize":109213},{"version":"2.0.38","createdAt":"2026-09-10T06:24:24.715Z","changelog":"Add reply_intake_card: accepted traveler replies, if-answered next move, and still-do-not guard after outbound send packet.","fileCount":16,"zipByteSize":108058},{"version":"2.0.37","createdAt":"2026-09-10T01:37:09.839Z","changelog":"Add output_polish.outbound_send_packet with a copy-ready traveler message, send/hold status, and a do-not-add guard so clarifying questions are not sent as fake final itineraries.","fileCount":16,"zipByteSize":106990},{"version":"2.0.36","createdAt":"2026-08-18T10:42:00.431Z","changelog":"Add send/hold decision card so operators get one safest reply form, primary blocker, and copy-ready instruction before over-sending a provisional plan.","fileCount":16,"zipByteSize":106112}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s172w5phb33spv0zh9b324d7g583egdn:travel-planner-notion-ai-obsidian-kontour-integration","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T06:14:47.165Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skylinehk-travel-planner-notion-ai-obsidian-kontour-int/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T04:04:33.585Z","emptyReason":null},"readme":"Skill: Kontour Travel Planner\n\nOwner: skylinehk\n\nSummary: Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow.\n\nTags: itinerary:2.0.3, latest:2.0.43, offline:2.0.3, planning:2.0.3, travel:2.0.3\n\nVersion history:\n\nv2.0.43 | 2026-09-22T10:41:52.022Z | user\n\nAdd post-nudge hold packet so operators wait after one reminder instead of treating continued silence as a final itinerary.\n\nv2.0.42 | 2026-09-22T05:58:50.905Z | user\n\nAdd copy-ready no-reply nudge packet so operators can remind a silent traveler without treating silence as a go-ahead for a final itinerary.\n\nv2.0.41 | 2026-09-15T01:09:53.190Z | user\n\nAdd copy-ready unclear-reply packet so operators can retry when a traveler answer is vague without sending a fake final itinerary.\n\nv2.0.40 | 2026-09-14T21:11:55.662Z | user\n\nAdd copy-ready two-turn send script stitching outbound message, expected reply, and follow-up while keeping the still-do-not final-itinerary guard.\n\nv2.0.39 | 2026-09-10T12:11:39.528Z | user\n\nAdd copy-ready follow-up send packet after traveler reply so acknowledgement is not treated as a final itinerary.\n\nv2.0.38 | 2026-09-10T06:24:24.715Z | user\n\nAdd reply_intake_card: accepted traveler replies, if-answered next move, and still-do-not guard after outbound send packet.\n\nv2.0.37 | 2026-09-10T01:37:09.839Z | user\n\nAdd output_polish.outbound_send_packet with a copy-ready traveler message, send/hold status, and a do-not-add guard so clarifying questions are not sent as fake final itineraries.\n\nv2.0.36 | 2026-08-18T10:42:00.431Z | user\n\nAdd send/hold decision card so operators get one safest reply form, primary blocker, and copy-ready instruction before over-sending a provisional plan.\n\nv2.0.35 | 2026-08-17T19:56:46.145Z | user\n\nAdd operator review queue for prioritized clarification, fallback, live-check, constraint, and continuity tasks before sending or expanding a plan.\n\nv2.0.34 | 2026-07-15T01:32:37.981Z | user\n\nAdd operator-visible decision risk meter for output polish send-readiness\n\nv2.0.33 | 2026-07-14T17:31:19.956Z | user\n\nAdd operator_review_queue output polish with prioritized owner/severity review tasks before presentation or itinerary expansion.\n\nv2.0.32 | 2026-07-14T13:05:52.140Z | user\n\nAdd transition validation card with per-hop live-routing pass criteria and fallback reorder/swap actions.\n\nv2.0.31 | 2026-07-13T20:34:40.116Z | user\n\nAdd operator-visible constraint compliance card for budget, pace, neighborhood, hours, food, and weather preservation checks.\n\nv2.0.30 | 2026-07-13T16:25:10.337Z | user\n\nAdd operator preflight card for send-readiness and safe live-viability claims\n\nv2.0.29 | 2026-07-13T08:08:03.297Z | user\n\nAdd operator_next_message output polish scaffold with verified caveat and next-owner preservation.\n\nv2.0.28 | 2026-07-13T00:00:00.108Z | user\n\nAdd operator-visible evidence trace card for output polish recommendations.\n\nv2.0.27 | 2026-07-12T19:58:15.689Z | user\n\nAdd operator-visible reply readiness score for output polish\n\nv2.0.26 | 2026-07-12T15:53:10.996Z | user\n\nAdd output_polish.user_response_choices with copy-ready traveler response examples for clarification, fallback confirmation, and itinerary expansion.\n\nv2.0.22 | 2026-07-11T14:50:31.748Z | user\n\nAdd verified final reply preview scaffold preserving rationale, evidence, caveats, and next-owner action.\n\nv2.0.21 | 2026-07-11T10:37:04.011Z | user\n\nAdd output finalization gate with explicit user/operator blocking checks before provisional plans are presented as final.\n\nv2.0.20 | 2026-07-11T06:26:16.839Z | user\n\nAdd copy-ready live validation prompt pack for operator and traveler checks.\n\nv2.0.19 | 2026-07-10T15:45:30.960Z | user\n\nAdd operator output digest with decision, rationale, evidence, watch-out, and owner-tagged next action.\n\nv2.0.17 | 2026-07-10T07:40:47.083Z | user\n\nAdd output_polish decision_snapshot_table for compact operator/UI review.\n\nv2.0.16 | 2026-07-10T03:18:36.879Z | user\n\nAdd output polish assumption ledger for provisional inputs, offline-data caveats, route scaffolds, fallback warnings, and active constraints.\n\nv2.0.15 | 2026-07-09T15:16:27.514Z | user\n\nAdd output_polish.validation_summary with operator go/no-go checks, pass criteria, and fallback actions.\n\nv2.0.12 | 2026-07-03T13:13:19.460Z | user\n\nAdd candidate recommendation explanations with concrete factor evidence\n\nv2.0.11 | 2026-07-03T09:12:21.324Z | user\n\nAdd output_polish.reply_options with safe user/operator next-action choices.\n\nv2.0.10 | 2026-07-03T05:02:55.007Z | user\n\nAdd verified quick reply card output polish for concise user-facing next-step recommendations.\n\nv2.0.9 | 2026-07-03T01:01:04.342Z | user\n\nAdd output_polish.handoff_brief with decision, rationale bullets, watch-out, next action owner, and evidence drivers.\n\nv2.0.8 | 2026-07-01T21:33:42.306Z | user\n\nAdd output polish status line and confidence drivers for operator readiness summaries.\n\nv2.0.7 | 2026-06-29T20:04:47.074Z | user\n\nAdd compact presentation_markdown output polish for recommendation, rationale, watch-outs, and next step.\n\nv2.0.6 | 2026-06-28T16:44:06.064Z | user\n\nAdd verified output polish decision confidence signal with evidence and missing-evidence readiness checks.\n\nv2.0.5 | 2026-06-20T16:04:39.200Z | user\n\nAdd output_polish.next_step_prompt for the single highest-impact next user/operator action.\n\nv2.0.4 | 2026-06-20T11:32:53.420Z | user\n\nAdd output polish decision summary and owner-tagged next action checklist.\n\nv2.0.3 | 2026-06-19T16:07:33.158Z | user\n\nPrivacy refactor: remove organization/personal identifiers and direct hosted CTA URLs; use approved public URL placeholders.\n\nv2.0.2 | 2026-06-19T06:37:35.340Z | user\n\nAdd output polish response template for consistent operator rendering\n\nv2.0.1 | 2026-06-18T18:56:55.067Z | user\n\nAdd verified output polish scaffold with compact sections, decision rationale, and next-step actions.\n\nv2.0.0 | 2026-05-30T08:29:57.278Z | user\n\nMajor refactor: add local-first Notion/Obsidian travel journal mode with route-spine chapters, portable map style tokens, journal schema, validation, and Markdown export scripts. Defers map rendering, EXIF extraction, image AI, Notion API publishing, and Obsidian automation to future tools.\n\nv1.2.15 | 2026-05-03T18:34:55.288Z | user\n\nSafety metadata alignment: clarified offline-only runtime, no OAuth/credentials/purchases; marked booking roadmap as non-operational reference; tightened README/SKILL security disclosures.\n\nv1.2.14 | 2026-04-20T05:01:28.758Z | user\n\nHarden trust review to block scanner-noise reviewer artifacts before publish.\n\nv1.2.13 | 2026-04-15T23:17:08.869Z | user\n\nAdd reviewer fingerprint checks (line counts + SHA256) and explicit offline helper scope to improve trust review clarity.\n\nv1.2.11 | 2026-04-10T13:03:31.828Z | user\n\nTrust hardening: extended static checks to cover gen-airports network imports and updated verifier docs.\n\nv1.2.10 | 2026-04-10T05:01:11.577Z | user\n\nExclude .openclaw loop artifacts from published package to reduce false socket anomaly signals.\n\nv1.2.9 | 2026-04-10T01:02:05.764Z | user\n\nHardened stale precheck-marker detection in socket-review checks for safer trust scans.\n\nv1.2.8 | 2026-04-09T20:08:45.367Z | user\n\nHarden socket anomaly guard by scanning hidden files for stale ralph-precheck markers and ambiguous socket-pass flags.\n\nv1.2.7 | 2026-04-09T01:35:20.282Z | user\n\nBroadened static guardrails for ambiguous Socket-pass markers and stale precheck artifact references to reduce marketplace false-positive trust ambiguity.\n\nv1.2.6 | 2026-04-08T15:47:50.161Z | user\n\nHarden socket/network trust checks by extending local static guards for socket-capable binaries and Python network clients, while excluding non-network urllib.parse usage.\n\nv1.2.5 | 2026-04-08T06:38:57.741Z | user\n\nTighten trust review guardrails for Socket anomaly markers and allowlist persistent loop state file.\n\nv1.2.4 | 2026-04-08T02:35:48.567Z | user\n\nTighten transient precheck artifact guard (.json) and package hygiene checks.\n\nv1.2.2 | 2026-04-07T16:14:06.159Z | user\n\nExpand static trust review to scan helper generator scripts for offline/non-dynamic behavior.\n\nArchive index:\n\nArchive v2.0.43: 16 files, 113699 bytes\n\nFiles: README.md (7774b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (125358b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (70379b), skill-card.md (2900b), SKILL.md (27121b), _meta.json (173b)\n\nFile v2.0.43:SKILL.md\n\n---\nname: kontour-travel-planner\ndescription: Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow.\nversion: 2.0.43\nlicense: MIT-0\nmetadata:\n  openclaw:\n    emoji: \"🧭\"\n    requires:\n      env: []\n      bins:\n        - bash\n        - python3\n---\n\n# Kontour Travel Planner\n\n> The planning brain that any AI agent can plug in. Not a search wrapper — a planning **methodology**.\n\nThis skill transforms any agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model.\n\n## Requirements\n\n**No API keys or credentials required.** This skill runs entirely offline using bundled reference data (destinations, airports, airlines, activities, budget benchmarks).\n\n- **Scripts** (`plan.sh`, `export-gmaps.sh`) — Pure local processing. No external API calls. Generates Google Maps URLs as plain links (no API key needed).\n- **Reference data** (`references/`) — Static JSON files bundled with the skill.\n- **`embed-snippets.json`** — Optional static marketing templates. These are informational only, do not load remote code, and are not required for planning functionality.\n- **`booking-integrations.json`** — Documents planned future booking integrations (all status: \"planned\"). No active API connections.\n\n### Security Transparency (for skill marketplaces)\n\nTo reduce false-positive trust flags and improve reviewer confidence:\n\n- Runtime network behavior: `plan.sh` and `export-gmaps.sh` make **no outbound HTTP/API calls**.\n- Credentials required: **none** (no API keys, tokens, OAuth, or env secrets).\n- Declared runtime dependencies in frontmatter: `bash`, `python3` only.\n- Data handling: all trip extraction and route generation are local; output is plain JSON, links, and optional KML.\n- External CTA examples are informational only and not required for core planning.\n\nQuick local verification:\n\n```bash\n# Should return no matches for network clients used by runtime scripts\nrg -n \"python3 -c|eval\\(|exec\\(|os\\.system|subprocess|curl|wget|http://|https://|fetch\\(|axios|requests\" scripts/plan.sh scripts/export-gmaps.sh\n\n# Reviewer-oriented trust smoke checks (license, secrets, dynamic execution)\n./scripts/socket-review-check.sh\n```\n\n## How It Works\n\n### 9-Dimension Planning Model\n\nEvery trip is tracked across 9 weighted dimensions:\n\n| Dimension | Weight | What to Extract |\n|-----------|--------|----------------|\n| **Dates** | 20 | Specific dates, flexible windows, \"next month\", seasons |\n| **Destination** | 15 | City, country, region, multi-city routes |\n| **Budget** | 15 | Dollar range, tier (budget/mid/luxury), per-person vs total |\n| **Duration** | 10 | Number of days, weekend vs week-long |\n| **Travelers** | 10 | Count, adults/children/seniors, solo/couple/family/group |\n| **Interests** | 10 | Activities, themes (adventure, food, culture, relaxation) |\n| **Accommodation** | 10 | Hotel, hostel, Airbnb, resort, boutique |\n| **Transport** | 5 | Flights, trains, rental car, public transit |\n| **Constraints** | 5 | Dietary, accessibility, pace, weather, visa |\n\nEach dimension has a score (0-1) and status (missing/partial/complete). Overall progress = weighted sum.\n\n### Stage-Based Conversation Flow\n\nProgress determines the current stage. Each stage prioritizes different dimensions:\n\n**Discover (0-29%)** — Establish the big picture\n- Priority: destination → dates → travelers → budget\n- Goal: Understand where, when, who, and roughly how much\n\n**Develop (30-59%)** — Fill in the plan\n- Priority: dates → budget → interests → accommodation\n- Goal: Nail down specifics, explore what they want to do\n\n**Refine (60-84%)** — Optimize details\n- Priority: accommodation → transport → constraints → interests\n- Goal: Logistics, preferences, edge cases\n\n**Confirm (85-100%)** — Finalize\n- Priority: constraints → transport → accommodation\n- Goal: Validate, detect conflicts, produce final itinerary\n\n### Guided Discovery Protocol\n\n**Rules:**\n1. Ask **ONE** high-impact question per turn. Never interrogate.\n2. Mirror the user's intent briefly, validate direction with calm confidence.\n3. Add one useful enrichment detail (a fact, tip, or insight).\n4. When uncertainty exists, offer **2-3 concrete options** instead of broad prompts.\n5. Advance with a concrete next action.\n\n**Example next-best questions by dimension:**\n- destination: \"Which destination should we prioritize first?\"\n- dates: \"What travel window works best for {destination}?\"\n- duration: \"How many days do you want this trip to be?\"\n- travelers: \"How many people are traveling, and are there children or seniors?\"\n- budget: \"What budget range should I optimize for?\"\n- interests: \"What are your top must-do experiences in {destination}?\"\n- accommodation: \"What type of stay fits you best — hotel, boutique, apartment, or resort?\"\n- transport: \"Do you prefer flights only, or should I include trains and local transit?\"\n- constraints: \"Any dietary, accessibility, pace, or activity constraints I should honor?\"\n\n### Conflict Detection\n\nFlag and resolve inconsistencies:\n- Date range invalid (start > end)\n- Multiple conflicting destinations without explicit multi-city intent\n- Budget tier vs destination mismatch (budget traveler → luxury destination)\n- Traveler count conflicts across mentions\n- Season mismatch (ski trip in summer, beach in winter)\n\n### Confidence Scoring\n\nOverall confidence = 65% × extraction_confidence + 25% × progress + 10% × consistency_score\n\nUse confidence to calibrate response certainty. Below 50%: ask more. Above 80%: start generating itineraries.\n\n### Candidate Scoring Explanation Contract\n\nWhen `plan.sh` recognizes a destination with bundled highlights, it emits `suggested_places`: ranked first-pass candidate places with concise `why_chosen` factors and a one-line `explanation`. Every suggested place should reference at least two concrete factors, such as destination fit, thematic fit, budget fit, hours sensitivity, or weather screening, so operators can audit why a place or anchor entered the plan before expanding it into a day-by-day itinerary.\n\n### Day-Plan Continuity Contract\n\nWhen `plan.sh` recognizes a destination with at least three bundled highlights, it emits `day_plan_continuity`: a morning/afternoon/evening scaffold ordered by destination-specific zones and lightweight routing heuristics. Each segment includes a `continuity_reason`, and each transition explains whether it is a same-zone pairing or a directional move to reduce backtracking before detailed live transit, hours, and meal timing are finalized.\n\n### Constraints Capture Contract\n\n`plan.sh` emits both a concise `constraints` list and machine-readable `constraint_details` when the traveler request includes explicit planning constraints:\n\n- `budget.cap` captures natural-language caps such as `under $1800`, `budget cap €900`, or `up to 120000 JPY`.\n- `constraint_details.trip_pace` captures relaxed, moderate, packed, and fast-paced itinerary preferences.\n- `constraint_details.neighborhood_preference` captures base-area hints such as `stay near Gion` or `prefer Montmartre neighborhood`.\n- `constraint_details.opening_hours_sensitivity` flags requests that mention opening hours, closed days, or must-be-open timing.\n- `constraint_details.food_preferences` captures dietary and cuisine preferences including vegetarian, vegan, halal, kosher, gluten-free, no raw fish, seafood, street food, and local food.\n- `constraint_details.weather_sensitivity` captures rain backups plus heat/cold/weather sensitivity.\n\nThese details should be honored before generating an itinerary and removed from `open_decisions` once captured.\n\n### Risk + Fallback Contract\n\n`plan.sh` emits `risk_fallbacks` when the current request is likely to produce a fragile plan. Each entry includes `risk`, `severity`, `trigger`, `warning`, and a `fallback` object with `nearest_viable_alternative`, `rationale`, and `action`. Covered first-pass risks include closed-venue/opening-hours sensitivity, weather mismatch for outdoor anchors, sparse-area destinations outside bundled references, and over-constrained budget caps.\n\n### Comparison Decision Matrix Contract\n\nWhen `plan.sh` emits `destination_comparison`, each option includes a `decision_matrix` with Budget fit, Season fit, Interest fit, and Pace fit signals, plus `best_for` and `watch_out` bullets for scan-friendly operator narration. If the traveler names a month or season, comparison scoring should surface whether that timing overlaps the destination's bundled best-month window and prefer viable seasonal fits before cheaper but poorly timed options. The comparison also includes an `operator_summary` so agents can explain the recommended option and the most useful alternate without forcing users to parse raw JSON.\n\n### Compact Presentation Markdown\n\nFor output polish, `output_polish.presentation_markdown` gives agents a ready-to-adapt Markdown draft with four compact sections: Recommendation, Why this fits, Watch-outs, and Next step. `output_polish.final_reply_preview` adds a traveler-facing compact reply preview with recommendation, rationale, evidence, optional flow note, watch-out, and owner-tagged next action so operators can paste or adapt a safer final response without losing caveats. Use it as the user-visible summary scaffold after checking the structured fields; it keeps the recommendation, rationale, fallback warning, and owner-tagged next action together without replacing the machine-readable data. `output_polish.decision_badges` adds compact readiness, next-owner, fallback-count, and decision-mode labels for scan-friendly UI chips or operator summaries. `output_polish.reply_options` adds up to three safe next-move choices with labels, values, owners, and reasons so chat UIs or operators can present actionable follow-ups without inventing buttons from prose. `output_polish.user_response_choices` adds copy-ready example traveler replies for the highest-priority missing decision, fallback confirmation, or itinerary expansion so user-facing UIs can offer concrete responses without losing ownership or caveats. `output_polish.decision_snapshot_table` adds a compact five-row decision table with focus, readiness, primary evidence, watch-out, and next action for dashboards, chat cards, or operator review panes. `output_polish.evidence_trace_card` adds a compact source trace naming the structured fields behind the recommendation so operators can audit or paste safer rationale. `output_polish.presentation_contract_check` adds a pre-send operator checklist that confirms the decision, evidence, watch-out, next owner, and finality guard are visible before a recommendation is sent. `output_polish.reply_readiness_score` adds a weighted operator score with pass/fail criteria, gate status, and the next improvement needed before sending or expanding the reply. `output_polish.traveler_facing_draft` adds ready-to-send concise Markdown bullets that preserve the recommendation, rationale, evidence, watch-out, next action, and clarification call without inventing new plan facts. `output_polish.shareable_summary` adds a traveler-facing, plain-text snapshot for chat or notes with recommendation, why, evidence, watch-out, and next action lines. `output_polish.operator_digest` adds a copy-ready operator decision note with decision, rationale, evidence, watch-out, and owner-tagged next action lines for internal review or handoff. `output_polish.validation_summary` adds operator-visible go/no-go checks with pass criteria and fallback actions before the recommendation is presented or expanded. `output_polish.operator_review_queue` adds a prioritized owner/severity queue of the exact review tasks that must clear before presentation or itinerary expansion. `output_polish.constraint_compliance_card` adds an operator-visible checklist that restates captured budget, pace, neighborhood, hours, food, and weather constraints with the exact preservation check required before expansion. `output_polish.operator_preflight_card` adds a compact send-readiness guard with safe send mode, required evidence/watch-out/owner elements, and a do-not-claim warning so operators can paste polished replies without overstating live viability. `output_polish.live_validation_prompt_pack` adds copy-ready user/operator prompts for live hours, transit, route continuity, fallback readiness, and traveler clarification checks before a plan is treated as final. `output_polish.assumption_ledger` lists missing inputs, offline-data assumptions, route-scaffold caveats, fallback assumptions, and active constraints so operators can label provisional plan details instead of overstating certainty. `output_polish.action_plan` adds a numbered, owner-tagged action sequence with trigger and outcome fields so operators know the exact next checks or user prompts to run before expanding the itinerary. `output_polish.itinerary_expansion_brief` adds an operator-visible expansion guardrail that names which evidence, continuity, constraints, fallbacks, and clarification gates must be preserved before turning the compact recommendation into a timed itinerary. `output_polish.send_decision_card` adds a single send/hold call with the safest send form, primary blocker, must-include items, and a copy-ready operator line so agents do not over-send a provisional plan. `output_polish.outbound_send_packet` adds the exact traveler-facing message to send now, plus send/hold status, hold-until condition, and a do-not-add guard so operators can paste one outbound reply without turning a clarifying question into a fake final itinerary. `output_polish.reply_intake_card` adds the accepted traveler replies, what to do if they answer, and a still-do-not guard so the next inbound message is not treated as permission to send a fake final itinerary. `output_polish.followup_send_packet` adds the exact traveler-facing follow-up to send after that inbound answer, plus a still-do-not guard so acknowledgement is not treated as a go-ahead for a fake final itinerary. `output_polish.unclear_reply_packet` adds the copy-ready traveler retry to send when the inbound answer is unclear, with a still-do-not guard so a vague reply is not treated as permission to send a final itinerary. `output_polish.two_turn_send_script` stitches the outbound message, expected reply, follow-up, and unclear-retry path into one copy-ready two-turn script so operators can run the next conversation beat without assembling those cards by hand. `output_polish.no_reply_nudge_packet` adds the copy-ready reminder to send when the traveler stays silent after the outbound question, with a still-do-not guard so silence is not treated as permission to send a final itinerary. `output_polish.post_nudge_hold_packet` adds the operator-only hold after that one reminder, so a second nudge or continued silence is not treated as permission to send a final itinerary.\n\n### Output Polish Contract\n\n`plan.sh` emits `output_polish` as a compact presentation scaffold for agents and operators. It includes `compact_sections` for the recommended response structure, `decision_summary` for a one-line readiness call, `decision_rationale` with concise evidence for why the current choice or sequence is recommended, `confidence_drivers` naming the structured evidence behind the recommendation, `status_line` summarizing readiness/fallback/open-decision counts for dashboards, `next_step_actions` for narrative next moves, `next_action_checklist` with explicit user/operator ownership and status, `operator_review_queue` for a prioritized owner/severity queue of the exact review tasks that must clear before presentation or itinerary expansion, `next_step_prompt` for the single highest-impact prompt to send or run next, `operator_preflight_card` for a send-readiness guard that names safe send mode, must-include evidence, and claims to avoid, `clarification_prompt_card` with why-now context, example answers, known structured context, and copy-ready text for the top missing decision, `live_validation_prompt_pack` for copy-ready validation prompts with user/operator ownership, `action_plan` for a numbered owner/trigger/outcome sequence of the next concrete steps, `decision_badges` for concise readiness/owner/fallback/mode chips, `shareable_summary` for paste-ready traveler text, `operator_digest` for copy-ready internal review notes, `evidence_trace_card` for compact source-field audit trails, `reply_options` for user/operator-visible follow-up choices, `user_response_choices` for copy-ready traveler response examples, `decision_snapshot_table` for a compact operator/UI decision table, `traveler_facing_draft` for a safe ready-to-send traveler Markdown draft, `final_reply_preview` for a compact traveler-facing response preview that preserves caveats and next ownership, `handoff_brief` for copy-ready operator transfer notes, `validation_summary` for live viability/route/constraint/user-clarification gates, `constraint_compliance_card` for preserving captured budget, pace, neighborhood, hours, food, and weather constraints during expansion, `finalization_gate` for an explicit go/no-go signal that blocks final presentation until user and operator checks clear, `reply_readiness_score` for a weighted operator score with criteria, gate status, and the next improvement needed before sending or expanding, `decision_risk_meter` for a compact operator risk/readiness meter with finality gate, safest traveler send mode, reasons, and the recommended operator action, `send_decision_card` for a single send/hold decision with the safest send form, primary blocker, and copy-ready operator instruction, `outbound_send_packet` for the exact traveler-facing message to send now with send/hold status and a do-not-add guard, `reply_intake_card` for accepted traveler replies plus if-answered / if-unclear / still-do-not handling of the next inbound message, `followup_send_packet` for the exact traveler-facing follow-up to send after that answer with a still-do-not final-itinerary guard, `unclear_reply_packet` for the copy-ready retry to send when the inbound answer is unclear, `two_turn_send_script` for a copy-ready outbound → expected-reply → follow-up sequence with an unclear-retry branch that keeps the still-do-not final-itinerary guard visible, `no_reply_nudge_packet` for the copy-ready reminder to send when the traveler stays silent after the outbound question, `post_nudge_hold_packet` for the operator-only hold after that one reminder so a second nudge or continued silence is not treated as a final itinerary, `assumption_ledger` for operator-visible provisional assumptions that must be labeled before presenting or expanding a plan, and a `response_template` with a four-line operator draft (`Lead with`, `Why`, `Watch`, `Next`) for consistent user-visible rendering.\n\n## Structured Output\n\nWhen planning is ≥85% complete, produce:\n\n### Trip Context JSON\n```json\n{\n  \"destination\": { \"name\": \"Tokyo\", \"country\": \"Japan\", \"coordinates\": [35.6762, 139.6503] },\n  \"dates\": { \"start\": \"2026-04-01\", \"end\": \"2026-04-08\" },\n  \"duration\": 8,\n  \"travelers\": { \"adults\": 2, \"children\": 0 },\n  \"budget\": { \"total\": 6000, \"currency\": \"USD\", \"tier\": \"mid\" },\n  \"interests\": [\"food\", \"culture\", \"technology\"],\n  \"accommodation\": \"boutique hotel\",\n  \"transport\": [\"flights\", \"metro\"],\n  \"constraints\": [\"no raw fish\"]\n}\n```\n\n### Day-by-Day Itinerary\nFor each day: theme, 3-5 activities with times/locations/duration/cost, transport between, meals.\n\n### Budget Breakdown\nCategories: flights, accommodation, food, activities, local transport, miscellaneous (10% buffer).\n\n### Packing Suggestions\nBased on destination weather for travel dates, planned activities, and cultural norms.\n\n### Interactive Planning Link\n> Add only an operator-approved public planning link at response time. Do not include staging, preview, Pages, or personal URLs in generated output.\n\n## Reference Data\n\nGround truth files in `references/`:\n- `destinations.json` — 200 global destinations with coordinates, costs, best months, highlights\n- `airports.json` — 500 airports with IATA codes and coordinates\n- `airlines.json` — Major airlines with alliances, hubs, regions\n- `activities.json` — Activity types with durations, cost tiers, group suitability\n- `budget-benchmarks.json` — Daily cost benchmarks by destination tier\n\nUse these for instant lookups — no API needed for basic planning intelligence.\n\n## Quick Planning Script\n\n```bash\n# Get structured trip context from a natural language query\n./scripts/plan.sh \"2 weeks in Japan for a couple, mid-range budget, interested in food and temples\"\n\n# Compare 2-3 destination options with budget, seasonality, fit factors, and tradeoffs\n./scripts/plan.sh \"compare Tokyo vs Paris vs Bangkok for 7 days for a couple, mid range budget, food and culture, relaxed pace\"\n```\n\nWhen a request says `compare`, `between`, `vs`, `or`, or `and` for 2-3 destination options, the script emits `destination_comparison` with:\n- `options[]` — each destination's daily budget benchmark, best months, fit factors, tradeoffs, decision signal, decision matrix, best-for bullets, and watch-outs.\n- `recommended_option` — the best first-pass option from bundled data, including requested month/season fit when available.\n- `operator_summary` — one scan-friendly recommendation sentence naming the default and the strongest alternate.\n- `how_to_decide` — operator-facing criteria for choosing among the options before itinerary generation.\n\n## Off-Topic Handling\n\nRedirect non-travel queries with charm:\n- Technical questions → \"Have you considered visiting tech hubs like Silicon Valley or Shenzhen?\"\n- Medical → \"I can help find wellness retreats or medical facilities at your destination!\"\n- Always pivot to travel with enthusiasm. Never be dismissive.\n\n## Key Principles\n\n1. **Progressive extraction** — Don't ask all questions upfront. Extract naturally from conversation.\n2. **Stage awareness** — Different priorities at different planning stages.\n3. **One question per turn** — Respect the user's attention. Be a consultant, not a form.\n4. **Concrete options** — \"Barcelona, Lisbon, or Dubrovnik?\" beats \"Where in Europe?\"\n5. **Machine-readable output** — Structured JSON that other tools can consume.\n6. **Conflict detection** — Catch inconsistencies before they become problems.\n\n## Google Maps Export\n\nExport any itinerary to shareable Google Maps links and KML files:\n\n```bash\n# Generate Google Maps URL with waypoints + per-day routes\n./scripts/export-gmaps.sh itinerary.json\n\n# Also export KML for import into Google Earth/Maps\n./scripts/export-gmaps.sh itinerary.json --kml trip.kml\n```\n\n**Input format** — The script consumes the structured itinerary JSON:\n```json\n{\n  \"days\": [{\n    \"day\": 1,\n    \"locations\": [\n      {\"name\": \"Senso-ji Temple\", \"lat\": 35.7148, \"lng\": 139.7967},\n      {\"name\": \"Tsukiji Outer Market\", \"lat\": 35.6654, \"lng\": 139.7707}\n    ]\n  }]\n}\n```\n\n**Outputs:**\n- Full trip route URL: `https://www.google.com/maps/dir/35.7148,139.7967/35.6654,139.7707/...`\n- Per-day route URLs for sharing individual days\n- KML file with color-coded daily routes and placemarks\n- Embed URL for websites\n\nFor interactive map planning, route visualization, and real-time collaboration, use only an operator-approved public planning link provided in the current context.\n\n## Sharing & Collaboration\n\n### Shareable Trip Summary\n\nGenerate summaries in multiple formats for different platforms:\n\n**Markdown (for email/docs):**\n```markdown\n## 🗾 Tokyo Adventure — Apr 1-8, 2026\n👥 2 travelers | 💰 $6,000 budget | 🏨 Boutique hotels\n\n### Day 1: Asakusa & Traditional Tokyo\n- 🕐 9:00 Senso-ji Temple (2h)\n- 🕐 12:00 Nakamise Street lunch\n- 🕐 14:00 Tokyo National Museum (3h)\n...\n```\n\n**WhatsApp/iMessage/Telegram-friendly** (no markdown tables, compact):\n```\n🗾 Tokyo Trip • Apr 1-8\n👥 2 people • 💰 $6K budget\n\nDay 1: Asakusa & Traditional Tokyo\n⏰ 9am Senso-ji Temple\n⏰ 12pm Nakamise lunch\n⏰ 2pm National Museum\n\n📍 Map: [Google Maps link]\n✨ Plan together: [approved public trip link]\n```\n\n**Visual Trip Card** (structured data for rendering):\n```json\n{\n  \"card_type\": \"trip_summary\",\n  \"destination\": \"Tokyo, Japan\",\n  \"dates\": \"Apr 1-8, 2026\",\n  \"cover_image_query\": \"Tokyo skyline cherry blossom\",\n  \"travelers\": 2,\n  \"budget\": \"$6,000\",\n  \"highlights\": [\"Senso-ji\", \"Tsukiji Market\", \"Mount Fuji day trip\"],\n  \"share_url\": \"[approved public trip link]\"\n}\n```\n\n## SEO Content & Embeddable Widgets\n\nGenerate static embed snippets for travel blogs, SEO articles, and content sites. See `references/embed-snippets.json` for ready-to-use templates.\n\n### Available Widgets\n\n1. **\"Plan this trip\" CTA Button** — Link-based CTA using an approved public URL placeholder.\n2. **Destination Quick Facts Card** — Weather, currency, visa, best season, language at a glance.\n3. **Cost Comparison Summary** — Budget vs mid-range vs luxury daily costs.\n\n### Generating Widgets On Demand\n\nWhen asked to generate SEO content for a destination, produce:\n1. Destination quick facts card (pull from `references/destinations.json`)\n2. Cost comparison summary (pull from `references/budget-benchmarks.json`)\n3. A natural CTA with an approved public URL placeholder, e.g. \"Ready to plan? [Start your {destination} itinerary →]({APPROVED_PUBLIC_URL})\"\n\n### SEO-Friendly Content Generation\n\nWhen writing travel content, naturally weave in:\n- Structured data (schema.org TravelAction) for search visibility\n- Internal destination links only when an approved public URL is supplied\n- Cost comparisons that reference real benchmark data\n- Seasonal recommendations backed by the `best_months` data\n\n## Booking & Reservations (Roadmap)\n\nKontour AI is building direct booking integrations. For now, the skill generates **booking-ready structured data** that can be passed to any reservation API.\n\nSee `references/booking-integrations.json` for the full integration roadmap.\n\n### Supported Output Formats\n\nThe skill outputs structured requests ready for any booking system:\n\n| Category | Providers (planned) | Status |\n|----------|-------------------|--------|\n| Flights | Amadeus, Sabre, Travelport, Kiwi | Planned |\n| Hotels | Booking.com, Expedia, Airbnb | Planned |\n| Activities | GetYourGuide, Viator, Klook | Planned |\n| Car Rental | Rentalcars, Enterprise, Hertz, Sixt | Planned |\n| Trains | Rail Europe, JR Pass, Trainline, Amtrak | Planned |\n\n**Example booking-ready output:**\n```json\n{\n  \"flights\": [\n    {\"origin\": \"LAX\", \"destination\": \"NRT\", \"date\": \"2026-04-01\", \"passengers\": 2, \"cabin\": \"economy\"}\n  ],\n  \"hotels\": [\n    {\"destination\": \"Tokyo\", \"checkin\": \"2026-04-01\", \"checkout\": \"2026-04-08\", \"guests\": 2, \"rooms\": 1, \"budget_per_night_usd\": 150}\n  ],\n  \"activities\": [\n    {\"destination\": \"Tokyo\", \"date\": \"2026-04-02\", \"category\": \"Food Tour\", \"participants\": 2, \"budget_usd\": 80}\n  ]\n}\n```\n\nTreat integration status as a roadmap snapshot unless the operator supplies an approved current public status URL.\n\nFile v2.0.43:README.md\n\n# kontour-travel-planner\n\nAI agent skill for world-class travel planning using a 9-dimension progressive planning model.\n\n## Install\n\n```bash\nnpx skills add kontour-travel-planner\n```\n\nOr browse on a supported skill marketplace.\n\n## What This Skill Does\n\nTransforms any AI agent into a travel planning consultant using a structured methodology:\n\n- **9 weighted dimensions** — dates, destination, budget, duration, travelers, interests, accommodation, transport, constraints\n- **4-stage conversation flow** — Discover → Develop → Refine → Confirm\n- **Guided discovery** — one high-impact question per turn, concrete options, conflict detection\n- **Structured output** — trip context JSON, candidate scoring explanations, output polish with owner-tagged next actions, day-by-day itinerary, budget breakdown, Google Maps export\n- **Reference data** — 200 destinations, 500 airports, airlines, activities, budget benchmarks (no API needed)\n\n## Reference Data\n\nGround truth files in `references/`:\n\n| File | Contents |\n|------|----------|\n| `destinations.json` | 200 global destinations with coordinates, costs, best months |\n| `airports.json` | 500 airports with IATA codes and coordinates |\n| `airlines.json` | Major airlines with alliances, hubs, regions |\n| `activities.json` | Activity types with durations, cost tiers |\n| `budget-benchmarks.json` | Daily cost benchmarks by destination tier |\n| `booking-integrations.json` | Integration roadmap for booking providers |\n| `embed-snippets.json` | Optional static CTA/template examples |\n\n## Constraint Capture Smoke Test\n\nThe planner extracts operator-visible constraint details from natural-language requests, including budget caps, trip pace, neighborhood/base preference, opening-hours sensitivity, food preference, and weather sensitivity. Run the offline regression check with:\n\n```bash\n./scripts/test-plan-constraints.sh\n```\n\n## Candidate Scoring Explanations\n\nWhen the request includes a known destination, `scripts/plan.sh` now emits `suggested_places` with ranked highlights and concise `why_chosen` factors. Each explanation references at least two concrete scoring factors such as destination fit, thematic fit, budget fit, hours sensitivity, or weather screening, so operators can see why a place entered the first-pass plan.\n\n## Day-Plan Continuity\n\nFor known destinations with enough ranked highlights, `scripts/plan.sh` emits `day_plan_continuity`: a morning/afternoon/evening sequencing scaffold with zones, continuity reasons, and transition rationale. This gives operators a compact first pass that reduces avoidable backtracking before a full itinerary or route export is finalized.\n\n## Risk + Fallback Warnings\n\nWhen constraints make a first-pass plan fragile, `scripts/plan.sh` emits `risk_fallbacks` instead of failing bluntly. The warnings currently cover closed-venue/opening-hours risk, weather mismatch, sparse-area destinations outside bundled references, and over-constrained budget caps, with each warning naming the nearest viable alternative and the action to take before finalizing.\n\n## Destination Comparison Support\n\nWhen a request asks to compare 2-3 options, `scripts/plan.sh` emits `destination_comparison` with per-option budget benchmarks, best months, fit factors, tradeoffs, a decision matrix, best-for bullets, watch-outs, an operator summary, and a clear `recommended_option`. If the user names a month or season, the comparison highlights matching or risky timing so operators can explain the decision before committing to a destination-specific itinerary.\n\n## Compact Presentation Markdown\n\nFor output polish, `output_polish.presentation_markdown` provides a ready-to-adapt Markdown draft with four compact sections: Recommendation, Why this fits, Watch-outs, and Next step. It preserves the structured JSON fields while giving operators a user-visible response scaffold with clear rationale and the single next action. `output_polish.decision_badges` also exposes compact readiness, next-owner, fallback-count, and decision-mode labels so UIs and operators can scan the plan state without parsing the full rationale. `output_polish.handoff_brief` adds a copy-ready operator transfer note with the decision, rationale bullets, watch-out, next action owner, and evidence drivers for smoother planning handoffs. `output_polish.shareable_summary` emits a plain-language, decision-first text block that can be pasted into chat or trip notes without exposing raw JSON. `output_polish.validation_summary` gives operators a go/no-go checklist with pass criteria and fallback actions before expanding or presenting the plan. `output_polish.finalization_gate` adds an explicit blocked/ready signal with user/operator blocking checks so provisional offline plans are not presented as final too early. `output_polish.live_validation_prompt_pack` provides copy-ready user/operator validation prompts before treating offline recommendations as final. `output_polish.assumption_ledger` adds a short operator-visible list of provisional assumptions, missing inputs, and live-validation caveats that should be labeled before a plan is shown as final. `output_polish.decision_snapshot_table` adds a compact five-row table for dashboards and chat cards: focus, readiness, primary evidence, watch-out, and next action. `output_polish.evidence_trace_card` adds a compact source-field audit trail so operators can see which structured evidence supports the recommendation. `output_polish.user_response_choices` adds copy-ready example traveler responses for the highest-priority clarification or confirmation so chat UIs can present concrete next-step choices. `output_polish.send_decision_card` adds a single send/hold call with the safest send form, primary blocker, and a copy-ready operator instruction so provisional plans are not over-sent as final. `output_polish.outbound_send_packet` adds the exact traveler-facing message to send now, plus send/hold status, hold-until condition, and a do-not-add guard so operators can paste one outbound reply without inventing a final itinerary too early. `output_polish.reply_intake_card` adds accepted traveler replies, the next operator move if they answer, and a still-do-not guard so the inbound answer is not treated as a go-ahead to send a fake final itinerary. `output_polish.followup_send_packet` adds the copy-ready traveler follow-up after that answer, with send/hold status and a still-do-not guard so acknowledgement is not treated as a final itinerary. `output_polish.unclear_reply_packet` adds the copy-ready traveler retry when the inbound answer is unclear, so operators can ask once more without treating a vague reply as a go-ahead for a final itinerary. `output_polish.two_turn_send_script` now includes that unclear-retry branch beside the happy-path follow-up. `output_polish.no_reply_nudge_packet` adds the copy-ready reminder when the traveler stays silent after the outbound question, so operators can nudge once without treating silence as a go-ahead for a final itinerary. `output_polish.post_nudge_hold_packet` adds the operator-only hold after that one reminder, so a second nudge or continued silence is not treated as a go-ahead for a final itinerary.\n\n## Scripts\n\n- `scripts/plan.sh` — Get structured trip context from natural language\n- `scripts/export-gmaps.sh` — Export itinerary to Google Maps links and KML\n- `scripts/gen-airports.py` — Generate airport reference data\n\n## Marketplace privacy policy\n\n- Do not disclose staging, preview, Pages, or deployment hostnames in marketplace text.\n- Keep install and usage examples product-neutral and avoid personal/operator identifiers.\n- Add approved public URLs only when the operator provides them in the current publishing context.\n\n## License\n\nMIT\n\nFile v2.0.43:_meta.json\n\n{\n  \"ownerId\": \"kn78yww77gm7hxwgx0jewrmag981vb1p\",\n  \"slug\": \"travel-planner-notion-ai-obsidian-kontour-integration\",\n  \"version\": \"2.0.43\",\n  \"publishedAt\": 1790073712022\n}\n\nFile v2.0.43:references/activities.json\n\n[\n  {\"category\": \"Museum/Gallery\", \"typical_duration_hours\": 2.5, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"family\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Historical Site\", \"typical_duration_hours\": 2, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"City Walking Tour\", \"typical_duration_hours\": 3, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Food Tour\", \"typical_duration_hours\": 3.5, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"both\"},\n  {\"category\": \"Cooking Class\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Wine/Beer Tasting\", \"typical_duration_hours\": 2, \"cost_tier\": \"mid\", \"best_for\": [\"couple\", \"group\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Snorkeling\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"family\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Scuba Diving\", \"typical_duration_hours\": 4, \"cost_tier\": \"luxury\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Hiking/Trekking\", \"typical_duration_hours\": 5, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Beach Day\", \"typical_duration_hours\": 5, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Surfing Lesson\", \"typical_duration_hours\": 2, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Zip-lining\", \"typical_duration_hours\": 2, \"cost_tier\": \"mid\", \"best_for\": [\"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Rock Climbing\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Kayaking/Canoeing\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"family\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Safari/Wildlife Tour\", \"typical_duration_hours\": 8, \"cost_tier\": \"luxury\", \"best_for\": [\"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Hot Air Balloon\", \"typical_duration_hours\": 1.5, \"cost_tier\": \"luxury\", \"best_for\": [\"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Spa/Wellness\", \"typical_duration_hours\": 3, \"cost_tier\": \"luxury\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Theme Park\", \"typical_duration_hours\": 8, \"cost_tier\": \"mid\", \"best_for\": [\"family\", \"group\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Nightlife/Bar Hopping\", \"typical_duration_hours\": 4, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Theater/Show\", \"typical_duration_hours\": 2.5, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Local Market Visit\", \"typical_duration_hours\": 2, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Boat/Cruise Tour\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Cycling Tour\", \"typical_duration_hours\": 3, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Photography Tour\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Yoga/Meditation Retreat\", \"typical_duration_hours\": 2, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"both\"},\n  {\"category\": \"Helicopter Tour\", \"typical_duration_hours\": 1, \"cost_tier\": \"luxury\", \"best_for\": [\"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Skiing/Snowboarding\", \"typical_duration_hours\": 6, \"cost_tier\": \"luxury\", \"best_for\": [\"solo\", \"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Horseback Riding\", \"typical_duration_hours\": 2, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"family\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Pottery/Art Class\", \"typical_duration_hours\": 2.5, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Temple/Religious Site\", \"typical_duration_hours\": 1.5, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Festival/Cultural Event\", \"typical_duration_hours\": 4, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Paragliding\", \"typical_duration_hours\": 1, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Whitewater Rafting\", \"typical_duration_hours\": 4, \"cost_tier\": \"mid\", \"best_for\": [\"group\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Escape Room\", \"typical_duration_hours\": 1.5, \"cost_tier\": \"budget\", \"best_for\": [\"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Aquarium/Zoo\", \"typical_duration_hours\": 3, \"cost_tier\": \"budget\", \"best_for\": [\"family\", \"couple\"], \"indoor_outdoor\": \"both\"}\n]\n\nFile v2.0.43:references/airlines.json\n\n[\n  {\"name\": \"American Airlines\", \"iata\": \"AA\", \"alliance\": \"oneworld\", \"hubs\": [\"DFW\", \"CLT\", \"MIA\", \"PHL\", \"ORD\"], \"regions\": [\"North America\", \"Europe\", \"Latin America\", \"Asia\"]},\n  {\"name\": \"Delta Air Lines\", \"iata\": \"DL\", \"alliance\": \"SkyTeam\", \"hubs\": [\"ATL\", \"MSP\", \"DTW\", \"SLC\", \"SEA\", \"JFK\", \"LAX\", \"BOS\"], \"regions\": [\"North America\", \"Europe\", \"Asia\", \"Latin America\"]},\n  {\"name\": \"United Airlines\", \"iata\": \"UA\", \"alliance\": \"Star Alliance\", \"hubs\": [\"ORD\", \"EWR\", \"IAH\", \"DEN\", \"SFO\", \"LAX\", \"IAD\"], \"regions\": [\"North America\", \"Europe\", \"Asia\", \"Latin America\", \"Oceania\"]},\n  {\"name\": \"Southwest Airlines\", \"iata\": \"WN\", \"alliance\": null, \"hubs\": [\"DAL\", \"MDW\", \"BWI\", \"DEN\", \"LAS\", \"PHX\"], \"regions\": [\"North America\"]},\n  {\"name\": \"JetBlue Airways\", \"iata\": \"B6\", \"alliance\": null, \"hubs\": [\"JFK\", \"BOS\", \"FLL\", \"MCO\"], \"regions\": [\"North America\", \"Caribbean\"]},\n  {\"name\": \"Alaska Airlines\", \"iata\": \"AS\", \"alliance\": \"oneworld\", \"hubs\": [\"SEA\", \"SFO\", \"LAX\", \"PDX\"], \"regions\": [\"North America\"]},\n  {\"name\": \"Air Canada\", \"iata\": \"AC\", \"alliance\": \"Star Alliance\", \"hubs\": [\"YYZ\", \"YVR\", \"YUL\"], \"regions\": [\"North America\", \"Europe\", \"Asia\"]},\n  {\"name\": \"British Airways\", \"iata\": \"BA\", \"alliance\": \"oneworld\", \"hubs\": [\"LHR\", \"LGW\"], \"regions\": [\"Europe\", \"North America\", \"Asia\", \"Africa\"]},\n  {\"name\": \"Lufthansa\", \"iata\": \"LH\", \"alliance\": \"Star Alliance\", \"hubs\": [\"FRA\", \"MUC\"], \"regions\": [\"Europe\", \"North America\", \"Asia\", \"Africa\"]},\n  {\"name\": \"Air France\", \"iata\": \"AF\", \"alliance\": \"SkyTeam\", \"hubs\": [\"CDG\", \"ORY\"], \"regions\": [\"Europe\", \"North America\", \"Africa\", \"Asia\"]},\n  {\"name\": \"KLM\", \"iata\": \"KL\", \"alliance\": \"SkyTeam\", \"hubs\": [\"AMS\"], \"regions\": [\"Europe\", \"North America\", \"Asia\", \"Africa\"]},\n  {\"name\": \"Emirates\", \"iata\": \"EK\", \"alliance\": null, \"hubs\": [\"DXB\"], \"regions\": [\"Middle East\", \"Europe\", \"Asia\", \"Africa\", \"North America\", \"Oceania\"]},\n  {\"name\": \"Qatar Airways\", \"iata\": \"QR\", \"alliance\": \"oneworld\", \"hubs\": [\"DOH\"], \"regions\": [\"Middle East\", \"Europe\", \"Asia\", \"Africa\", \"North America\", \"Oceania\"]},\n  {\"name\": \"Etihad Airways\", \"iata\": \"EY\", \"alliance\": null, \"hubs\": [\"AUH\"], \"regions\": [\"Middle East\", \"Europe\", \"Asia\", \"Africa\", \"Oceania\"]},\n  {\"name\": \"Turkish Airlines\", \"iata\": \"TK\", \"alliance\": \"Star Alliance\", \"hubs\": [\"IST\"], \"regions\": [\"Europe\", \"Asia\", \"Africa\", \"Middle East\", \"North America\"]},\n  {\"name\": \"Singapore Airlines\", \"iata\": \"SQ\", \"alliance\": \"Star Alliance\", \"hubs\": [\"SIN\"], \"regions\": [\"Asia\", \"Europe\", \"Oceania\", \"North America\"]},\n  {\"name\": \"Cathay Pacific\", \"iata\": \"CX\", \"alliance\": \"oneworld\", \"hubs\": [\"HKG\"], \"regions\": [\"Asia\", \"Europe\", \"North America\", \"Oceania\"]},\n  {\"name\": \"Japan Airlines\", \"iata\": \"JL\", \"alliance\": \"oneworld\", \"hubs\": [\"NRT\", \"HND\"], \"regions\": [\"Asia\", \"North America\", \"Europe\"]},\n  {\"name\": \"ANA\", \"iata\": \"NH\", \"alliance\": \"Star Alliance\", \"hubs\": [\"NRT\", \"HND\"], \"regions\": [\"Asia\", \"North America\", \"Europe\"]},\n  {\"name\": \"Korean Air\", \"iata\": \"KE\", \"alliance\": \"SkyTeam\", \"hubs\": [\"ICN\"], \"regions\": [\"Asia\", \"North America\", \"Europe\"]},\n  {\"name\": \"Qantas\", \"iata\": \"QF\", \"alliance\": \"oneworld\", \"hubs\": [\"SYD\", \"MEL\"], \"regions\": [\"Oceania\", \"Asia\", \"Europe\", \"North America\"]},\n  {\"name\": \"Air New Zealand\", \"iata\": \"NZ\", \"alliance\": \"Star Alliance\", \"hubs\": [\"AKL\"], \"regions\": [\"Oceania\", \"Asia\", \"North America\"]},\n  {\"name\": \"LATAM Airlines\", \"iata\": \"LA\", \"alliance\": null, \"hubs\": [\"SCL\", \"GRU\", \"LIM\", \"BOG\"], \"regions\": [\"South America\", \"North America\", \"Europe\", \"Oceania\"]},\n  {\"name\": \"Avianca\", \"iata\": \"AV\", \"alliance\": \"Star Alliance\", \"hubs\": [\"BOG\", \"SLV\"], \"regions\": [\"South America\", \"Central America\", \"North America\"]},\n  {\"name\": \"Iberia\", \"iata\": \"IB\", \"alliance\": \"oneworld\", \"hubs\": [\"MAD\"], \"regions\": [\"Europe\", \"Latin America\", \"North America\"]},\n  {\"name\": \"Swiss International\", \"iata\": \"LX\", \"alliance\": \"Star Alliance\", \"hubs\": [\"ZRH\"], \"regions\": [\"Europe\", \"North America\", \"Asia\", \"Africa\"]},\n  {\"name\": \"Austrian Airlines\", \"iata\": \"OS\", \"alliance\": \"Star Alliance\", \"hubs\": [\"VIE\"], \"regions\": [\"Europe\", \"North America\", \"Asia\"]},\n  {\"name\": \"Scandinavian Airlines\", \"iata\": \"SK\", \"alliance\": \"Star Alliance\", \"hubs\": [\"CPH\", \"ARN\", \"OSL\"], \"regions\": [\"Europe\", \"North America\", \"Asia\"]},\n  {\"name\": \"Finnair\", \"iata\": \"AY\", \"alliance\": \"oneworld\", \"hubs\": [\"HEL\"], \"regions\": [\"Europe\", \"Asia\"]},\n  {\"name\": \"Ryanair\", \"iata\": \"FR\", \"alliance\": null, \"hubs\": [\"DUB\", \"STN\", \"BGY\"], \"regions\": [\"Europe\", \"North Africa\"]},\n  {\"name\": \"easyJet\", \"iata\": \"U2\", \"alliance\": null, \"hubs\": [\"LGW\", \"LTN\", \"CDG\", \"AMS\"], \"regions\": [\"Europe\"]},\n  {\"name\": \"Wizz Air\", \"iata\": \"W6\", \"alliance\": null, \"hubs\": [\"BUD\", \"LTN\"], \"regions\": [\"Europe\", \"Middle East\"]},\n  {\"name\": \"Norwegian Air\", \"iata\": \"DY\", \"alliance\": null, \"hubs\": [\"OSL\", \"ARN\", \"CPH\"], \"regions\": [\"Europe\"]},\n  {\"name\": \"TAP Air Portugal\", \"iata\": \"TP\", \"alliance\": \"Star Alliance\", \"hubs\": [\"LIS\"], \"regions\": [\"Europe\", \"Africa\", \"South America\", \"North America\"]},\n  {\"name\": \"Aer Lingus\", \"iata\": \"EI\", \"alliance\": null, \"hubs\": [\"DUB\"], \"regions\": [\"Europe\", \"North America\"]},\n  {\"name\": \"Thai Airways\", \"iata\": \"TG\", \"alliance\": \"Star Alliance\", \"hubs\": [\"BKK\"], \"regions\": [\"Asia\", \"Europe\", \"Oceania\"]},\n  {\"name\": \"Vietnam Airlines\", \"iata\": \"VN\", \"alliance\": \"SkyTeam\", \"hubs\": [\"HAN\", \"SGN\"], \"regions\": [\"Asia\", \"Europe\"]},\n  {\"name\": \"Malaysia Airlines\", \"iata\": \"MH\", \"alliance\": \"oneworld\", \"hubs\": [\"KUL\"], \"regions\": [\"Asia\", \"Europe\", \"Oceania\"]},\n  {\"name\": \"Garuda Indonesia\", \"iata\": \"GA\", \"alliance\": \"SkyTeam\", \"hubs\": [\"CGK\"], \"regions\": [\"Asia\", \"Middle East\"]},\n  {\"name\": \"Philippine Airlines\", \"iata\": \"PR\", \"alliance\": null, \"hubs\": [\"MNL\"], \"regions\": [\"Asia\", \"North America\", \"Middle East\"]},\n  {\"name\": \"AirAsia\", \"iata\": \"AK\", \"alliance\": null, \"hubs\": [\"KUL\", \"DMK\", \"CGK\"], \"regions\": [\"Asia\", \"Oceania\"]},\n  {\"name\": \"IndiGo\", \"iata\": \"6E\", \"alliance\": null, \"hubs\": [\"DEL\", \"BOM\", \"BLR\"], \"regions\": [\"South Asia\", \"Middle East\", \"Southeast Asia\"]},\n  {\"name\": \"Air India\", \"iata\": \"AI\", \"alliance\": \"Star Alliance\", \"hubs\": [\"DEL\", \"BOM\"], \"regions\": [\"South Asia\", \"Europe\", \"North America\"]},\n  {\"name\": \"Ethiopian Airlines\", \"iata\": \"ET\", \"alliance\": \"Star Alliance\", \"hubs\": [\"ADD\"], \"regions\": [\"Africa\", \"Middle East\", \"Europe\", \"Asia\", \"North America\"]},\n  {\"name\": \"South African Airways\", \"iata\": \"SA\", \"alliance\": \"Star Alliance\", \"hubs\": [\"JNB\"], \"regions\": [\"Africa\", \"Europe\"]},\n  {\"name\": \"Kenya Airways\", \"iata\": \"KQ\", \"alliance\": \"SkyTeam\", \"hubs\": [\"NBO\"], \"regions\": [\"Africa\", \"Europe\", \"Asia\"]},\n  {\"name\": \"EgyptAir\", \"iata\": \"MS\", \"alliance\": \"Star Alliance\", \"hubs\": [\"CAI\"], \"regions\": [\"Africa\", \"Europe\", \"Middle East\"]},\n  {\"name\": \"Royal Air Maroc\", \"iata\": \"AT\", \"alliance\": \"oneworld\", \"hubs\": [\"CMN\"], \"regions\": [\"Africa\", \"Europe\", \"Middle East\"]},\n  {\"name\": \"Saudia\", \"iata\": \"SV\", \"alliance\": \"SkyTeam\", \"hubs\": [\"JED\", \"RUH\"], \"regions\": [\"Middle East\", \"Asia\", \"Africa\", \"Europe\"]},\n  {\"name\": \"China Southern\", \"iata\": \"CZ\", \"alliance\": \"SkyTeam\", \"hubs\": [\"CAN\", \"PEK\"], \"regions\": [\"Asia\", \"Europe\", \"North America\", \"Oceania\"]},\n  {\"name\": \"China Eastern\", \"iata\": \"MU\", \"alliance\": \"SkyTeam\", \"hubs\": [\"PVG\", \"SHA\"], \"regions\": [\"Asia\", \"Europe\", \"North America\", \"Oceania\"]},\n  {\"name\": \"Air China\", \"iata\": \"CA\", \"alliance\": \"Star Alliance\", \"hubs\": [\"PEK\"], \"regions\": [\"Asia\", \"Europe\", \"North America\"]},\n  {\"name\": \"Hainan Airlines\", \"iata\": \"HU\", \"alliance\": null, \"hubs\": [\"PEK\", \"HAK\"], \"regions\": [\"Asia\", \"Europe\", \"North America\"]},\n  {\"name\": \"EVA Air\", \"iata\": \"BR\", \"alliance\": \"Star Alliance\", \"hubs\": [\"TPE\"], \"regions\": [\"Asia\", \"North America\", \"Europe\", \"Oceania\"]},\n  {\"name\": \"Asiana Airlines\", \"iata\": \"OZ\", \"alliance\": \"Star Alliance\", \"hubs\": [\"ICN\"], \"regions\": [\"Asia\", \"North America\", \"Europe\"]},\n  {\"name\": \"Copa Airlines\", \"iata\": \"CM\", \"alliance\": \"Star Alliance\", \"hubs\": [\"PTY\"], \"regions\": [\"Central America\", \"South America\", \"North America\", \"Caribbean\"]},\n  {\"name\": \"Aeromexico\", \"iata\": \"AM\", \"alliance\": \"SkyTeam\", \"hubs\": [\"MEX\"], \"regions\": [\"North America\", \"Central America\", \"South America\", \"Europe\", \"Asia\"]},\n  {\"name\": \"Volaris\", \"iata\": \"Y4\", \"alliance\": null, \"hubs\": [\"MEX\", \"GDL\", \"TIJ\"], \"regions\": [\"North America\", \"Central America\"]},\n  {\"name\": \"Hawaiian Airlines\", \"iata\": \"HA\", \"alliance\": null, \"hubs\": [\"HNL\"], \"regions\": [\"North America\", \"Oceania\", \"Asia\"]},\n  {\"name\": \"Virgin Atlantic\", \"iata\": \"VS\", \"alliance\": \"SkyTeam\", \"hubs\": [\"LHR\"], \"regions\": [\"Europe\", \"North America\", \"Caribbean\"]}\n]\n\nFile v2.0.43:references/airports.json\n\n[\n  {\n    \"iata\": \"ATL\",\n    \"name\": \"Hartsfield-Jackson Atlanta International\",\n    \"city\": \"Atlanta\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      33.6407,\n      -84.4277\n    ]\n  },\n  {\n    \"iata\": \"DXB\",\n    \"name\": \"Dubai International\",\n    \"city\": \"Dubai\",\n    \"country\": \"AE\",\n    \"coordinates\": [\n      25.2532,\n      55.3657\n    ]\n  },\n  {\n    \"iata\": \"DFW\",\n    \"name\": \"Dallas/Fort Worth International\",\n    \"city\": \"Dallas\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      32.8998,\n      -97.0403\n    ]\n  },\n  {\n    \"iata\": \"DEN\",\n    \"name\": \"Denver International\",\n    \"city\": \"Denver\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      39.8561,\n      -104.6737\n    ]\n  },\n  {\n    \"iata\": \"ORD\",\n    \"name\": \"O'Hare International\",\n    \"city\": \"Chicago\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      41.9742,\n      -87.9073\n    ]\n  },\n  {\n    \"iata\": \"LAX\",\n    \"name\": \"Los Angeles International\",\n    \"city\": \"Los Angeles\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      33.9425,\n      -118.4081\n    ]\n  },\n  {\n    \"iata\": \"IST\",\n    \"name\": \"Istanbul Airport\",\n    \"city\": \"Istanbul\",\n    \"country\": \"TR\",\n    \"coordinates\": [\n      41.2753,\n      28.7519\n    ]\n  },\n  {\n    \"iata\": \"LHR\",\n    \"name\": \"Heathrow\",\n    \"city\": \"London\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      51.47,\n      -0.4543\n    ]\n  },\n  {\n    \"iata\": \"JFK\",\n    \"name\": \"John F. Kennedy International\",\n    \"city\": \"New York\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      40.6413,\n      -73.7781\n    ]\n  },\n  {\n    \"iata\": \"CDG\",\n    \"name\": \"Charles de Gaulle\",\n    \"city\": \"Paris\",\n    \"country\": \"FR\",\n    \"coordinates\": [\n      49.0097,\n      2.5479\n    ]\n  },\n  {\n    \"iata\": \"AMS\",\n    \"name\": \"Schiphol\",\n    \"city\": \"Amsterdam\",\n    \"country\": \"NL\",\n    \"coordinates\": [\n      52.3086,\n      4.7639\n    ]\n  },\n  {\n    \"iata\": \"DEL\",\n    \"name\": \"Indira Gandhi International\",\n    \"city\": \"New Delhi\",\n    \"country\": \"IN\",\n    \"coordinates\": [\n      28.5562,\n      77.1\n    ]\n  },\n  {\n    \"iata\": \"CAN\",\n    \"name\": \"Guangzhou Baiyun\",\n    \"city\": \"Guangzhou\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      23.3924,\n      113.2988\n    ]\n  },\n  {\n    \"iata\": \"FRA\",\n    \"name\": \"Frankfurt\",\n    \"city\": \"Frankfurt\",\n    \"country\": \"DE\",\n    \"coordinates\": [\n      50.0379,\n      8.5622\n    ]\n  },\n  {\n    \"iata\": \"SIN\",\n    \"name\": \"Changi\",\n    \"city\": \"Singapore\",\n    \"country\": \"SG\",\n    \"coordinates\": [\n      1.3644,\n      103.9915\n    ]\n  },\n  {\n    \"iata\": \"HND\",\n    \"name\": \"Haneda\",\n    \"city\": \"Tokyo\",\n    \"country\": \"JP\",\n    \"coordinates\": [\n      35.5494,\n      139.7798\n    ]\n  },\n  {\n    \"iata\": \"PEK\",\n    \"name\": \"Beijing Capital\",\n    \"city\": \"Beijing\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      40.0799,\n      116.6031\n    ]\n  },\n  {\n    \"iata\": \"BKK\",\n    \"name\": \"Suvarnabhumi\",\n    \"city\": \"Bangkok\",\n    \"country\": \"TH\",\n    \"coordinates\": [\n      13.69,\n      100.7501\n    ]\n  },\n  {\n    \"iata\": \"ICN\",\n    \"name\": \"Incheon International\",\n    \"city\": \"Seoul\",\n    \"country\": \"KR\",\n    \"coordinates\": [\n      37.4602,\n      126.4407\n    ]\n  },\n  {\n    \"iata\": \"SFO\",\n    \"name\": \"San Francisco International\",\n    \"city\": \"San Francisco\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      37.6213,\n      -122.379\n    ]\n  },\n  {\n    \"iata\": \"SEA\",\n    \"name\": \"Seattle-Tacoma International\",\n    \"city\": \"Seattle\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      47.4502,\n      -122.3088\n    ]\n  },\n  {\n    \"iata\": \"MCO\",\n    \"name\": \"Orlando International\",\n    \"city\": \"Orlando\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      28.4312,\n      -81.3081\n    ]\n  },\n  {\n    \"iata\": \"MIA\",\n    \"name\": \"Miami International\",\n    \"city\": \"Miami\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      25.7959,\n      -80.287\n    ]\n  },\n  {\n    \"iata\": \"CLT\",\n    \"name\": \"Charlotte Douglas International\",\n    \"city\": \"Charlotte\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      35.214,\n      -80.9431\n    ]\n  },\n  {\n    \"iata\": \"EWR\",\n    \"name\": \"Newark Liberty International\",\n    \"city\": \"Newark\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      40.6895,\n      -74.1745\n    ]\n  },\n  {\n    \"iata\": \"PHX\",\n    \"name\": \"Phoenix Sky Harbor\",\n    \"city\": \"Phoenix\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      33.4373,\n      -112.0078\n    ]\n  },\n  {\n    \"iata\": \"IAH\",\n    \"name\": \"George Bush Intercontinental\",\n    \"city\": \"Houston\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      29.9902,\n      -95.3368\n    ]\n  },\n  {\n    \"iata\": \"LAS\",\n    \"name\": \"Harry Reid International\",\n    \"city\": \"Las Vegas\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      36.084,\n      -115.1537\n    ]\n  },\n  {\n    \"iata\": \"MSP\",\n    \"name\": \"Minneapolis-Saint Paul\",\n    \"city\": \"Minneapolis\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      44.8848,\n      -93.2223\n    ]\n  },\n  {\n    \"iata\": \"DTW\",\n    \"name\": \"Detroit Metropolitan\",\n    \"city\": \"Detroit\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      42.2124,\n      -83.3534\n    ]\n  },\n  {\n    \"iata\": \"BOS\",\n    \"name\": \"Boston Logan International\",\n    \"city\": \"Boston\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      42.3656,\n      -71.0096\n    ]\n  },\n  {\n    \"iata\": \"PHL\",\n    \"name\": \"Philadelphia International\",\n    \"city\": \"Philadelphia\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      39.8721,\n      -75.2411\n    ]\n  },\n  {\n    \"iata\": \"FLL\",\n    \"name\": \"Fort Lauderdale-Hollywood\",\n    \"city\": \"Fort Lauderdale\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      26.0726,\n      -80.1527\n    ]\n  },\n  {\n    \"iata\": \"BWI\",\n    \"name\": \"Baltimore/Washington International\",\n    \"city\": \"Baltimore\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      39.1754,\n      -76.6683\n    ]\n  },\n  {\n    \"iata\": \"SLC\",\n    \"name\": \"Salt Lake City International\",\n    \"city\": \"Salt Lake City\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      40.7884,\n      -111.9778\n    ]\n  },\n  {\n    \"iata\": \"IAD\",\n    \"name\": \"Washington Dulles International\",\n    \"city\": \"Washington\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      38.9531,\n      -77.4565\n    ]\n  },\n  {\n    \"iata\": \"DCA\",\n    \"name\": \"Ronald Reagan Washington National\",\n    \"city\": \"Washington\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      38.8512,\n      -77.0402\n    ]\n  },\n  {\n    \"iata\": \"SAN\",\n    \"name\": \"San Diego International\",\n    \"city\": \"San Diego\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      32.7336,\n      -117.1897\n    ]\n  },\n  {\n    \"iata\": \"TPA\",\n    \"name\": \"Tampa International\",\n    \"city\": \"Tampa\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      27.9755,\n      -82.5332\n    ]\n  },\n  {\n    \"iata\": \"PDX\",\n    \"name\": \"Portland International\",\n    \"city\": \"Portland\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      45.5898,\n      -122.5951\n    ]\n  },\n  {\n    \"iata\": \"HNL\",\n    \"name\": \"Daniel K. Inouye International\",\n    \"city\": \"Honolulu\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      21.3245,\n      -157.9251\n    ]\n  },\n  {\n    \"iata\": \"STL\",\n    \"name\": \"St. Louis Lambert International\",\n    \"city\": \"St. Louis\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      38.7487,\n      -90.37\n    ]\n  },\n  {\n    \"iata\": \"AUS\",\n    \"name\": \"Austin-Bergstrom International\",\n    \"city\": \"Austin\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      30.1975,\n      -97.6664\n    ]\n  },\n  {\n    \"iata\": \"BNA\",\n    \"name\": \"Nashville International\",\n    \"city\": \"Nashville\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      36.1263,\n      -86.6774\n    ]\n  },\n  {\n    \"iata\": \"RDU\",\n    \"name\": \"Raleigh-Durham International\",\n    \"city\": \"Raleigh\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      35.8801,\n      -78.788\n    ]\n  },\n  {\n    \"iata\": \"MDW\",\n    \"name\": \"Chicago Midway\",\n    \"city\": \"Chicago\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      41.7868,\n      -87.7522\n    ]\n  },\n  {\n    \"iata\": \"SJC\",\n    \"name\": \"San Jos\\u00e9 International\",\n    \"city\": \"San Jose\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      37.3626,\n      -121.9291\n    ]\n  },\n  {\n    \"iata\": \"DAL\",\n    \"name\": \"Dallas Love Field\",\n    \"city\": \"Dallas\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      32.8471,\n      -96.8518\n    ]\n  },\n  {\n    \"iata\": \"OAK\",\n    \"name\": \"Oakland International\",\n    \"city\": \"Oakland\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      37.7213,\n      -122.2208\n    ]\n  },\n  {\n    \"iata\": \"RSW\",\n    \"name\": \"Southwest Florida International\",\n    \"city\": \"Fort Myers\",\n    \"country\": \"US\",\n    \"coordinates\": [\n      26.5362,\n      -81.7552\n    ]\n  },\n  {\n    \"iata\": \"YYZ\",\n    \"name\": \"Toronto Pearson International\",\n    \"city\": \"Toronto\",\n    \"country\": \"CA\",\n    \"coordinates\": [\n      43.6777,\n      -79.6248\n    ]\n  },\n  {\n    \"iata\": \"YVR\",\n    \"name\": \"Vancouver International\",\n    \"city\": \"Vancouver\",\n    \"country\": \"CA\",\n    \"coordinates\": [\n      49.1967,\n      -123.1815\n    ]\n  },\n  {\n    \"iata\": \"YUL\",\n    \"name\": \"Montr\\u00e9al-Trudeau International\",\n    \"city\": \"Montr\\u00e9al\",\n    \"country\": \"CA\",\n    \"coordinates\": [\n      45.4706,\n      -73.7408\n    ]\n  },\n  {\n    \"iata\": \"YYC\",\n    \"name\": \"Calgary International\",\n    \"city\": \"Calgary\",\n    \"country\": \"CA\",\n    \"coordinates\": [\n      51.1215,\n      -114.0076\n    ]\n  },\n  {\n    \"iata\": \"YOW\",\n    \"name\": \"Ottawa Macdonald-Cartier\",\n    \"city\": \"Ottawa\",\n    \"country\": \"CA\",\n    \"coordinates\": [\n      45.3225,\n      -75.6692\n    ]\n  },\n  {\n    \"iata\": \"YEG\",\n    \"name\": \"Edmonton International\",\n    \"city\": \"Edmonton\",\n    \"country\": \"CA\",\n    \"coordinates\": [\n      53.3097,\n      -113.58\n    ]\n  },\n  {\n    \"iata\": \"YHZ\",\n    \"name\": \"Halifax Stanfield International\",\n    \"city\": \"Halifax\",\n    \"country\": \"CA\",\n    \"coordinates\": [\n      44.8808,\n      -63.5086\n    ]\n  },\n  {\n    \"iata\": \"YWG\",\n    \"name\": \"Winnipeg James Armstrong Richardson\",\n    \"city\": \"Winnipeg\",\n    \"country\": \"CA\",\n    \"coordinates\": [\n      49.91,\n      -97.2399\n    ]\n  },\n  {\n    \"iata\": \"MEX\",\n    \"name\": \"Benito Ju\\u00e1rez International\",\n    \"city\": \"Mexico City\",\n    \"country\": \"MX\",\n    \"coordinates\": [\n      19.4363,\n      -99.0721\n    ]\n  },\n  {\n    \"iata\": \"CUN\",\n    \"name\": \"Canc\\u00fan International\",\n    \"city\": \"Canc\\u00fan\",\n    \"country\": \"MX\",\n    \"coordinates\": [\n      21.0365,\n      -86.8771\n    ]\n  },\n  {\n    \"iata\": \"GDL\",\n    \"name\": \"Guadalajara International\",\n    \"city\": \"Guadalajara\",\n    \"country\": \"MX\",\n    \"coordinates\": [\n      20.5218,\n      -103.3113\n    ]\n  },\n  {\n    \"iata\": \"GRU\",\n    \"name\": \"S\\u00e3o Paulo-Guarulhos\",\n    \"city\": \"S\\u00e3o Paulo\",\n    \"country\": \"BR\",\n    \"coordinates\": [\n      -23.4356,\n      -46.4731\n    ]\n  },\n  {\n    \"iata\": \"GIG\",\n    \"name\": \"Rio de Janeiro-Gale\\u00e3o\",\n    \"city\": \"Rio de Janeiro\",\n    \"country\": \"BR\",\n    \"coordinates\": [\n      -22.81,\n      -43.2506\n    ]\n  },\n  {\n    \"iata\": \"BSB\",\n    \"name\": \"Bras\\u00edlia International\",\n    \"city\": \"Bras\\u00edlia\",\n    \"country\": \"BR\",\n    \"coordinates\": [\n      -15.8711,\n      -47.9186\n    ]\n  },\n  {\n    \"iata\": \"EZE\",\n    \"name\": \"Ministro Pistarini International\",\n    \"city\": \"Buenos Aires\",\n    \"country\": \"AR\",\n    \"coordinates\": [\n      -34.8222,\n      -58.5358\n    ]\n  },\n  {\n    \"iata\": \"SCL\",\n    \"name\": \"Arturo Merino Ben\\u00edtez International\",\n    \"city\": \"Santiago\",\n    \"country\": \"CL\",\n    \"coordinates\": [\n      -33.393,\n      -70.7858\n    ]\n  },\n  {\n    \"iata\": \"LIM\",\n    \"name\": \"Jorge Ch\\u00e1vez International\",\n    \"city\": \"Lima\",\n    \"country\": \"PE\",\n    \"coordinates\": [\n      -12.0219,\n      -77.1143\n    ]\n  },\n  {\n    \"iata\": \"BOG\",\n    \"name\": \"El Dorado International\",\n    \"city\": \"Bogot\\u00e1\",\n    \"country\": \"CO\",\n    \"coordinates\": [\n      4.7016,\n      -74.1469\n    ]\n  },\n  {\n    \"iata\": \"PTY\",\n    \"name\": \"Tocumen International\",\n    \"city\": \"Panama City\",\n    \"country\": \"PA\",\n    \"coordinates\": [\n      9.0714,\n      -79.3835\n    ]\n  },\n  {\n    \"iata\": \"SJO\",\n    \"name\": \"Juan Santamar\\u00eda International\",\n    \"city\": \"San Jos\\u00e9\",\n    \"country\": \"CR\",\n    \"coordinates\": [\n      9.9939,\n      -84.2088\n    ]\n  },\n  {\n    \"iata\": \"UIO\",\n    \"name\": \"Mariscal Sucre International\",\n    \"city\": \"Quito\",\n    \"country\": \"EC\",\n    \"coordinates\": [\n      -0.1292,\n      -78.3575\n    ]\n  },\n  {\n    \"iata\": \"CTG\",\n    \"name\": \"Rafael N\\u00fa\\u00f1ez International\",\n    \"city\": \"Cartagena\",\n    \"country\": \"CO\",\n    \"coordinates\": [\n      10.4424,\n      -75.513\n    ]\n  },\n  {\n    \"iata\": \"LGW\",\n    \"name\": \"Gatwick\",\n    \"city\": \"London\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      51.1537,\n      -0.1821\n    ]\n  },\n  {\n    \"iata\": \"STN\",\n    \"name\": \"Stansted\",\n    \"city\": \"London\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      51.886,\n      0.2389\n    ]\n  },\n  {\n    \"iata\": \"LTN\",\n    \"name\": \"Luton\",\n    \"city\": \"London\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      51.8747,\n      -0.3683\n    ]\n  },\n  {\n    \"iata\": \"MAN\",\n    \"name\": \"Manchester\",\n    \"city\": \"Manchester\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      53.3537,\n      -2.275\n    ]\n  },\n  {\n    \"iata\": \"EDI\",\n    \"name\": \"Edinburgh\",\n    \"city\": \"Edinburgh\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      55.95,\n      -3.3725\n    ]\n  },\n  {\n    \"iata\": \"BHX\",\n    \"name\": \"Birmingham\",\n    \"city\": \"Birmingham\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      52.4539,\n      -1.748\n    ]\n  },\n  {\n    \"iata\": \"GLA\",\n    \"name\": \"Glasgow\",\n    \"city\": \"Glasgow\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      55.8642,\n      -4.4331\n    ]\n  },\n  {\n    \"iata\": \"BRS\",\n    \"name\": \"Bristol\",\n    \"city\": \"Bristol\",\n    \"country\": \"GB\",\n    \"coordinates\": [\n      51.3827,\n      -2.7191\n    ]\n  },\n  {\n    \"iata\": \"ORY\",\n    \"name\": \"Paris Orly\",\n    \"city\": \"Paris\",\n    \"country\": \"FR\",\n    \"coordinates\": [\n      48.7262,\n      2.3652\n    ]\n  },\n  {\n    \"iata\": \"NCE\",\n    \"name\": \"Nice C\\u00f4te d'Azur\",\n    \"city\": \"Nice\",\n    \"country\": \"FR\",\n    \"coordinates\": [\n      43.6584,\n      7.2159\n    ]\n  },\n  {\n    \"iata\": \"LYS\",\n    \"name\": \"Lyon-Saint Exup\\u00e9ry\",\n    \"city\": \"Lyon\",\n    \"country\": \"FR\",\n    \"coordinates\": [\n      45.7256,\n      5.0811\n    ]\n  },\n  {\n    \"iata\": \"MRS\",\n    \"name\": \"Marseille Provence\",\n    \"city\": \"Marseille\",\n    \"country\": \"FR\",\n    \"coordinates\": [\n      43.4393,\n      5.2214\n    ]\n  },\n  {\n    \"iata\": \"TLS\",\n    \"name\": \"Toulouse-Blagnac\",\n    \"city\": \"Toulouse\",\n    \"country\": \"FR\",\n    \"coordinates\": [\n      43.6291,\n      1.3638\n    ]\n  },\n  {\n    \"iata\": \"MUC\",\n    \"name\": \"Munich\",\n    \"city\": \"Munich\",\n    \"country\": \"DE\",\n    \"coordinates\": [\n      48.3538,\n      11.7861\n    ]\n  },\n  {\n    \"iata\": \"TXL\",\n    \"name\": \"Berlin Brandenburg\",\n    \"city\": \"Berlin\",\n    \"country\": \"DE\",\n    \"coordinates\": [\n      52.3667,\n      13.5033\n    ]\n  },\n  {\n    \"iata\": \"HAM\",\n    \"name\": \"Hamburg\",\n    \"city\": \"Hamburg\",\n    \"country\": \"DE\",\n    \"coordinates\": [\n      53.6304,\n      9.9882\n    ]\n  },\n  {\n    \"iata\": \"DUS\",\n    \"name\": \"D\\u00fcsseldorf\",\n    \"city\": \"D\\u00fcsseldorf\",\n    \"country\": \"DE\",\n    \"coordinates\": [\n      51.2895,\n      6.7668\n    ]\n  },\n  {\n    \"iata\": \"CGN\",\n    \"name\": \"Cologne Bonn\",\n    \"city\": \"Cologne\",\n    \"country\": \"DE\",\n    \"coordinates\": [\n      50.8659,\n      7.1427\n    ]\n  },\n  {\n    \"iata\": \"MAD\",\n    \"name\": \"Adolfo Su\\u00e1rez Madrid-Barajas\",\n    \"city\": \"Madrid\",\n    \"country\": \"ES\",\n    \"coordinates\": [\n      40.4983,\n      -3.5676\n    ]\n  },\n  {\n    \"iata\": \"BCN\",\n    \"name\": \"Barcelona-El Prat\",\n    \"city\": \"Barcelona\",\n    \"country\": \"ES\",\n    \"coordinates\": [\n      41.2971,\n      2.0785\n    ]\n  },\n  {\n    \"iata\": \"PMI\",\n    \"name\": \"Palma de Mallorca\",\n    \"city\": \"Palma\",\n    \"country\": \"ES\",\n    \"coordinates\": [\n      39.5517,\n      2.7388\n    ]\n  },\n  {\n    \"iata\": \"AGP\",\n    \"name\": \"M\\u00e1laga-Costa del Sol\",\n    \"city\": \"M\\u00e1laga\",\n    \"country\": \"ES\",\n    \"coordinates\": [\n      36.6749,\n      -4.4991\n    ]\n  },\n  {\n    \"iata\": \"ALC\",\n    \"name\": \"Alicante-Elche\",\n    \"city\": \"Alicante\",\n    \"country\": \"ES\",\n    \"coordinates\": [\n      38.2822,\n      -0.5582\n    ]\n  },\n  {\n    \"iata\": \"SVQ\",\n    \"name\": \"Seville\",\n    \"city\": \"Seville\",\n    \"country\": \"ES\",\n    \"coordinates\": [\n      37.418,\n      -5.8931\n    ]\n  },\n  {\n    \"iata\": \"FCO\",\n    \"name\": \"Leonardo da Vinci-Fiumicino\",\n    \"city\": \"Rome\",\n    \"country\": \"IT\",\n    \"coordinates\": [\n      41.8003,\n      12.2389\n    ]\n  },\n  {\n    \"iata\": \"MXP\",\n    \"name\": \"Milan Malpensa\",\n    \"city\": \"Milan\",\n    \"country\": \"IT\",\n    \"coordinates\": [\n      45.6306,\n      8.7281\n    ]\n  },\n  {\n    \"iata\": \"VCE\",\n    \"name\": \"Venice Marco Polo\",\n    \"city\": \"Venice\",\n    \"country\": \"IT\",\n    \"coordinates\": [\n      45.5053,\n      12.3519\n    ]\n  },\n  {\n    \"iata\": \"NAP\",\n    \"name\": \"Naples International\",\n    \"city\": \"Naples\",\n    \"country\": \"IT\",\n    \"coordinates\": [\n      40.886,\n      14.2908\n    ]\n  },\n  {\n    \"iata\": \"FLR\",\n    \"name\": \"Florence Peretola\",\n    \"city\": \"Florence\",\n    \"country\": \"IT\",\n    \"coordinates\": [\n      43.81,\n      11.2051\n    ]\n  },\n  {\n    \"iata\": \"BGY\",\n    \"name\": \"Milan Bergamo\",\n    \"city\": \"Milan\",\n    \"country\": \"IT\",\n    \"coordinates\": [\n      45.6739,\n      9.7042\n    ]\n  },\n  {\n    \"iata\": \"LIS\",\n    \"name\": \"Humberto Delgado\",\n    \"city\": \"Lisbon\",\n    \"country\": \"PT\",\n    \"coordinates\": [\n      38.7813,\n      -9.1359\n    ]\n  },\n  {\n    \"iata\": \"OPO\",\n    \"name\": \"Francisco S\\u00e1 Carneiro\",\n    \"city\": \"Porto\",\n    \"country\": \"PT\",\n    \"coordinates\": [\n      41.2481,\n      -8.6814\n    ]\n  },\n  {\n    \"iata\": \"FAO\",\n    \"name\": \"Faro\",\n    \"city\": \"Faro\",\n    \"country\": \"PT\",\n    \"coordinates\": [\n      37.0144,\n      -7.9659\n    ]\n  },\n  {\n    \"iata\": \"ZRH\",\n    \"name\": \"Zurich\",\n    \"city\": \"Zurich\",\n    \"country\": \"CH\",\n    \"coordinates\": [\n      47.4647,\n      8.5492\n    ]\n  },\n  {\n    \"iata\": \"GVA\",\n    \"name\": \"Geneva\",\n    \"city\": \"Geneva\",\n    \"country\": \"CH\",\n    \"coordinates\": [\n      46.2381,\n      6.1089\n    ]\n  },\n  {\n    \"iata\": \"VIE\",\n    \"name\": \"Vienna International\",\n    \"city\": \"Vienna\",\n    \"country\": \"AT\",\n    \"coordinates\": [\n      48.1103,\n      16.5697\n    ]\n  },\n  {\n    \"iata\": \"BRU\",\n    \"name\": \"Brussels\",\n    \"city\": \"Brussels\",\n    \"country\": \"BE\",\n    \"coordinates\": [\n      50.9014,\n      4.4844\n    ]\n  },\n  {\n    \"iata\": \"DUB\",\n    \"name\": \"Dublin\",\n    \"city\": \"Dublin\",\n    \"country\": \"IE\",\n    \"coordinates\": [\n      53.4264,\n      -6.2499\n    ]\n  },\n  {\n    \"iata\": \"CPH\",\n    \"name\": \"Copenhagen Kastrup\",\n    \"city\": \"Copenhagen\",\n    \"country\": \"DK\",\n    \"coordinates\": [\n      55.618,\n      12.6508\n    ]\n  },\n  {\n    \"iata\": \"ARN\",\n    \"name\": \"Stockholm Arlanda\",\n    \"city\": \"Stockholm\",\n    \"country\": \"SE\",\n    \"coordinates\": [\n      59.6519,\n      17.9186\n    ]\n  },\n  {\n    \"iata\": \"OSL\",\n    \"name\": \"Oslo Gardermoen\",\n    \"city\": \"Oslo\",\n    \"country\": \"NO\",\n    \"coordinates\": [\n      60.1976,\n      11.1004\n    ]\n  },\n  {\n    \"iata\": \"HEL\",\n    \"name\": \"Helsinki-Vantaa\",\n    \"city\": \"Helsinki\",\n    \"country\": \"FI\",\n    \"coordinates\": [\n      60.3172,\n      24.9633\n    ]\n  },\n  {\n    \"iata\": \"KEF\",\n    \"name\": \"Keflav\\u00edk International\",\n    \"city\": \"Reykjavik\",\n    \"country\": \"IS\",\n    \"coordinates\": [\n      63.985,\n      -22.6056\n    ]\n  },\n  {\n    \"iata\": \"WAW\",\n    \"name\": \"Warsaw Chopin\",\n    \"city\": \"Warsaw\",\n    \"country\": \"PL\",\n    \"coordinates\": [\n      52.1657,\n      20.9671\n    ]\n  },\n  {\n    \"iata\": \"PRG\",\n    \"name\": \"V\\u00e1clav Havel Prague\",\n    \"city\": \"Prague\",\n    \"country\": \"CZ\",\n    \"coordinates\": [\n      50.1008,\n      14.26\n    ]\n  },\n  {\n    \"iata\": \"BUD\",\n    \"name\": \"Budapest Ferenc Liszt\",\n    \"city\": \"Budapest\",\n    \"country\": \"HU\",\n    \"coordinates\": [\n      47.4369,\n      19.2556\n    ]\n  },\n  {\n    \"iata\": \"OTP\",\n    \"name\": \"Henri Coand\\u0103 International\",\n    \"city\": \"Bucharest\",\n    \"country\": \"RO\",\n    \"coordinates\": [\n      44.5711,\n      26.085\n    ]\n  },\n  {\n    \"iata\": \"SOF\",\n    \"name\": \"Sofia\",\n    \"city\": \"Sofia\",\n    \"country\": \"BG\",\n    \"coordinates\": [\n      42.6952,\n      23.4114\n    ]\n  },\n  {\n    \"iata\": \"ZAG\",\n    \"name\": \"Franjo Tu\\u0111man\",\n    \"city\": \"Zagreb\",\n    \"country\": \"HR\",\n    \"coordinates\": [\n      45.743,\n      16.0688\n    ]\n  },\n  {\n    \"iata\": \"DBV\",\n    \"name\": \"Dubrovnik\",\n    \"city\": \"Dubrovnik\",\n    \"country\": \"HR\",\n    \"coordinates\": [\n      42.5614,\n      18.2682\n    ]\n  },\n  {\n    \"iata\": \"SPU\",\n    \"name\": \"Split\",\n    \"city\": \"Split\",\n    \"country\": \"HR\",\n    \"coordinates\": [\n      43.5389,\n      16.298\n    ]\n  },\n  {\n    \"iata\": \"ATH\",\n    \"name\": \"Athens International\",\n    \"city\": \"Athens\",\n    \"country\": \"GR\",\n    \"coordinates\": [\n      37.9364,\n      23.9445\n    ]\n  },\n  {\n    \"iata\": \"JTR\",\n    \"name\": \"Santorini (Thira)\",\n    \"city\": \"Santorini\",\n    \"country\": \"GR\",\n    \"coordinates\": [\n      36.3992,\n      25.4793\n    ]\n  },\n  {\n    \"iata\": \"JMK\",\n    \"name\": \"Mykonos\",\n    \"city\": \"Mykonos\",\n    \"country\": \"GR\",\n    \"coordinates\": [\n      37.4351,\n      25.3481\n    ]\n  },\n  {\n    \"iata\": \"HER\",\n    \"name\": \"Heraklion\",\n    \"city\": \"Heraklion\",\n    \"country\": \"GR\",\n    \"coordinates\": [\n      35.3397,\n      25.1803\n    ]\n  },\n  {\n    \"iata\": \"TLL\",\n    \"name\": \"Tallinn\",\n    \"city\": \"Tallinn\",\n    \"country\": \"EE\",\n    \"coordinates\": [\n      59.4133,\n      24.8328\n    ]\n  },\n  {\n    \"iata\": \"RIX\",\n    \"name\": \"Riga International\",\n    \"city\": \"Riga\",\n    \"country\": \"LV\",\n    \"coordinates\": [\n      56.9236,\n      23.9711\n    ]\n  },\n  {\n    \"iata\": \"VNO\",\n    \"name\": \"Vilnius\",\n    \"city\": \"Vilnius\",\n    \"country\": \"LT\",\n    \"coordinates\": [\n      54.6341,\n      25.2858\n    ]\n  },\n  {\n    \"iata\": \"LJU\",\n    \"name\": \"Ljubljana Jo\\u017ee Pu\\u010dnik\",\n    \"city\": \"Ljubljana\",\n    \"country\": \"SI\",\n    \"coordinates\": [\n      46.2237,\n      14.4576\n    ]\n  },\n  {\n    \"iata\": \"TGD\",\n    \"name\": \"Podgorica\",\n    \"city\": \"Podgorica\",\n    \"country\": \"ME\",\n    \"coordinates\": [\n      42.3594,\n      19.2519\n    ]\n  },\n  {\n    \"iata\": \"TIV\",\n    \"name\": \"Tivat\",\n    \"city\": \"Tivat\",\n    \"country\": \"ME\",\n    \"coordinates\": [\n      42.4047,\n      18.7233\n    ]\n  },\n  {\n    \"iata\": \"SJJ\",\n    \"name\": \"Sarajevo International\",\n    \"city\": \"Sarajevo\",\n    \"country\": \"BA\",\n    \"coordinates\": [\n      43.8246,\n      18.3315\n    ]\n  },\n  {\n    \"iata\": \"TIA\",\n    \"name\": \"Tirana International\",\n    \"city\": \"Tirana\",\n    \"country\": \"AL\",\n    \"coordinates\": [\n      41.4147,\n      19.7206\n    ]\n  },\n  {\n    \"iata\": \"SKG\",\n    \"name\": \"Thessaloniki\",\n    \"city\": \"Thessaloniki\",\n    \"country\": \"GR\",\n    \"coordinates\": [\n      40.5197,\n      22.9709\n    ]\n  },\n  {\n    \"iata\": \"NRT\",\n    \"name\": \"Narita International\",\n    \"city\": \"Tokyo\",\n    \"country\": \"JP\",\n    \"coordinates\": [\n      35.772,\n      140.3929\n    ]\n  },\n  {\n    \"iata\": \"KIX\",\n    \"name\": \"Kansai International\",\n    \"city\": \"Osaka\",\n    \"country\": \"JP\",\n    \"coordinates\": [\n      34.4347,\n      135.2441\n    ]\n  },\n  {\n    \"iata\": \"CTS\",\n    \"name\": \"New Chitose\",\n    \"city\": \"Sapporo\",\n    \"country\": \"JP\",\n    \"coordinates\": [\n      42.7752,\n      141.6924\n    ]\n  },\n  {\n    \"iata\": \"FUK\",\n    \"name\": \"Fukuoka\",\n    \"city\": \"Fukuoka\",\n    \"country\": \"JP\",\n    \"coordinates\": [\n      33.5859,\n      130.4511\n    ]\n  },\n  {\n    \"iata\": \"NGO\",\n    \"name\": \"Chubu Centrair International\",\n    \"city\": \"Nagoya\",\n    \"country\": \"JP\",\n    \"coordinates\": [\n      34.8584,\n      136.8125\n    ]\n  },\n  {\n    \"iata\": \"OKA\",\n    \"name\": \"Naha\",\n    \"city\": \"Okinawa\",\n    \"country\": \"JP\",\n    \"coordinates\": [\n      26.1958,\n      127.6459\n    ]\n  },\n  {\n    \"iata\": \"PVG\",\n    \"name\": \"Shanghai Pudong\",\n    \"city\": \"Shanghai\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      31.1443,\n      121.8083\n    ]\n  },\n  {\n    \"iata\": \"SHA\",\n    \"name\": \"Shanghai Hongqiao\",\n    \"city\": \"Shanghai\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      31.1979,\n      121.3363\n    ]\n  },\n  {\n    \"iata\": \"HKG\",\n    \"name\": \"Hong Kong International\",\n    \"city\": \"Hong Kong\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      22.308,\n      113.9185\n    ]\n  },\n  {\n    \"iata\": \"TPE\",\n    \"name\": \"Taiwan Taoyuan International\",\n    \"city\": \"Taipei\",\n    \"country\": \"TW\",\n    \"coordinates\": [\n      25.0797,\n      121.2342\n    ]\n  },\n  {\n    \"iata\": \"GMP\",\n    \"name\": \"Gimpo International\",\n    \"city\": \"Seoul\",\n    \"country\": \"KR\",\n    \"coordinates\": [\n      37.5583,\n      126.7906\n    ]\n  },\n  {\n    \"iata\": \"PUS\",\n    \"name\": \"Gimhae International\",\n    \"city\": \"Busan\",\n    \"country\": \"KR\",\n    \"coordinates\": [\n      35.1796,\n      128.9382\n    ]\n  },\n  {\n    \"iata\": \"CJU\",\n    \"name\": \"Jeju International\",\n    \"city\": \"Jeju\",\n    \"country\": \"KR\",\n    \"coordinates\": [\n      33.5113,\n      126.4929\n    ]\n  },\n  {\n    \"iata\": \"KUL\",\n    \"name\": \"Kuala Lumpur International\",\n    \"city\": \"Kuala Lumpur\",\n    \"country\": \"MY\",\n    \"coordinates\": [\n      2.7456,\n      101.7099\n    ]\n  },\n  {\n    \"iata\": \"PEN\",\n    \"name\": \"Penang International\",\n    \"city\": \"Penang\",\n    \"country\": \"MY\",\n    \"coordinates\": [\n      5.2972,\n      100.2769\n    ]\n  },\n  {\n    \"iata\": \"BKI\",\n    \"name\": \"Kota Kinabalu International\",\n    \"city\": \"Kota Kinabalu\",\n    \"country\": \"MY\",\n    \"coordinates\": [\n      5.9372,\n      116.0515\n    ]\n  },\n  {\n    \"iata\": \"CGK\",\n    \"name\": \"Soekarno-Hatta International\",\n    \"city\": \"Jakarta\",\n    \"country\": \"ID\",\n    \"coordinates\": [\n      -6.1256,\n      106.6558\n    ]\n  },\n  {\n    \"iata\": \"DPS\",\n    \"name\": \"Ngurah Rai International\",\n    \"city\": \"Bali\",\n    \"country\": \"ID\",\n    \"coordinates\": [\n      -8.7482,\n      115.1672\n    ]\n  },\n  {\n    \"iata\": \"SUB\",\n    \"name\": \"Juanda International\",\n    \"city\": \"Surabaya\",\n    \"country\": \"ID\",\n    \"coordinates\": [\n      -7.3798,\n      112.7868\n    ]\n  },\n  {\n    \"iata\": \"MNL\",\n    \"name\": \"Ninoy Aquino International\",\n    \"city\": \"Manila\",\n    \"country\": \"PH\",\n    \"coordinates\": [\n      14.5086,\n      121.0198\n    ]\n  },\n  {\n    \"iata\": \"CEB\",\n    \"name\": \"Mactan-Cebu International\",\n    \"city\": \"Cebu\",\n    \"country\": \"PH\",\n    \"coordinates\": [\n      10.3076,\n      123.9794\n    ]\n  },\n  {\n    \"iata\": \"SGN\",\n    \"name\": \"Tan Son Nhat International\",\n    \"city\": \"Ho Chi Minh City\",\n    \"country\": \"VN\",\n    \"coordinates\": [\n      10.8188,\n      106.652\n    ]\n  },\n  {\n    \"iata\": \"HAN\",\n    \"name\": \"Noi Bai International\",\n    \"city\": \"Hanoi\",\n    \"country\": \"VN\",\n    \"coordinates\": [\n      21.2212,\n      105.8071\n    ]\n  },\n  {\n    \"iata\": \"DAD\",\n    \"name\": \"Da Nang International\",\n    \"city\": \"Da Nang\",\n    \"country\": \"VN\",\n    \"coordinates\": [\n      16.0439,\n      108.1992\n    ]\n  },\n  {\n    \"iata\": \"DMK\",\n    \"name\": \"Don Mueang International\",\n    \"city\": \"Bangkok\",\n    \"country\": \"TH\",\n    \"coordinates\": [\n      13.9126,\n      100.607\n    ]\n  },\n  {\n    \"iata\": \"CNX\",\n    \"name\": \"Chiang Mai International\",\n    \"city\": \"Chiang Mai\",\n    \"country\": \"TH\",\n    \"coordinates\": [\n      18.7669,\n      98.9625\n    ]\n  },\n  {\n    \"iata\": \"HKT\",\n    \"name\": \"Phuket International\",\n    \"city\": \"Phuket\",\n    \"country\": \"TH\",\n    \"coordinates\": [\n      8.1132,\n      98.3169\n    ]\n  },\n  {\n    \"iata\": \"USM\",\n    \"name\": \"Samui International\",\n    \"city\": \"Ko Samui\",\n    \"country\": \"TH\",\n    \"coordinates\": [\n      9.5478,\n      100.0622\n    ]\n  },\n  {\n    \"iata\": \"RGN\",\n    \"name\": \"Yangon International\",\n    \"city\": \"Yangon\",\n    \"country\": \"MM\",\n    \"coordinates\": [\n      16.9073,\n      96.1332\n    ]\n  },\n  {\n    \"iata\": \"PNH\",\n    \"name\": \"Phnom Penh International\",\n    \"city\": \"Phnom Penh\",\n    \"country\": \"KH\",\n    \"coordinates\": [\n      11.5466,\n      104.8441\n    ]\n  },\n  {\n    \"iata\": \"REP\",\n    \"name\": \"Siem Reap International\",\n    \"city\": \"Siem Reap\",\n    \"country\": \"KH\",\n    \"coordinates\": [\n      13.4107,\n      103.8131\n    ]\n  },\n  {\n    \"iata\": \"VTE\",\n    \"name\": \"Wattay International\",\n    \"city\": \"Vientiane\",\n    \"country\": \"LA\",\n    \"coordinates\": [\n      17.9883,\n      102.5633\n    ]\n  },\n  {\n    \"iata\": \"CMB\",\n    \"name\": \"Bandaranaike International\",\n    \"city\": \"Colombo\",\n    \"country\": \"LK\",\n    \"coordinates\": [\n      7.1808,\n      79.8841\n    ]\n  },\n  {\n    \"iata\": \"MLE\",\n    \"name\": \"Velana International\",\n    \"city\": \"Mal\\u00e9\",\n    \"country\": \"MV\",\n    \"coordinates\": [\n      4.1918,\n      73.5291\n    ]\n  },\n  {\n    \"iata\": \"BOM\",\n    \"name\": \"Chhatrapati Shivaji Maharaj International\",\n    \"city\": \"Mumbai\",\n    \"country\": \"IN\",\n    \"coordinates\": [\n      19.0896,\n      72.8656\n    ]\n  },\n  {\n    \"iata\": \"BLR\",\n    \"name\": \"Kempegowda International\",\n    \"city\": \"Bangalore\",\n    \"country\": \"IN\",\n    \"coordinates\": [\n      13.1986,\n      77.7066\n    ]\n  },\n  {\n    \"iata\": \"MAA\",\n    \"name\": \"Chennai International\",\n    \"city\": \"Chennai\",\n    \"country\": \"IN\",\n    \"coordinates\": [\n      12.9941,\n      80.1709\n    ]\n  },\n  {\n    \"iata\": \"HYD\",\n    \"name\": \"Rajiv Gandhi International\",\n    \"city\": \"Hyderabad\",\n    \"country\": \"IN\",\n    \"coordinates\": [\n      17.2403,\n      78.4294\n    ]\n  },\n  {\n    \"iata\": \"CCU\",\n    \"name\": \"Netaji Subhas Chandra Bose International\",\n    \"city\": \"Kolkata\",\n    \"country\": \"IN\",\n    \"coordinates\": [\n      22.6547,\n      88.4467\n    ]\n  },\n  {\n    \"iata\": \"COK\",\n    \"name\": \"Cochin International\",\n    \"city\": \"Kochi\",\n    \"country\": \"IN\",\n    \"coordinates\": [\n      10.152,\n      76.4019\n    ]\n  },\n  {\n    \"iata\": \"GOI\",\n    \"name\": \"Goa International\",\n    \"city\": \"Goa\",\n    \"country\": \"IN\",\n    \"coordinates\": [\n      15.3808,\n      73.8314\n    ]\n  },\n  {\n    \"iata\": \"KTM\",\n    \"name\": \"Tribhuvan International\",\n    \"city\": \"Kathmandu\",\n    \"country\": \"NP\",\n    \"coordinates\": [\n      27.6966,\n      85.3591\n    ]\n  },\n  {\n    \"iata\": \"ISB\",\n    \"name\": \"Islamabad International\",\n    \"city\": \"Islamabad\",\n    \"country\": \"PK\",\n    \"coordinates\": [\n      33.5605,\n      72.8526\n    ]\n  },\n  {\n    \"iata\": \"KHI\",\n    \"name\": \"Jinnah International\",\n    \"city\": \"Karachi\",\n    \"country\": \"PK\",\n    \"coordinates\": [\n      24.9065,\n      67.161\n    ]\n  },\n  {\n    \"iata\": \"DAC\",\n    \"name\": \"Hazrat Shahjalal International\",\n    \"city\": \"Dhaka\",\n    \"country\": \"BD\",\n    \"coordinates\": [\n      23.8432,\n      90.3977\n    ]\n  },\n  {\n    \"iata\": \"DOH\",\n    \"name\": \"Hamad International\",\n    \"city\": \"Doha\",\n    \"country\": \"QA\",\n    \"coordinates\": [\n      25.2731,\n      51.6081\n    ]\n  },\n  {\n    \"iata\": \"AUH\",\n    \"name\": \"Abu Dhabi International\",\n    \"city\": \"Abu Dhabi\",\n    \"country\": \"AE\",\n    \"coordinates\": [\n      24.433,\n      54.6511\n    ]\n  },\n  {\n    \"iata\": \"BAH\",\n    \"name\": \"Bahrain International\",\n    \"city\": \"Manama\",\n    \"country\": \"BH\",\n    \"coordinates\": [\n      26.2192,\n      50.6336\n    ]\n  },\n  {\n    \"iata\": \"MCT\",\n    \"name\": \"Muscat International\",\n    \"city\": \"Muscat\",\n    \"country\": \"OM\",\n    \"coordinates\": [\n      23.5933,\n      58.2844\n    ]\n  },\n  {\n    \"iata\": \"KWI\",\n    \"name\": \"Kuwait International\",\n    \"city\": \"Kuwait City\",\n    \"country\": \"KW\",\n    \"coordinates\": [\n      29.2266,\n      47.9689\n    ]\n  },\n  {\n    \"iata\": \"AMM\",\n    \"name\": \"Queen Alia International\",\n    \"city\": \"Amman\",\n    \"country\": \"JO\",\n    \"coordinates\": [\n      31.7226,\n      35.9932\n    ]\n  },\n  {\n    \"iata\": \"TLV\",\n    \"name\": \"Ben Gurion International\",\n    \"city\": \"Tel Aviv\",\n    \"country\": \"IL\",\n    \"coordinates\": [\n      32.0114,\n      34.8867\n    ]\n  },\n  {\n    \"iata\": \"JED\",\n    \"name\": \"King Abdulaziz International\",\n    \"city\": \"Jeddah\",\n    \"country\": \"SA\",\n    \"coordinates\": [\n      21.6796,\n      39.1565\n    ]\n  },\n  {\n    \"iata\": \"RUH\",\n    \"name\": \"King Khalid International\",\n    \"city\": \"Riyadh\",\n    \"country\": \"SA\",\n    \"coordinates\": [\n      24.9578,\n      46.6989\n    ]\n  },\n  {\n    \"iata\": \"CAI\",\n    \"name\": \"Cairo International\",\n    \"city\": \"Cairo\",\n    \"country\": \"EG\",\n    \"coordinates\": [\n      30.1219,\n      31.4056\n    ]\n  },\n  {\n    \"iata\": \"HRG\",\n    \"name\": \"Hurghada International\",\n    \"city\": \"Hurghada\",\n    \"country\": \"EG\",\n    \"coordinates\": [\n      27.1783,\n      33.7994\n    ]\n  },\n  {\n    \"iata\": \"SSH\",\n    \"name\": \"Sharm el-Sheikh International\",\n    \"city\": \"Sharm el-Sheikh\",\n    \"country\": \"EG\",\n    \"coordinates\": [\n      27.9773,\n      34.395\n    ]\n  },\n  {\n    \"iata\": \"LXR\",\n    \"name\": \"Luxor International\",\n    \"city\": \"Luxor\",\n    \"country\": \"EG\",\n    \"coordinates\": [\n      25.671,\n      32.7066\n    ]\n  },\n  {\n    \"iata\": \"CMN\",\n    \"name\": \"Mohammed V International\",\n    \"city\": \"Casablanca\",\n    \"country\": \"MA\",\n    \"coordinates\": [\n      33.3675,\n      -7.5898\n    ]\n  },\n  {\n    \"iata\": \"RAK\",\n    \"name\": \"Marrakech Menara\",\n    \"city\": \"Marrakech\",\n    \"country\": \"MA\",\n    \"coordinates\": [\n      31.6069,\n      -8.0363\n    ]\n  },\n  {\n    \"iata\": \"TUN\",\n    \"name\": \"Tunis-Carthage International\",\n    \"city\": \"Tunis\",\n    \"country\": \"TN\",\n    \"coordinates\": [\n      36.851,\n      10.2272\n    ]\n  },\n  {\n    \"iata\": \"ALG\",\n    \"name\": \"Houari Boumediene\",\n    \"city\": \"Algiers\",\n    \"country\": \"DZ\",\n    \"coordinates\": [\n      36.691,\n      3.2154\n    ]\n  },\n  {\n    \"iata\": \"ADD\",\n    \"name\": \"Addis Ababa Bole International\",\n    \"city\": \"Addis Ababa\",\n    \"country\": \"ET\",\n    \"coordinates\": [\n      8.9779,\n      38.7993\n    ]\n  },\n  {\n    \"iata\": \"NBO\",\n    \"name\": \"Jomo Kenyatta International\",\n    \"city\": \"Nairobi\",\n    \"country\": \"KE\",\n    \"coordinates\": [\n      -1.3192,\n      36.9278\n    ]\n  },\n  {\n    \"iata\": \"JNB\",\n    \"name\": \"O.R. Tambo International\",\n    \"city\": \"Johannesburg\",\n    \"country\": \"ZA\",\n    \"coordinates\": [\n      -26.1392,\n      28.246\n    ]\n  },\n  {\n    \"iata\": \"CPT\",\n    \"name\": \"Cape Town International\",\n    \"city\": \"Cape Town\",\n    \"country\": \"ZA\",\n    \"coordinates\": [\n      -33.9649,\n      18.6017\n    ]\n  },\n  {\n    \"iata\": \"DUR\",\n    \"name\": \"King Shaka International\",\n    \"city\": \"Durban\",\n    \"country\": \"ZA\",\n    \"coordinates\": [\n      -29.6144,\n      31.1197\n    ]\n  },\n  {\n    \"iata\": \"DAR\",\n    \"name\": \"Julius Nyerere International\",\n    \"city\": \"Dar es Salaam\",\n    \"country\": \"TZ\",\n    \"coordinates\": [\n      -6.8781,\n      39.2026\n    ]\n  },\n  {\n    \"iata\": \"ZNZ\",\n    \"name\": \"Abeid Amani Karume International\",\n    \"city\": \"Zanzibar\",\n    \"country\": \"TZ\",\n    \"coordinates\": [\n      -6.222,\n      39.2249\n    ]\n  },\n  {\n    \"iata\": \"JRO\",\n    \"name\": \"Kilimanjaro International\",\n    \"city\": \"Kilimanjaro\",\n    \"country\": \"TZ\",\n    \"coordinates\": [\n      -3.4294,\n      37.0745\n    ]\n  },\n  {\n    \"iata\": \"LOS\",\n    \"name\": \"Murtala Muhammed International\",\n    \"city\": \"Lagos\",\n    \"country\": \"NG\",\n    \"coordinates\": [\n      6.5774,\n      3.3211\n    ]\n  },\n  {\n    \"iata\": \"ACC\",\n    \"name\": \"Kotoka International\",\n    \"city\": \"Accra\",\n    \"country\": \"GH\",\n    \"coordinates\": [\n      5.6052,\n      -0.1668\n    ]\n  },\n  {\n    \"iata\": \"DSS\",\n    \"name\": \"Blaise Diagne International\",\n    \"city\": \"Dakar\",\n    \"country\": \"SN\",\n    \"coordinates\": [\n      14.67,\n      -17.07\n    ]\n  },\n  {\n    \"iata\": \"MRU\",\n    \"name\": \"Sir Seewoosagur Ramgoolam International\",\n    \"city\": \"Mauritius\",\n    \"country\": \"MU\",\n    \"coordinates\": [\n      -20.4302,\n      57.6836\n    ]\n  },\n  {\n    \"iata\": \"SEZ\",\n    \"name\": \"Seychelles International\",\n    \"city\": \"Mah\\u00e9\",\n    \"country\": \"SC\",\n    \"coordinates\": [\n      -4.6743,\n      55.5218\n    ]\n  },\n  {\n    \"iata\": \"WDH\",\n    \"name\": \"Hosea Kutako International\",\n    \"city\": \"Windhoek\",\n    \"country\": \"NA\",\n    \"coordinates\": [\n      -22.4799,\n      17.4709\n    ]\n  },\n  {\n    \"iata\": \"VFA\",\n    \"name\": \"Victoria Falls International\",\n    \"city\": \"Victoria Falls\",\n    \"country\": \"ZW\",\n    \"coordinates\": [\n      -18.0959,\n      25.839\n    ]\n  },\n  {\n    \"iata\": \"LLW\",\n    \"name\": \"Kamuzu International\",\n    \"city\": \"Lilongwe\",\n    \"country\": \"MW\",\n    \"coordinates\": [\n      -13.7894,\n      33.781\n    ]\n  },\n  {\n    \"iata\": \"EBB\",\n    \"name\": \"Entebbe International\",\n    \"city\": \"Entebbe\",\n    \"country\": \"UG\",\n    \"coordinates\": [\n      0.0424,\n      32.4435\n    ]\n  },\n  {\n    \"iata\": \"KGL\",\n    \"name\": \"Kigali International\",\n    \"city\": \"Kigali\",\n    \"country\": \"RW\",\n    \"coordinates\": [\n      -1.9686,\n      30.1395\n    ]\n  },\n  {\n    \"iata\": \"SYD\",\n    \"name\": \"Sydney Kingsford Smith\",\n    \"city\": \"Sydney\",\n    \"country\": \"AU\",\n    \"coordinates\": [\n      -33.9461,\n      151.1772\n    ]\n  },\n  {\n    \"iata\": \"MEL\",\n    \"name\": \"Melbourne Tullamarine\",\n    \"city\": \"Melbourne\",\n    \"country\": \"AU\",\n    \"coordinates\": [\n      -37.6733,\n      144.8433\n    ]\n  },\n  {\n    \"iata\": \"BNE\",\n    \"name\": \"Brisbane\",\n    \"city\": \"Brisbane\",\n    \"country\": \"AU\",\n    \"coordinates\": [\n      -27.3842,\n      153.1175\n    ]\n  },\n  {\n    \"iata\": \"PER\",\n    \"name\": \"Perth\",\n    \"city\": \"Perth\",\n    \"country\": \"AU\",\n    \"coordinates\": [\n      -31.9403,\n      115.9672\n    ]\n  },\n  {\n    \"iata\": \"ADL\",\n    \"name\": \"Adelaide\",\n    \"city\": \"Adelaide\",\n    \"country\": \"AU\",\n    \"coordinates\": [\n      -34.945,\n      138.5306\n    ]\n  },\n  {\n    \"iata\": \"CNS\",\n    \"name\": \"Cairns\",\n    \"city\": \"Cairns\",\n    \"country\": \"AU\",\n    \"coordinates\": [\n      -16.8858,\n      145.7554\n    ]\n  },\n  {\n    \"iata\": \"OOL\",\n    \"name\": \"Gold Coast\",\n    \"city\": \"Gold Coast\",\n    \"country\": \"AU\",\n    \"coordinates\": [\n      -28.1644,\n      153.5047\n    ]\n  },\n  {\n    \"iata\": \"AKL\",\n    \"name\": \"Auckland\",\n    \"city\": \"Auckland\",\n    \"country\": \"NZ\",\n    \"coordinates\": [\n      -37.0082,\n      174.785\n    ]\n  },\n  {\n    \"iata\": \"WLG\",\n    \"name\": \"Wellington\",\n    \"city\": \"Wellington\",\n    \"country\": \"NZ\",\n    \"coordinates\": [\n      -41.3272,\n      174.8053\n    ]\n  },\n  {\n    \"iata\": \"CHC\",\n    \"name\": \"Christchurch\",\n    \"city\": \"Christchurch\",\n    \"country\": \"NZ\",\n    \"coordinates\": [\n      -43.4894,\n      172.5322\n    ]\n  },\n  {\n    \"iata\": \"ZQN\",\n    \"name\": \"Queenstown\",\n    \"city\": \"Queenstown\",\n    \"country\": \"NZ\",\n    \"coordinates\": [\n      -45.0211,\n      168.7392\n    ]\n  },\n  {\n    \"iata\": \"NAN\",\n    \"name\": \"Nadi International\",\n    \"city\": \"Nadi\",\n    \"country\": \"FJ\",\n    \"coordinates\": [\n      -17.7554,\n      177.4431\n    ]\n  },\n  {\n    \"iata\": \"PPT\",\n    \"name\": \"Faa'a International\",\n    \"city\": \"Papeete\",\n    \"country\": \"PF\",\n    \"coordinates\": [\n      -17.5537,\n      -149.6114\n    ]\n  },\n  {\n    \"iata\": \"BOB\",\n    \"name\": \"Bora Bora\",\n    \"city\": \"Bora Bora\",\n    \"country\": \"PF\",\n    \"coordinates\": [\n      -16.4444,\n      -151.7513\n    ]\n  },\n  {\n    \"iata\": \"APW\",\n    \"name\": \"Faleolo International\",\n    \"city\": \"Apia\",\n    \"country\": \"WS\",\n    \"coordinates\": [\n      -13.8299,\n      -172.0065\n    ]\n  },\n  {\n    \"iata\": \"HAV\",\n    \"name\": \"Jos\\u00e9 Mart\\u00ed International\",\n    \"city\": \"Havana\",\n    \"country\": \"CU\",\n    \"coordinates\": [\n      22.9892,\n      -82.4091\n    ]\n  },\n  {\n    \"iata\": \"SJU\",\n    \"name\": \"Luis Mu\\u00f1oz Mar\\u00edn International\",\n    \"city\": \"San Juan\",\n    \"country\": \"PR\",\n    \"coordinates\": [\n      18.4394,\n      -66.0018\n    ]\n  },\n  {\n    \"iata\": \"PUJ\",\n    \"name\": \"Punta Cana International\",\n    \"city\": \"Punta Cana\",\n    \"country\": \"DO\",\n    \"coordinates\": [\n      18.5674,\n      -68.3634\n    ]\n  },\n  {\n    \"iata\": \"MBJ\",\n    \"name\": \"Sangster International\",\n    \"city\": \"Montego Bay\",\n    \"country\": \"JM\",\n    \"coordinates\": [\n      18.5037,\n      -77.9134\n    ]\n  },\n  {\n    \"iata\": \"KIN\",\n    \"name\": \"Norman Manley International\",\n    \"city\": \"Kingston\",\n    \"country\": \"JM\",\n    \"coordinates\": [\n      17.9357,\n      -76.7875\n    ]\n  },\n  {\n    \"iata\": \"NAS\",\n    \"name\": \"Lynden Pindling International\",\n    \"city\": \"Nassau\",\n    \"country\": \"BS\",\n    \"coordinates\": [\n      25.039,\n      -77.4662\n    ]\n  },\n  {\n    \"iata\": \"BGI\",\n    \"name\": \"Grantley Adams International\",\n    \"city\": \"Bridgetown\",\n    \"country\": \"BB\",\n    \"coordinates\": [\n      13.0746,\n      -59.4925\n    ]\n  },\n  {\n    \"iata\": \"ANU\",\n    \"name\": \"V.C. Bird International\",\n    \"city\": \"St. John's\",\n    \"country\": \"AG\",\n    \"coordinates\": [\n      17.1366,\n      -61.7926\n    ]\n  },\n  {\n    \"iata\": \"POS\",\n    \"name\": \"Piarco International\",\n    \"city\": \"Port of Spain\",\n    \"country\": \"TT\",\n    \"coordinates\": [\n      10.5955,\n      -61.3372\n    ]\n  },\n  {\n    \"iata\": \"AUA\",\n    \"name\": \"Queen Beatrix International\",\n    \"city\": \"Oranjestad\",\n    \"country\": \"AW\",\n    \"coordinates\": [\n      12.5014,\n      -70.0152\n    ]\n  },\n  {\n    \"iata\": \"CUR\",\n    \"name\": \"Hato International\",\n    \"city\": \"Willemstad\",\n    \"country\": \"CW\",\n    \"coordinates\": [\n      12.1889,\n      -68.9598\n    ]\n  },\n  {\n    \"iata\": \"SXM\",\n    \"name\": \"Princess Juliana International\",\n    \"city\": \"Philipsburg\",\n    \"country\": \"SX\",\n    \"coordinates\": [\n      18.041,\n      -63.1089\n    ]\n  },\n  {\n    \"iata\": \"GCM\",\n    \"name\": \"Owen Roberts International\",\n    \"city\": \"George Town\",\n    \"country\": \"KY\",\n    \"coordinates\": [\n      19.2928,\n      -81.3577\n    ]\n  },\n  {\n    \"iata\": \"BDA\",\n    \"name\": \"L.F. Wade International\",\n    \"city\": \"Hamilton\",\n    \"country\": \"BM\",\n    \"coordinates\": [\n      32.364,\n      -64.6787\n    ]\n  },\n  {\n    \"iata\": \"PLS\",\n    \"name\": \"Providenciales International\",\n    \"city\": \"Providenciales\",\n    \"country\": \"TC\",\n    \"coordinates\": [\n      21.7736,\n      -72.2659\n    ]\n  },\n  {\n    \"iata\": \"TBS\",\n    \"name\": \"Tbilisi International\",\n    \"city\": \"Tbilisi\",\n    \"country\": \"GE\",\n    \"coordinates\": [\n      41.6692,\n      44.9547\n    ]\n  },\n  {\n    \"iata\": \"EVN\",\n    \"name\": \"Zvartnots International\",\n    \"city\": \"Yerevan\",\n    \"country\": \"AM\",\n    \"coordinates\": [\n      40.1473,\n      44.3959\n    ]\n  },\n  {\n    \"iata\": \"GYD\",\n    \"name\": \"Heydar Aliyev International\",\n    \"city\": \"Baku\",\n    \"country\": \"AZ\",\n    \"coordinates\": [\n      40.4675,\n      50.0467\n    ]\n  },\n  {\n    \"iata\": \"TAS\",\n    \"name\": \"Islam Karimov International\",\n    \"city\": \"Tashkent\",\n    \"country\": \"UZ\",\n    \"coordinates\": [\n      41.2579,\n      69.2813\n    ]\n  },\n  {\n    \"iata\": \"SKD\",\n    \"name\": \"Samarkand International\",\n    \"city\": \"Samarkand\",\n    \"country\": \"UZ\",\n    \"coordinates\": [\n      39.7005,\n      66.9838\n    ]\n  },\n  {\n    \"iata\": \"FRU\",\n    \"name\": \"Manas International\",\n    \"city\": \"Bishkek\",\n    \"country\": \"KG\",\n    \"coordinates\": [\n      43.0613,\n      74.4776\n    ]\n  },\n  {\n    \"iata\": \"DYU\",\n    \"name\": \"Dushanbe International\",\n    \"city\": \"Dushanbe\",\n    \"country\": \"TJ\",\n    \"coordinates\": [\n      38.5433,\n      68.825\n    ]\n  },\n  {\n    \"iata\": \"ALA\",\n    \"name\": \"Almaty International\",\n    \"city\": \"Almaty\",\n    \"country\": \"KZ\",\n    \"coordinates\": [\n      43.3521,\n      77.0405\n    ]\n  },\n  {\n    \"iata\": \"NQZ\",\n    \"name\": \"Nursultan Nazarbayev International\",\n    \"city\": \"Astana\",\n    \"country\": \"KZ\",\n    \"coordinates\": [\n      51.0222,\n      71.4669\n    ]\n  },\n  {\n    \"iata\": \"SAW\",\n    \"name\": \"Sabiha G\\u00f6k\\u00e7en International\",\n    \"city\": \"Istanbul\",\n    \"country\": \"TR\",\n    \"coordinates\": [\n      40.8986,\n      29.3092\n    ]\n  },\n  {\n    \"iata\": \"AYT\",\n    \"name\": \"Antalya\",\n    \"city\": \"Antalya\",\n    \"country\": \"TR\",\n    \"coordinates\": [\n      36.8987,\n      30.8005\n    ]\n  },\n  {\n    \"iata\": \"ADB\",\n    \"name\": \"Adnan Menderes\",\n    \"city\": \"Izmir\",\n    \"country\": \"TR\",\n    \"coordinates\": [\n      38.2924,\n      27.157\n    ]\n  },\n  {\n    \"iata\": \"DLM\",\n    \"name\": \"Dalaman\",\n    \"city\": \"Dalaman\",\n    \"country\": \"TR\",\n    \"coordinates\": [\n      36.7131,\n      28.7925\n    ]\n  },\n  {\n    \"iata\": \"BJV\",\n    \"name\": \"Milas-Bodrum\",\n    \"city\": \"Bodrum\",\n    \"country\": \"TR\",\n    \"coordinates\": [\n      37.2506,\n      28.3043\n    ]\n  },\n  {\n    \"iata\": \"NAV\",\n    \"name\": \"Nev\\u015fehir Kapadokya\",\n    \"city\": \"Cappadocia\",\n    \"country\": \"TR\",\n    \"coordinates\": [\n      38.7719,\n      34.5345\n    ]\n  },\n  {\n    \"iata\": \"BEY\",\n    \"name\": \"Rafic Hariri International\",\n    \"city\": \"Beirut\",\n    \"country\": \"LB\",\n    \"coordinates\": [\n      33.8209,\n      35.4884\n    ]\n  },\n  {\n    \"iata\": \"IKA\",\n    \"name\": \"Imam Khomeini International\",\n    \"city\": \"Tehran\",\n    \"country\": \"IR\",\n    \"coordinates\": [\n      35.4161,\n      51.1522\n    ]\n  },\n  {\n    \"iata\": \"CTU\",\n    \"name\": \"Chengdu Shuangliu\",\n    \"city\": \"Chengdu\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      30.5785,\n      103.9471\n    ]\n  },\n  {\n    \"iata\": \"CKG\",\n    \"name\": \"Chongqing Jiangbei\",\n    \"city\": \"Chongqing\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      29.7192,\n      106.6417\n    ]\n  },\n  {\n    \"iata\": \"SZX\",\n    \"name\": \"Shenzhen Bao'an\",\n    \"city\": \"Shenzhen\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      22.6393,\n      113.8107\n    ]\n  },\n  {\n    \"iata\": \"XIY\",\n    \"name\": \"Xi'an Xianyang\",\n    \"city\": \"Xi'an\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      34.4471,\n      108.7516\n    ]\n  },\n  {\n    \"iata\": \"KMG\",\n    \"name\": \"Kunming Changshui\",\n    \"city\": \"Kunming\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      24.9924,\n      102.7432\n    ]\n  },\n  {\n    \"iata\": \"HGH\",\n    \"name\": \"Hangzhou Xiaoshan\",\n    \"city\": \"Hangzhou\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      30.2295,\n      120.4344\n    ]\n  },\n  {\n    \"iata\": \"NKG\",\n    \"name\": \"Nanjing Lukou\",\n    \"city\": \"Nanjing\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      31.742,\n      118.862\n    ]\n  },\n  {\n    \"iata\": \"WUH\",\n    \"name\": \"Wuhan Tianhe\",\n    \"city\": \"Wuhan\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      30.7838,\n      114.2081\n    ]\n  },\n  {\n    \"iata\": \"TAO\",\n    \"name\": \"Qingdao Jiaodong\",\n    \"city\": \"Qingdao\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      36.2611,\n      120.1253\n    ]\n  },\n  {\n    \"iata\": \"DLC\",\n    \"name\": \"Dalian Zhoushuizi\",\n    \"city\": \"Dalian\",\n    \"country\": \"CN\",\n    \"coordinates\": [\n      38.9657,\n      121.5386\n    ]\n  },\n  {\n    \"iata\": \"ULN\",\n    \"name\": \"Chinggis Khaan International\",\n    \"city\": \"Ulaanbaatar\",\n    \"country\": \"MN\",\n    \"coordinates\": [\n      47.8431,\n      106.7669\n    ]\n  },\n  {\n    \"iata\": \"MFM\",\n    \"name\": \"Macau International\",\n    \"city\": \"Macau\",\n    \"country\": \"MO\",\n    \"coordinates\": [\n      22.1496,\n      113.5916\n    ]\n  },\n  {\n    \"iata\": \"LPB\",\n    \"name\": \"El Alto International\",\n    \"city\": \"La Paz\",\n    \"country\": \"BO\",\n    \"coordinates\": [\n      -16.5133,\n      -68.1923\n    ]\n  },\n  {\n    \"iata\": \"MVD\",\n    \"name\": \"Carrasco International\",\n    \"city\": \"Montevideo\",\n    \"country\": \"UY\",\n    \"coordinates\": [\n      -34.8384,\n      -56.0308\n    ]\n  },\n  {\n    \"iata\": \"ASU\",\n    \"name\": \"Silvio Pettirossi International\",\n    \"city\": \"Asunci\\u00f3n\",\n    \"country\": \"PY\",\n    \"coordinates\": [\n      -25.24,\n      -57.52\n    ]\n  },\n  {\n    \"iata\": \"CCS\",\n    \"name\": \"Sim\\u00f3n Bol\\u00edvar International\",\n    \"city\": \"Caracas\",\n    \"country\": \"VE\",\n    \"coordinates\": [\n      10.6012,\n      -66.9912\n    ]\n  },\n  {\n    \"iata\": \"MDE\",\n    \"name\": \"Jos\\u00e9 Mar\\u00eda C\\u00f3rdova International\",\n    \"city\": \"Medell\\u00edn\",\n    \"country\": \"CO\",\n    \"coordinates\": [\n      6.1645,\n      -75.4231\n    ]\n  },\n  {\n    \"iata\": \"CLO\",\n    \"name\": \"Alfonso Bonilla Arag\\u00f3n International\",\n    \"city\": \"Cali\",\n    \"country\": \"CO\",\n    \"coordinates\": [\n      3.5432,\n      -76.3816\n    ]\n  },\n  {\n    \"iata\": \"GYE\",\n    \"name\": \"Jos\\u00e9 Joaqu\\u00edn de Olmedo International\",\n    \"city\": \"Guayaquil\",\n    \"country\": \"EC\",\n    \"coordinates\": [\n      -2.1574,\n      -79.8837\n    ]\n  },\n  {\n    \"iata\": \"GPS\",\n    \"name\": \"Seymour\",\n    \"city\": \"Gal\\u00e1pagos\",\n    \"country\": \"EC\",\n    \"coordinates\": [\n      -0.4537,\n      -90.2659\n    ]\n  },\n  {\n    \"iata\": \"CUZ\",\n    \"name\": \"Alejandro Velasco Astete International\",\n    \"city\": \"Cusco\",\n    \"country\": \"PE\",\n    \"coordinates\": [\n      -13.5357,\n      -71.9388\n    ]\n  },\n  {\n    \"iata\": \"BZE\",\n    \"name\": \"Philip S. W. Goldson International\",\n    \"city\": \"Belize City\",\n    \"country\": \"BZ\",\n    \"coordinates\": [\n      17.5391,\n      -88.3082\n    ]\n  },\n  {\n    \"iata\": \"GUA\",\n    \"name\": \"La Aurora International\",\n    \"city\": \"Guatemala City\",\n    \"country\": \"GT\",\n    \"coordinates\": [\n      14.5833,\n      -90.5275\n    ]\n  },\n  {\n    \"iata\": \"SAL\",\n    \"name\": \"\\u00d3scar Arnulfo Romero International\",\n    \"city\": \"San Salvador\",\n    \"country\": \"SV\",\n    \"coordinates\": [\n      13.4409,\n      -89.0557\n    ]\n  },\n  {\n    \"iata\": \"TGU\",\n    \"name\": \"Toncont\\u00edn International\",\n    \"city\": \"Tegucigalpa\",\n    \"country\": \"HN\",\n    \"coordinates\": [\n      14.0609,\n      -87.2172\n    ]\n  },\n  {\n    \"iata\": \"MGA\",\n    \"name\": \"Augusto C. Sandino International\",\n    \"city\": \"Managua\",\n    \"country\": \"NI\",\n    \"coordinates\": [\n      12.1415,\n      -86.1682\n    ]\n  },\n  {\n    \"iata\": \"LPQ\",\n    \"name\": \"Luang Prabang International\",\n    \"city\": \"Luang Prabang\",\n    \"country\": \"LA\",\n    \"coordinates\": [\n      19.8973,\n      102.1614\n    ]\n  },\n  {\n    \"iata\": \"PBH\",\n    \"name\": \"Paro International\",\n    \"city\": \"Paro\",\n    \"country\": \"BT\",\n    \"coordinates\": [\n      27.4032,\n      89.4246\n    ]\n  },\n  {\n    \"iata\": \"SVO\",\n    \"name\": \"Sheremetyevo International\",\n    \"city\": \"Moscow\",\n    \"country\": \"RU\",\n    \"coordinates\": [\n      55.9726,\n      37.4146\n    ]\n  },\n  {\n    \"iata\": \"DME\",\n    \"name\": \"Domodedovo International\",\n    \"city\": \"Moscow\",\n    \"country\": \"RU\",\n    \"coordinates\": [\n      55.4088,\n      37.9063\n    ]\n  },\n  {\n    \"iata\": \"LED\",\n    \"name\": \"Pulkovo\",\n    \"city\": \"St. Petersburg\",\n    \"country\": \"RU\",\n    \"coordinates\": [\n      59.8003,\n      30.2625\n    ]\n  },\n  {\n    \"iata\": \"MLA\",\n    \"name\": \"Malta International\",\n    \"city\": \"Valletta\",\n    \"country\": \"MT\",\n    \"coordinates\": [\n      35.8575,\n      14.4775\n    ]\n  },\n  {\n    \"iata\": \"SKP\",\n    \"name\": \"Skopje International\",\n    \"city\": \"Skopje\",\n    \"country\": \"MK\",\n    \"coordinates\": [\n      41.9616,\n      21.6214\n    ]\n  },\n  {\n    \"iata\": \"BEG\",\n    \"name\": \"Belgrade Nikola Tesla\",\n    \"city\": \"Belgrade\",\n    \"country\": \"RS\",\n    \"coordinates\": [\n      44.8184,\n      20.3091\n    ]\n  },\n  {\n    \"iata\": \"LCA\",\n    \"name\": \"Larnaca International\",\n    \"city\": \"Larnaca\",\n    \"country\": \"CY\",\n    \"coordinates\": [\n      34.8751,\n      33.6249\n    ]\n  },\n  {\n    \"iata\": \"PFO\",\n    \"name\": \"Paphos International\",\n    \"city\": \"Paphos\",\n    \"country\": \"CY\",\n    \"coordinates\": [\n      34.718,\n      32.4857\n    ]\n  },\n  {\n    \"iata\": \"SVX\",\n    \"name\": \"Koltsovo\",\n    \"city\": \"Yekaterinburg\",\n    \"country\": \"RU\",\n    \"coordinates\": [\n      56.7431,\n      60.8027\n    ]\n  },\n  {\n    \"iata\": \"OVB\",\n    \"name\": \"Tolmachevo\",\n    \"city\": \"Novosibirsk\",\n    \"country\": \"RU\",\n    \"coo\n\nFile v2.0.43:references/booking-integrations.json\n\n{\n  \"description\": \"Booking integration placeholders. Kontour AI is building direct booking integrations. For now, the skill generates booking-ready structured data. Operator-provided approved public URLs may be added at runtime; this bundle does not include deployment or preview hostnames.\",\n  \"integrations\": {\n    \"flights\": [\n      {\"provider\": \"Amadeus\", \"api_endpoint\": \"https://api.amadeus.com/v2/shopping/flight-offers\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price\", \"book\", \"seat-selection\"], \"note\": \"GDS with widest airline coverage. Kontour will use for fare search and booking.\"},\n      {\"provider\": \"Sabre\", \"api_endpoint\": \"https://api.sabre.com/v2/shop/flights\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price\", \"book\"], \"note\": \"Strong in North America. Backup GDS for redundancy.\"},\n      {\"provider\": \"Travelport\", \"api_endpoint\": \"https://api.travelport.com/air/search\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price\", \"book\"], \"note\": \"Galileo/Worldspan/Apollo unified API.\"},\n      {\"provider\": \"Google Flights (ITA Matrix)\", \"api_endpoint\": \"https://www.google.com/travel/flights\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price-compare\"], \"note\": \"For price comparison and flexible date search. No direct booking.\"},\n      {\"provider\": \"Kiwi.com\", \"api_endpoint\": \"https://api.tequila.kiwi.com/v2/search\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price\", \"multi-city\", \"nomad\"], \"note\": \"Strong for complex multi-city and budget routes.\"}\n    ],\n    \"hotels\": [\n      {\"provider\": \"Booking.com\", \"api_endpoint\": \"https://distribution-xml.booking.com/json/bookings\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price\", \"book\", \"reviews\"], \"note\": \"Largest hotel inventory globally.\"},\n      {\"provider\": \"Expedia (EPS)\", \"api_endpoint\": \"https://api.ean.com/v3/properties\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price\", \"book\"], \"note\": \"Expedia Partner Solutions API.\"},\n      {\"provider\": \"Hotels.com\", \"api_endpoint\": \"https://api.hotels.com/v1/search\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price\", \"loyalty\"], \"note\": \"Part of Expedia group, loyalty rewards.\"},\n      {\"provider\": \"Airbnb\", \"api_endpoint\": \"https://api.airbnb.com/v2/search\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"experiences\", \"unique-stays\"], \"note\": \"For apartments, unique stays, and local experiences.\"},\n      {\"provider\": \"Hostelworld\", \"api_endpoint\": \"https://api.hostelworld.com/v2/properties\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"price\", \"book\"], \"note\": \"Budget accommodation specialist.\"}\n    ],\n    \"activities\": [\n      {\"provider\": \"GetYourGuide\", \"api_endpoint\": \"https://api.getyourguide.com/1/tours\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"reviews\", \"skip-the-line\"], \"note\": \"Largest tour/activity marketplace.\"},\n      {\"provider\": \"Viator\", \"api_endpoint\": \"https://api.viator.com/partner/products/search\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"reviews\"], \"note\": \"TripAdvisor-owned. Strong reviews integration.\"},\n      {\"provider\": \"Klook\", \"api_endpoint\": \"https://api.klook.com/v1/activities\", \"supported_regions\": [\"Asia\", \"Europe\", \"Oceania\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"mobile-voucher\"], \"note\": \"Strong in Asia-Pacific region.\"},\n      {\"provider\": \"Airbnb Experiences\", \"api_endpoint\": \"https://api.airbnb.com/v2/experiences\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"local-hosts\"], \"note\": \"Local-hosted unique experiences.\"}\n    ],\n    \"car_rental\": [\n      {\"provider\": \"Rentalcars.com\", \"api_endpoint\": \"https://api.rentalcars.com/v1/search\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"compare\", \"book\"], \"note\": \"Aggregator across all major providers.\"},\n      {\"provider\": \"Enterprise/National/Alamo\", \"api_endpoint\": \"https://api.enterprise.com/v1/vehicles\", \"supported_regions\": [\"North America\", \"Europe\", \"Oceania\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"loyalty\"], \"note\": \"Enterprise Holdings group.\"},\n      {\"provider\": \"Hertz\", \"api_endpoint\": \"https://api.hertz.com/v1/availability\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"luxury-fleet\"], \"note\": \"Premium and luxury vehicle options.\"},\n      {\"provider\": \"Sixt\", \"api_endpoint\": \"https://api.sixt.com/v1/offers\", \"supported_regions\": [\"Europe\", \"North America\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"premium\"], \"note\": \"Strong European coverage.\"}\n    ],\n    \"trains_transit\": [\n      {\"provider\": \"Rail Europe\", \"api_endpoint\": \"https://api.raileurope.com/v2/search\", \"supported_regions\": [\"Europe\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"pass\", \"seat-reservation\"], \"note\": \"Eurostar, TGV, ICE, and all European rail.\"},\n      {\"provider\": \"JR Pass\", \"api_endpoint\": \"https://japanrailpass.net/api/v1\", \"supported_regions\": [\"Japan\"], \"integration_status\": \"planned\", \"capabilities\": [\"pass-purchase\", \"route-planning\"], \"note\": \"Japan Rail Pass for Shinkansen and regional.\"},\n      {\"provider\": \"Trainline\", \"api_endpoint\": \"https://api.trainline.com/v1/search\", \"supported_regions\": [\"Europe\", \"UK\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\", \"split-tickets\"], \"note\": \"UK and European rail with split-ticket savings.\"},\n      {\"provider\": \"Amtrak\", \"api_endpoint\": \"https://api.amtrak.com/v1/trips\", \"supported_regions\": [\"North America\"], \"integration_status\": \"planned\", \"capabilities\": [\"search\", \"book\"], \"note\": \"US intercity rail.\"},\n      {\"provider\": \"Rome2Rio\", \"api_endpoint\": \"https://api.rome2rio.com/v1/search\", \"supported_regions\": [\"global\"], \"integration_status\": \"planned\", \"capabilities\": [\"multi-modal-search\", \"compare\"], \"note\": \"Multi-modal transport search (trains, buses, ferries, flights).\"}\n    ]\n  },\n  \"output_format\": {\n    \"description\": \"The skill generates booking-ready structured data in this format, passable to any reservation API\",\n    \"flight_request\": {\"origin\": \"IATA\", \"destination\": \"IATA\", \"date\": \"YYYY-MM-DD\", \"passengers\": 0, \"cabin\": \"economy|business|first\", \"return_date\": \"YYYY-MM-DD|null\"},\n    \"hotel_request\": {\"destination\": \"city name\", \"checkin\": \"YYYY-MM-DD\", \"checkout\": \"YYYY-MM-DD\", \"guests\": 0, \"rooms\": 0, \"star_rating_min\": 0, \"budget_per_night_usd\": 0},\n    \"activity_request\": {\"destination\": \"city name\", \"date\": \"YYYY-MM-DD\", \"category\": \"activity type\", \"participants\": 0, \"budget_usd\": 0},\n    \"car_request\": {\"pickup_location\": \"city/airport\", \"pickup_date\": \"YYYY-MM-DD\", \"dropoff_date\": \"YYYY-MM-DD\", \"vehicle_type\": \"economy|compact|suv|luxury\"},\n    \"train_request\": {\"origin\": \"station/city\", \"destination\": \"station/city\", \"date\": \"YYYY-MM-DD\", \"passengers\": 0, \"class\": \"standard|first\"}\n  }\n}\n\nFile v2.0.43:references/budget-benchmarks.json\n\n{\n  \"description\": \"Daily cost benchmarks per person in USD by destination tier and spending category\",\n  \"tiers\": {\n    \"budget\": {\n      \"description\": \"Hostels, street food, public transport, free attractions\",\n      \"southeast_asia\": {\"accommodation\": 12, \"food\": 10, \"transport\": 5, \"activities\": 8, \"total\": 35},\n      \"south_asia\": {\"accommodation\": 10, \"food\": 8, \"transport\": 4, \"activities\": 6, \"total\": 28},\n      \"central_america\": {\"accommodation\": 15, \"food\": 12, \"transport\": 6, \"activities\": 10, \"total\": 43},\n      \"south_america\": {\"accommodation\": 15, \"food\": 12, \"transport\": 7, \"activities\": 10, \"total\": 44},\n      \"eastern_europe\": {\"accommodation\": 18, \"food\": 15, \"transport\": 8, \"activities\": 10, \"total\": 51},\n      \"southern_europe\": {\"accommodation\": 25, \"food\": 18, \"transport\": 10, \"activities\": 12, \"total\": 65},\n      \"western_europe\": {\"accommodation\": 35, \"food\": 22, \"transport\": 15, \"activities\": 15, \"total\": 87},\n      \"northern_europe\": {\"accommodation\": 40, \"food\": 28, \"transport\": 18, \"activities\": 15, \"total\": 101},\n      \"north_america\": {\"accommodation\": 30, \"food\": 20, \"transport\": 12, \"activities\": 15, \"total\": 77},\n      \"east_asia\": {\"accommodation\": 25, \"food\": 15, \"transport\": 10, \"activities\": 12, \"total\": 62},\n      \"middle_east\": {\"accommodation\": 20, \"food\": 15, \"transport\": 8, \"activities\": 10, \"total\": 53},\n      \"africa\": {\"accommodation\": 15, \"food\": 10, \"transport\": 8, \"activities\": 15, \"total\": 48},\n      \"oceania\": {\"accommodation\": 30, \"food\": 22, \"transport\": 15, \"activities\": 15, \"total\": 82}\n    },\n    \"mid\": {\n      \"description\": \"3-star hotels, sit-down restaurants, mix of transport, paid attractions\",\n      \"southeast_asia\": {\"accommodation\": 45, \"food\": 25, \"transport\": 15, \"activities\": 20, \"total\": 105},\n      \"south_asia\": {\"accommodation\": 40, \"food\": 20, \"transport\": 12, \"activities\": 18, \"total\": 90},\n      \"central_america\": {\"accommodation\": 55, \"food\": 30, \"transport\": 18, \"activities\": 25, \"total\": 128},\n      \"south_america\": {\"accommodation\": 55, \"food\": 28, \"transport\": 18, \"activities\": 25, \"total\": 126},\n      \"eastern_europe\": {\"accommodation\": 60, \"food\": 30, \"transport\": 15, \"activities\": 25, \"total\": 130},\n      \"southern_europe\": {\"accommodation\": 80, \"food\": 40, \"transport\": 20, \"activities\": 30, \"total\": 170},\n      \"western_europe\": {\"accommodation\": 120, \"food\": 50, \"transport\": 25, \"activities\": 35, \"total\": 230},\n      \"northern_europe\": {\"accommodation\": 140, \"food\": 55, \"transport\": 30, \"activities\": 35, \"total\": 260},\n      \"north_america\": {\"accommodation\": 110, \"food\": 45, \"transport\": 25, \"activities\": 35, \"total\": 215},\n      \"east_asia\": {\"accommodation\": 90, \"food\": 35, \"transport\": 20, \"activities\": 30, \"total\": 175},\n      \"middle_east\": {\"accommodation\": 80, \"food\": 35, \"transport\": 20, \"activities\": 30, \"total\": 165},\n      \"africa\": {\"accommodation\": 60, \"food\": 25, \"transport\": 20, \"activities\": 40, \"total\": 145},\n      \"oceania\": {\"accommodation\": 110, \"food\": 45, \"transport\": 25, \"activities\": 35, \"total\": 215}\n    },\n    \"luxury\": {\n      \"description\": \"5-star hotels, fine dining, private transfers, premium experiences\",\n      \"southeast_asia\": {\"accommodation\": 150, \"food\": 60, \"transport\": 50, \"activities\": 60, \"total\": 320},\n      \"south_asia\": {\"accommodation\": 120, \"food\": 50, \"transport\": 40, \"activities\": 50, \"total\": 260},\n      \"central_america\": {\"accommodation\": 180, \"food\": 70, \"transport\": 60, \"activities\": 70, \"total\": 380},\n      \"south_america\": {\"accommodation\": 170, \"food\": 65, \"transport\": 55, \"activities\": 65, \"total\": 355},\n      \"eastern_europe\": {\"accommodation\": 180, \"food\": 70, \"transport\": 50, \"activities\": 60, \"total\": 360},\n      \"southern_europe\": {\"accommodation\": 250, \"food\": 100, \"transport\": 70, \"activities\": 80, \"total\": 500},\n      \"western_europe\": {\"accommodation\": 350, \"food\": 120, \"transport\": 80, \"activities\": 100, \"total\": 650},\n      \"northern_europe\": {\"accommodation\": 380, \"food\": 130, \"transport\": 90, \"activities\": 100, \"total\": 700},\n      \"north_america\": {\"accommodation\": 300, \"food\": 110, \"transport\": 75, \"activities\": 90, \"total\": 575},\n      \"east_asia\": {\"accommodation\": 280, \"food\": 90, \"transport\": 60, \"activities\": 80, \"total\": 510},\n      \"middle_east\": {\"accommodation\": 300, \"food\": 100, \"transport\": 70, \"activities\": 90, \"total\": 560},\n      \"africa\": {\"accommodation\": 250, \"food\": 70, \"transport\": 80, \"activities\": 150, \"total\": 550},\n      \"oceania\": {\"accommodation\": 300, \"food\": 100, \"transport\": 80, \"activities\": 90, \"total\": 570}\n    }\n  }\n}\n\nFile v2.0.43:references/destinations.json\n\n[\n  {\"name\":\"Tokyo\",\"country\":\"Japan\",\"coordinates\":[35.6762,139.6503],\"continent\":\"Asia\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":62,\"mid\":175,\"luxury\":510},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"SG\",\"KR\"],\"timezone\":\"Asia/Tokyo\",\"currency\":\"JPY\",\"language\":\"Japanese\",\"highlights\":[\"Shibuya Crossing\",\"Senso-ji Temple\",\"Tsukiji Outer Market\",\"Meiji Shrine\",\"Akihabara\"]},\n  {\"name\":\"Paris\",\"country\":\"France\",\"coordinates\":[48.8566,2.3522],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":85,\"mid\":230,\"luxury\":650},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\",\"BR\"],\"timezone\":\"Europe/Paris\",\"currency\":\"EUR\",\"language\":\"French\",\"highlights\":[\"Eiffel Tower\",\"Louvre Museum\",\"Montmartre\",\"Notre-Dame\",\"Musée d'Orsay\"]},\n  {\"name\":\"London\",\"country\":\"United Kingdom\",\"coordinates\":[51.5074,-0.1278],\"continent\":\"Europe\",\"best_months\":[5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":90,\"mid\":240,\"luxury\":680},\"visa_free_for\":[\"US\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/London\",\"currency\":\"GBP\",\"language\":\"English\",\"highlights\":[\"British Museum\",\"Tower of London\",\"Buckingham Palace\",\"Westminster Abbey\",\"Camden Market\"]},\n  {\"name\":\"New York\",\"country\":\"United States\",\"coordinates\":[40.7128,-74.006],\"continent\":\"North America\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":95,\"mid\":250,\"luxury\":700},\"visa_free_for\":[\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/New_York\",\"currency\":\"USD\",\"language\":\"English\",\"highlights\":[\"Central Park\",\"Statue of Liberty\",\"Times Square\",\"Brooklyn Bridge\",\"Metropolitan Museum\"]},\n  {\"name\":\"Bangkok\",\"country\":\"Thailand\",\"coordinates\":[13.7563,100.5018],\"continent\":\"Asia\",\"best_months\":[11,12,1,2,3],\"avg_daily_cost_usd\":{\"budget\":30,\"mid\":90,\"luxury\":280},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Asia/Bangkok\",\"currency\":\"THB\",\"language\":\"Thai\",\"highlights\":[\"Grand Palace\",\"Wat Arun\",\"Chatuchak Market\",\"Khao San Road\",\"Floating Markets\"]},\n  {\"name\":\"Barcelona\",\"country\":\"Spain\",\"coordinates\":[41.3874,2.1686],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":65,\"mid\":170,\"luxury\":480},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Madrid\",\"currency\":\"EUR\",\"language\":\"Spanish\",\"highlights\":[\"Sagrada Familia\",\"Park Güell\",\"La Rambla\",\"Gothic Quarter\",\"Casa Batlló\"]},\n  {\"name\":\"Rome\",\"country\":\"Italy\",\"coordinates\":[41.9028,12.4964],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":65,\"mid\":175,\"luxury\":500},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Rome\",\"currency\":\"EUR\",\"language\":\"Italian\",\"highlights\":[\"Colosseum\",\"Vatican Museums\",\"Trevi Fountain\",\"Pantheon\",\"Roman Forum\"]},\n  {\"name\":\"Istanbul\",\"country\":\"Turkey\",\"coordinates\":[41.0082,28.9784],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":35,\"mid\":100,\"luxury\":320},\"visa_free_for\":[\"UK\",\"EU\",\"JP\",\"KR\",\"MY\",\"SG\"],\"timezone\":\"Europe/Istanbul\",\"currency\":\"TRY\",\"language\":\"Turkish\",\"highlights\":[\"Hagia Sophia\",\"Blue Mosque\",\"Grand Bazaar\",\"Topkapi Palace\",\"Bosphorus Cruise\"]},\n  {\"name\":\"Dubai\",\"country\":\"United Arab Emirates\",\"coordinates\":[25.2048,55.2708],\"continent\":\"Asia\",\"best_months\":[11,12,1,2,3],\"avg_daily_cost_usd\":{\"budget\":55,\"mid\":180,\"luxury\":600},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\"],\"timezone\":\"Asia/Dubai\",\"currency\":\"AED\",\"language\":\"Arabic\",\"highlights\":[\"Burj Khalifa\",\"Dubai Mall\",\"Palm Jumeirah\",\"Dubai Marina\",\"Desert Safari\"]},\n  {\"name\":\"Singapore\",\"country\":\"Singapore\",\"coordinates\":[1.3521,103.8198],\"continent\":\"Asia\",\"best_months\":[1,2,3,7,8],\"avg_daily_cost_usd\":{\"budget\":55,\"mid\":170,\"luxury\":500},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Asia/Singapore\",\"currency\":\"SGD\",\"language\":\"English\",\"highlights\":[\"Marina Bay Sands\",\"Gardens by the Bay\",\"Sentosa\",\"Chinatown\",\"Hawker Centres\"]},\n  {\"name\":\"Sydney\",\"country\":\"Australia\",\"coordinates\":[-33.8688,151.2093],\"continent\":\"Oceania\",\"best_months\":[10,11,12,1,2,3],\"avg_daily_cost_usd\":{\"budget\":80,\"mid\":210,\"luxury\":580},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"NZ\",\"JP\",\"KR\",\"SG\"],\"timezone\":\"Australia/Sydney\",\"currency\":\"AUD\",\"language\":\"English\",\"highlights\":[\"Sydney Opera House\",\"Harbour Bridge\",\"Bondi Beach\",\"Royal Botanic Garden\",\"Taronga Zoo\"]},\n  {\"name\":\"Bali\",\"country\":\"Indonesia\",\"coordinates\":[-8.3405,115.092],\"continent\":\"Asia\",\"best_months\":[4,5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":25,\"mid\":75,\"luxury\":250},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Asia/Makassar\",\"currency\":\"IDR\",\"language\":\"Indonesian\",\"highlights\":[\"Ubud Rice Terraces\",\"Tanah Lot\",\"Uluwatu Temple\",\"Seminyak Beach\",\"Mount Batur\"]},\n  {\"name\":\"Lisbon\",\"country\":\"Portugal\",\"coordinates\":[38.7223,-9.1393],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":50,\"mid\":130,\"luxury\":380},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\",\"BR\"],\"timezone\":\"Europe/Lisbon\",\"currency\":\"EUR\",\"language\":\"Portuguese\",\"highlights\":[\"Belém Tower\",\"Alfama District\",\"Jerónimos Monastery\",\"Tram 28\",\"Time Out Market\"]},\n  {\"name\":\"Prague\",\"country\":\"Czech Republic\",\"coordinates\":[50.0755,14.4378],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":40,\"mid\":110,\"luxury\":330},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Prague\",\"currency\":\"CZK\",\"language\":\"Czech\",\"highlights\":[\"Charles Bridge\",\"Prague Castle\",\"Old Town Square\",\"Astronomical Clock\",\"Petřín Hill\"]},\n  {\"name\":\"Amsterdam\",\"country\":\"Netherlands\",\"coordinates\":[52.3676,4.9041],\"continent\":\"Europe\",\"best_months\":[4,5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":75,\"mid\":200,\"luxury\":550},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Amsterdam\",\"currency\":\"EUR\",\"language\":\"Dutch\",\"highlights\":[\"Anne Frank House\",\"Rijksmuseum\",\"Van Gogh Museum\",\"Canal Ring\",\"Vondelpark\"]},\n  {\"name\":\"Seoul\",\"country\":\"South Korea\",\"coordinates\":[37.5665,126.978],\"continent\":\"Asia\",\"best_months\":[3,4,5,9,10,11],\"avg_daily_cost_usd\":{\"budget\":50,\"mid\":140,\"luxury\":420},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"SG\"],\"timezone\":\"Asia/Seoul\",\"currency\":\"KRW\",\"language\":\"Korean\",\"highlights\":[\"Gyeongbokgung Palace\",\"Bukchon Hanok Village\",\"Myeongdong\",\"Namsan Tower\",\"Gangnam\"]},\n  {\"name\":\"Kyoto\",\"country\":\"Japan\",\"coordinates\":[35.0116,135.7681],\"continent\":\"Asia\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":58,\"mid\":165,\"luxury\":480},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"SG\",\"KR\"],\"timezone\":\"Asia/Tokyo\",\"currency\":\"JPY\",\"language\":\"Japanese\",\"highlights\":[\"Fushimi Inari\",\"Kinkaku-ji\",\"Arashiyama Bamboo\",\"Kiyomizu-dera\",\"Gion District\"]},\n  {\"name\":\"Marrakech\",\"country\":\"Morocco\",\"coordinates\":[31.6295,-7.9811],\"continent\":\"Africa\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":30,\"mid\":85,\"luxury\":280},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\"],\"timezone\":\"Africa/Casablanca\",\"currency\":\"MAD\",\"language\":\"Arabic\",\"highlights\":[\"Jemaa el-Fnaa\",\"Bahia Palace\",\"Majorelle Garden\",\"Medina Souks\",\"Saadian Tombs\"]},\n  {\"name\":\"Cape Town\",\"country\":\"South Africa\",\"coordinates\":[-33.9249,18.4241],\"continent\":\"Africa\",\"best_months\":[10,11,12,1,2,3],\"avg_daily_cost_usd\":{\"budget\":40,\"mid\":110,\"luxury\":350},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\"],\"timezone\":\"Africa/Johannesburg\",\"currency\":\"ZAR\",\"language\":\"English\",\"highlights\":[\"Table Mountain\",\"Cape of Good Hope\",\"V&A Waterfront\",\"Robben Island\",\"Kirstenbosch Gardens\"]},\n  {\"name\":\"Reykjavik\",\"country\":\"Iceland\",\"coordinates\":[64.1466,-21.9426],\"continent\":\"Europe\",\"best_months\":[6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":100,\"mid\":260,\"luxury\":700},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Atlantic/Reykjavik\",\"currency\":\"ISK\",\"language\":\"Icelandic\",\"highlights\":[\"Golden Circle\",\"Blue Lagoon\",\"Northern Lights\",\"Hallgrímskirkja\",\"Whale Watching\"]},\n  {\"name\":\"Hanoi\",\"country\":\"Vietnam\",\"coordinates\":[21.0285,105.8542],\"continent\":\"Asia\",\"best_months\":[10,11,3,4],\"avg_daily_cost_usd\":{\"budget\":22,\"mid\":65,\"luxury\":200},\"visa_free_for\":[\"UK\",\"EU\",\"JP\",\"KR\",\"SG\"],\"timezone\":\"Asia/Ho_Chi_Minh\",\"currency\":\"VND\",\"language\":\"Vietnamese\",\"highlights\":[\"Old Quarter\",\"Ho Chi Minh Mausoleum\",\"Hoan Kiem Lake\",\"Temple of Literature\",\"Street Food Tours\"]},\n  {\"name\":\"Mexico City\",\"country\":\"Mexico\",\"coordinates\":[19.4326,-99.1332],\"continent\":\"North America\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":35,\"mid\":95,\"luxury\":300},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Mexico_City\",\"currency\":\"MXN\",\"language\":\"Spanish\",\"highlights\":[\"Zócalo\",\"Chapultepec Castle\",\"Coyoacán\",\"Frida Kahlo Museum\",\"Teotihuacán\"]},\n  {\"name\":\"Buenos Aires\",\"country\":\"Argentina\",\"coordinates\":[-34.6037,-58.3816],\"continent\":\"South America\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":30,\"mid\":85,\"luxury\":270},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Argentina/Buenos_Aires\",\"currency\":\"ARS\",\"language\":\"Spanish\",\"highlights\":[\"La Boca\",\"Recoleta Cemetery\",\"San Telmo Market\",\"Teatro Colón\",\"Plaza de Mayo\"]},\n  {\"name\":\"Rio de Janeiro\",\"country\":\"Brazil\",\"coordinates\":[-22.9068,-43.1729],\"continent\":\"South America\",\"best_months\":[5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":35,\"mid\":100,\"luxury\":320},\"visa_free_for\":[\"UK\",\"EU\",\"JP\",\"KR\",\"AU\",\"NZ\"],\"timezone\":\"America/Sao_Paulo\",\"currency\":\"BRL\",\"language\":\"Portuguese\",\"highlights\":[\"Christ the Redeemer\",\"Copacabana Beach\",\"Sugarloaf Mountain\",\"Ipanema\",\"Tijuca Forest\"]},\n  {\"name\":\"Cusco\",\"country\":\"Peru\",\"coordinates\":[-13.532,-71.9675],\"continent\":\"South America\",\"best_months\":[5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":25,\"mid\":70,\"luxury\":220},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Lima\",\"currency\":\"PEN\",\"language\":\"Spanish\",\"highlights\":[\"Machu Picchu\",\"Sacred Valley\",\"Plaza de Armas\",\"San Pedro Market\",\"Rainbow Mountain\"]},\n  {\"name\":\"Dubrovnik\",\"country\":\"Croatia\",\"coordinates\":[42.6507,18.0944],\"continent\":\"Europe\",\"best_months\":[5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":55,\"mid\":150,\"luxury\":420},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Zagreb\",\"currency\":\"EUR\",\"language\":\"Croatian\",\"highlights\":[\"Old Town Walls\",\"Stradun\",\"Fort Lovrijenac\",\"Lokrum Island\",\"Cable Car\"]},\n  {\"name\":\"Santorini\",\"country\":\"Greece\",\"coordinates\":[36.3932,25.4615],\"continent\":\"Europe\",\"best_months\":[5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":60,\"mid\":170,\"luxury\":500},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Athens\",\"currency\":\"EUR\",\"language\":\"Greek\",\"highlights\":[\"Oia Sunset\",\"Fira\",\"Red Beach\",\"Akrotiri\",\"Caldera Cruise\"]},\n  {\"name\":\"Vienna\",\"country\":\"Austria\",\"coordinates\":[48.2082,16.3738],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":60,\"mid\":165,\"luxury\":480},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Vienna\",\"currency\":\"EUR\",\"language\":\"German\",\"highlights\":[\"Schönbrunn Palace\",\"St. Stephen's Cathedral\",\"Belvedere\",\"Hofburg\",\"Naschmarkt\"]},\n  {\"name\":\"Berlin\",\"country\":\"Germany\",\"coordinates\":[52.52,13.405],\"continent\":\"Europe\",\"best_months\":[5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":55,\"mid\":150,\"luxury\":430},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Berlin\",\"currency\":\"EUR\",\"language\":\"German\",\"highlights\":[\"Brandenburg Gate\",\"East Side Gallery\",\"Museum Island\",\"Reichstag\",\"Tiergarten\"]},\n  {\"name\":\"Zurich\",\"country\":\"Switzerland\",\"coordinates\":[47.3769,8.5417],\"continent\":\"Europe\",\"best_months\":[5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":105,\"mid\":280,\"luxury\":750},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Zurich\",\"currency\":\"CHF\",\"language\":\"German\",\"highlights\":[\"Lake Zurich\",\"Old Town\",\"Kunsthaus\",\"Bahnhofstrasse\",\"Uetliberg\"]},\n  {\"name\":\"Copenhagen\",\"country\":\"Denmark\",\"coordinates\":[55.6761,12.5683],\"continent\":\"Europe\",\"best_months\":[5,6,7,8],\"avg_daily_cost_usd\":{\"budget\":80,\"mid\":220,\"luxury\":600},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Copenhagen\",\"currency\":\"DKK\",\"language\":\"Danish\",\"highlights\":[\"Nyhavn\",\"Tivoli Gardens\",\"Little Mermaid\",\"Christiania\",\"Rosenborg Castle\"]},\n  {\"name\":\"Edinburgh\",\"country\":\"United Kingdom\",\"coordinates\":[55.9533,-3.1883],\"continent\":\"Europe\",\"best_months\":[5,6,7,8],\"avg_daily_cost_usd\":{\"budget\":65,\"mid\":175,\"luxury\":500},\"visa_free_for\":[\"US\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/London\",\"currency\":\"GBP\",\"language\":\"English\",\"highlights\":[\"Edinburgh Castle\",\"Royal Mile\",\"Arthur's Seat\",\"Holyrood Palace\",\"Scotch Whisky Trail\"]},\n  {\"name\":\"Budapest\",\"country\":\"Hungary\",\"coordinates\":[47.4979,19.0402],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":35,\"mid\":95,\"luxury\":290},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Budapest\",\"currency\":\"HUF\",\"language\":\"Hungarian\",\"highlights\":[\"Buda Castle\",\"Széchenyi Thermal Bath\",\"Parliament\",\"Fisherman's Bastion\",\"Ruin Bars\"]},\n  {\"name\":\"Osaka\",\"country\":\"Japan\",\"coordinates\":[34.6937,135.5023],\"continent\":\"Asia\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":55,\"mid\":155,\"luxury\":450},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"SG\",\"KR\"],\"timezone\":\"Asia/Tokyo\",\"currency\":\"JPY\",\"language\":\"Japanese\",\"highlights\":[\"Dotonbori\",\"Osaka Castle\",\"Kuromon Market\",\"Universal Studios\",\"Shinsekai\"]},\n  {\"name\":\"Taipei\",\"country\":\"Taiwan\",\"coordinates\":[25.033,121.5654],\"continent\":\"Asia\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":40,\"mid\":110,\"luxury\":330},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Asia/Taipei\",\"currency\":\"TWD\",\"language\":\"Mandarin\",\"highlights\":[\"Taipei 101\",\"Night Markets\",\"Longshan Temple\",\"Jiufen\",\"Yangmingshan\"]},\n  {\"name\":\"Hong Kong\",\"country\":\"China\",\"coordinates\":[22.3193,114.1694],\"continent\":\"Asia\",\"best_months\":[10,11,12,3,4],\"avg_daily_cost_usd\":{\"budget\":60,\"mid\":170,\"luxury\":500},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Asia/Hong_Kong\",\"currency\":\"HKD\",\"language\":\"Cantonese\",\"highlights\":[\"Victoria Peak\",\"Star Ferry\",\"Temple Street Market\",\"Big Buddha\",\"Kowloon\"]},\n  {\"name\":\"Chiang Mai\",\"country\":\"Thailand\",\"coordinates\":[18.7883,98.9853],\"continent\":\"Asia\",\"best_months\":[11,12,1,2],\"avg_daily_cost_usd\":{\"budget\":22,\"mid\":60,\"luxury\":180},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Asia/Bangkok\",\"currency\":\"THB\",\"language\":\"Thai\",\"highlights\":[\"Old City Temples\",\"Doi Suthep\",\"Night Bazaar\",\"Elephant Sanctuaries\",\"Cooking Classes\"]},\n  {\"name\":\"Siem Reap\",\"country\":\"Cambodia\",\"coordinates\":[13.3671,103.8448],\"continent\":\"Asia\",\"best_months\":[11,12,1,2,3],\"avg_daily_cost_usd\":{\"budget\":18,\"mid\":55,\"luxury\":170},\"visa_free_for\":[\"MY\",\"SG\",\"PH\"],\"timezone\":\"Asia/Phnom_Penh\",\"currency\":\"USD\",\"language\":\"Khmer\",\"highlights\":[\"Angkor Wat\",\"Angkor Thom\",\"Ta Prohm\",\"Tonle Sap\",\"Pub Street\"]},\n  {\"name\":\"Petra\",\"country\":\"Jordan\",\"coordinates\":[30.3285,35.4444],\"continent\":\"Asia\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":45,\"mid\":120,\"luxury\":350},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Asia/Amman\",\"currency\":\"JOD\",\"language\":\"Arabic\",\"highlights\":[\"The Treasury\",\"Monastery\",\"Siq\",\"Royal Tombs\",\"Wadi Rum\"]},\n  {\"name\":\"Cairo\",\"country\":\"Egypt\",\"coordinates\":[30.0444,31.2357],\"continent\":\"Africa\",\"best_months\":[10,11,12,3,4],\"avg_daily_cost_usd\":{\"budget\":25,\"mid\":65,\"luxury\":200},\"visa_free_for\":[\"MY\",\"HK\",\"MO\"],\"timezone\":\"Africa/Cairo\",\"currency\":\"EGP\",\"language\":\"Arabic\",\"highlights\":[\"Pyramids of Giza\",\"Egyptian Museum\",\"Khan el-Khalili\",\"Nile Cruise\",\"Sphinx\"]},\n  {\"name\":\"Nairobi\",\"country\":\"Kenya\",\"coordinates\":[-1.2921,36.8219],\"continent\":\"Africa\",\"best_months\":[1,2,7,8,9],\"avg_daily_cost_usd\":{\"budget\":35,\"mid\":100,\"luxury\":350},\"visa_free_for\":[],\"timezone\":\"Africa/Nairobi\",\"currency\":\"KES\",\"language\":\"English\",\"highlights\":[\"Nairobi National Park\",\"Giraffe Centre\",\"Karen Blixen Museum\",\"Masai Market\",\"David Sheldrick\"]},\n  {\"name\":\"Zanzibar\",\"country\":\"Tanzania\",\"coordinates\":[-6.1659,39.2026],\"continent\":\"Africa\",\"best_months\":[6,7,8,9,1,2],\"avg_daily_cost_usd\":{\"budget\":30,\"mid\":80,\"luxury\":260},\"visa_free_for\":[],\"timezone\":\"Africa/Dar_es_Salaam\",\"currency\":\"TZS\",\"language\":\"Swahili\",\"highlights\":[\"Stone Town\",\"Nungwi Beach\",\"Prison Island\",\"Spice Tours\",\"Mnemba Atoll\"]},\n  {\"name\":\"Queenstown\",\"country\":\"New Zealand\",\"coordinates\":[-45.0312,168.6626],\"continent\":\"Oceania\",\"best_months\":[12,1,2,3,6,7,8],\"avg_daily_cost_usd\":{\"budget\":70,\"mid\":190,\"luxury\":520},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"JP\",\"KR\",\"SG\"],\"timezone\":\"Pacific/Auckland\",\"currency\":\"NZD\",\"language\":\"English\",\"highlights\":[\"Bungee Jumping\",\"Milford Sound\",\"Skyline Gondola\",\"Lake Wakatipu\",\"Skiing\"]},\n  {\"name\":\"Cartagena\",\"country\":\"Colombia\",\"coordinates\":[10.391,-75.5144],\"continent\":\"South America\",\"best_months\":[12,1,2,3,4],\"avg_daily_cost_usd\":{\"budget\":30,\"mid\":80,\"luxury\":250},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Bogota\",\"currency\":\"COP\",\"language\":\"Spanish\",\"highlights\":[\"Walled City\",\"Castillo San Felipe\",\"Rosario Islands\",\"Getsemaní\",\"Café del Mar\"]},\n  {\"name\":\"Havana\",\"country\":\"Cuba\",\"coordinates\":[23.1136,-82.3666],\"continent\":\"North America\",\"best_months\":[11,12,1,2,3,4],\"avg_daily_cost_usd\":{\"budget\":30,\"mid\":75,\"luxury\":200},\"visa_free_for\":[],\"timezone\":\"America/Havana\",\"currency\":\"CUP\",\"language\":\"Spanish\",\"highlights\":[\"Old Havana\",\"Malecón\",\"Capitolio\",\"Fusterlandia\",\"Classic Cars\"]},\n  {\"name\":\"Medellín\",\"country\":\"Colombia\",\"coordinates\":[6.2476,-75.5658],\"continent\":\"South America\",\"best_months\":[12,1,2,3,7,8],\"avg_daily_cost_usd\":{\"budget\":25,\"mid\":65,\"luxury\":200},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Bogota\",\"currency\":\"COP\",\"language\":\"Spanish\",\"highlights\":[\"Comuna 13\",\"Metrocable\",\"Botanical Garden\",\"El Poblado\",\"Guatapé\"]},\n  {\"name\":\"Jaipur\",\"country\":\"India\",\"coordinates\":[26.9124,75.7873],\"continent\":\"Asia\",\"best_months\":[10,11,12,2,3],\"avg_daily_cost_usd\":{\"budget\":15,\"mid\":50,\"luxury\":180},\"visa_free_for\":[],\"timezone\":\"Asia/Kolkata\",\"currency\":\"INR\",\"language\":\"Hindi\",\"highlights\":[\"Amber Fort\",\"Hawa Mahal\",\"City Palace\",\"Jantar Mantar\",\"Nahargarh Fort\"]},\n  {\"name\":\"Kathmandu\",\"country\":\"Nepal\",\"coordinates\":[27.7172,85.324],\"continent\":\"Asia\",\"best_months\":[10,11,3,4],\"avg_daily_cost_usd\":{\"budget\":15,\"mid\":45,\"luxury\":150},\"visa_free_for\":[],\"timezone\":\"Asia/Kathmandu\",\"currency\":\"NPR\",\"language\":\"Nepali\",\"highlights\":[\"Swayambhunath\",\"Boudhanath\",\"Durbar Square\",\"Thamel\",\"Pashupatinath\"]},\n  {\"name\":\"Athens\",\"country\":\"Greece\",\"coordinates\":[37.9838,23.7275],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":50,\"mid\":130,\"luxury\":380},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Athens\",\"currency\":\"EUR\",\"language\":\"Greek\",\"highlights\":[\"Acropolis\",\"Parthenon\",\"Plaka\",\"Ancient Agora\",\"National Archaeological Museum\"]},\n  {\"name\":\"Florence\",\"country\":\"Italy\",\"coordinates\":[43.7696,11.2558],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":60,\"mid\":165,\"luxury\":480},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Rome\",\"currency\":\"EUR\",\"language\":\"Italian\",\"highlights\":[\"Uffizi Gallery\",\"Duomo\",\"Ponte Vecchio\",\"Piazzale Michelangelo\",\"Boboli Gardens\"]},\n  {\"name\":\"Venice\",\"country\":\"Italy\",\"coordinates\":[45.4408,12.3155],\"continent\":\"Europe\",\"best_months\":[4,5,9,10],\"avg_daily_cost_usd\":{\"budget\":70,\"mid\":195,\"luxury\":550},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Rome\",\"currency\":\"EUR\",\"language\":\"Italian\",\"highlights\":[\"St. Mark's Basilica\",\"Grand Canal\",\"Rialto Bridge\",\"Doge's Palace\",\"Murano\"]},\n  {\"name\":\"Amalfi Coast\",\"country\":\"Italy\",\"coordinates\":[40.6333,14.6029],\"continent\":\"Europe\",\"best_months\":[5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":65,\"mid\":180,\"luxury\":520},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Rome\",\"currency\":\"EUR\",\"language\":\"Italian\",\"highlights\":[\"Positano\",\"Ravello\",\"Path of the Gods\",\"Amalfi Cathedral\",\"Capri\"]},\n  {\"name\":\"Cinque Terre\",\"country\":\"Italy\",\"coordinates\":[44.1461,9.6439],\"continent\":\"Europe\",\"best_months\":[5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":60,\"mid\":160,\"luxury\":440},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Rome\",\"currency\":\"EUR\",\"language\":\"Italian\",\"highlights\":[\"Riomaggiore\",\"Manarola\",\"Vernazza\",\"Hiking Trails\",\"Pesto\"]},\n  {\"name\":\"Munich\",\"country\":\"Germany\",\"coordinates\":[48.1351,11.582],\"continent\":\"Europe\",\"best_months\":[5,6,7,8,9,10],\"avg_daily_cost_usd\":{\"budget\":60,\"mid\":170,\"luxury\":480},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Berlin\",\"currency\":\"EUR\",\"language\":\"German\",\"highlights\":[\"Marienplatz\",\"Englischer Garten\",\"Neuschwanstein\",\"BMW Museum\",\"Oktoberfest\"]},\n  {\"name\":\"Bruges\",\"country\":\"Belgium\",\"coordinates\":[51.2093,3.2247],\"continent\":\"Europe\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":55,\"mid\":150,\"luxury\":420},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Brussels\",\"currency\":\"EUR\",\"language\":\"Dutch\",\"highlights\":[\"Markt Square\",\"Belfry\",\"Canals\",\"Chocolate Shops\",\"Basilica of Holy Blood\"]},\n  {\"name\":\"Salzburg\",\"country\":\"Austria\",\"coordinates\":[47.8095,13.055],\"continent\":\"Europe\",\"best_months\":[5,6,7,8,9,12],\"avg_daily_cost_usd\":{\"budget\":55,\"mid\":155,\"luxury\":440},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Vienna\",\"currency\":\"EUR\",\"language\":\"German\",\"highlights\":[\"Hohensalzburg Fortress\",\"Mozart's Birthplace\",\"Mirabell Gardens\",\"Old Town\",\"Sound of Music Tour\"]},\n  {\"name\":\"Kraków\",\"country\":\"Poland\",\"coordinates\":[50.0647,19.945],\"continent\":\"Europe\",\"best_months\":[5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":30,\"mid\":80,\"luxury\":250},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Warsaw\",\"currency\":\"PLN\",\"language\":\"Polish\",\"highlights\":[\"Wawel Castle\",\"Main Market Square\",\"Kazimierz\",\"Wieliczka Salt Mine\",\"Auschwitz Memorial\"]},\n  {\"name\":\"Split\",\"country\":\"Croatia\",\"coordinates\":[43.5081,16.4402],\"continent\":\"Europe\",\"best_months\":[5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":45,\"mid\":120,\"luxury\":350},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Zagreb\",\"currency\":\"EUR\",\"language\":\"Croatian\",\"highlights\":[\"Diocletian's Palace\",\"Riva Promenade\",\"Marjan Hill\",\"Krka Falls\",\"Hvar Island\"]},\n  {\"name\":\"Tallinn\",\"country\":\"Estonia\",\"coordinates\":[59.437,24.7536],\"continent\":\"Europe\",\"best_months\":[5,6,7,8],\"avg_daily_cost_usd\":{\"budget\":35,\"mid\":95,\"luxury\":280},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Tallinn\",\"currency\":\"EUR\",\"language\":\"Estonian\",\"highlights\":[\"Old Town\",\"Toompea Castle\",\"Alexander Nevsky Cathedral\",\"Telliskivi\",\"Kadriorg Palace\"]},\n  {\"name\":\"Helsinki\",\"country\":\"Finland\",\"coordinates\":[60.1699,24.9384],\"continent\":\"Europe\",\"best_months\":[6,7,8],\"avg_daily_cost_usd\":{\"budget\":75,\"mid\":200,\"luxury\":540},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Helsinki\",\"currency\":\"EUR\",\"language\":\"Finnish\",\"highlights\":[\"Suomenlinna\",\"Helsinki Cathedral\",\"Design District\",\"Temppeliaukio Church\",\"Saunas\"]},\n  {\"name\":\"Stockholm\",\"country\":\"Sweden\",\"coordinates\":[59.3293,18.0686],\"continent\":\"Europe\",\"best_months\":[6,7,8],\"avg_daily_cost_usd\":{\"budget\":75,\"mid\":210,\"luxury\":560},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Stockholm\",\"currency\":\"SEK\",\"language\":\"Swedish\",\"highlights\":[\"Gamla Stan\",\"Vasa Museum\",\"ABBA Museum\",\"Djurgården\",\"Archipelago\"]},\n  {\"name\":\"Oslo\",\"country\":\"Norway\",\"coordinates\":[59.9139,10.7522],\"continent\":\"Europe\",\"best_months\":[6,7,8],\"avg_daily_cost_usd\":{\"budget\":85,\"mid\":240,\"luxury\":650},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Oslo\",\"currency\":\"NOK\",\"language\":\"Norwegian\",\"highlights\":[\"Vigeland Sculpture Park\",\"Opera House\",\"Munch Museum\",\"Bygdøy\",\"Fjord Cruise\"]},\n  {\"name\":\"Dublin\",\"country\":\"Ireland\",\"coordinates\":[53.3498,-6.2603],\"continent\":\"Europe\",\"best_months\":[5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":65,\"mid\":180,\"luxury\":500},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Dublin\",\"currency\":\"EUR\",\"language\":\"English\",\"highlights\":[\"Trinity College\",\"Temple Bar\",\"Guinness Storehouse\",\"St. Patrick's Cathedral\",\"Kilmainham Gaol\"]},\n  {\"name\":\"Seville\",\"country\":\"Spain\",\"coordinates\":[37.3891,-5.9845],\"continent\":\"Europe\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":45,\"mid\":120,\"luxury\":360},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Madrid\",\"currency\":\"EUR\",\"language\":\"Spanish\",\"highlights\":[\"Alcázar\",\"Cathedral\",\"Plaza de España\",\"Flamenco Shows\",\"Triana\"]},\n  {\"name\":\"Granada\",\"country\":\"Spain\",\"coordinates\":[37.1773,-3.5986],\"continent\":\"Europe\",\"best_months\":[3,4,5,9,10],\"avg_daily_cost_usd\":{\"budget\":40,\"mid\":105,\"luxury\":300},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Madrid\",\"currency\":\"EUR\",\"language\":\"Spanish\",\"highlights\":[\"Alhambra\",\"Albaicín\",\"Sierra Nevada\",\"Sacromonte Caves\",\"Tapas Bars\"]},\n  {\"name\":\"Porto\",\"country\":\"Portugal\",\"coordinates\":[41.1579,-8.6291],\"continent\":\"Europe\",\"best_months\":[5,6,7,9,10],\"avg_daily_cost_usd\":{\"budget\":45,\"mid\":120,\"luxury\":350},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\",\"BR\"],\"timezone\":\"Europe/Lisbon\",\"currency\":\"EUR\",\"language\":\"Portuguese\",\"highlights\":[\"Ribeira District\",\"Port Wine Cellars\",\"Livraria Lello\",\"Dom Luís I Bridge\",\"São Bento Station\"]},\n  {\"name\":\"Nice\",\"country\":\"France\",\"coordinates\":[43.7102,7.262],\"continent\":\"Europe\",\"best_months\":[5,6,7,9,10],\"avg_daily_cost_usd\":{\"budget\":65,\"mid\":175,\"luxury\":500},\"visa_free_for\":[\"US\",\"UK\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Europe/Paris\",\"currency\":\"EUR\",\"language\":\"French\",\"highlights\":[\"Promenade des Anglais\",\"Old Town\",\"Castle Hill\",\"Matisse Museum\",\"Day trip to Monaco\"]},\n  {\"name\":\"San Francisco\",\"country\":\"United States\",\"coordinates\":[37.7749,-122.4194],\"continent\":\"North America\",\"best_months\":[9,10,4,5],\"avg_daily_cost_usd\":{\"budget\":85,\"mid\":230,\"luxury\":650},\"visa_free_for\":[\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Los_Angeles\",\"currency\":\"USD\",\"language\":\"English\",\"highlights\":[\"Golden Gate Bridge\",\"Alcatraz\",\"Fisherman's Wharf\",\"Chinatown\",\"Cable Cars\"]},\n  {\"name\":\"Los Angeles\",\"country\":\"United States\",\"coordinates\":[34.0522,-118.2437],\"continent\":\"North America\",\"best_months\":[3,4,5,9,10,11],\"avg_daily_cost_usd\":{\"budget\":80,\"mid\":220,\"luxury\":600},\"visa_free_for\":[\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Los_Angeles\",\"currency\":\"USD\",\"language\":\"English\",\"highlights\":[\"Hollywood\",\"Santa Monica\",\"Griffith Observatory\",\"Getty Center\",\"Venice Beach\"]},\n  {\"name\":\"Las Vegas\",\"country\":\"United States\",\"coordinates\":[36.1699,-115.1398],\"continent\":\"North America\",\"best_months\":[3,4,5,10,11],\"avg_daily_cost_usd\":{\"budget\":60,\"mid\":180,\"luxury\":550},\"visa_free_for\":[\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Los_Angeles\",\"currency\":\"USD\",\"language\":\"English\",\"highlights\":[\"The Strip\",\"Fremont Street\",\"Grand Canyon Day Trip\",\"Shows\",\"Red Rock Canyon\"]},\n  {\"name\":\"Miami\",\"country\":\"United States\",\"coordinates\":[25.7617,-80.1918],\"continent\":\"North America\",\"best_months\":[11,12,1,2,3,4],\"avg_daily_cost_usd\":{\"budget\":70,\"mid\":200,\"luxury\":580},\"visa_free_for\":[\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/New_York\",\"currency\":\"USD\",\"language\":\"English\",\"highlights\":[\"South Beach\",\"Art Deco District\",\"Wynwood Walls\",\"Little Havana\",\"Everglades\"]},\n  {\"name\":\"Honolulu\",\"country\":\"United States\",\"coordinates\":[21.3069,-157.8583],\"continent\":\"Oceania\",\"best_months\":[4,5,6,9,10],\"avg_daily_cost_usd\":{\"budget\":75,\"mid\":210,\"luxury\":580},\"visa_free_for\":[\"UK\",\"EU\",\"CA\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"Pacific/Honolulu\",\"currency\":\"USD\",\"language\":\"English\",\"highlights\":[\"Waikiki Beach\",\"Diamond Head\",\"Pearl Harbor\",\"North Shore\",\"Hanauma Bay\"]},\n  {\"name\":\"Vancouver\",\"country\":\"Canada\",\"coordinates\":[49.2827,-123.1207],\"continent\":\"North America\",\"best_months\":[6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":65,\"mid\":180,\"luxury\":500},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Vancouver\",\"currency\":\"CAD\",\"language\":\"English\",\"highlights\":[\"Stanley Park\",\"Granville Island\",\"Capilano Bridge\",\"Gastown\",\"Grouse Mountain\"]},\n  {\"name\":\"Toronto\",\"country\":\"Canada\",\"coordinates\":[43.6532,-79.3832],\"continent\":\"North America\",\"best_months\":[5,6,7,8,9],\"avg_daily_cost_usd\":{\"budget\":60,\"mid\":170,\"luxury\":480},\"visa_free_for\":[\"US\",\"UK\",\"EU\",\"AU\",\"NZ\",\"JP\",\"KR\"],\"timezone\":\"America/Toronto\",\"currency\":\"CAD\",\"language\":\"English\",\"highlights\":[\"CN Tower\",\"Royal Onta\n\nArchive v2.0.42: 16 files, 112376 bytes\n\nFiles: README.md (7591b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (122645b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (67949b), skill-card.md (2469b), SKILL.md (26782b), _meta.json (173b)\n\nArchive v2.0.41: 16 files, 111144 bytes\n\nFiles: README.md (7374b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (118845b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (65485b), skill-card.md (2834b), SKILL.md (26434b), _meta.json (173b)\n\nArchive v2.0.40: 16 files, 110272 bytes\n\nFiles: README.md (7058b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (115181b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (62461b), skill-card.md (3035b), SKILL.md (26096b), _meta.json (173b)\n\nArchive v2.0.39: 16 files, 109213 bytes\n\nFiles: README.md (7058b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (113763b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (59253b), skill-card.md (2707b), SKILL.md (25706b), _meta.json (173b)\n\nArchive v2.0.38: 16 files, 108058 bytes\n\nFiles: README.md (6860b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (109594b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (56793b), skill-card.md (2609b), SKILL.md (25359b), _meta.json (173b)\n\nArchive v2.0.37: 16 files, 106990 bytes\n\nFiles: README.md (6647b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (106367b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (54733b), skill-card.md (2570b), SKILL.md (25015b), _meta.json (173b)\n\nArchive v2.0.36: 16 files, 106112 bytes\n\nFiles: README.md (6401b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (103272b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (52583b), skill-card.md (2739b), SKILL.md (24630b), _meta.json (173b)\n\nArchive v2.0.35: 16 files, 105118 bytes\n\nFiles: README.md (6206b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (99848b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (50975b), skill-card.md (2709b), SKILL.md (24290b), _meta.json (173b)\n\nArchive v2.0.34: 16 files, 104232 bytes\n\nFiles: README.md (6206b), references/activities.json (5374b), references/airlines.json (8594b), references/airports.json (65145b), references/booking-integrations.json (7480b), references/budget-benchmarks.json (4590b), references/destinations.json (76534b), references/embed-snippets.json (1078b), scripts/export-gmaps.sh (8197b), scripts/gen-airports.py (45617b), scripts/plan.sh (96387b), scripts/socket-review-check.sh (2527b), scripts/test-plan-constraints.sh (49182b), skill-card.md (2711b), SKILL.md (23977b), _meta.json (173b)","readmeExcerpt":"Skill: Kontour Travel Planner Owner: skylinehk Summary: Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow. Tags: itinerary:2.0.3, latest:2.0.43, offline:2.0.3, planning:2.0.3, travel:2.0.3 Version history: v2.0.43 | 2026-09-22T10:41:52.022Z | user Add post-nudge hold packet so operators wait after one reminder instead o","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Should return no matches for network clients used by runtime scripts\nrg -n \"python3 -c|eval\\(|exec\\(|os\\.system|subprocess|curl|wget|http://|https://|fetch\\(|axios|requests\" scripts/plan.sh scripts/export-gmaps.sh\n\n# Reviewer-oriented trust smoke checks (license, secrets, dynamic execution)\n./scripts/socket-review-check.sh"},{"language":"json","snippet":"{\n  \"destination\": { \"name\": \"Tokyo\", \"country\": \"Japan\", \"coordinates\": [35.6762, 139.6503] },\n  \"dates\": { \"start\": \"2026-04-01\", \"end\": \"2026-04-08\" },\n  \"duration\": 8,\n  \"travelers\": { \"adults\": 2, \"children\": 0 },\n  \"budget\": { \"total\": 6000, \"currency\": \"USD\", \"tier\": \"mid\" },\n  \"interests\": [\"food\", \"culture\", \"technology\"],\n  \"accommodation\": \"boutique hotel\",\n  \"transport\": [\"flights\", \"metro\"],\n  \"constraints\": [\"no raw fish\"]\n}"},{"language":"bash","snippet":"# Get structured trip context from a natural language query\n./scripts/plan.sh \"2 weeks in Japan for a couple, mid-range budget, interested in food and temples\"\n\n# Compare 2-3 destination options with budget, seasonality, fit factors, and tradeoffs\n./scripts/plan.sh \"compare Tokyo vs Paris vs Bangkok for 7 days for a couple, mid range budget, food and culture, relaxed pace\""},{"language":"bash","snippet":"# Generate Google Maps URL with waypoints + per-day routes\n./scripts/export-gmaps.sh itinerary.json\n\n# Also export KML for import into Google Earth/Maps\n./scripts/export-gmaps.sh itinerary.json --kml trip.kml"},{"language":"json","snippet":"{\n  \"days\": [{\n    \"day\": 1,\n    \"locations\": [\n      {\"name\": \"Senso-ji Temple\", \"lat\": 35.7148, \"lng\": 139.7967},\n      {\"name\": \"Tsukiji Outer Market\", \"lat\": 35.6654, \"lng\": 139.7707}\n    ]\n  }]\n}"},{"language":"markdown","snippet":"## 🗾 Tokyo Adventure — Apr 1-8, 2026\n👥 2 travelers | 💰 $6,000 budget | 🏨 Boutique hotels\n\n### Day 1: Asakusa & Traditional Tokyo\n- 🕐 9:00 Senso-ji Temple (2h)\n- 🕐 12:00 Nakamise Street lunch\n- 🕐 14:00 Tokyo National Museum (3h)\n..."}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: kontour-travel-planner\ndescription: Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow.\nversion: 2.0.43\nlicense: MIT-0\nmetadata:\n  openclaw:\n    emoji: \"🧭\"\n    requires:\n      env: []\n      bins:\n        - bash\n        - python3\n---\n\n# Kontour Travel Planner\n\n> The planning brain that any AI agent can plug in. Not a search wrapper — a planning **methodology**.\n\nThis skill transforms any agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model.\n\n## Requirements\n\n**No API keys or credentials required.** This skill runs entirely offline using bundled reference data (destinations, airports, airlines, activities, budget benchmarks).\n\n- **Scripts** (`plan.sh`, `export-gmaps.sh`) — Pure local processing. No external API calls. Generates Google Maps URLs as plain links (no API key needed).\n- **Reference data** (`references/`) — Static JSON files bundled with the skill.\n- **`embed-snippets.json`** — Optional static marketing templates. These are informational only, do not load remote code, and are not required for planning functionality.\n- **`booking-integrations.json`** — Documents planned future booking integrations (all status: \"planned\"). No active API connections.\n\n### Security Transparency (for skill marketplaces)\n\nTo reduce false-positive trust flags and improve reviewer confidence:\n\n- Runtime network behavior: `plan.sh` and `export-gmaps.sh` make **no outbound HTTP/API calls**.\n- Credentials required: **none** (no API keys, tokens, OAuth, or env secrets).\n- Declared runtime dependencies in frontmatter: `bash`, `python3` only.\n- Data handling: all trip extraction and route generation are local; output is plain JSON, links, and optional KML.\n- External CTA examples are informational only and not required for core planning.\n\nQuick local verification:\n\n```bash\n# Should return no matches for network clients used by runtime scripts\nrg -n \"python3 -c|eval\\(|exec\\(|os\\.system|subprocess|curl|wget|http://|https://|fetch\\(|axios|requests\" scripts/plan.sh scripts/export-gmaps.sh\n\n# Reviewer-oriented trust smoke checks (license, secrets, dynamic execution)\n./scripts/socket-review-check.sh\n```\n\n## How It Works\n\n### 9-Dimension Planning Model\n\nEvery trip is tracked across 9 weighted dimensions:\n\n| Dimension | Weight | What to Extract |\n|-----------|--------|----------------|\n| **Dates** | 20 | Specific dates, flexible windows, \"next month\", seasons |\n| **Destination** | 15 | City, country, region, multi-city routes |\n| **Budget** | 15 | Dollar range, tier (budget/mid/luxury), per-person vs total |\n| **Duration** | 10 | Number of days, weekend vs week-long |\n| **Travelers** | 10 | Count, adults/children/seniors, solo/couple/family/group |\n| **Interests** | 10 | Activities, themes (adventure, food, culture, relaxation) |\n| **Accommodation** | 10 | Hotel, hostel, Airbnb, resort, boutique |\n| **Transport** | 5 | Fligh"},{"path":"README.md","content":"# kontour-travel-planner\n\nAI agent skill for world-class travel planning using a 9-dimension progressive planning model.\n\n## Install\n\n```bash\nnpx skills add kontour-travel-planner\n```\n\nOr browse on a supported skill marketplace.\n\n## What This Skill Does\n\nTransforms any AI agent into a travel planning consultant using a structured methodology:\n\n- **9 weighted dimensions** — dates, destination, budget, duration, travelers, interests, accommodation, transport, constraints\n- **4-stage conversation flow** — Discover → Develop → Refine → Confirm\n- **Guided discovery** — one high-impact question per turn, concrete options, conflict detection\n- **Structured output** — trip context JSON, candidate scoring explanations, output polish with owner-tagged next actions, day-by-day itinerary, budget breakdown, Google Maps export\n- **Reference data** — 200 destinations, 500 airports, airlines, activities, budget benchmarks (no API needed)\n\n## Reference Data\n\nGround truth files in `references/`:\n\n| File | Contents |\n|------|----------|\n| `destinations.json` | 200 global destinations with coordinates, costs, best months |\n| `airports.json` | 500 airports with IATA codes and coordinates |\n| `airlines.json` | Major airlines with alliances, hubs, regions |\n| `activities.json` | Activity types with durations, cost tiers |\n| `budget-benchmarks.json` | Daily cost benchmarks by destination tier |\n| `booking-integrations.json` | Integration roadmap for booking providers |\n| `embed-snippets.json` | Optional static CTA/template examples |\n\n## Constraint Capture Smoke Test\n\nThe planner extracts operator-visible constraint details from natural-language requests, including budget caps, trip pace, neighborhood/base preference, opening-hours sensitivity, food preference, and weather sensitivity. Run the offline regression check with:\n\n```bash\n./scripts/test-plan-constraints.sh\n```\n\n## Candidate Scoring Explanations\n\nWhen the request includes a known destination, `scripts/plan.sh` now emits `suggested_places` with ranked highlights and concise `why_chosen` factors. Each explanation references at least two concrete scoring factors such as destination fit, thematic fit, budget fit, hours sensitivity, or weather screening, so operators can see why a place entered the first-pass plan.\n\n## Day-Plan Continuity\n\nFor known destinations with enough ranked highlights, `scripts/plan.sh` emits `day_plan_continuity`: a morning/afternoon/evening sequencing scaffold with zones, continuity reasons, and transition rationale. This gives operators a compact first pass that reduces avoidable backtracking before a full itinerary or route export is finalized.\n\n## Risk + Fallback Warnings\n\nWhen constraints make a first-pass plan fragile, `scripts/plan.sh` emits `risk_fallbacks` instead of failing bluntly. The warnings currently cover closed-venue/opening-hours risk, weather mismatch, sparse-area destinations outside bundled references, and over-constrained budget caps, with each warning naming the neare"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn78yww77gm7hxwgx0jewrmag981vb1p\",\n  \"slug\": \"travel-planner-notion-ai-obsidian-kontour-integration\",\n  \"version\": \"2.0.43\",\n  \"publishedAt\": 1790073712022\n}"},{"path":"references/activities.json","content":"[\n  {\"category\": \"Museum/Gallery\", \"typical_duration_hours\": 2.5, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"family\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Historical Site\", \"typical_duration_hours\": 2, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"City Walking Tour\", \"typical_duration_hours\": 3, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Food Tour\", \"typical_duration_hours\": 3.5, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"both\"},\n  {\"category\": \"Cooking Class\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Wine/Beer Tasting\", \"typical_duration_hours\": 2, \"cost_tier\": \"mid\", \"best_for\": [\"couple\", \"group\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Snorkeling\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"family\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Scuba Diving\", \"typical_duration_hours\": 4, \"cost_tier\": \"luxury\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Hiking/Trekking\", \"typical_duration_hours\": 5, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Beach Day\", \"typical_duration_hours\": 5, \"cost_tier\": \"budget\", \"best_for\": [\"solo\", \"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Surfing Lesson\", \"typical_duration_hours\": 2, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Zip-lining\", \"typical_duration_hours\": 2, \"cost_tier\": \"mid\", \"best_for\": [\"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Rock Climbing\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Kayaking/Canoeing\", \"typical_duration_hours\": 3, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"family\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Safari/Wildlife Tour\", \"typical_duration_hours\": 8, \"cost_tier\": \"luxury\", \"best_for\": [\"couple\", \"family\", \"group\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Hot Air Balloon\", \"typical_duration_hours\": 1.5, \"cost_tier\": \"luxury\", \"best_for\": [\"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Spa/Wellness\", \"typical_duration_hours\": 3, \"cost_tier\": \"luxury\", \"best_for\": [\"solo\", \"couple\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Theme Park\", \"typical_duration_hours\": 8, \"cost_tier\": \"mid\", \"best_for\": [\"family\", \"group\", \"couple\"], \"indoor_outdoor\": \"outdoor\"},\n  {\"category\": \"Nightlife/Bar Hopping\", \"typical_duration_hours\": 4, \"cost_tier\": \"mid\", \"best_for\": [\"solo\", \"couple\", \"group\"], \"indoor_outdoor\": \"indoor\"},\n  {\"category\": \"Theater/Show\", \"typical_duration_hours\": 2.5, \"cost_tier\": \"mid\", \"best_for\""},{"path":"references/airlines.json","content":"[\n  {\"name\": \"American Airlines\", \"iata\": \"AA\", \"alliance\": \"oneworld\", \"hubs\": [\"DFW\", \"CLT\", \"MIA\", \"PHL\", \"ORD\"], \"regions\": [\"North America\", \"Europe\", \"Latin America\", \"Asia\"]},\n  {\"name\": \"Delta Air Lines\", \"iata\": \"DL\", \"alliance\": \"SkyTeam\", \"hubs\": [\"ATL\", \"MSP\", \"DTW\", \"SLC\", \"SEA\", \"JFK\", \"LAX\", \"BOS\"], \"regions\": [\"North America\", \"Europe\", \"Asia\", \"Latin America\"]},\n  {\"name\": \"United Airlines\", \"iata\": \"UA\", \"alliance\": \"Star Alliance\", \"hubs\": [\"ORD\", \"EWR\", \"IAH\", \"DEN\", \"SFO\", \"LAX\", \"IAD\"], \"regions\": [\"North America\", \"Europe\", \"Asia\", \"Latin America\", \"Oceania\"]},\n  {\"name\": \"Southwest Airlines\", \"iata\": \"WN\", \"alliance\": null, \"hubs\": [\"DAL\", \"MDW\", \"BWI\", \"DEN\", \"LAS\", \"PHX\"], \"regions\": [\"North America\"]},\n  {\"name\": \"JetBlue Airways\", \"iata\": \"B6\", \"alliance\": null, \"hubs\": [\"JFK\", \"BOS\", \"FLL\", \"MCO\"], \"regions\": [\"North America\", \"Caribbean\"]},\n  {\"name\": \"Alaska Airlines\", \"iata\": \"AS\", \"alliance\": \"oneworld\", \"hubs\": [\"SEA\", \"SFO\", \"LAX\", \"PDX\"], \"regions\": [\"North America\"]},\n  {\"name\": \"Air Canada\", \"iata\": \"AC\", \"alliance\": \"Star Alliance\", \"hubs\": [\"YYZ\", \"YVR\", \"YUL\"], \"regions\": [\"North America\", \"Europe\", \"Asia\"]},\n  {\"name\": \"British Airways\", \"iata\": \"BA\", \"alliance\": \"oneworld\", \"hubs\": [\"LHR\", \"LGW\"], \"regions\": [\"Europe\", \"North America\", \"Asia\", \"Africa\"]},\n  {\"name\": \"Lufthansa\", \"iata\": \"LH\", \"alliance\": \"Star Alliance\", \"hubs\": [\"FRA\", \"MUC\"], \"regions\": [\"Europe\", \"North America\", \"Asia\", \"Africa\"]},\n  {\"name\": \"Air France\", \"iata\": \"AF\", \"alliance\": \"SkyTeam\", \"hubs\": [\"CDG\", \"ORY\"], \"regions\": [\"Europe\", \"North America\", \"Africa\", \"Asia\"]},\n  {\"name\": \"KLM\", \"iata\": \"KL\", \"alliance\": \"SkyTeam\", \"hubs\": [\"AMS\"], \"regions\": [\"Europe\", \"North America\", \"Asia\", \"Africa\"]},\n  {\"name\": \"Emirates\", \"iata\": \"EK\", \"alliance\": null, \"hubs\": [\"DXB\"], \"regions\": [\"Middle East\", \"Europe\", \"Asia\", \"Africa\", \"North America\", \"Oceania\"]},\n  {\"name\": \"Qatar Airways\", \"iata\": \"QR\", \"alliance\": \"oneworld\", \"hubs\": [\"DOH\"], \"regions\": [\"Middle East\", \"Europe\", \"Asia\", \"Africa\", \"North America\", \"Oceania\"]},\n  {\"name\": \"Etihad Airways\", \"iata\": \"EY\", \"alliance\": null, \"hubs\": [\"AUH\"], \"regions\": [\"Middle East\", \"Europe\", \"Asia\", \"Africa\", \"Oceania\"]},\n  {\"name\": \"Turkish Airlines\", \"iata\": \"TK\", \"alliance\": \"Star Alliance\", \"hubs\": [\"IST\"], \"regions\": [\"Europe\", \"Asia\", \"Africa\", \"Middle East\", \"North America\"]},\n  {\"name\": \"Singapore Airlines\", \"iata\": \"SQ\", \"alliance\": \"Star Alliance\", \"hubs\": [\"SIN\"], \"regions\": [\"Asia\", \"Europe\", \"Oceania\", \"North America\"]},\n  {\"name\": \"Cathay Pacific\", \"iata\": \"CX\", \"alliance\": \"oneworld\", \"hubs\": [\"HKG\"], \"regions\": [\"Asia\", \"Europe\", \"North America\", \"Oceania\"]},\n  {\"name\": \"Japan Airlines\", \"iata\": \"JL\", \"alliance\": \"oneworld\", \"hubs\": [\"NRT\", \"HND\"], \"regions\": [\"Asia\", \"North America\", \"Europe\"]},\n  {\"name\": \"ANA\", \"iata\": \"NH\", \"alliance\": \"Star Alliance\", \"hubs\": [\"NRT\", \"HND\"], \"regions\": [\"Asia\", \"North America\", \"Europe\"]},\n  {\"name\": \"Korean Air\", \"iata\": \"KE\", \"alliance"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow. Skill: Kontour Travel Planner Owner: skylinehk Summary: Transform any AI agent into a world-class travel planner using Kontour AI's 9-dimension progressive planning model with structured conversation flow. Tags: itinerary:2.0.3, latest:2.0.43, offline:2.0.3, planning:2.0.3, travel:2.0.3 Version history: v2.0.43 | 2026-09-22T10:41:52.022Z | user Add post-nudge hold packet so operators wait after one reminder instead o","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1956,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T04:04:33.585Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T04:04:33.585Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:14:47.171Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}