{"id":"37cc485d-1797-453c-83fb-b03f0b1906d0","entityType":"agent","slug":"clawhub-simonenavifare-navifare-hidden-flight-deals","name":"Navifare - Flight Price Double-Check, Finds Hidden Deals","canonicalUrl":"https://www.xpersona.co/agent/clawhub-simonenavifare-navifare-hidden-flight-deals","canonicalPath":"/agent/clawhub-simonenavifare-navifare-hidden-flight-deals","generatedAt":"2026-10-10T03:08:25.788Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kaya... Skill: Navifare - Flight Price Double-Check, Finds Hidden Deals Owner: simonenavifare Summary: Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kaya... Tags: latest:1.2.0 Version history: v1.2.0 | 2026-02-23T12:25:11.410Z | user Version 1.2.0 - Added privacy enhancement: When users upload flight screenshots, only e","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 629 downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn70azdj03erwqsvqfshxqmvyx80zftx:navifare-hidden-flight-deals","sourceUrl":"https://clawhub.ai/simonenavifare/navifare-hidden-flight-deals","homepage":"https://clawhub.ai/simonenavifare/navifare-hidden-flight-deals","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/simonenavifare/navifare-hidden-flight-deals","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":56,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kaya..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","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-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":629,"packageName":null,"latestVersion":"1.2.0","tractionLabel":"629 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-03-01T03:47:01.981Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-03-01T03:47:01.981Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-02T03:47:01.981Z","lastVerifiedAt":null,"highlights":[{"version":"1.2.0","createdAt":"2026-02-23T12:25:11.410Z","changelog":"Version 1.2.0 - Added privacy enhancement: When users upload flight screenshots, only extract itinerary details (flight info, dates, price) for the search. Do not process personal info such as passenger names, booking references, or payment details. - No changes to workflow or tool usage; main logic and validations remain the same. - Updated documentation to clarify stricter guidelines for handling user-uploaded flight screenshots.","fileCount":11,"zipByteSize":31183},{"version":"1.1.1","createdAt":"2026-02-23T12:07:07.987Z","changelog":"# Changelog ## v1.1.1 (2026-02-23) ### Fixed - **Tool name consistency**: All documentation now correctly references `flight_pricecheck` and `format_flight_pricecheck_request`. Previous versions had stale references to `search_flights`, `submit_session`, and `get_session_results` in some files. - **Round-trip only limitation**: Clarified across all files that only round-trip flights are supported. The README previously claimed one-way support, which was incorrect. - **Screenshot extraction**: Removed references to undeclared external tools for image processing. Screenshot extraction relies on the agent's built-in vision capabilities — no additional tools are needed. - **Stale local installation references**: Removed outdated file paths and environment variables from troubleshooting sections. The MCP server is a hosted service at `https://mcp.navifare.com/mcp`. ### Changed - Documentation is now client-agnostic. Previously tied to Claude Code, it now works with any MCP-enabled client. ## v1.0.1 (2026-02-12) ### Fixed - MCP response format updated to comply with the official MCP specification. - Round-trip flights now correctly use two separate legs (outbound and return). - Location parameter uses 2-letter ISO country codes. - Travel class enum values match the API exactly. ## v1.0.0 (2025-02-11) ### Added - Initial release. - Price comparison across 10+ booking sites via Navifare MCP. - Two-step workflow: format request, then search. - IATA reference data for airports and airlines. - Usage examples for common scenarios.","fileCount":10,"zipByteSize":29503},{"version":"1.0.1","createdAt":"2026-02-18T12:38:37.756Z","changelog":"Improved Skills.md descriptions","fileCount":null,"zipByteSize":null},{"version":"1.0.0","createdAt":"2026-02-12T13:28:53.151Z","changelog":"Initial public release of Navifare Flight Validator Skill. - Finds hidden flight prices from multiple booking sites when users share prices or upload flight screenshots, saving up to 50% - Supports input from text (Skyscanner, Kayak, Google Flights, etc.), if you have a flight screenshot your assistant can use any LLM to convert it to text - remember flight numbers are needed - It's a good idea to use Navifare to check any flight found anywhere before booking it or suggesting it to the user - Guides users to provide all required flight details and handles missing information interactively. - Implements a strict two-step workflow: first format input with a helper tool, then execute the price search. - Only supports round-trip flight searches (one-way is not yet available). - Returns ranked results with booking links from multiple providers.","fileCount":null,"zipByteSize":null}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn70azdj03erwqsvqfshxqmvyx80zftx:navifare-hidden-flight-deals","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","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-simonenavifare-navifare-hidden-flight-deals/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/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-10T03:08:25.784Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonenavifare-navifare-hidden-flight-deals/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-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: Navifare - Flight Price Double-Check, Finds Hidden Deals\n\nOwner: simonenavifare\n\nSummary: Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kaya...\n\nTags: latest:1.2.0\n\nVersion history:\n\nv1.2.0 | 2026-02-23T12:25:11.410Z | user\n\nVersion 1.2.0\n\n- Added privacy enhancement: When users upload flight screenshots, only extract itinerary details (flight info, dates, price) for the search. Do not process personal info such as passenger names, booking references, or payment details.\n- No changes to workflow or tool usage; main logic and validations remain the same.\n- Updated documentation to clarify stricter guidelines for handling user-uploaded flight screenshots.\n\nv1.1.1 | 2026-02-23T12:07:07.987Z | user\n\n# Changelog\n\n## v1.1.1 (2026-02-23)\n\n### Fixed\n\n- **Tool name consistency**: All documentation now correctly references `flight_pricecheck` and `format_flight_pricecheck_request`. Previous versions had stale references to `search_flights`, `submit_session`, and `get_session_results` in some files.\n- **Round-trip only limitation**: Clarified across all files that only round-trip flights are supported. The README previously claimed one-way support, which was incorrect.\n- **Screenshot extraction**: Removed references to undeclared external tools for image processing. Screenshot extraction relies on the agent's built-in vision capabilities — no additional tools are needed.\n- **Stale local installation references**: Removed outdated file paths and environment variables from troubleshooting sections. The MCP server is a hosted service at `https://mcp.navifare.com/mcp`.\n\n### Changed\n\n- Documentation is now client-agnostic. Previously tied to Claude Code, it now works with any MCP-enabled client.\n\n## v1.0.1 (2026-02-12)\n\n### Fixed\n\n- MCP response format updated to comply with the official MCP specification.\n- Round-trip flights now correctly use two separate legs (outbound and return).\n- Location parameter uses 2-letter ISO country codes.\n- Travel class enum values match the API exactly.\n\n## v1.0.0 (2025-02-11)\n\n### Added\n\n- Initial release.\n- Price comparison across 10+ booking sites via Navifare MCP.\n- Two-step workflow: format request, then search.\n- IATA reference data for airports and airlines.\n- Usage examples for common scenarios.\n\nv1.0.1 | 2026-02-18T12:38:37.756Z | user\n\nImproved Skills.md descriptions\n\nv1.0.0 | 2026-02-12T13:28:53.151Z | user\n\nInitial public release of Navifare Flight Validator Skill.\n\n- Finds hidden flight prices from multiple booking sites when users share prices or upload flight screenshots, saving up to 50%\n- Supports input from text (Skyscanner, Kayak, Google Flights, etc.), if you have a flight screenshot your assistant can use any LLM to convert it to text - remember flight numbers are needed\n- It's a good idea to use Navifare to check any flight found anywhere before booking it or suggesting it to the user\n- Guides users to provide all required flight details and handles missing information interactively.\n- Implements a strict two-step workflow: first format input with a helper tool, then execute the price search.\n- Only supports round-trip flight searches (one-way is not yet available).\n- Returns ranked results with booking links from multiple providers.\n\nArchive index:\n\nArchive v1.2.0: 11 files, 31183 bytes\n\nFiles: CHANGELOG.md (2181b), INSTALLATION.md (8080b), mcp-config-example.json (98b), milan-sydney-example.json (1560b), README.md (9369b), references/AIRLINES.md (7287b), references/AIRPORTS.md (6174b), references/EXAMPLES.md (12940b), SKILL.md (19399b), SPEC-UPDATES.md (7952b), _meta.json (147b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: navifare-flight-validator\ndescription: Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kayak, etc.) or upload flight screenshots to find better deals. Returns ranked results with booking links from multiple providers.\nlicense: MIT\ncompatibility: Requires Navifare MCP server configured. Access to mcp__navifare-mcp tools required.\nmetadata:\n  author: navifare\n  version: \"1.2.0\"\n  category: travel\n  mcp_required: navifare-mcp\nallowed-tools: mcp__navifare-mcp__flight_pricecheck mcp__navifare-mcp__format_flight_pricecheck_request Read\n---\n\n# Navifare Flight Price Validator Skill\n\nYou are a travel price comparison specialist. Your role is to help users find the best flight prices by validating deals they find on booking sites and comparing them across multiple providers using Navifare's price discovery platform.\n\n## When to Activate This Skill\n\nTrigger this skill whenever:\n\n1. **User shares a flight price** from any booking website:\n   - \"I found this flight on Skyscanner for $450\"\n   - \"Kayak shows €299 for this route\"\n   - \"Google Flights has this for £320\"\n\n2. **User uploads a flight screenshot** from any booking platform\n\n3. **User asks for price validation**:\n   - \"Is this a good deal?\"\n   - \"Can you find a cheaper flight?\"\n   - \"Should I book this or wait?\"\n\n4. **User mentions booking** but hasn't checked multiple sites:\n   - \"I'm about to book this flight\"\n   - \"Ready to purchase this ticket\"\n\n5. **User compares options** and wants validation:\n   - \"Which of these flights should I choose?\"\n   - \"Is option A or B better?\"\n\n## Prerequisites Check\n\nBefore executing the skill, verify Navifare MCP is available:\n\n```\nCheck for these MCP tools:\n- mcp__navifare-mcp__flight_pricecheck (main search tool)\n- mcp__navifare-mcp__format_flight_pricecheck_request (formatting helper)\n\nIf not available: Inform user to configure the Navifare MCP server\nin their MCP settings with:\n{\n  \"navifare-mcp\": {\n    \"url\": \"https://mcp.navifare.com/mcp\"\n  }\n}\n```\n\n## Execution Workflow\n\n⚠️ **IMPORTANT**: Always follow this exact sequence:\n1. Format with `format_flight_pricecheck_request` → resolve any missing info → search with `flight_pricecheck`\n2. **NEVER** call `flight_pricecheck` directly without calling `format_flight_pricecheck_request` first\n\n### Step 1: Format the Request\n\nThis is always the first action. Take whatever the user provided (text description, screenshot details, partial info) and send it to the formatting tool.\n\n⚠️ **CRITICAL**: You MUST call this tool before `flight_pricecheck`.\n\n```\nTool: mcp__navifare-mcp__format_flight_pricecheck_request\nParameters: {\n  \"user_request\": \"[paste the complete flight description from the user, including all details: airlines, flight numbers, dates, times, airports, price, passengers, class]\"\n}\n\nExample user_request value:\n\"Outbound Feb 19, 2026: QR124 MXP-DOH 08:55-16:40, QR908 DOH-SYD 20:40-18:50 (+1 day).\nReturn Mar 1, 2026: QR909 SYD-DOH 21:40-04:30 (+1 day), QR127 DOH-MXP 08:50-13:10.\nPrice: 1500 EUR, 1 adult, economy class.\"\n```\n\n**What this tool does:**\n- Parses natural language into proper JSON structure\n- Validates all required fields are present\n- Returns `flightData` ready for `flight_pricecheck`\n- Tells you if any information is missing via `needsMoreInfo: true`\n\n**Output handling:**\n- If `needsMoreInfo: true` → Ask user for the missing information, then call this tool again with the updated details\n- If `readyForPriceCheck: true` → Proceed to Step 2 with the returned `flightData`\n\n**From Screenshots**: If user uploads an image, extract only the flight itinerary details (airlines, flight numbers, times, airports, dates, price) and pass them as the `user_request` string. Do NOT include any personal information such as passenger names, booking references, or payment details — only the itinerary data needed for price comparison.\n\n**Resolving missing info**: When the tool reports missing fields:\n- For **airports**: Check `references/AIRPORTS.md` for common codes\n- For **airlines**: Check `references/AIRLINES.md` for codes\n- For **times**: Ask user: \"What time does the flight depart/arrive?\"\n- For **dates**: Validate dates are in future, ask user if unclear\n- For **currency**: Auto-detect from symbols (€→EUR, $→USD, £→GBP, CHF→CHF)\n\n**DO NOT skip this step.** It ensures data is properly formatted and validated.\n\n### Step 2: Execute Price Search\n\nOnce `format_flight_pricecheck_request` returns `readyForPriceCheck: true`, it provides a structured `flightData` object like this:\n\n```json\n{\n  \"trip\": {\n    \"legs\": [\n      {\n        \"segments\": [\n          {\n            \"airline\": \"BA\",\n            \"flightNumber\": \"553\",\n            \"departureAirport\": \"JFK\",\n            \"arrivalAirport\": \"LHR\",\n            \"departureDate\": \"2025-06-15\",\n            \"departureTime\": \"18:00\",\n            \"arrivalTime\": \"06:30\",\n            \"plusDays\": 1\n          }\n        ]\n      }\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"MCP\",\n  \"price\": \"450\",\n  \"currency\": \"USD\",\n  \"location\": \"US\"\n}\n```\n\n**Key fields in the output:**\n- `plusDays`: 1 if arrival is next day, 2 if two days later, etc.\n- `location`: User's 2-letter ISO country code (e.g., \"IT\", \"US\", \"GB\"). Defaults to \"ZZ\" if unknown\n- Multi-segment flights have multiple segments in the same leg\n- Round-trip flights have two separate legs (outbound and return)\n\n**IMPORTANT VALIDATIONS before calling the search:**\n\n1. **Check for one-way flights** — Navifare only supports round-trip flights:\n   ```\n   if trip has only 1 leg:\n     ❌ Return error: \"Sorry, Navifare currently only supports round-trip flights.\n        One-way flight price checking is not available yet.\"\n     DO NOT proceed with the search.\n   ```\n\n2. **Inform user FIRST** — Tell them it will take time:\n   ```\n   \"🔍 Searching for better prices across multiple booking sites...\n   This typically takes 30-60 seconds as I check real-time availability.\"\n   ```\n\n**Then call the search tool with the formatted data:**\n\n```\nTool: mcp__navifare-mcp__flight_pricecheck\nParameters: {\n  Use the EXACT flightData object returned from format_flight_pricecheck_request.\n  This includes: trip, source, price, currency, location\n}\n\nThe MCP server will:\n1. Submit the search request to Navifare API\n2. Poll for results automatically (up to 90 seconds)\n3. Return final ranked results when complete\n```\n\n**CRITICAL**: The tool call will block for 30-60 seconds. This is normal.\nDo NOT abort or assume it failed — wait for the response.\n\n**IF TOOL RUNS LONGER THAN 90 SECONDS:**\n- The server has a 90-second timeout\n- If still running after 90s, there may be a client-side issue\n- Results are likely already available but not displayed\n- Try canceling and re-calling the tool\n\n### Step 3: Analyze Results\n\n**IMPORTANT**: The MCP tool returns a JSON-RPC response following the MCP specification.\n\n**MCP Response Format:**\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"message\\\":\\\"...\\\",\\\"searchResult\\\":{...}}\"\n      }\n    ],\n    \"isError\": false\n  }\n}\n```\n\n**How to extract results:**\n1. Parse `result.content[0].text` as JSON\n2. Extract `searchResult.results` array from parsed data\n3. Each result has: `price`, `currency`, `source`, `booking_URL`\n4. Results are pre-sorted by price (cheapest first)\n\n**Example parsed data structure:**\n```json\n{\n  \"message\": \"Search completed. Found X results from Y booking sites.\",\n  \"searchResult\": {\n    \"request_id\": \"abc123\",\n    \"status\": \"COMPLETED\",\n    \"totalResults\": 5,\n    \"results\": [\n      {\n        \"result_id\": \"xyz-KIWI\",\n        \"price\": \"429.00\",\n        \"currency\": \"USD\",\n        \"convertedPrice\": \"395.00\",\n        \"convertedCurrency\": \"EUR\",\n        \"booking_URL\": \"https://...\",\n        \"source\": \"Kiwi.com\",\n        \"private_fare\": \"false\",\n        \"timestamp\": \"2025-02-11T16:30:00Z\"\n      }\n    ]\n  }\n}\n```\n\n**Analysis to perform**:\n1. **Compare with reference price**: Calculate savings/difference\n2. **Identify best deal**: Lowest price in results\n3. **Check price spread**: Show range from cheapest to most expensive\n4. **Note fare types**: Highlight \"Special Fare\" vs \"Standard Fare\"\n5. **Validate availability**: Ensure results are recent (check timestamp)\n\n**Price difference calculation**:\n```\nsavings = referencePrice - bestPrice\nsavingsPercent = (savings / referencePrice) * 100\n\nIf savingsPercent > 5%: \"Significant savings available\"\nIf savingsPercent < -5%: \"Prices have increased\"\nIf abs(savingsPercent) <= 5%: \"Price is competitive\"\n```\n\n### Step 4: Present Findings to User\n\nFormat results as a clear, actionable summary:\n\n**When better price found** (savings > 5%):\n```\n✅ I found a better deal!\n\nYour reference: $450 on [original site]\nBest price found: $429 on Kiwi.com\n💰 You save: $21 (4.7%)\n\nTop 3 Options:\n┌────┬──────────────┬────────┬──────────────┬─────────────────────┐\n│ #  │ Website      │ Price  │ Fare Type    │ Booking Link        │\n├────┼──────────────┼────────┼──────────────┼─────────────────────┤\n│ 1  │ Kiwi.com     │ $429   │ Standard     │ [Book Now]          │\n│ 2  │ Momondo      │ $445   │ Standard     │ [Book Now]          │\n│ 3  │ eDreams      │ $450   │ Special Fare │ [Book Now]          │\n└────┴──────────────┴────────┴──────────────┴─────────────────────┘\n\nAll prices checked: 2025-02-11 16:30 UTC\n```\n\n**When price is validated** (within 5%):\n```\n✅ Price verified!\n\nYour reference: $450 on [original site]\nNavifare best price: $445 on Momondo\n📊 Difference: $5 (1.1%)\n\nYour price is competitive. The best available price is very close to what you found.\n\nTop 3 Options:\n[Same table format as above]\n```\n\n**When prices increased** (reference price lower):\n```\n⚠️ Prices have changed\n\nYour reference: $450 on [original site]\nCurrent best price: $489 on Kiwi.com\n📈 Increase: $39 (8.7%)\n\nThis flight may be in high demand. Prices have increased since you last checked.\n\nTop 3 Options:\n[Same table format as above]\n\n💡 Tip: Consider booking soon if this route works for you, or check alternative dates.\n```\n\n**When no results found**:\n```\n❌ No results found\n\nNavifare couldn't find current prices for this exact itinerary.\n\nPossible reasons:\n- Flight details may be incomplete or incorrect\n- This specific flight combination may not be available\n- The route may not be currently offered\n\nWould you like to:\n1. Verify the flight details (times, dates, airports)\n2. Search for alternative flights on this route\n3. Try different dates\n```\n\n### Step 5: Provide Booking Guidance\n\nAfter presenting results:\n\n1. **Make booking links clickable**: Format as `[Book on Kiwi.com](https://...)`\n\n2. **Highlight key considerations**:\n   - Fare restrictions (if mentioned in results)\n   - Baggage policies (if available)\n   - Refund policies (Standard vs Special fares)\n\n3. **Offer next steps**:\n   - \"Click any booking link to complete your purchase\"\n   - \"Would you like me to check alternative dates?\"\n   - \"Should I search for different flight options?\"\n\n4. **NO automatic booking**: Never attempt to book flights — only provide comparison and links\n\n## Data Format Examples\n\n### Example 1: Round-Trip Flight\n\nUser: \"Kayak shows €599 for Milan to Barcelona and back, June 20-27, ITA Airways\"\n\nWhat you send to `format_flight_pricecheck_request`:\n```\n\"Kayak shows €599 for Milan to Barcelona and back, June 20-27, ITA Airways AZ78 departing 08:30 arriving 10:15, return AZ79 departing 18:00 arriving 19:45. 1 adult, economy.\"\n```\n\nWhat the tool returns as `flightData` (ready for `flight_pricecheck`):\n```json\n{\n  \"trip\": {\n    \"legs\": [\n      {\"segments\": [\n        {\n          \"airline\": \"AZ\",\n          \"flightNumber\": \"78\",\n          \"departureAirport\": \"MXP\",\n          \"arrivalAirport\": \"BCN\",\n          \"departureDate\": \"2025-06-20\",\n          \"departureTime\": \"08:30\",\n          \"arrivalTime\": \"10:15\",\n          \"plusDays\": 0\n        }\n      ]},\n      {\"segments\": [\n        {\n          \"airline\": \"AZ\",\n          \"flightNumber\": \"79\",\n          \"departureAirport\": \"BCN\",\n          \"arrivalAirport\": \"MXP\",\n          \"departureDate\": \"2025-06-27\",\n          \"departureTime\": \"18:00\",\n          \"arrivalTime\": \"19:45\",\n          \"plusDays\": 0\n        }\n      ]}\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"MCP\",\n  \"price\": \"599\",\n  \"currency\": \"EUR\"\n}\n```\n\n### Example 2: Multi-Segment Connection (Round-Trip)\n\nUser: \"Found $890 LAX to Tokyo via Seattle on Alaska/ANA, July 10, returning July 20\"\n\nWhat you send to `format_flight_pricecheck_request`:\n```\n\"LAX to Tokyo via Seattle, July 10. AS338 LAX-SEA 10:00-12:30, NH178 SEA-NRT 14:30-17:00 (+1 day). Return July 20: NH177 NRT-SEA 18:00-11:00, AS339 SEA-LAX 14:00-17:00. Price $890, 1 adult, economy.\"\n```\n\nWhat the tool returns as `flightData`:\n```json\n{\n  \"trip\": {\n    \"legs\": [\n      {\"segments\": [\n        {\n          \"airline\": \"AS\",\n          \"flightNumber\": \"338\",\n          \"departureAirport\": \"LAX\",\n          \"arrivalAirport\": \"SEA\",\n          \"departureDate\": \"2025-07-10\",\n          \"departureTime\": \"10:00\",\n          \"arrivalTime\": \"12:30\",\n          \"plusDays\": 0\n        },\n        {\n          \"airline\": \"NH\",\n          \"flightNumber\": \"178\",\n          \"departureAirport\": \"SEA\",\n          \"arrivalAirport\": \"NRT\",\n          \"departureDate\": \"2025-07-10\",\n          \"departureTime\": \"14:30\",\n          \"arrivalTime\": \"17:00\",\n          \"plusDays\": 1\n        }\n      ]},\n      {\"segments\": [\n        {\n          \"airline\": \"NH\",\n          \"flightNumber\": \"177\",\n          \"departureAirport\": \"NRT\",\n          \"arrivalAirport\": \"SEA\",\n          \"departureDate\": \"2025-07-20\",\n          \"departureTime\": \"18:00\",\n          \"arrivalTime\": \"11:00\",\n          \"plusDays\": 0\n        },\n        {\n          \"airline\": \"AS\",\n          \"flightNumber\": \"339\",\n          \"departureAirport\": \"SEA\",\n          \"arrivalAirport\": \"LAX\",\n          \"departureDate\": \"2025-07-20\",\n          \"departureTime\": \"14:00\",\n          \"arrivalTime\": \"17:00\",\n          \"plusDays\": 0\n        }\n      ]}\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"MCP\",\n  \"price\": \"890\",\n  \"currency\": \"USD\"\n}\n```\n\n## Error Handling\n\n### API Timeout\nIf search exceeds 90 seconds:\n```\n⏱️ Search is taking longer than expected.\n\nCurrent status: Found X results so far\nNavifare is still searching additional booking sites...\n\n[Present partial results if available]\n```\n\n### Invalid Airport Codes\nIf user provides unclear airports:\n```\n❓ I need to verify the airports.\n\nYou mentioned: \"New York\" and \"London\"\n\nDid you mean:\n- New York: JFK (Kennedy) or EWR (Newark) or LGA (LaGuardia)?\n- London: LHR (Heathrow) or LGW (Gatwick) or STN (Stansted)?\n\nPlease specify the exact airports.\n```\nSee `references/AIRPORTS.md` for complete list.\n\n### Missing Critical Information\n```\n❓ I need more details to search accurately.\n\nCurrent information:\n✅ Route: JFK → LHR\n✅ Date: 2025-06-15\n❌ Departure time: Not specified\n❌ Arrival time: Not specified\n\nPlease provide:\n- What time does the flight depart? (e.g., \"6:00 PM\")\n- What time does it arrive? (e.g., \"6:30 AM next day\")\n```\n\n### Currency Conversion\nIf currency symbols are ambiguous:\n```\n💱 Currency Clarification\n\nYou mentioned \"$450\" - is this:\n1. USD (US Dollar) - Recommended\n2. CAD (Canadian Dollar)\n3. AUD (Australian Dollar)\n4. Other?\n\nPlease specify for accurate price comparison.\n```\n\n### Date Validation\nIf dates are in the past:\n```\n⚠️ Date Issue\n\nThe date you provided (2024-12-20) is in the past.\n\nDid you mean:\n- 2025-12-20 (this year)\n- 2026-12-20 (next year)\n\nPlease confirm the correct travel date.\n```\n\n## Best Practices\n\n### 1. Always Verify Before Searching\n- Confirm all required fields are present\n- Validate airports using IATA codes\n- Ensure dates are reasonable and in future\n- Check times are in 24-hour format\n\n### 2. Handle Ambiguity Gracefully\n- Ask specific questions when data is unclear\n- Provide options rather than making assumptions\n- Reference documentation files for validation\n\n### 3. Present Results Clearly\n- Use tables for easy comparison\n- Highlight savings/differences prominently\n- Make booking links immediately actionable\n- Include timestamps for price freshness\n\n### 4. Consider User Context\n- Multi-city trips: Ensure all segments are captured\n- Business travel: Note refund/change policies\n- Budget conscious: Emphasize savings opportunities\n- Time sensitive: Highlight price trends\n\n### 5. Progressive Disclosure\n- Start with top 3-5 results\n- Offer to show more if user wants\n- Don't overwhelm with excessive details\n- Focus on actionable insights\n\n### 6. Respect Search Limitations\n- 90-second polling window\n- Results may be incomplete if timeout\n- Some booking sites may not be covered\n- Prices update in real-time (may change quickly)\n\n## Technical Notes\n\n### MCP Tool Integration\nThe Navifare MCP provides these tools:\n- `format_flight_pricecheck_request`: Parses natural language into structured format (**always call first**)\n- `flight_pricecheck`: Executes price search across booking sites (main search tool)\n\n**Workflow:**\n1. Call `format_flight_pricecheck_request` with the user's natural language description\n2. If `needsMoreInfo: true` → ask user for missing fields, then call again\n3. If `readyForPriceCheck: true` → use the returned `flightData` to call `flight_pricecheck`\n4. `flight_pricecheck` handles polling automatically and returns complete results\n\n### Data Quality\n- Navifare scrapes real-time prices from booking sites\n- Results include booking URLs that redirect to provider sites\n- Prices are accurate at time of search but may change\n- Some providers may show different prices based on location/cookies\n\n### Performance\n- Typical search: 30-60 seconds\n- Maximum search time: 90 seconds\n- Results stream in as they're found\n- More results = higher confidence in best price\n\n### Supported Routes\n- **Round-trip flights only** (one-way NOT supported)\n- International and domestic flights\n- Multi-city with connections (as long as outbound + return = 2 legs)\n- All major airlines and booking platforms\n- Same origin/destination required (open-jaw routes NOT supported)\n\n## Additional Resources\n\n- **AIRPORTS.md**: Complete IATA airport codes by region\n- **AIRLINES.md**: Complete IATA airline codes with full names\n- **EXAMPLES.md**: Real conversation examples with screenshots\n\nFor complete Navifare MCP documentation, see the main repository.\n\n---\n\n**Remember**: Your goal is to save users money by finding the best flight prices. Be proactive, thorough, and always present actionable booking options with clear links.\n\nFile v1.2.0:README.md\n\n# Navifare Flight Price Validator Skill\n\nAn AgentSkills-compliant skill that enables AI agents to validate and compare flight prices across multiple booking sites using the Navifare MCP. Compatible with any MCP-enabled client (Claude Code, OpenClawd, etc.).\n\n## What This Skill Does\n\nWhen users mention flight prices from any booking website (Skyscanner, Kayak, Google Flights, etc.), this skill automatically:\n1. ✈️ Extracts flight details from text or screenshots\n2. 🔍 Searches Navifare's network of booking sites\n3. 💰 Compares prices to find the best deals\n4. 🔗 Provides direct booking links to providers\n\n## Installation\n\n### Prerequisites\n\n**Required**: Navifare MCP Server must be configured in your MCP client.\n\nThe Navifare MCP is available as a hosted service. Add the following to your MCP client configuration (e.g., `mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n```\n\n**No local installation required!** The MCP server is hosted and always available.\n\n### Install the Skill\n\nInstall the skill in your agent's skills directory. For example:\n```\n~/.claude/skills/navifare-flight-validator/\n```\n\nDirectory structure:\n```\nnavifare-flight-validator/\n├── SKILL.md              # Main skill definition\n├── README.md             # This file\n├── references/\n│   ├── AIRPORTS.md       # IATA airport codes reference\n│   ├── AIRLINES.md       # IATA airline codes reference\n│   └── EXAMPLES.md       # Real usage examples\n└── scripts/              # (Reserved for future enhancements)\n```\n\n### Verify Installation\n\n1. **Check MCP is running**:\n   The following Navifare MCP tools should be available in your client:\n   - `mcp__navifare-mcp__flight_pricecheck`\n   - `mcp__navifare-mcp__format_flight_pricecheck_request`\n\n2. **Verify skill is detected**:\n   Your MCP client should automatically discover skills in the configured skills directory.\n\n## Usage\n\n### Example 1: Validate a Price from Skyscanner\n\n**You**: I found a flight from New York to London on Skyscanner for $450. It's BA553 departing June 15 at 6 PM.\n\n**Agent** (automatically activates skill):\n- Extracts flight details\n- Searches Navifare for better prices\n- Presents comparison table with booking links\n\n### Example 2: Upload a Screenshot\n\n**You**: *[Upload screenshot from Kayak]*\n\n**Agent**:\n- Extracts visible flight details from the screenshot\n- Validates prices across booking sites\n- Shows savings opportunities\n\n### Example 3: Before Booking\n\n**You**: I'm about to book this flight. Should I?\n\n**Agent**:\n- Asks for flight details\n- Runs price comparison\n- Recommends best option\n\n## When The Skill Activates\n\nThe skill automatically triggers when you:\n- 💬 Mention finding a flight price: \"I found this flight for $X\"\n- 📸 Upload a flight booking screenshot\n- ❓ Ask \"Is this a good price?\"\n- 🤔 Say \"Should I book this?\"\n- 🔍 Ask \"Can you find cheaper?\"\n\n## What Information is Needed\n\nFor accurate price comparison, the skill needs:\n\n**Required**:\n- ✈️ **Route**: Departure and arrival airports (e.g., \"JFK to LHR\")\n- 📅 **Date**: Travel date (e.g., \"June 15, 2025\")\n- 🛫 **Flight**: Airline and flight number (e.g., \"BA553\")\n- ⏰ **Times**: Departure and arrival times (e.g., \"6:00 PM - 6:30 AM\")\n\n**Optional but helpful**:\n- 💺 **Class**: Economy, Business, First (defaults to Economy)\n- 👥 **Passengers**: Number of adults/children (defaults to 1 adult)\n- 💵 **Reference price**: What you saw on other sites\n- 💱 **Currency**: USD, EUR, GBP, etc. (auto-detected from price)\n\nIf any information is missing, the agent will ask you for it!\n\n## Features\n\n### ✅ What This Skill Does\n- Compares prices across 10+ booking sites\n- Handles direct and connecting flights\n- Supports round-trip searches (one-way NOT supported)\n- Extracts flight info from screenshots (via the agent's vision capabilities)\n- Validates IATA codes for airports and airlines\n- Converts currencies\n- Shows price trends and savings\n- Provides direct booking links\n\n### ❌ What This Skill Does NOT Do\n- Book flights automatically (returns links only)\n- Store your payment information\n- Make purchasing decisions for you\n- Guarantee prices won't change\n\n## Reference Documentation\n\n### AIRPORTS.md\nComplete IATA airport codes including:\n- 200+ major international airports\n- Regional airports by continent\n- Multi-airport cities (London, New York, Paris, etc.)\n- Low-cost carrier hubs\n- How to handle ambiguous airport references\n\n### AIRLINES.md\nComplete IATA airline codes including:\n- 150+ major airlines worldwide\n- Low-cost carriers\n- Alliance memberships (Star Alliance, SkyTeam, oneworld)\n- Regional carriers and subsidiaries\n- Codeshare handling\n- Flight number extraction rules\n\n### EXAMPLES.md\nReal conversation examples showing:\n- Handling one-way requests (round-trip only limitation)\n- Screenshot extraction workflows\n- Multi-segment connection flights\n- Round-trip validations\n- Error handling scenarios\n- Missing information recovery\n- Edge cases (no results, price increases, etc.)\n\n## Troubleshooting\n\n### \"Navifare MCP not available\"\n\n**Solution**: Verify your MCP client configuration:\n1. Check that `navifare-mcp` is configured with `\"url\": \"https://mcp.navifare.com/mcp\"`\n2. Restart your MCP client after changing configuration\n3. Verify the Navifare MCP tools are available\n\n### \"No results found\"\n\n**Possible causes**:\n1. Flight details are incorrect (wrong airline code, flight number)\n2. The flight doesn't operate on the specified date\n3. Airport codes are invalid\n\n**Solution**: Double-check flight details and use reference docs to verify codes.\n\n### \"Search timeout\"\n\n**What happened**: Navifare searches take up to 90 seconds. Sometimes it times out.\n\n**Solution**: The skill will show partial results if available. You can:\n- Try searching again\n- Use the partial results returned\n- Verify flight details are correct\n\n### \"Invalid airport code\"\n\n**Solution**: Check `references/AIRPORTS.md` for the correct IATA code.\n\nCommon mistakes:\n- LON vs LHR/LGW/STN (London has 6 airports!)\n- NYC vs JFK/EWR/LGA (New York has 3 major)\n- PAR vs CDG/ORY (Paris has 2 major)\n\n## Advanced Usage\n\n### For Multiple Passengers\n\n**You**: Family of 4 traveling to Paris. Found €1,200 total on Kayak.\n\n**Agent**: Extracts passenger count (4) and searches accordingly.\n\n### For Business Class\n\n**You**: Business class JFK to Tokyo, found $3,500 on United.\n\n**Agent**: Searches business class fares specifically.\n\n### For Complex Itineraries\n\n**You**: LAX → Tokyo → Sydney, multi-city trip.\n\n**Agent**: Handles multiple segments and connections.\n\n## Performance\n\n- **Typical search time**: 30-60 seconds\n- **Maximum search time**: 90 seconds\n- **Booking sites searched**: 10+ providers\n- **Results returned**: Up to 20 options (shows top 5 by default)\n\n## Privacy & Security\n\nThis skill processes **pre-booking itineraries only** — flight routes, dates, times, and prices that the user found on booking sites and wants to compare. It does **not** process booking confirmations, passenger names, passport details, payment information, or any other personally identifiable information (PII).\n\n**What is sent to the Navifare MCP server:**\n- Flight numbers, airlines, airports, dates, and times\n- Travel class and passenger count (e.g., \"2 adults\")\n- A reference price and currency for comparison\n\n**What is NOT sent:**\n- Passenger names or personal details\n- Booking references or confirmation numbers\n- Payment or credit card information\n- Passport or identity documents\n\n**Data handling:**\n- Searches are not linked to user accounts or identities\n- Booking happens directly on provider sites via their own links\n- No tracking or affiliate redirects\n\nFor full details, see [navifare.com](https://navifare.com) and our [Terms of Service](https://navifare.com/terms).\n\n## Contributing\n\nTo improve this skill:\n\n1. **Add more airports**: Edit `references/AIRPORTS.md`\n2. **Add more airlines**: Edit `references/AIRLINES.md`\n3. **Add examples**: Edit `references/EXAMPLES.md`\n4. **Enhance instructions**: Edit `SKILL.md`\n\n## Support\n\nFor issues with:\n- **The skill itself**: Check this README and reference docs\n- **Navifare MCP**: See main Navifare repository\n- **Your MCP client**: Refer to your client's documentation\n\n## License\n\nMIT License - See main Navifare project for details.\n\n## Version History\n\n- **v1.2.0** (2026-02-23): Privacy clarity and PII protection\n  - Detailed privacy section explaining exactly what data is and is not sent\n  - Screenshot instructions now explicitly exclude personal information\n  - Added links to navifare.com and Terms of Service\n- **v1.1.1** (2026-02-23): Consistency fixes\n  - Fixed tool name inconsistencies across all docs (now consistently `flight_pricecheck` and `format_flight_pricecheck_request`)\n  - Clarified round-trip only limitation across all files\n  - Removed references to undeclared tools (extractFlightDetails, Gemini AI)\n  - Made documentation client-agnostic (not tied to Claude Code)\n  - Removed stale local installation references\n- **v1.0.0** (2025-02-11): Initial release\n  - Price comparison across booking sites\n  - Screenshot extraction support\n  - Complete IATA reference data\n  - Comprehensive usage examples\n\n---\n\n**Happy travels! Save money with Navifare price comparison.**\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn70azdj03erwqsvqfshxqmvyx80zftx\",\n  \"slug\": \"navifare-hidden-flight-deals\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1771849511410\n}\n\nFile v1.2.0:references/AIRLINES.md\n\n# IATA Airline Codes Reference\n\nQuick reference for common airline codes used in flight searches.\n\n## Major Full-Service Airlines\n\n### North America\n- **AA** - American Airlines\n- **DL** - Delta Air Lines\n- **UA** - United Airlines\n- **AC** - Air Canada\n- **AS** - Alaska Airlines\n- **WS** - WestJet\n\n### Europe - Major Carriers\n- **BA** - British Airways\n- **AF** - Air France\n- **LH** - Lufthansa\n- **KL** - KLM Royal Dutch Airlines\n- **AZ** - ITA Airways (formerly Alitalia)\n- **LX** - Swiss International Air Lines\n- **OS** - Austrian Airlines\n- **LO** - LOT Polish Airlines\n- **SN** - Brussels Airlines\n- **IB** - Iberia\n- **TP** - TAP Portugal\n- **SK** - Scandinavian Airlines (SAS)\n- **AY** - Finnair\n- **EI** - Aer Lingus\n\n### Middle East\n- **EK** - Emirates\n- **QR** - Qatar Airways\n- **EY** - Etihad Airways\n- **TK** - Turkish Airlines\n- **MS** - EgyptAir\n- **SV** - Saudia\n\n### Asia-Pacific\n- **SQ** - Singapore Airlines\n- **CX** - Cathay Pacific\n- **NH** - All Nippon Airways (ANA)\n- **JL** - Japan Airlines (JAL)\n- **KE** - Korean Air\n- **OZ** - Asiana Airlines\n- **TG** - Thai Airways\n- **MH** - Malaysia Airlines\n- **GA** - Garuda Indonesia\n- **QF** - Qantas\n- **NZ** - Air New Zealand\n- **AI** - Air India\n- **9W** - Jet Airways\n\n### Latin America\n- **LA** - LATAM Airlines\n- **AM** - Aeroméxico\n- **CM** - Copa Airlines\n- **AV** - Avianca\n\n### China\n- **CA** - Air China\n- **CZ** - China Southern Airlines\n- **MU** - China Eastern Airlines\n- **HU** - Hainan Airlines\n- **3U** - Sichuan Airlines\n\n## Low-Cost Carriers\n\n### Europe\n- **FR** - Ryanair\n- **U2** - easyJet\n- **W6** - Wizz Air\n- **VY** - Vueling\n- **PC** - Pegasus Airlines\n- **LS** - Jet2.com\n- **TO** - Transavia\n- **DY** - Norwegian Air Shuttle\n- **BT** - airBaltic\n\n### North America\n- **WN** - Southwest Airlines\n- **B6** - JetBlue Airways\n- **NK** - Spirit Airlines\n- **F9** - Frontier Airlines\n- **G4** - Allegiant Air\n\n### Asia-Pacific\n- **3K** - Jetstar Asia\n- **FD** - Thai AirAsia\n- **AK** - AirAsia\n- **5J** - Cebu Pacific\n- **TR** - Scoot\n- **VJ** - VietJet Air\n- **IX** - Air India Express\n- **SG** - SpiceJet\n- **6E** - IndiGo\n\n### Middle East & Africa\n- **FZ** - flydubai\n- **XY** - flynas\n- **G9** - Air Arabia\n- **XQ** - SunExpress\n- **WY** - Oman Air\n- **FP** - Mango (South Africa)\n\n## Alliance Members\n\n### Star Alliance\nMembers include: UA, LH, AC, NH, SQ, TK, LO, SK, AY, OS, LX, SN, TP, AI, CA, OZ, TG, EY\n\n### SkyTeam\nMembers include: AF, KL, DL, AZ, KE, CZ, MU, SV, AM, GA, VN\n\n### oneworld\nMembers include: AA, BA, IB, AY, QR, JL, QF, CX, LA, AS, WY\n\n## Regional European Airlines\n\n### Germany\n- **DE** - Condor\n- **4U** - Germanwings (now Eurowings)\n- **EW** - Eurowings\n\n### UK & Ireland\n- **BE** - Flybe (defunct)\n- **LS** - Jet2.com\n- **FR** - Ryanair\n- **EI** - Aer Lingus\n\n### Scandinavia\n- **D8** - Norwegian Air International\n- **DY** - Norwegian\n- **BT** - airBaltic\n- **AY** - Finnair\n- **RC** - Atlantic Airways\n\n### Eastern Europe\n- **W6** - Wizz Air\n- **FR** - Ryanair (operates throughout)\n- **RO** - Tarom (Romania)\n- **OK** - Czech Airlines\n\n### Southern Europe\n- **VY** - Vueling\n- **UX** - Air Europa\n- **NT** - Binter Canarias\n- **AZ** - ITA Airways\n- **AP** - AlbaStar\n- **EN** - Air Dolomiti\n\n## Flight Number Format Examples\n\nFlight numbers consist of:\n- **2-letter airline code** + **1-4 digit number**\n\nExamples:\n- BA553 → British Airways flight 553\n- LH400 → Lufthansa flight 400\n- FR1234 → Ryanair flight 1234\n- U2 3811 → easyJet flight 3811 (note space)\n\n### Extraction Rule\nWhen extracting flight numbers for Navifare:\n- **Extract ONLY the numeric part**\n- BA553 → \"553\"\n- LH400 → \"400\"\n- U2 3811 → \"3811\"\n- FR1234 → \"1234\"\n\nThe airline name/code is stored separately in the `airline` field.\n\n## How to Identify Airlines\n\n### From Flight Numbers\n- **Two letters at start**: BA553, LH400, AF123\n- **One letter + number**: U23811 (easyJet), W63456 (Wizz Air)\n- **Single letter codes are rare**: Y (MyWay Airlines), I (IBC Airways)\n\n### From Logos/Branding\n- Look for airline logos on screenshots\n- Check aircraft livery colors\n- Look for \"operated by\" text (codeshares)\n\n### From Context\nIf user mentions:\n- \"Lufthansa flight\" → LH\n- \"British Airways\" → BA\n- \"Ryanair\" → FR\n- \"easyJet\" → U2\n\n## Codeshares & Partners\n\n### What are codeshares?\nOne flight operated by airline A but sold with airline B's code.\n\nExample:\n- Flight operated by: LH (Lufthansa)\n- Also sold as: UA8888 (United), AC9999 (Air Canada)\n\n### How to handle\nAlways extract the **operating carrier** (actual airline flying the plane):\n- Look for \"operated by\" text\n- The operating carrier matters for Navifare searches\n- Codeshare numbers may not work in searches\n\n### Common Codeshare Patterns\n- **Star Alliance**: UA, LH, AC flights often codeshare\n- **SkyTeam**: AF, KL, DL flights often codeshare\n- **oneworld**: AA, BA, IB flights often codeshare\n\n## Regional Carriers & Subsidiaries\n\nMany major airlines have regional subsidiaries:\n\n### Lufthansa Group\n- **LH** - Lufthansa\n- **LX** - Swiss\n- **OS** - Austrian\n- **SN** - Brussels Airlines\n- **EW** - Eurowings\n\n### Air France-KLM\n- **AF** - Air France\n- **KL** - KLM\n- **TO** - Transavia\n\n### IAG (International Airlines Group)\n- **BA** - British Airways\n- **IB** - Iberia\n- **VY** - Vueling\n- **EI** - Aer Lingus\n\n### Ryanair Holdings\n- **FR** - Ryanair\n- **MT** - Malta Air\n- **RK** - Ryanair UK\n\n## Handling Unknown Airlines\n\nIf you encounter an airline code not in this list:\n\n1. **Ask the user**: \"I don't recognize airline code XX. What airline is this?\"\n2. **Look for full name**: User might have mentioned \"Delta\" but code is DL\n3. **Check for typos**: Common: BA vs BU, UA vs AA, LH vs LX\n4. **Context from route**: Some airlines only fly certain routes\n\n## Common User References\n\nUsers often use informal names:\n\n### Informal → Official\n- \"British\" → BA (British Airways)\n- \"Lufthansa\" → LH (Lufthansa)\n- \"Air France\" → AF (Air France)\n- \"KLM\" → KL (KLM)\n- \"Ryanair\" → FR (Ryanair)\n- \"easyJet\" → U2 (easyJet)\n- \"Swiss\" → LX (Swiss)\n- \"Austrian\" → OS (Austrian)\n- \"ITA\" or \"Alitalia\" → AZ (ITA Airways)\n- \"Emirates\" → EK (Emirates)\n- \"Qatar\" → QR (Qatar Airways)\n- \"Singapore\" → SQ (Singapore Airlines)\n- \"ANA\" → NH (All Nippon Airways)\n- \"JAL\" → JL (Japan Airlines)\n\n### Budget Carrier Nicknames\n- \"Ryanair\" (never \"Ryan Air\") → FR\n- \"easyJet\" (note capitalization) → U2\n- \"Wizz\" or \"Wizz Air\" → W6\n\n## Special Cases\n\n### Multi-Airline Itineraries\nSome flights have different airlines per segment:\n\nExample:\n- Segment 1: BA (British Airways) LHR→JFK\n- Segment 2: AA (American) JFK→LAX\n\nExtract each segment with its respective airline code.\n\n### Cargo Airlines\nPassenger searches should not include cargo-only airlines:\n- FX (FedEx), 5X (UPS), QY (DHL), etc.\n\nIf user mentions cargo, clarify they want passenger flights.\n\n### Defunct Airlines\nSome codes refer to airlines no longer operating:\n- **AZ** was Alitalia, now ITA Airways (still AZ code)\n- **BE** was Flybe (defunct 2020)\n- **9W** was Jet Airways (suspended 2019)\n\nIf searching historical flights, note airline may no longer exist.\n\n---\n\n**Note**: This list covers ~150 of the most commonly used airlines. The Navifare system recognizes 1000+ airline codes worldwide including regional carriers.\n\nFile v1.2.0:references/AIRPORTS.md\n\n# IATA Airport Codes Reference\n\nQuick reference for common airport codes used in flight searches.\n\n## Major International Hubs\n\n### United States\n- **JFK** - New York John F. Kennedy International\n- **EWR** - Newark Liberty International\n- **LGA** - New York LaGuardia\n- **LAX** - Los Angeles International\n- **SFO** - San Francisco International\n- **ORD** - Chicago O'Hare International\n- **MIA** - Miami International\n- **ATL** - Atlanta Hartsfield-Jackson\n- **DFW** - Dallas/Fort Worth International\n- **SEA** - Seattle-Tacoma International\n- **BOS** - Boston Logan International\n- **IAD** - Washington Dulles International\n- **DCA** - Washington Reagan National\n\n### United Kingdom & Ireland\n- **LHR** - London Heathrow\n- **LGW** - London Gatwick\n- **STN** - London Stansted\n- **LTN** - London Luton\n- **MAN** - Manchester\n- **EDI** - Edinburgh\n- **DUB** - Dublin\n\n### Continental Europe\n- **CDG** - Paris Charles de Gaulle\n- **ORY** - Paris Orly\n- **FRA** - Frankfurt\n- **MUC** - Munich\n- **AMS** - Amsterdam Schiphol\n- **BRU** - Brussels\n- **MAD** - Madrid Barajas\n- **BCN** - Barcelona El Prat\n- **FCO** - Rome Fiumicino\n- **MXP** - Milan Malpensa\n- **LIN** - Milan Linate\n- **VCE** - Venice Marco Polo\n- **ZRH** - Zurich\n- **GVA** - Geneva\n- **VIE** - Vienna\n- **PRG** - Prague\n- **WAW** - Warsaw\n- **CPH** - Copenhagen\n- **ARN** - Stockholm Arlanda\n- **OSL** - Oslo\n- **HEL** - Helsinki\n- **LIS** - Lisbon\n- **ATH** - Athens\n\n### Middle East\n- **DXB** - Dubai International\n- **DWC** - Dubai World Central (Al Maktoum)\n- **AUH** - Abu Dhabi International\n- **DOH** - Doha Hamad International\n- **IST** - Istanbul Airport\n- **SAW** - Istanbul Sabiha Gökçen\n- **TLV** - Tel Aviv Ben Gurion\n\n### Asia-Pacific\n- **HKG** - Hong Kong International\n- **SIN** - Singapore Changi\n- **NRT** - Tokyo Narita\n- **HND** - Tokyo Haneda\n- **ICN** - Seoul Incheon\n- **PEK** - Beijing Capital\n- **PKX** - Beijing Daxing\n- **PVG** - Shanghai Pudong\n- **SHA** - Shanghai Hongqiao\n- **CAN** - Guangzhou Baiyun\n- **SZX** - Shenzhen Bao'an\n- **BKK** - Bangkok Suvarnabhumi\n- **SYD** - Sydney Kingsford Smith\n- **MEL** - Melbourne\n- **AKL** - Auckland\n\n### Canada\n- **YYZ** - Toronto Pearson\n- **YVR** - Vancouver International\n- **YUL** - Montreal Trudeau\n- **YYC** - Calgary International\n\n### Latin America\n- **MEX** - Mexico City International\n- **GRU** - São Paulo Guarulhos\n- **GIG** - Rio de Janeiro Galeão\n- **EZE** - Buenos Aires Ezeiza\n- **SCL** - Santiago International\n- **BOG** - Bogotá El Dorado\n- **LIM** - Lima Jorge Chávez\n\n### Africa\n- **CAI** - Cairo International\n- **JNB** - Johannesburg OR Tambo\n- **CPT** - Cape Town International\n- **NBO** - Nairobi Jomo Kenyatta\n- **ADD** - Addis Ababa Bole\n\n## Regional European Airports\n\n### Germany\n- **TXL/BER** - Berlin Brandenburg\n- **HAM** - Hamburg\n- **DUS** - Düsseldorf\n- **STR** - Stuttgart\n- **CGN** - Cologne Bonn\n\n### France\n- **NCE** - Nice Côte d'Azur\n- **LYS** - Lyon Saint-Exupéry\n- **MRS** - Marseille Provence\n- **TLS** - Toulouse Blagnac\n\n### Spain & Portugal\n- **AGP** - Málaga\n- **SVQ** - Seville\n- **PMI** - Palma de Mallorca\n- **OPO** - Porto\n\n### Italy\n- **NAP** - Naples\n- **BLQ** - Bologna\n- **PSA** - Pisa\n- **FLR** - Florence\n- **BRI** - Bari\n- **CTA** - Catania\n\n### Scandinavia\n- **BGO** - Bergen\n- **TRD** - Trondheim\n- **GOT** - Gothenburg\n- **AAL** - Aalborg\n\n### Eastern Europe\n- **BUD** - Budapest\n- **OTP** - Bucharest\n- **SOF** - Sofia\n- **ZAG** - Zagreb\n- **BEG** - Belgrade\n\n### Benelux\n- **LUX** - Luxembourg\n- **EIN** - Eindhoven\n- **RTM** - Rotterdam\n\n### Switzerland & Austria\n- **BSL** - Basel/Mulhouse\n- **BRN** - Bern\n- **LUG** - Lugano\n- **INN** - Innsbruck\n- **SZG** - Salzburg\n\n## Low-Cost Carrier Hubs\n\nMany budget airlines operate primarily from these airports:\n\n- **STN** (London Stansted) - Ryanair hub\n- **LTN** (London Luton) - easyJet, Wizz Air\n- **BVA** (Paris Beauvais) - Ryanair\n- **CIA** (Rome Ciampino) - Ryanair, Wizz Air\n- **BGY** (Milan Bergamo) - Ryanair\n- **HHN** (Frankfurt Hahn) - Ryanair\n- **NRN** (Düsseldorf Weeze) - Ryanair\n- **BRE** (Bremen) - Ryanair\n- **NYO** (Stockholm Skavsta) - Ryanair\n- **TRF** (Oslo Torp) - Ryanair, Wizz Air\n\n## How to Look Up Unknown Codes\n\nIf you encounter an airport code not in this list:\n\n1. **Ask the user**: \"I don't recognize code XXX. What city/airport is this?\"\n2. **Context clues**: Look at city names mentioned in conversation\n3. **Regional patterns**:\n   - US codes: 3 random letters (JFK, LAX, ORD)\n   - Canada codes: Y + 2 letters (YYZ, YVR, YUL)\n   - Australia codes: Often city names (SYD, MEL, BNE)\n4. **Major cities**: Default to main airport (London→LHR, Paris→CDG, Tokyo→NRT)\n\n## Common Ambiguities\n\n### Multiple airports in same city\n\n**London (6 airports)**:\n- LHR (Heathrow) - Major international hub\n- LGW (Gatwick) - Second largest, south of London\n- STN (Stansted) - Budget airlines, northeast\n- LTN (Luton) - Budget airlines, north\n- LCY (City) - Business flights, city center\n- SEN (Southend) - Small regional\n\n**New York (3 major)**:\n- JFK (Kennedy) - International hub\n- EWR (Newark) - In New Jersey, international\n- LGA (LaGuardia) - Domestic flights\n\n**Paris (2 major)**:\n- CDG (Charles de Gaulle) - Main international hub\n- ORY (Orly) - Secondary international, domestic\n\n**Milan (2 major)**:\n- MXP (Malpensa) - International long-haul\n- LIN (Linate) - Domestic and European\n\n**Tokyo (2 major)**:\n- NRT (Narita) - International, 60km from city\n- HND (Haneda) - Domestic and some international, closer to city\n\n**Istanbul (2)**:\n- IST (Istanbul Airport) - New main hub\n- SAW (Sabiha Gökçen) - Asian side, budget airlines\n\n**Dubai (2)**:\n- DXB (Dubai International) - Main hub\n- DWC (World Central) - Al Maktoum, secondary\n\n### Always Clarify\n\nWhen a user mentions a city with multiple airports, ask:\n- \"London has several airports. Do you mean Heathrow (LHR) or Gatwick (LGW)?\"\n- \"For New York, are you flying into JFK, Newark (EWR), or LaGuardia (LGA)?\"\n\nThis ensures accurate searches and prevents booking mistakes.\n\n---\n\n**Note**: This list covers ~200 of the most commonly used airports. For complete coverage, the Navifare system has access to 10,000+ airports worldwide.\n\nFile v1.2.0:references/EXAMPLES.md\n\n# Navifare Flight Validator - Usage Examples\n\nReal conversation examples showing how to use this skill effectively.\n\n---\n\n## Example 1: User Found Price on Skyscanner\n\n### Conversation\n\n**User**: I found a flight from New York to London on Skyscanner for $450. It's BA553 departing June 15 at 6 PM.\n\n**Assistant** (activates skill):\nI'd love to help you check if that's the best price! However, Navifare currently only supports **round-trip** flight searches.\n\nDo you have a return flight as well? If so, share the return flight details (airline, flight number, date, and times) and I'll compare prices across multiple booking sites for the full round trip.\n\n---\n\n## Example 2: Screenshot Upload from Kayak\n\n### Conversation\n\n**User**: *[Uploads screenshot of Kayak search showing Milan to Barcelona for €299]*\n\n**Assistant** (activates skill):\nI can see your flight search. Let me extract the details and find the best price for you.\n\n*[Extracts flight details from screenshot]*\n\nExtracted from your screenshot:\n- Route: MXP (Milan Malpensa) → BCN (Barcelona)\n- Date: June 20, 2025\n- Return: June 27, 2025\n- Airline: Vueling\n- Passengers: 1 adult\n- Class: Economy\n- Reference price: €299 on Kayak\n\n*[Calls mcp__navifare-mcp__flight_pricecheck with extracted data]*\n\nSearching multiple booking sites...\n\n*[Results come back]*\n\n✅ **Price verified!**\n\nYour reference: €299 on Kayak\nNavifare best price: **€295 on Kiwi.com**\n📊 Difference: €4 (1.3%)\n\nYour price is very competitive! The best available is nearly identical.\n\n**Top 5 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Kiwi.com | €295 | Standard | [Book Now](https://kiwi.com/...) |\n| 2 | Kayak | €299 | Standard | [Book Now](https://kayak.com/...) |\n| 3 | Momondo | €305 | Standard | [Book Now](https://momondo.com/...) |\n| 4 | Skyscanner | €310 | Standard | [Book Now](https://skyscanner.com/...) |\n| 5 | eDreams | €315 | Special Fare | [Book Now](https://edreams.com/...) |\n\nAll prices checked: 2025-02-11 16:45 UTC\n\nThe price you found is excellent. I'd recommend booking soon as prices for June travel tend to increase closer to departure.\n\n---\n\n## Example 3: Multi-Segment Connection Flight\n\n### Conversation\n\n**User**: Google Flights shows $890 for LAX to Tokyo via Seattle on July 10. Alaska AS338 to Seattle, then ANA NH178 to Tokyo. Should I book it?\n\n**Assistant** (activates skill):\nLet me verify that's the best price for your itinerary with the connection in Seattle.\n\n*[Extracts details]*\n- Segment 1: AS338, LAX → SEA, July 10\n- Segment 2: NH178, SEA → NRT, July 10\n- Need departure/arrival times for accurate search\n\n**Question**: What are the departure and arrival times for each segment?\n- AS338 LAX → SEA: Departure time?\n- NH178 SEA → NRT: Departure time?\n\n**User**: AS338 departs 10 AM arrives 12:30 PM. NH178 departs 2:30 PM arrives 5 PM next day.\n\n**Assistant**:\nPerfect! Searching now...\n\n*[Calls search with both segments]*\n\n⚠️ **Prices have changed**\n\nYour reference: $890 on Google Flights\nCurrent best price: **$925 on Kiwi.com**\n📈 Increase: $35 (3.9%)\n\nPrices for this route have gone up slightly since you checked.\n\n**Top 3 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Kiwi.com | $925 | Standard | [Book Now](https://kiwi.com/...) |\n| 2 | Momondo | $945 | Standard | [Book Now](https://momondo.com/...) |\n| 3 | Google Flights | $890* | Standard | [Book Now](https://google.com/flights/...) |\n\n*Note: The $890 price on Google Flights may no longer be available. Verify on their site.*\n\nAll prices checked: 2025-02-11 17:00 UTC\n\n**Recommendation**: If the $890 price is still available on Google Flights when you check, that's your best option. Otherwise, Kiwi.com at $925 is the next best choice.\n\n---\n\n## Example 4: Round-Trip Validation Before Booking\n\n### Conversation\n\n**User**: I'm about to book this flight to Athens. Can you check if it's a good price first?\n\n**Details:**\n- London Gatwick to Athens, June 10-17\n- British Airways outbound, Aegean return\n- £380 total on Skyscanner\n\n**Assistant** (activates skill):\nAbsolutely! Let me verify that's the best price before you commit.\n\nI need a few more details for an accurate search:\n- Outbound: BA flight number and departure time?\n- Return: Aegean (A3) flight number and departure time?\n- Travel class (Economy, Business)?\n\n**User**:\n- Outbound: BA632, departs 7:30 AM, arrives 1:15 PM\n- Return: A3605, departs 9:00 AM, arrives 11:30 AM\n- Economy class\n\n**Assistant**:\nThank you! Searching now...\n\n*[Builds round-trip search with both flights]*\n\n✅ **I found savings!**\n\nYour reference: £380 on Skyscanner\nBest price found: **£365 on Momondo**\n💰 You save: £15 (3.9%)\n\n**Top 5 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Momondo | £365 | Standard | [Book Now](https://momondo.com/...) |\n| 2 | Kiwi.com | £370 | Standard | [Book Now](https://kiwi.com/...) |\n| 3 | Kayak | £375 | Standard | [Book Now](https://kayak.com/...) |\n| 4 | Skyscanner | £380 | Standard | [Book Now](https://skyscanner.com/...) |\n| 5 | eDreams | £395 | Special Fare | [Book Now](https://edreams.com/...) |\n\nAll prices checked: 2025-02-11 17:15 UTC\n\nI recommend booking with Momondo to save £15. However, verify that both flights (BA632 and A3605) are included in their quote before purchasing.\n\n---\n\n## Example 5: Missing Information Handling\n\n### Conversation\n\n**User**: Found a flight to Paris for $600. Is that good?\n\n**Assistant** (activates skill):\nI'd be happy to check if that's the best price! To search accurately, I need more details:\n\n**Missing information:**\n❌ Departure city/airport\n❌ Travel dates\n❌ Airline and flight number\n❌ Departure/arrival times\n❌ Travel class\n\nCould you provide:\n1. **Where are you flying from?** (e.g., \"New York JFK\")\n2. **What date?** (e.g., \"June 15, 2025\")\n3. **Which airline and flight?** (e.g., \"Air France AF007\")\n4. **What time does it depart?** (e.g., \"6:00 PM\")\n5. **Economy or Business class?**\n\n**User**: Oh right! Flying from Boston to Paris CDG on June 8. Air France AF334 leaving at 8:30 PM, arriving 9:45 AM next day. Economy.\n\n**Assistant**:\nPerfect! Now I can search properly.\n\n*[Extracts details]*\n- BOS → CDG\n- AF334\n- June 8, 2025\n- 20:30 → 09:45 (+1 day)\n- Economy\n- 1 adult\n- Reference: $600\n\nSearching across multiple booking sites...\n\n*[Results]*\n\n✅ **Better prices available!**\n\nYour reference: $600 on [unknown site]\nBest price found: **$565 on Kiwi.com**\n💰 You save: $35 (5.8%)\n\n**Top 3 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Kiwi.com | $565 | Standard | [Book Now](https://kiwi.com/...) |\n| 2 | Momondo | $580 | Standard | [Book Now](https://momondo.com/...) |\n| 3 | Google Flights | $595 | Standard | [Book Now](https://google.com/flights/...) |\n\nAll prices checked: 2025-02-11 17:30 UTC\n\n---\n\n## Example 6: No Better Price Found\n\n### Conversation\n\n**User**: Kayak shows €450 for Zurich to Rome on LX1612, March 15. Can you beat it?\n\n**Assistant** (activates skill):\nLet me check what other booking sites have for that flight.\n\n*[Needs more info]*\n\n**Question**: What time does LX1612 depart and arrive on March 15?\n\n**User**: Departs 10:40 AM, arrives 12:25 PM.\n\n**Assistant**:\nSearching...\n\n*[Results show higher prices]*\n\n✅ **Your price is the best available!**\n\nYour reference: €450 on Kayak\nNavifare best price: €450 on Kayak\n📊 Match: €0 (0%)\n\n**All available prices:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Kayak | €450 | Standard | [Book Now](https://kayak.com/...) |\n| 2 | Skyscanner | €450 | Standard | [Book Now](https://skyscanner.com/...) |\n| 3 | Momondo | €465 | Standard | [Book Now](https://momondo.com/...) |\n| 4 | Kiwi.com | €475 | Standard | [Book Now](https://kiwi.com/...) |\n| 5 | eDreams | €490 | Special Fare | [Book Now](https://edreams.com/...) |\n\nAll prices checked: 2025-02-11 17:45 UTC\n\nThe €450 price you found is the best current rate. I recommend booking it through Kayak or Skyscanner (both offer the same price).\n\n**Note**: Swiss International Air Lines (LX) is a reputable carrier. This is a direct flight with good timing, making it excellent value.\n\n---\n\n## Example 7: Price Alert - High Demand Route\n\n### Conversation\n\n**User**: Is $1,200 good for Miami to London on December 20? American Airlines.\n\n**Assistant** (activates skill):\nLet me check current prices for that route and date.\n\n*[Extracts details, asks for flight number and times]*\n\n**User**: AA38, departs 9:15 PM, arrives 10:30 AM next day.\n\n**Assistant**:\nSearching...\n\n⚠️ **Peak season alert**\n\nYour reference: $1,200\nCurrent best price: **$1,150 on Momondo**\n💰 Savings: $50 (4.2%)\n\n**Top 3 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Momondo | $1,150 | Standard | [Book Now](https://momondo.com/...) |\n| 2 | Kayak | $1,195 | Standard | [Book Now](https://kayak.com/...) |\n| 3 | Google Flights | $1,200 | Standard | [Book Now](https://google.com/flights/...) |\n\nAll prices checked: 2025-02-11 18:00 UTC\n\n**Important context:**\n- December 20 is peak Christmas travel\n- Transatlantic flights are in very high demand\n- Prices typically increase significantly closer to departure\n- $1,150-$1,200 is actually reasonable for this route/date\n\n**Recommendation**: If you need to travel on December 20 specifically, I'd suggest booking the $1,150 Momondo option soon. If you have flexibility, flying a few days earlier (Dec 17-19) or later (Dec 21-23) could save $300-500.\n\nWould you like me to check alternative dates?\n\n---\n\n## Example 8: Error Handling - No Results\n\n### Conversation\n\n**User**: Can you check if £250 is good for Manchester to Ibiza on June 30? Flight ZZ1234.\n\n**Assistant** (activates skill):\nLet me search for that flight.\n\n*[Searches but gets no results]*\n\n❌ **No results found**\n\nNavifare couldn't find current prices for this exact itinerary.\n\n**Possible issues:**\n1. **Airline code \"ZZ\"** is not recognized in our database\n2. **Flight number 1234** may be incorrect or the flight may not exist\n3. The route may not be currently scheduled for June 30\n\n**Can you help me verify:**\n- Which airline operates this flight? (Ryanair, easyJet, Jet2?)\n- Are you sure about the flight number ZZ1234?\n- Is this a direct flight or with connections?\n\n**Alternative approach:**\nIf you're flexible on the exact flight, I can search for:\n- \"Manchester to Ibiza on June 30, Economy, 1 adult\"\n- And find the best prices across all airlines\n\nWould you like me to do that instead?\n\n**User**: Oh sorry, it's Jet2 flight LS449, not ZZ1234!\n\n**Assistant**:\nNo problem! Let me search for Jet2 LS449 now.\n\n*[Searches with correct airline/flight]*\n\n✅ **Found better prices!**\n... [continues with normal results]\n\n---\n\n## Key Patterns from Examples\n\n### What Triggers the Skill\n1. ✅ \"I found a flight for $X on [site]\"\n2. ✅ \"Is this a good price?\"\n3. ✅ \"Can you beat this deal?\"\n4. ✅ Screenshot of booking site\n5. ✅ \"I'm about to book...\"\n6. ✅ \"Should I book this flight?\"\n\n### What Information to Extract\n- **Route**: Departure and arrival airports (IATA codes)\n- **Date(s)**: Departure date, return date if applicable\n- **Flight(s)**: Airline code + flight number(s)\n- **Times**: Departure and arrival times (24-hour format)\n- **Class**: Economy, Premium Economy, Business, First\n- **Passengers**: Adults, children, infants\n- **Reference Price**: Amount user saw + currency\n\n### How to Handle Missing Data\n1. **Ask specific questions** - don't guess\n2. **Reference documentation** - check AIRPORTS.md, AIRLINES.md\n3. **Provide examples** - show format you need\n4. **Be patient** - walk user through each missing field\n\n### How to Present Results\n1. **Clear comparison** - reference price vs best found\n2. **Savings calculation** - amount and percentage\n3. **Top 3-5 options** - formatted table\n4. **Clickable links** - make booking easy\n5. **Timestamp** - show when prices were checked\n6. **Context** - explain price trends, seasonality\n7. **Recommendations** - guide user to best choice\n\n### Edge Cases to Handle\n- ❌ No results: Verify flight details, suggest alternatives\n- ⚠️ Price increased: Warn user, explain demand\n- ✅ Price matched: Validate user's research\n- 💰 Price decreased: Celebrate savings!\n- ⏱️ Timeout: Show partial results, explain delay\n- ❓ Unclear airports: Clarify multi-airport cities\n- 🔄 Codeshares: Use operating carrier\n- 📅 Past dates: Ask for correct year/date\n\n---\n\nThese examples demonstrate the full workflow from user inquiry to actionable booking recommendations. Always prioritize clarity, accuracy, and helpfulness in your responses.\n\nFile v1.2.0:CHANGELOG.md\n\n# Changelog\n\n## v1.2.0 (2026-02-23)\n\n### Improved\n\n- **Privacy & data scope**: Expanded privacy section to clearly describe what data is and is not sent to the Navifare MCP server. Only pre-booking itinerary details (flights, times, prices) are transmitted — no PII, no booking confirmations, no passenger names or payment info. Added links to [navifare.com](https://navifare.com) and [Terms of Service](https://navifare.com/terms).\n- **Screenshot PII protection**: Skill instructions now explicitly direct agents to extract only itinerary data from screenshots and exclude any personal information before sending to the MCP server.\n\n## v1.1.1 (2026-02-23)\n\n### Fixed\n\n- **Tool name consistency**: All documentation now correctly references `flight_pricecheck` and `format_flight_pricecheck_request`. Previous versions had stale references to `search_flights`, `submit_session`, and `get_session_results` in some files.\n- **Round-trip only limitation**: Clarified across all files that only round-trip flights are supported. The README previously claimed one-way support, which was incorrect.\n- **Screenshot extraction**: Removed references to undeclared external tools for image processing. Screenshot extraction relies on the agent's built-in vision capabilities — no additional tools are needed.\n- **Stale local installation references**: Removed outdated file paths and environment variables from troubleshooting sections. The MCP server is a hosted service at `https://mcp.navifare.com/mcp`.\n\n### Changed\n\n- Documentation is now client-agnostic. Previously tied to Claude Code, it now works with any MCP-enabled client.\n\n## v1.0.1 (2026-02-12)\n\n### Fixed\n\n- MCP response format updated to comply with the official MCP specification.\n- Round-trip flights now correctly use two separate legs (outbound and return).\n- Location parameter uses 2-letter ISO country codes.\n- Travel class enum values match the API exactly.\n\n## v1.0.0 (2025-02-11)\n\n### Added\n\n- Initial release.\n- Price comparison across 10+ booking sites via Navifare MCP.\n- Two-step workflow: format request, then search.\n- IATA reference data for airports and airlines.\n- Usage examples for common scenarios.\n\nFile v1.2.0:INSTALLATION.md\n\n# Navifare Flight Validator Skill - Installation & Validation\n\n## ✅ Installation Complete!\n\nThe skill has been successfully created at:\n```\n~/.claude/skills/navifare-flight-validator/\n```\n\n## 📁 Directory Structure\n\n```\nnavifare-flight-validator/\n├── SKILL.md (573 lines)          # Main skill instructions\n├── README.md                      # User guide\n├── INSTALLATION.md                # This file\n├── references/\n│   ├── AIRPORTS.md (232 lines)   # IATA airport codes\n│   ├── AIRLINES.md (299 lines)   # IATA airline codes\n│   └── EXAMPLES.md (441 lines)   # Usage examples\n└── scripts/                       # Reserved for future use\n```\n\n## 🔧 Configuration Required\n\n### Step 1: Configure Navifare MCP HTTP Endpoint\n\nThe Navifare MCP server is available as a hosted service at `https://mcp.navifare.com/mcp`.\n\nAdd this to your MCP client configuration file (e.g., `mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n```\n\n**Note**: This uses the HTTP transport to connect to the hosted Navifare MCP service. No local installation required!\n\n### Step 2: Restart Your MCP Client\n\nAfter adding/updating the MCP configuration:\n1. Quit your MCP client completely\n2. Relaunch the client\n3. The Navifare MCP connection will be established automatically\n\n### Step 3: Verify MCP Tools are Available\n\nThe following tools should be accessible in your MCP client:\n- `mcp__navifare-mcp__flight_pricecheck` (main search tool)\n- `mcp__navifare-mcp__format_flight_pricecheck_request` (formatting helper)\n\nYou can verify by checking the available MCP tools in your client.\n\n## ✅ Validation Checklist\n\n### Skill Structure Validation\n\n- [x] **SKILL.md exists** with valid frontmatter\n- [x] **Required fields present**: name, description\n- [x] **Optional fields included**: license, compatibility, metadata, allowed-tools\n- [x] **Name format correct**: lowercase, hyphens only, matches directory name\n- [x] **Description under 1024 chars**: 262 characters ✓\n- [x] **Body content present**: 573 lines of instructions\n- [x] **Reference files created**: AIRPORTS.md, AIRLINES.md, EXAMPLES.md\n\n### AgentSkills Compliance\n\nAccording to [agentskills.io/specification](https://agentskills.io/specification):\n\n✅ **Directory structure**: Correct\n✅ **SKILL.md format**: Valid YAML frontmatter + Markdown body\n✅ **Name constraints**: Meets all requirements (1-64 chars, lowercase, hyphens)\n✅ **Description**: Clear, includes when to use, under 1024 chars\n✅ **Progressive disclosure**:\n  - Metadata: ~100 tokens\n  - SKILL.md: ~4500 tokens\n  - References: ~2500 tokens (loaded on-demand)\n✅ **File references**: All relative paths, one level deep\n\n### Content Validation\n\n- [x] **Clear activation triggers**: 5 scenarios listed\n- [x] **Step-by-step workflow**: 6 detailed steps\n- [x] **Error handling**: 6 error scenarios covered\n- [x] **Best practices**: 6 guidelines provided\n- [x] **Data format examples**: 3 different flight types\n- [x] **Reference documentation**: Complete IATA codes\n- [x] **Real usage examples**: 8 realistic conversations\n\n## 🧪 Testing the Skill\n\n### Test 1: Simple Price Validation\n\n**Input**:\n> I found a flight from New York JFK to London Heathrow for $450. It's British Airways flight 178 departing June 15 at 8:00 PM. Is this a good price?\n\n**Expected behavior**:\n1. Skill activates automatically\n2. Agent extracts flight details\n3. Agent calls `mcp__navifare-mcp__format_flight_pricecheck_request` then `mcp__navifare-mcp__flight_pricecheck`\n4. Agent presents comparison table with results\n\n### Test 2: Screenshot Upload\n\n**Input**:\n> *[Upload a flight booking screenshot from Kayak/Skyscanner]*\n\n**Expected behavior**:\n1. Skill activates\n2. Agent recognizes image contains flight info\n3. Agent extracts flight details from the image using its vision capabilities\n4. Agent calls the MCP tools to search and compare prices\n5. Agent shows results table\n\n### Test 3: Missing Information Handling\n\n**Input**:\n> I found a cheap flight to Paris. Should I book it?\n\n**Expected behavior**:\n1. Skill activates\n2. Agent identifies missing information\n3. Agent asks specific questions:\n   - Departure city/airport?\n   - Travel date?\n   - Airline and flight number?\n   - Departure time?\n   - Reference price?\n\n### Test 4: Unknown Airport Code\n\n**Input**:\n> Flight from LON to PAR for €200\n\n**Expected behavior**:\n1. Skill recognizes ambiguity\n2. Agent asks which London airport (LHR/LGW/STN/LTN/LCY)\n3. Agent asks which Paris airport (CDG/ORY)\n4. Agent references AIRPORTS.md for clarification\n\n## 🔍 Validation with skills-ref\n\nTo validate the skill structure using the official AgentSkills reference tool:\n\n```bash\n# Install skills-ref (if not already installed)\nnpm install -g @agentskills/skills-ref\n\n# Validate the skill\nskills-ref validate ~/.claude/skills/navifare-flight-validator\n\n# Expected output:\n# ✓ SKILL.md frontmatter is valid\n# ✓ Name format is correct\n# ✓ Description is valid\n# ✓ All required fields present\n# ✓ Directory structure is correct\n```\n\n**Note**: skills-ref may not be installed yet. If the command fails, the manual checks above are sufficient.\n\n## 🐛 Troubleshooting\n\n### Issue: Skill doesn't activate\n\n**Check**:\n1. SKILL.md is in correct location: `~/.claude/skills/navifare-flight-validator/SKILL.md`\n2. Frontmatter is valid YAML (no syntax errors)\n3. MCP client has restarted since skill was added\n\n**Fix**: Restart your MCP client\n\n### Issue: MCP tools not available\n\n**Check**:\n1. Your MCP configuration file exists and is valid JSON\n2. The `navifare-mcp` entry has `\"url\": \"https://mcp.navifare.com/mcp\"`\n3. Your MCP client has been restarted after config changes\n\n**Fix**:\nVerify your MCP configuration contains:\n```json\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n```\nThen restart your MCP client completely.\n\n### Issue: Search returns no results\n\n**Possible causes**:\n1. Navifare API is down\n2. Flight details are incorrect\n3. The MCP endpoint is unreachable\n\n**Fix**:\n1. Check the MCP URL in your configuration\n2. Verify flight details (airline codes, airport codes)\n3. Check network connectivity\n\n### Issue: Skill activates but search times out\n\n**Expected behavior**: Navifare searches take up to 90 seconds\n\n**What to do**:\n- Wait for full 90 seconds\n- Partial results may be shown\n- Try again if timeout occurs\n\n## 📊 Skill Metrics\n\n- **Total lines**: 1,545 lines across all files\n- **SKILL.md**: 573 lines (main instructions)\n- **References**: 972 lines (IATA codes + examples)\n- **Token estimate**:\n  - Metadata: ~100 tokens (always loaded)\n  - SKILL.md body: ~4,500 tokens (loaded when activated)\n  - References: ~2,500 tokens (loaded on-demand)\n- **Load time**: < 1 second (metadata), ~2 seconds (full skill)\n\n## 🎯 Success Criteria\n\nThe skill is working correctly when:\n\n✅ Agent recognizes flight price mentions and activates skill\n✅ Agent extracts flight details from conversation\n✅ Agent calls Navifare MCP flight_pricecheck tool\n✅ Agent presents results in formatted table\n✅ Agent provides clickable booking links\n✅ Agent handles missing information gracefully\n✅ Agent references AIRPORTS.md and AIRLINES.md as needed\n✅ Agent follows examples from EXAMPLES.md\n\n## 🚀 Next Steps\n\n1. **Test with real queries**: Try the examples from Test 1-4 above\n2. **Refine triggers**: If skill activates too often/rarely, adjust description\n3. **Add more examples**: Update EXAMPLES.md with real usage patterns\n4. **Enhance references**: Add more airports/airlines as needed\n5. **Monitor performance**: Track search times and success rates\n\n## 📚 Related Documentation\n\n- **AgentSkills Specification**: https://agentskills.io/specification\n- **Navifare API Docs**: (see main Navifare repo)\n\n## ✉️ Support\n\n- **Skill issues**: Check README.md and this file\n- **MCP configuration**: See main Navifare MCP docs\n\n---\n\n**Installation Date**: 2025-02-11\n**Skill Version**: 1.2.0\n**Last Updated**: 2026-02-23\n\nFile v1.2.0:SPEC-UPDATES.md\n\n# Navifare MCP Specification Updates\n\nBased on the official documentation at https://www.navifare.com/mcp\n\n## 🔥 BREAKING CHANGE - MCP Compliance Fix (Feb 12, 2026)\n\n**The Navifare MCP server response format has been updated to comply with the official MCP specification.**\n\n### What Changed\n\n**Before (Non-compliant)**:\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"message\": \"...\",\n    \"searchResult\": {...},\n    \"status\": \"success\"\n  }\n}\n```\n\n**After (MCP-compliant)**:\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"message\\\":\\\"...\\\",\\\"searchResult\\\":{...}}\"\n      }\n    ],\n    \"isError\": false\n  }\n}\n```\n\n### Why This Matters\n\nThe old format caused issues with all Claude clients:\n- ❌ Claude Code: Tool results not displayed\n- ❌ Claude.ai: Generic \"Error occurred\" messages\n- ❌ Claude Desktop: Tools keep running after completion\n\nThe new format follows the [MCP Tools specification](https://modelcontextprotocol.io/specification/2025-06-18/server/tools) and works correctly with all clients.\n\n### Migration Guide\n\nIf you're using the Navifare MCP client directly (not through Claude), update your parsing:\n\n**Old code**:\n```javascript\nconst { message, searchResult } = response.result;\n```\n\n**New code**:\n```javascript\nconst data = JSON.parse(response.result.content[0].text);\nconst { message, searchResult } = data;\n```\n\n---\n\n## ✅ Corrections Made to Skill\n\n### 1. **Round-Trip Format** (CRITICAL FIX)\n**Before (WRONG)**:\n```json\n{\n  \"legs\": [\n    {\n      \"segments\": [\n        /* outbound AND return all in one leg */\n      ]\n    }\n  ]\n}\n```\n\n**After (CORRECT)**:\n```json\n{\n  \"legs\": [\n    {\n      \"segments\": [/* outbound only */]\n    },\n    {\n      \"segments\": [/* return only */]\n    }\n  ]\n}\n```\n\n### 2. **Location Parameter**\n- **Format**: 2-letter ISO country code (e.g., \"IT\", \"US\", \"GB\")\n- **Default**: \"ZZ\" if unknown\n- **Pattern**: `^[A-Z]{2}$`\n\n### 3. **Travel Class Enum**\nExact values required:\n- `ECONOMY`\n- `PREMIUM_ECONOMY`\n- `BUSINESS`\n- `FIRST`\n\n### 4. **Tool Names Confirmed**\n- ✅ `flight_pricecheck` - Main search tool\n- ✅ `format_flight_pricecheck_request` - Natural language formatter\n\n## 📋 Complete Tool Specifications\n\n### Tool 1: `flight_pricecheck`\n\n**Purpose**: Search multiple booking sources to find better prices for a specific flight\n\n**Input Parameters**:\n```typescript\n{\n  trip: {\n    legs: Array<{\n      segments: Array<{\n        airline: string;           // 2-letter IATA code\n        flightNumber: string;      // Numeric part only\n        departureAirport: string;  // 3-letter IATA code\n        arrivalAirport: string;    // 3-letter IATA code\n        departureDate: string;     // YYYY-MM-DD\n        departureTime: string;     // HH:MM (24-hour)\n        arrivalTime: string;       // HH:MM (24-hour)\n        plusDays: number;          // 0, 1, 2, etc.\n      }>;\n    }>;\n    travelClass: \"ECONOMY\" | \"PREMIUM_ECONOMY\" | \"BUSINESS\" | \"FIRST\";\n    adults: number;      // min: 1\n    children: number;    // min: 0\n    infantsInSeat: number;  // min: 0\n    infantsOnLap: number;   // min: 0\n  };\n  source: string;        // e.g., \"Kayak\", \"ChatGPT\"\n  price: string;         // e.g., \"84.00\", \"500\"\n  currency: string;      // 3-letter ISO code, pattern: ^[A-Z]{3}$\n  location?: string;     // 2-letter ISO code, pattern: ^[A-Z]{2}$, default: \"ZZ\"\n}\n```\n\n**Output** (MCP-compliant format):\n```typescript\n{\n  content: [\n    {\n      type: \"text\",\n      text: string  // JSON string containing { message, searchResult }\n    }\n  ],\n  isError: boolean\n}\n```\n\n**Parsed content structure**:\n```typescript\n{\n  message: string;        // Summary message\n  searchResult: {\n    status: string;       // Overall status\n    request_id: string;\n    totalResults: number;\n    results: Array<...>\n  }\n}\n```\n\n### Tool 2: `format_flight_pricecheck_request`\n\n**Purpose**: Parse natural language into structured format\n\n**Input**:\n```typescript\n{\n  user_request: string;  // Natural language flight details\n}\n```\n\n**Output**:\n```typescript\n{\n  message: string;\n  needsMoreInfo: boolean;\n  missingFields?: string[];           // If needsMoreInfo is true\n  flightData?: object;                // If needsMoreInfo is false\n  readyForPriceCheck: boolean;\n}\n```\n\n## 🎯 Your Milan → Sydney Flight (Corrected Format)\n\n**Saved as**: `milan-sydney-example.json`\n\n```json\n{\n  \"trip\": {\n    \"legs\": [\n      {\n        \"segments\": [\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"124\",\n            \"departureAirport\": \"MXP\",\n            \"arrivalAirport\": \"DOH\",\n            \"departureDate\": \"2026-02-19\",\n            \"departureTime\": \"08:55\",\n            \"arrivalTime\": \"16:40\",\n            \"plusDays\": 0\n          },\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"908\",\n            \"departureAirport\": \"DOH\",\n            \"arrivalAirport\": \"SYD\",\n            \"departureDate\": \"2026-02-19\",\n            \"departureTime\": \"20:40\",\n            \"arrivalTime\": \"18:50\",\n            \"plusDays\": 1\n          }\n        ]\n      },\n      {\n        \"segments\": [\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"909\",\n            \"departureAirport\": \"SYD\",\n            \"arrivalAirport\": \"DOH\",\n            \"departureDate\": \"2026-03-01\",\n            \"departureTime\": \"21:40\",\n            \"arrivalTime\": \"04:30\",\n            \"plusDays\": 1\n          },\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"127\",\n            \"departureAirport\": \"DOH\",\n            \"arrivalAirport\": \"MXP\",\n            \"departureDate\": \"2026-03-02\",\n            \"departureTime\": \"08:50\",\n            \"arrivalTime\": \"13:10\",\n            \"plusDays\": 0\n          }\n        ]\n      }\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"Kayak\",\n  \"price\": \"500\",\n  \"currency\": \"USD\",\n  \"location\": \"IT\"\n}\n```\n\n## 📊 Key Insights\n\n### Round-Trip Structure\n- **Leg 1**: Outbound journey (MXP → DOH → SYD)\n  - 2 segments with connection in Doha\n- **Leg 2**: Return journey (SYD → DOH → MXP)\n  - 2 segments with connection in Doha\n\n### Flight Timing\n- **Outbound total**: ~26 hours (departs Feb 19 08:55, arrives Feb 20 18:50)\n- **Return total**: ~17 hours (departs Mar 1 21:40, arrives Mar 2 13:10)\n- **Trip duration**: 11 nights in Australia\n\n### Price Analysis\n- **$500 USD** for Milan → Sydney round-trip on Qatar Airways\n- This is **exceptionally low** - typical prices: $800-1500+\n- Could be:\n  - Promotional fare\n  - Error fare\n  - Missing taxes/fees\n  - Special corporate/student rate\n\n## 🔧 MCP Configuration\n\n**Add to `~/.claude/mcp.json`**:\n```json\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n```\n\n**Then restart Claude Code completely.**\n\n## ✅ What's Updated\n\n### Files Modified:\n1. ✅ **SKILL.md** - Corrected round-trip format, updated tool names\n2. ✅ **README.md** - Updated with HTTP endpoint configuration\n3. ✅ **INSTALLATION.md** - Updated setup instructions\n4. ✅ **milan-sydney-example.json** - Your flight in correct format\n5. ✅ **SPEC-UPDATES.md** - This documentation\n\n### Changes Applied:\n- ✅ Round trips now use 2 legs (not 1)\n- ✅ Location parameter uses 2-letter country codes\n- ✅ Tool names match official spec\n- ✅ Travel class enum matches exactly\n- ✅ All examples updated to correct format\n\n## 🚀 Next Steps\n\n1. **Configure MCP** in `~/.claude/mcp.json`\n2. **Restart Claude Code**\n3. **Test with**: \"Search that Milan to Sydney flight again\"\n4. **Get results** showing best prices across 10+ booking sites\n\n## 📚 Official Documentation\n\n- **MCP Endpoint**: https://mcp.navifare.com/mcp\n- **Documentation**: https://www.navifare.com/mcp\n- **Version**: 0.1.5\n- **Status**: Always available (hosted service)\n\n---\n\n**Updated**: 2026-02-11\n**Spec Version**: 0.1.5\n**Skill Version**: 1.0.1\n\nFile v1.2.0:mcp-config-example.json\n\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n\nFile v1.2.0:milan-sydney-example.json\n\n{\n  \"trip\": {\n    \"legs\": [\n      {\n        \"segments\": [\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"124\",\n            \"departureAirport\": \"MXP\",\n            \"arrivalAirport\": \"DOH\",\n            \"departureDate\": \"2026-02-19\",\n            \"departureTime\": \"08:55\",\n            \"arrivalTime\": \"16:40\",\n            \"plusDays\": 0\n          },\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"908\",\n            \"departureAirport\": \"DOH\",\n            \"arrivalAirport\": \"SYD\",\n            \"departureDate\": \"2026-02-19\",\n            \"departureTime\": \"20:40\",\n            \"arrivalTime\": \"18:50\",\n            \"plusDays\": 1\n          }\n        ]\n      },\n      {\n        \"segments\": [\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"909\",\n            \"departureAirport\": \"SYD\",\n            \"arrivalAirport\": \"DOH\",\n            \"departureDate\": \"2026-03-01\",\n            \"departureTime\": \"21:40\",\n            \"arrivalTime\": \"04:30\",\n            \"plusDays\": 1\n          },\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"127\",\n            \"departureAirport\": \"DOH\",\n            \"arrivalAirport\": \"MXP\",\n            \"departureDate\": \"2026-03-02\",\n            \"departureTime\": \"08:50\",\n            \"arrivalTime\": \"13:10\",\n            \"plusDays\": 0\n          }\n        ]\n      }\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"Kayak\",\n  \"price\": \"500\",\n  \"currency\": \"USD\",\n  \"location\": \"IT\"\n}\n\nArchive v1.1.1: 10 files, 29503 bytes\n\nFiles: INSTALLATION.md (8080b), mcp-config-example.json (98b), milan-sydney-example.json (1560b), README.md (8325b), references/AIRLINES.md (7287b), references/AIRPORTS.md (6174b), references/EXAMPLES.md (12940b), SKILL.md (19215b), SPEC-UPDATES.md (7952b), _meta.json (147b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: navifare-flight-validator\ndescription: Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kayak, etc.) or upload flight screenshots to find better deals. Returns ranked results with booking links from multiple providers.\nlicense: MIT\ncompatibility: Requires Navifare MCP server configured. Access to mcp__navifare-mcp tools required.\nmetadata:\n  author: navifare\n  version: \"1.1.1\"\n  category: travel\n  mcp_required: navifare-mcp\nallowed-tools: mcp__navifare-mcp__flight_pricecheck mcp__navifare-mcp__format_flight_pricecheck_request Read\n---\n\n# Navifare Flight Price Validator Skill\n\nYou are a travel price comparison specialist. Your role is to help users find the best flight prices by validating deals they find on booking sites and comparing them across multiple providers using Navifare's price discovery platform.\n\n## When to Activate This Skill\n\nTrigger this skill whenever:\n\n1. **User shares a flight price** from any booking website:\n   - \"I found this flight on Skyscanner for $450\"\n   - \"Kayak shows €299 for this route\"\n   - \"Google Flights has this for £320\"\n\n2. **User uploads a flight screenshot** from any booking platform\n\n3. **User asks for price validation**:\n   - \"Is this a good deal?\"\n   - \"Can you find a cheaper flight?\"\n   - \"Should I book this or wait?\"\n\n4. **User mentions booking** but hasn't checked multiple sites:\n   - \"I'm about to book this flight\"\n   - \"Ready to purchase this ticket\"\n\n5. **User compares options** and wants validation:\n   - \"Which of these flights should I choose?\"\n   - \"Is option A or B better?\"\n\n## Prerequisites Check\n\nBefore executing the skill, verify Navifare MCP is available:\n\n```\nCheck for these MCP tools:\n- mcp__navifare-mcp__flight_pricecheck (main search tool)\n- mcp__navifare-mcp__format_flight_pricecheck_request (formatting helper)\n\nIf not available: Inform user to configure the Navifare MCP server\nin their MCP settings with:\n{\n  \"navifare-mcp\": {\n    \"url\": \"https://mcp.navifare.com/mcp\"\n  }\n}\n```\n\n## Execution Workflow\n\n⚠️ **IMPORTANT**: Always follow this exact sequence:\n1. Format with `format_flight_pricecheck_request` → resolve any missing info → search with `flight_pricecheck`\n2. **NEVER** call `flight_pricecheck` directly without calling `format_flight_pricecheck_request` first\n\n### Step 1: Format the Request\n\nThis is always the first action. Take whatever the user provided (text description, screenshot details, partial info) and send it to the formatting tool.\n\n⚠️ **CRITICAL**: You MUST call this tool before `flight_pricecheck`.\n\n```\nTool: mcp__navifare-mcp__format_flight_pricecheck_request\nParameters: {\n  \"user_request\": \"[paste the complete flight description from the user, including all details: airlines, flight numbers, dates, times, airports, price, passengers, class]\"\n}\n\nExample user_request value:\n\"Outbound Feb 19, 2026: QR124 MXP-DOH 08:55-16:40, QR908 DOH-SYD 20:40-18:50 (+1 day).\nReturn Mar 1, 2026: QR909 SYD-DOH 21:40-04:30 (+1 day), QR127 DOH-MXP 08:50-13:10.\nPrice: 1500 EUR, 1 adult, economy class.\"\n```\n\n**What this tool does:**\n- Parses natural language into proper JSON structure\n- Validates all required fields are present\n- Returns `flightData` ready for `flight_pricecheck`\n- Tells you if any information is missing via `needsMoreInfo: true`\n\n**Output handling:**\n- If `needsMoreInfo: true` → Ask user for the missing information, then call this tool again with the updated details\n- If `readyForPriceCheck: true` → Proceed to Step 2 with the returned `flightData`\n\n**From Screenshots**: If user uploads an image, extract all visible flight details (airlines, times, airports, dates, price) and pass them as the `user_request` string.\n\n**Resolving missing info**: When the tool reports missing fields:\n- For **airports**: Check `references/AIRPORTS.md` for common codes\n- For **airlines**: Check `references/AIRLINES.md` for codes\n- For **times**: Ask user: \"What time does the flight depart/arrive?\"\n- For **dates**: Validate dates are in future, ask user if unclear\n- For **currency**: Auto-detect from symbols (€→EUR, $→USD, £→GBP, CHF→CHF)\n\n**DO NOT skip this step.** It ensures data is properly formatted and validated.\n\n### Step 2: Execute Price Search\n\nOnce `format_flight_pricecheck_request` returns `readyForPriceCheck: true`, it provides a structured `flightData` object like this:\n\n```json\n{\n  \"trip\": {\n    \"legs\": [\n      {\n        \"segments\": [\n          {\n            \"airline\": \"BA\",\n            \"flightNumber\": \"553\",\n            \"departureAirport\": \"JFK\",\n            \"arrivalAirport\": \"LHR\",\n            \"departureDate\": \"2025-06-15\",\n            \"departureTime\": \"18:00\",\n            \"arrivalTime\": \"06:30\",\n            \"plusDays\": 1\n          }\n        ]\n      }\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"MCP\",\n  \"price\": \"450\",\n  \"currency\": \"USD\",\n  \"location\": \"US\"\n}\n```\n\n**Key fields in the output:**\n- `plusDays`: 1 if arrival is next day, 2 if two days later, etc.\n- `location`: User's 2-letter ISO country code (e.g., \"IT\", \"US\", \"GB\"). Defaults to \"ZZ\" if unknown\n- Multi-segment flights have multiple segments in the same leg\n- Round-trip flights have two separate legs (outbound and return)\n\n**IMPORTANT VALIDATIONS before calling the search:**\n\n1. **Check for one-way flights** — Navifare only supports round-trip flights:\n   ```\n   if trip has only 1 leg:\n     ❌ Return error: \"Sorry, Navifare currently only supports round-trip flights.\n        One-way flight price checking is not available yet.\"\n     DO NOT proceed with the search.\n   ```\n\n2. **Inform user FIRST** — Tell them it will take time:\n   ```\n   \"🔍 Searching for better prices across multiple booking sites...\n   This typically takes 30-60 seconds as I check real-time availability.\"\n   ```\n\n**Then call the search tool with the formatted data:**\n\n```\nTool: mcp__navifare-mcp__flight_pricecheck\nParameters: {\n  Use the EXACT flightData object returned from format_flight_pricecheck_request.\n  This includes: trip, source, price, currency, location\n}\n\nThe MCP server will:\n1. Submit the search request to Navifare API\n2. Poll for results automatically (up to 90 seconds)\n3. Return final ranked results when complete\n```\n\n**CRITICAL**: The tool call will block for 30-60 seconds. This is normal.\nDo NOT abort or assume it failed — wait for the response.\n\n**IF TOOL RUNS LONGER THAN 90 SECONDS:**\n- The server has a 90-second timeout\n- If still running after 90s, there may be a client-side issue\n- Results are likely already available but not displayed\n- Try canceling and re-calling the tool\n\n### Step 3: Analyze Results\n\n**IMPORTANT**: The MCP tool returns a JSON-RPC response following the MCP specification.\n\n**MCP Response Format:**\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"message\\\":\\\"...\\\",\\\"searchResult\\\":{...}}\"\n      }\n    ],\n    \"isError\": false\n  }\n}\n```\n\n**How to extract results:**\n1. Parse `result.content[0].text` as JSON\n2. Extract `searchResult.results` array from parsed data\n3. Each result has: `price`, `currency`, `source`, `booking_URL`\n4. Results are pre-sorted by price (cheapest first)\n\n**Example parsed data structure:**\n```json\n{\n  \"message\": \"Search completed. Found X results from Y booking sites.\",\n  \"searchResult\": {\n    \"request_id\": \"abc123\",\n    \"status\": \"COMPLETED\",\n    \"totalResults\": 5,\n    \"results\": [\n      {\n        \"result_id\": \"xyz-KIWI\",\n        \"price\": \"429.00\",\n        \"currency\": \"USD\",\n        \"convertedPrice\": \"395.00\",\n        \"convertedCurrency\": \"EUR\",\n        \"booking_URL\": \"https://...\",\n        \"source\": \"Kiwi.com\",\n        \"private_fare\": \"false\",\n        \"timestamp\": \"2025-02-11T16:30:00Z\"\n      }\n    ]\n  }\n}\n```\n\n**Analysis to perform**:\n1. **Compare with reference price**: Calculate savings/difference\n2. **Identify best deal**: Lowest price in results\n3. **Check price spread**: Show range from cheapest to most expensive\n4. **Note fare types**: Highlight \"Special Fare\" vs \"Standard Fare\"\n5. **Validate availability**: Ensure results are recent (check timestamp)\n\n**Price difference calculation**:\n```\nsavings = referencePrice - bestPrice\nsavingsPercent = (savings / referencePrice) * 100\n\nIf savingsPercent > 5%: \"Significant savings available\"\nIf savingsPercent < -5%: \"Prices have increased\"\nIf abs(savingsPercent) <= 5%: \"Price is competitive\"\n```\n\n### Step 4: Present Findings to User\n\nFormat results as a clear, actionable summary:\n\n**When better price found** (savings > 5%):\n```\n✅ I found a better deal!\n\nYour reference: $450 on [original site]\nBest price found: $429 on Kiwi.com\n💰 You save: $21 (4.7%)\n\nTop 3 Options:\n┌────┬──────────────┬────────┬──────────────┬─────────────────────┐\n│ #  │ Website      │ Price  │ Fare Type    │ Booking Link        │\n├────┼──────────────┼────────┼──────────────┼─────────────────────┤\n│ 1  │ Kiwi.com     │ $429   │ Standard     │ [Book Now]          │\n│ 2  │ Momondo      │ $445   │ Standard     │ [Book Now]          │\n│ 3  │ eDreams      │ $450   │ Special Fare │ [Book Now]          │\n└────┴──────────────┴────────┴──────────────┴─────────────────────┘\n\nAll prices checked: 2025-02-11 16:30 UTC\n```\n\n**When price is validated** (within 5%):\n```\n✅ Price verified!\n\nYour reference: $450 on [original site]\nNavifare best price: $445 on Momondo\n📊 Difference: $5 (1.1%)\n\nYour price is competitive. The best available price is very close to what you found.\n\nTop 3 Options:\n[Same table format as above]\n```\n\n**When prices increased** (reference price lower):\n```\n⚠️ Prices have changed\n\nYour reference: $450 on [original site]\nCurrent best price: $489 on Kiwi.com\n📈 Increase: $39 (8.7%)\n\nThis flight may be in high demand. Prices have increased since you last checked.\n\nTop 3 Options:\n[Same table format as above]\n\n💡 Tip: Consider booking soon if this route works for you, or check alternative dates.\n```\n\n**When no results found**:\n```\n❌ No results found\n\nNavifare couldn't find current prices for this exact itinerary.\n\nPossible reasons:\n- Flight details may be incomplete or incorrect\n- This specific flight combination may not be available\n- The route may not be currently offered\n\nWould you like to:\n1. Verify the flight details (times, dates, airports)\n2. Search for alternative flights on this route\n3. Try different dates\n```\n\n### Step 5: Provide Booking Guidance\n\nAfter presenting results:\n\n1. **Make booking links clickable**: Format as `[Book on Kiwi.com](https://...)`\n\n2. **Highlight key considerations**:\n   - Fare restrictions (if mentioned in results)\n   - Baggage policies (if available)\n   - Refund policies (Standard vs Special fares)\n\n3. **Offer next steps**:\n   - \"Click any booking link to complete your purchase\"\n   - \"Would you like me to check alternative dates?\"\n   - \"Should I search for different flight options?\"\n\n4. **NO automatic booking**: Never attempt to book flights — only provide comparison and links\n\n## Data Format Examples\n\n### Example 1: Round-Trip Flight\n\nUser: \"Kayak shows €599 for Milan to Barcelona and back, June 20-27, ITA Airways\"\n\nWhat you send to `format_flight_pricecheck_request`:\n```\n\"Kayak shows €599 for Milan to Barcelona and back, June 20-27, ITA Airways AZ78 departing 08:30 arriving 10:15, return AZ79 departing 18:00 arriving 19:45. 1 adult, economy.\"\n```\n\nWhat the tool returns as `flightData` (ready for `flight_pricecheck`):\n```json\n{\n  \"trip\": {\n    \"legs\": [\n      {\"segments\": [\n        {\n          \"airline\": \"AZ\",\n          \"flightNumber\": \"78\",\n          \"departureAirport\": \"MXP\",\n          \"arrivalAirport\": \"BCN\",\n          \"departureDate\": \"2025-06-20\",\n          \"departureTime\": \"08:30\",\n          \"arrivalTime\": \"10:15\",\n          \"plusDays\": 0\n        }\n      ]},\n      {\"segments\": [\n        {\n          \"airline\": \"AZ\",\n          \"flightNumber\": \"79\",\n          \"departureAirport\": \"BCN\",\n          \"arrivalAirport\": \"MXP\",\n          \"departureDate\": \"2025-06-27\",\n          \"departureTime\": \"18:00\",\n          \"arrivalTime\": \"19:45\",\n          \"plusDays\": 0\n        }\n      ]}\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"MCP\",\n  \"price\": \"599\",\n  \"currency\": \"EUR\"\n}\n```\n\n### Example 2: Multi-Segment Connection (Round-Trip)\n\nUser: \"Found $890 LAX to Tokyo via Seattle on Alaska/ANA, July 10, returning July 20\"\n\nWhat you send to `format_flight_pricecheck_request`:\n```\n\"LAX to Tokyo via Seattle, July 10. AS338 LAX-SEA 10:00-12:30, NH178 SEA-NRT 14:30-17:00 (+1 day). Return July 20: NH177 NRT-SEA 18:00-11:00, AS339 SEA-LAX 14:00-17:00. Price $890, 1 adult, economy.\"\n```\n\nWhat the tool returns as `flightData`:\n```json\n{\n  \"trip\": {\n    \"legs\": [\n      {\"segments\": [\n        {\n          \"airline\": \"AS\",\n          \"flightNumber\": \"338\",\n          \"departureAirport\": \"LAX\",\n          \"arrivalAirport\": \"SEA\",\n          \"departureDate\": \"2025-07-10\",\n          \"departureTime\": \"10:00\",\n          \"arrivalTime\": \"12:30\",\n          \"plusDays\": 0\n        },\n        {\n          \"airline\": \"NH\",\n          \"flightNumber\": \"178\",\n          \"departureAirport\": \"SEA\",\n          \"arrivalAirport\": \"NRT\",\n          \"departureDate\": \"2025-07-10\",\n          \"departureTime\": \"14:30\",\n          \"arrivalTime\": \"17:00\",\n          \"plusDays\": 1\n        }\n      ]},\n      {\"segments\": [\n        {\n          \"airline\": \"NH\",\n          \"flightNumber\": \"177\",\n          \"departureAirport\": \"NRT\",\n          \"arrivalAirport\": \"SEA\",\n          \"departureDate\": \"2025-07-20\",\n          \"departureTime\": \"18:00\",\n          \"arrivalTime\": \"11:00\",\n          \"plusDays\": 0\n        },\n        {\n          \"airline\": \"AS\",\n          \"flightNumber\": \"339\",\n          \"departureAirport\": \"SEA\",\n          \"arrivalAirport\": \"LAX\",\n          \"departureDate\": \"2025-07-20\",\n          \"departureTime\": \"14:00\",\n          \"arrivalTime\": \"17:00\",\n          \"plusDays\": 0\n        }\n      ]}\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"MCP\",\n  \"price\": \"890\",\n  \"currency\": \"USD\"\n}\n```\n\n## Error Handling\n\n### API Timeout\nIf search exceeds 90 seconds:\n```\n⏱️ Search is taking longer than expected.\n\nCurrent status: Found X results so far\nNavifare is still searching additional booking sites...\n\n[Present partial results if available]\n```\n\n### Invalid Airport Codes\nIf user provides unclear airports:\n```\n❓ I need to verify the airports.\n\nYou mentioned: \"New York\" and \"London\"\n\nDid you mean:\n- New York: JFK (Kennedy) or EWR (Newark) or LGA (LaGuardia)?\n- London: LHR (Heathrow) or LGW (Gatwick) or STN (Stansted)?\n\nPlease specify the exact airports.\n```\nSee `references/AIRPORTS.md` for complete list.\n\n### Missing Critical Information\n```\n❓ I need more details to search accurately.\n\nCurrent information:\n✅ Route: JFK → LHR\n✅ Date: 2025-06-15\n❌ Departure time: Not specified\n❌ Arrival time: Not specified\n\nPlease provide:\n- What time does the flight depart? (e.g., \"6:00 PM\")\n- What time does it arrive? (e.g., \"6:30 AM next day\")\n```\n\n### Currency Conversion\nIf currency symbols are ambiguous:\n```\n💱 Currency Clarification\n\nYou mentioned \"$450\" - is this:\n1. USD (US Dollar) - Recommended\n2. CAD (Canadian Dollar)\n3. AUD (Australian Dollar)\n4. Other?\n\nPlease specify for accurate price comparison.\n```\n\n### Date Validation\nIf dates are in the past:\n```\n⚠️ Date Issue\n\nThe date you provided (2024-12-20) is in the past.\n\nDid you mean:\n- 2025-12-20 (this year)\n- 2026-12-20 (next year)\n\nPlease confirm the correct travel date.\n```\n\n## Best Practices\n\n### 1. Always Verify Before Searching\n- Confirm all required fields are present\n- Validate airports using IATA codes\n- Ensure dates are reasonable and in future\n- Check times are in 24-hour format\n\n### 2. Handle Ambiguity Gracefully\n- Ask specific questions when data is unclear\n- Provide options rather than making assumptions\n- Reference documentation files for validation\n\n### 3. Present Results Clearly\n- Use tables for easy comparison\n- Highlight savings/differences prominently\n- Make booking links immediately actionable\n- Include timestamps for price freshness\n\n### 4. Consider User Context\n- Multi-city trips: Ensure all segments are captured\n- Business travel: Note refund/change policies\n- Budget conscious: Emphasize savings opportunities\n- Time sensitive: Highlight price trends\n\n### 5. Progressive Disclosure\n- Start with top 3-5 results\n- Offer to show more if user wants\n- Don't overwhelm with excessive details\n- Focus on actionable insights\n\n### 6. Respect Search Limitations\n- 90-second polling window\n- Results may be incomplete if timeout\n- Some booking sites may not be covered\n- Prices update in real-time (may change quickly)\n\n## Technical Notes\n\n### MCP Tool Integration\nThe Navifare MCP provides these tools:\n- `format_flight_pricecheck_request`: Parses natural language into structured format (**always call first**)\n- `flight_pricecheck`: Executes price search across booking sites (main search tool)\n\n**Workflow:**\n1. Call `format_flight_pricecheck_request` with the user's natural language description\n2. If `needsMoreInfo: true` → ask user for missing fields, then call again\n3. If `readyForPriceCheck: true` → use the returned `flightData` to call `flight_pricecheck`\n4. `flight_pricecheck` handles polling automatically and returns complete results\n\n### Data Quality\n- Navifare scrapes real-time prices from booking sites\n- Results include booking URLs that redirect to provider sites\n- Prices are accurate at time of search but may change\n- Some providers may show different prices based on location/cookies\n\n### Performance\n- Typical search: 30-60 seconds\n- Maximum search time: 90 seconds\n- Results stream in as they're found\n- More results = higher confidence in best price\n\n### Supported Routes\n- **Round-trip flights only** (one-way NOT supported)\n- International and domestic flights\n- Multi-city with connections (as long as outbound + return = 2 legs)\n- All major airlines and booking platforms\n- Same origin/destination required (open-jaw routes NOT supported)\n\n## Additional Resources\n\n- **AIRPORTS.md**: Complete IATA airport codes by region\n- **AIRLINES.md**: Complete IATA airline codes with full names\n- **EXAMPLES.md**: Real conversation examples with screenshots\n\nFor complete Navifare MCP documentation, see the main repository.\n\n---\n\n**Remember**: Your goal is to save users money by finding the best flight prices. Be proactive, thorough, and always present actionable booking options with clear links.\n\nFile v1.1.1:README.md\n\n# Navifare Flight Price Validator Skill\n\nAn AgentSkills-compliant skill that enables AI agents to validate and compare flight prices across multiple booking sites using the Navifare MCP. Compatible with any MCP-enabled client (Claude Code, OpenClawd, etc.).\n\n## What This Skill Does\n\nWhen users mention flight prices from any booking website (Skyscanner, Kayak, Google Flights, etc.), this skill automatically:\n1. ✈️ Extracts flight details from text or screenshots\n2. 🔍 Searches Navifare's network of booking sites\n3. 💰 Compares prices to find the best deals\n4. 🔗 Provides direct booking links to providers\n\n## Installation\n\n### Prerequisites\n\n**Required**: Navifare MCP Server must be configured in your MCP client.\n\nThe Navifare MCP is available as a hosted service. Add the following to your MCP client configuration (e.g., `mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n```\n\n**No local installation required!** The MCP server is hosted and always available.\n\n### Install the Skill\n\nInstall the skill in your agent's skills directory. For example:\n```\n~/.claude/skills/navifare-flight-validator/\n```\n\nDirectory structure:\n```\nnavifare-flight-validator/\n├── SKILL.md              # Main skill definition\n├── README.md             # This file\n├── references/\n│   ├── AIRPORTS.md       # IATA airport codes reference\n│   ├── AIRLINES.md       # IATA airline codes reference\n│   └── EXAMPLES.md       # Real usage examples\n└── scripts/              # (Reserved for future enhancements)\n```\n\n### Verify Installation\n\n1. **Check MCP is running**:\n   The following Navifare MCP tools should be available in your client:\n   - `mcp__navifare-mcp__flight_pricecheck`\n   - `mcp__navifare-mcp__format_flight_pricecheck_request`\n\n2. **Verify skill is detected**:\n   Your MCP client should automatically discover skills in the configured skills directory.\n\n## Usage\n\n### Example 1: Validate a Price from Skyscanner\n\n**You**: I found a flight from New York to London on Skyscanner for $450. It's BA553 departing June 15 at 6 PM.\n\n**Agent** (automatically activates skill):\n- Extracts flight details\n- Searches Navifare for better prices\n- Presents comparison table with booking links\n\n### Example 2: Upload a Screenshot\n\n**You**: *[Upload screenshot from Kayak]*\n\n**Agent**:\n- Extracts visible flight details from the screenshot\n- Validates prices across booking sites\n- Shows savings opportunities\n\n### Example 3: Before Booking\n\n**You**: I'm about to book this flight. Should I?\n\n**Agent**:\n- Asks for flight details\n- Runs price comparison\n- Recommends best option\n\n## When The Skill Activates\n\nThe skill automatically triggers when you:\n- 💬 Mention finding a flight price: \"I found this flight for $X\"\n- 📸 Upload a flight booking screenshot\n- ❓ Ask \"Is this a good price?\"\n- 🤔 Say \"Should I book this?\"\n- 🔍 Ask \"Can you find cheaper?\"\n\n## What Information is Needed\n\nFor accurate price comparison, the skill needs:\n\n**Required**:\n- ✈️ **Route**: Departure and arrival airports (e.g., \"JFK to LHR\")\n- 📅 **Date**: Travel date (e.g., \"June 15, 2025\")\n- 🛫 **Flight**: Airline and flight number (e.g., \"BA553\")\n- ⏰ **Times**: Departure and arrival times (e.g., \"6:00 PM - 6:30 AM\")\n\n**Optional but helpful**:\n- 💺 **Class**: Economy, Business, First (defaults to Economy)\n- 👥 **Passengers**: Number of adults/children (defaults to 1 adult)\n- 💵 **Reference price**: What you saw on other sites\n- 💱 **Currency**: USD, EUR, GBP, etc. (auto-detected from price)\n\nIf any information is missing, the agent will ask you for it!\n\n## Features\n\n### ✅ What This Skill Does\n- Compares prices across 10+ booking sites\n- Handles direct and connecting flights\n- Supports round-trip searches (one-way NOT supported)\n- Extracts flight info from screenshots (via the agent's vision capabilities)\n- Validates IATA codes for airports and airlines\n- Converts currencies\n- Shows price trends and savings\n- Provides direct booking links\n\n### ❌ What This Skill Does NOT Do\n- Book flights automatically (returns links only)\n- Store your payment information\n- Make purchasing decisions for you\n- Guarantee prices won't change\n\n## Reference Documentation\n\n### AIRPORTS.md\nComplete IATA airport codes including:\n- 200+ major international airports\n- Regional airports by continent\n- Multi-airport cities (London, New York, Paris, etc.)\n- Low-cost carrier hubs\n- How to handle ambiguous airport references\n\n### AIRLINES.md\nComplete IATA airline codes including:\n- 150+ major airlines worldwide\n- Low-cost carriers\n- Alliance memberships (Star Alliance, SkyTeam, oneworld)\n- Regional carriers and subsidiaries\n- Codeshare handling\n- Flight number extraction rules\n\n### EXAMPLES.md\nReal conversation examples showing:\n- Handling one-way requests (round-trip only limitation)\n- Screenshot extraction workflows\n- Multi-segment connection flights\n- Round-trip validations\n- Error handling scenarios\n- Missing information recovery\n- Edge cases (no results, price increases, etc.)\n\n## Troubleshooting\n\n### \"Navifare MCP not available\"\n\n**Solution**: Verify your MCP client configuration:\n1. Check that `navifare-mcp` is configured with `\"url\": \"https://mcp.navifare.com/mcp\"`\n2. Restart your MCP client after changing configuration\n3. Verify the Navifare MCP tools are available\n\n### \"No results found\"\n\n**Possible causes**:\n1. Flight details are incorrect (wrong airline code, flight number)\n2. The flight doesn't operate on the specified date\n3. Airport codes are invalid\n\n**Solution**: Double-check flight details and use reference docs to verify codes.\n\n### \"Search timeout\"\n\n**What happened**: Navifare searches take up to 90 seconds. Sometimes it times out.\n\n**Solution**: The skill will show partial results if available. You can:\n- Try searching again\n- Use the partial results returned\n- Verify flight details are correct\n\n### \"Invalid airport code\"\n\n**Solution**: Check `references/AIRPORTS.md` for the correct IATA code.\n\nCommon mistakes:\n- LON vs LHR/LGW/STN (London has 6 airports!)\n- NYC vs JFK/EWR/LGA (New York has 3 major)\n- PAR vs CDG/ORY (Paris has 2 major)\n\n## Advanced Usage\n\n### For Multiple Passengers\n\n**You**: Family of 4 traveling to Paris. Found €1,200 total on Kayak.\n\n**Agent**: Extracts passenger count (4) and searches accordingly.\n\n### For Business Class\n\n**You**: Business class JFK to Tokyo, found $3,500 on United.\n\n**Agent**: Searches business class fares specifically.\n\n### For Complex Itineraries\n\n**You**: LAX → Tokyo → Sydney, multi-city trip.\n\n**Agent**: Handles multiple segments and connections.\n\n## Performance\n\n- **Typical search time**: 30-60 seconds\n- **Maximum search time**: 90 seconds\n- **Booking sites searched**: 10+ providers\n- **Results returned**: Up to 20 options (shows top 5 by default)\n\n## Privacy & Security\n\n- ✅ No booking data is stored\n- ✅ No payment information is collected\n- ✅ Searches are anonymous\n- ✅ Booking happens directly on provider sites\n- ✅ Links are direct to booking platforms (no tracking)\n\n## Contributing\n\nTo improve this skill:\n\n1. **Add more airports**: Edit `references/AIRPORTS.md`\n2. **Add more airlines**: Edit `references/AIRLINES.md`\n3. **Add examples**: Edit `references/EXAMPLES.md`\n4. **Enhance instructions**: Edit `SKILL.md`\n\n## Support\n\nFor issues with:\n- **The skill itself**: Check this README and reference docs\n- **Navifare MCP**: See main Navifare repository\n- **Your MCP client**: Refer to your client's documentation\n\n## License\n\nMIT License - See main Navifare project for details.\n\n## Version History\n\n- **v1.1.1** (2026-02-23): Consistency fixes\n  - Fixed tool name inconsistencies across all docs (now consistently `flight_pricecheck` and `format_flight_pricecheck_request`)\n  - Clarified round-trip only limitation across all files\n  - Removed references to undeclared tools (extractFlightDetails, Gemini AI)\n  - Made documentation client-agnostic (not tied to Claude Code)\n  - Removed stale local installation references\n- **v1.0.0** (2025-02-11): Initial release\n  - Price comparison across booking sites\n  - Screenshot extraction support\n  - Complete IATA reference data\n  - Comprehensive usage examples\n\n---\n\n**Happy travels! Save money with Navifare price comparison.**\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn70azdj03erwqsvqfshxqmvyx80zftx\",\n  \"slug\": \"navifare-hidden-flight-deals\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1771848427987\n}\n\nFile v1.1.1:references/AIRLINES.md\n\n# IATA Airline Codes Reference\n\nQuick reference for common airline codes used in flight searches.\n\n## Major Full-Service Airlines\n\n### North America\n- **AA** - American Airlines\n- **DL** - Delta Air Lines\n- **UA** - United Airlines\n- **AC** - Air Canada\n- **AS** - Alaska Airlines\n- **WS** - WestJet\n\n### Europe - Major Carriers\n- **BA** - British Airways\n- **AF** - Air France\n- **LH** - Lufthansa\n- **KL** - KLM Royal Dutch Airlines\n- **AZ** - ITA Airways (formerly Alitalia)\n- **LX** - Swiss International Air Lines\n- **OS** - Austrian Airlines\n- **LO** - LOT Polish Airlines\n- **SN** - Brussels Airlines\n- **IB** - Iberia\n- **TP** - TAP Portugal\n- **SK** - Scandinavian Airlines (SAS)\n- **AY** - Finnair\n- **EI** - Aer Lingus\n\n### Middle East\n- **EK** - Emirates\n- **QR** - Qatar Airways\n- **EY** - Etihad Airways\n- **TK** - Turkish Airlines\n- **MS** - EgyptAir\n- **SV** - Saudia\n\n### Asia-Pacific\n- **SQ** - Singapore Airlines\n- **CX** - Cathay Pacific\n- **NH** - All Nippon Airways (ANA)\n- **JL** - Japan Airlines (JAL)\n- **KE** - Korean Air\n- **OZ** - Asiana Airlines\n- **TG** - Thai Airways\n- **MH** - Malaysia Airlines\n- **GA** - Garuda Indonesia\n- **QF** - Qantas\n- **NZ** - Air New Zealand\n- **AI** - Air India\n- **9W** - Jet Airways\n\n### Latin America\n- **LA** - LATAM Airlines\n- **AM** - Aeroméxico\n- **CM** - Copa Airlines\n- **AV** - Avianca\n\n### China\n- **CA** - Air China\n- **CZ** - China Southern Airlines\n- **MU** - China Eastern Airlines\n- **HU** - Hainan Airlines\n- **3U** - Sichuan Airlines\n\n## Low-Cost Carriers\n\n### Europe\n- **FR** - Ryanair\n- **U2** - easyJet\n- **W6** - Wizz Air\n- **VY** - Vueling\n- **PC** - Pegasus Airlines\n- **LS** - Jet2.com\n- **TO** - Transavia\n- **DY** - Norwegian Air Shuttle\n- **BT** - airBaltic\n\n### North America\n- **WN** - Southwest Airlines\n- **B6** - JetBlue Airways\n- **NK** - Spirit Airlines\n- **F9** - Frontier Airlines\n- **G4** - Allegiant Air\n\n### Asia-Pacific\n- **3K** - Jetstar Asia\n- **FD** - Thai AirAsia\n- **AK** - AirAsia\n- **5J** - Cebu Pacific\n- **TR** - Scoot\n- **VJ** - VietJet Air\n- **IX** - Air India Express\n- **SG** - SpiceJet\n- **6E** - IndiGo\n\n### Middle East & Africa\n- **FZ** - flydubai\n- **XY** - flynas\n- **G9** - Air Arabia\n- **XQ** - SunExpress\n- **WY** - Oman Air\n- **FP** - Mango (South Africa)\n\n## Alliance Members\n\n### Star Alliance\nMembers include: UA, LH, AC, NH, SQ, TK, LO, SK, AY, OS, LX, SN, TP, AI, CA, OZ, TG, EY\n\n### SkyTeam\nMembers include: AF, KL, DL, AZ, KE, CZ, MU, SV, AM, GA, VN\n\n### oneworld\nMembers include: AA, BA, IB, AY, QR, JL, QF, CX, LA, AS, WY\n\n## Regional European Airlines\n\n### Germany\n- **DE** - Condor\n- **4U** - Germanwings (now Eurowings)\n- **EW** - Eurowings\n\n### UK & Ireland\n- **BE** - Flybe (defunct)\n- **LS** - Jet2.com\n- **FR** - Ryanair\n- **EI** - Aer Lingus\n\n### Scandinavia\n- **D8** - Norwegian Air International\n- **DY** - Norwegian\n- **BT** - airBaltic\n- **AY** - Finnair\n- **RC** - Atlantic Airways\n\n### Eastern Europe\n- **W6** - Wizz Air\n- **FR** - Ryanair (operates throughout)\n- **RO** - Tarom (Romania)\n- **OK** - Czech Airlines\n\n### Southern Europe\n- **VY** - Vueling\n- **UX** - Air Europa\n- **NT** - Binter Canarias\n- **AZ** - ITA Airways\n- **AP** - AlbaStar\n- **EN** - Air Dolomiti\n\n## Flight Number Format Examples\n\nFlight numbers consist of:\n- **2-letter airline code** + **1-4 digit number**\n\nExamples:\n- BA553 → British Airways flight 553\n- LH400 → Lufthansa flight 400\n- FR1234 → Ryanair flight 1234\n- U2 3811 → easyJet flight 3811 (note space)\n\n### Extraction Rule\nWhen extracting flight numbers for Navifare:\n- **Extract ONLY the numeric part**\n- BA553 → \"553\"\n- LH400 → \"400\"\n- U2 3811 → \"3811\"\n- FR1234 → \"1234\"\n\nThe airline name/code is stored separately in the `airline` field.\n\n## How to Identify Airlines\n\n### From Flight Numbers\n- **Two letters at start**: BA553, LH400, AF123\n- **One letter + number**: U23811 (easyJet), W63456 (Wizz Air)\n- **Single letter codes are rare**: Y (MyWay Airlines), I (IBC Airways)\n\n### From Logos/Branding\n- Look for airline logos on screenshots\n- Check aircraft livery colors\n- Look for \"operated by\" text (codeshares)\n\n### From Context\nIf user mentions:\n- \"Lufthansa flight\" → LH\n- \"British Airways\" → BA\n- \"Ryanair\" → FR\n- \"easyJet\" → U2\n\n## Codeshares & Partners\n\n### What are codeshares?\nOne flight operated by airline A but sold with airline B's code.\n\nExample:\n- Flight operated by: LH (Lufthansa)\n- Also sold as: UA8888 (United), AC9999 (Air Canada)\n\n### How to handle\nAlways extract the **operating carrier** (actual airline flying the plane):\n- Look for \"operated by\" text\n- The operating carrier matters for Navifare searches\n- Codeshare numbers may not work in searches\n\n### Common Codeshare Patterns\n- **Star Alliance**: UA, LH, AC flights often codeshare\n- **SkyTeam**: AF, KL, DL flights often codeshare\n- **oneworld**: AA, BA, IB flights often codeshare\n\n## Regional Carriers & Subsidiaries\n\nMany major airlines have regional subsidiaries:\n\n### Lufthansa Group\n- **LH** - Lufthansa\n- **LX** - Swiss\n- **OS** - Austrian\n- **SN** - Brussels Airlines\n- **EW** - Eurowings\n\n### Air France-KLM\n- **AF** - Air France\n- **KL** - KLM\n- **TO** - Transavia\n\n### IAG (International Airlines Group)\n- **BA** - British Airways\n- **IB** - Iberia\n- **VY** - Vueling\n- **EI** - Aer Lingus\n\n### Ryanair Holdings\n- **FR** - Ryanair\n- **MT** - Malta Air\n- **RK** - Ryanair UK\n\n## Handling Unknown Airlines\n\nIf you encounter an airline code not in this list:\n\n1. **Ask the user**: \"I don't recognize airline code XX. What airline is this?\"\n2. **Look for full name**: User might have mentioned \"Delta\" but code is DL\n3. **Check for typos**: Common: BA vs BU, UA vs AA, LH vs LX\n4. **Context from route**: Some airlines only fly certain routes\n\n## Common User References\n\nUsers often use informal names:\n\n### Informal → Official\n- \"British\" → BA (British Airways)\n- \"Lufthansa\" → LH (Lufthansa)\n- \"Air France\" → AF (Air France)\n- \"KLM\" → KL (KLM)\n- \"Ryanair\" → FR (Ryanair)\n- \"easyJet\" → U2 (easyJet)\n- \"Swiss\" → LX (Swiss)\n- \"Austrian\" → OS (Austrian)\n- \"ITA\" or \"Alitalia\" → AZ (ITA Airways)\n- \"Emirates\" → EK (Emirates)\n- \"Qatar\" → QR (Qatar Airways)\n- \"Singapore\" → SQ (Singapore Airlines)\n- \"ANA\" → NH (All Nippon Airways)\n- \"JAL\" → JL (Japan Airlines)\n\n### Budget Carrier Nicknames\n- \"Ryanair\" (never \"Ryan Air\") → FR\n- \"easyJet\" (note capitalization) → U2\n- \"Wizz\" or \"Wizz Air\" → W6\n\n## Special Cases\n\n### Multi-Airline Itineraries\nSome flights have different airlines per segment:\n\nExample:\n- Segment 1: BA (British Airways) LHR→JFK\n- Segment 2: AA (American) JFK→LAX\n\nExtract each segment with its respective airline code.\n\n### Cargo Airlines\nPassenger searches should not include cargo-only airlines:\n- FX (FedEx), 5X (UPS), QY (DHL), etc.\n\nIf user mentions cargo, clarify they want passenger flights.\n\n### Defunct Airlines\nSome codes refer to airlines no longer operating:\n- **AZ** was Alitalia, now ITA Airways (still AZ code)\n- **BE** was Flybe (defunct 2020)\n- **9W** was Jet Airways (suspended 2019)\n\nIf searching historical flights, note airline may no longer exist.\n\n---\n\n**Note**: This list covers ~150 of the most commonly used airlines. The Navifare system recognizes 1000+ airline codes worldwide including regional carriers.\n\nFile v1.1.1:references/AIRPORTS.md\n\n# IATA Airport Codes Reference\n\nQuick reference for common airport codes used in flight searches.\n\n## Major International Hubs\n\n### United States\n- **JFK** - New York John F. Kennedy International\n- **EWR** - Newark Liberty International\n- **LGA** - New York LaGuardia\n- **LAX** - Los Angeles International\n- **SFO** - San Francisco International\n- **ORD** - Chicago O'Hare International\n- **MIA** - Miami International\n- **ATL** - Atlanta Hartsfield-Jackson\n- **DFW** - Dallas/Fort Worth International\n- **SEA** - Seattle-Tacoma International\n- **BOS** - Boston Logan International\n- **IAD** - Washington Dulles International\n- **DCA** - Washington Reagan National\n\n### United Kingdom & Ireland\n- **LHR** - London Heathrow\n- **LGW** - London Gatwick\n- **STN** - London Stansted\n- **LTN** - London Luton\n- **MAN** - Manchester\n- **EDI** - Edinburgh\n- **DUB** - Dublin\n\n### Continental Europe\n- **CDG** - Paris Charles de Gaulle\n- **ORY** - Paris Orly\n- **FRA** - Frankfurt\n- **MUC** - Munich\n- **AMS** - Amsterdam Schiphol\n- **BRU** - Brussels\n- **MAD** - Madrid Barajas\n- **BCN** - Barcelona El Prat\n- **FCO** - Rome Fiumicino\n- **MXP** - Milan Malpensa\n- **LIN** - Milan Linate\n- **VCE** - Venice Marco Polo\n- **ZRH** - Zurich\n- **GVA** - Geneva\n- **VIE** - Vienna\n- **PRG** - Prague\n- **WAW** - Warsaw\n- **CPH** - Copenhagen\n- **ARN** - Stockholm Arlanda\n- **OSL** - Oslo\n- **HEL** - Helsinki\n- **LIS** - Lisbon\n- **ATH** - Athens\n\n### Middle East\n- **DXB** - Dubai International\n- **DWC** - Dubai World Central (Al Maktoum)\n- **AUH** - Abu Dhabi International\n- **DOH** - Doha Hamad International\n- **IST** - Istanbul Airport\n- **SAW** - Istanbul Sabiha Gökçen\n- **TLV** - Tel Aviv Ben Gurion\n\n### Asia-Pacific\n- **HKG** - Hong Kong International\n- **SIN** - Singapore Changi\n- **NRT** - Tokyo Narita\n- **HND** - Tokyo Haneda\n- **ICN** - Seoul Incheon\n- **PEK** - Beijing Capital\n- **PKX** - Beijing Daxing\n- **PVG** - Shanghai Pudong\n- **SHA** - Shanghai Hongqiao\n- **CAN** - Guangzhou Baiyun\n- **SZX** - Shenzhen Bao'an\n- **BKK** - Bangkok Suvarnabhumi\n- **SYD** - Sydney Kingsford Smith\n- **MEL** - Melbourne\n- **AKL** - Auckland\n\n### Canada\n- **YYZ** - Toronto Pearson\n- **YVR** - Vancouver International\n- **YUL** - Montreal Trudeau\n- **YYC** - Calgary International\n\n### Latin America\n- **MEX** - Mexico City International\n- **GRU** - São Paulo Guarulhos\n- **GIG** - Rio de Janeiro Galeão\n- **EZE** - Buenos Aires Ezeiza\n- **SCL** - Santiago International\n- **BOG** - Bogotá El Dorado\n- **LIM** - Lima Jorge Chávez\n\n### Africa\n- **CAI** - Cairo International\n- **JNB** - Johannesburg OR Tambo\n- **CPT** - Cape Town International\n- **NBO** - Nairobi Jomo Kenyatta\n- **ADD** - Addis Ababa Bole\n\n## Regional European Airports\n\n### Germany\n- **TXL/BER** - Berlin Brandenburg\n- **HAM** - Hamburg\n- **DUS** - Düsseldorf\n- **STR** - Stuttgart\n- **CGN** - Cologne Bonn\n\n### France\n- **NCE** - Nice Côte d'Azur\n- **LYS** - Lyon Saint-Exupéry\n- **MRS** - Marseille Provence\n- **TLS** - Toulouse Blagnac\n\n### Spain & Portugal\n- **AGP** - Málaga\n- **SVQ** - Seville\n- **PMI** - Palma de Mallorca\n- **OPO** - Porto\n\n### Italy\n- **NAP** - Naples\n- **BLQ** - Bologna\n- **PSA** - Pisa\n- **FLR** - Florence\n- **BRI** - Bari\n- **CTA** - Catania\n\n### Scandinavia\n- **BGO** - Bergen\n- **TRD** - Trondheim\n- **GOT** - Gothenburg\n- **AAL** - Aalborg\n\n### Eastern Europe\n- **BUD** - Budapest\n- **OTP** - Bucharest\n- **SOF** - Sofia\n- **ZAG** - Zagreb\n- **BEG** - Belgrade\n\n### Benelux\n- **LUX** - Luxembourg\n- **EIN** - Eindhoven\n- **RTM** - Rotterdam\n\n### Switzerland & Austria\n- **BSL** - Basel/Mulhouse\n- **BRN** - Bern\n- **LUG** - Lugano\n- **INN** - Innsbruck\n- **SZG** - Salzburg\n\n## Low-Cost Carrier Hubs\n\nMany budget airlines operate primarily from these airports:\n\n- **STN** (London Stansted) - Ryanair hub\n- **LTN** (London Luton) - easyJet, Wizz Air\n- **BVA** (Paris Beauvais) - Ryanair\n- **CIA** (Rome Ciampino) - Ryanair, Wizz Air\n- **BGY** (Milan Bergamo) - Ryanair\n- **HHN** (Frankfurt Hahn) - Ryanair\n- **NRN** (Düsseldorf Weeze) - Ryanair\n- **BRE** (Bremen) - Ryanair\n- **NYO** (Stockholm Skavsta) - Ryanair\n- **TRF** (Oslo Torp) - Ryanair, Wizz Air\n\n## How to Look Up Unknown Codes\n\nIf you encounter an airport code not in this list:\n\n1. **Ask the user**: \"I don't recognize code XXX. What city/airport is this?\"\n2. **Context clues**: Look at city names mentioned in conversation\n3. **Regional patterns**:\n   - US codes: 3 random letters (JFK, LAX, ORD)\n   - Canada codes: Y + 2 letters (YYZ, YVR, YUL)\n   - Australia codes: Often city names (SYD, MEL, BNE)\n4. **Major cities**: Default to main airport (London→LHR, Paris→CDG, Tokyo→NRT)\n\n## Common Ambiguities\n\n### Multiple airports in same city\n\n**London (6 airports)**:\n- LHR (Heathrow) - Major international hub\n- LGW (Gatwick) - Second largest, south of London\n- STN (Stansted) - Budget airlines, northeast\n- LTN (Luton) - Budget airlines, north\n- LCY (City) - Business flights, city center\n- SEN (Southend) - Small regional\n\n**New York (3 major)**:\n- JFK (Kennedy) - International hub\n- EWR (Newark) - In New Jersey, international\n- LGA (LaGuardia) - Domestic flights\n\n**Paris (2 major)**:\n- CDG (Charles de Gaulle) - Main international hub\n- ORY (Orly) - Secondary international, domestic\n\n**Milan (2 major)**:\n- MXP (Malpensa) - International long-haul\n- LIN (Linate) - Domestic and European\n\n**Tokyo (2 major)**:\n- NRT (Narita) - International, 60km from city\n- HND (Haneda) - Domestic and some international, closer to city\n\n**Istanbul (2)**:\n- IST (Istanbul Airport) - New main hub\n- SAW (Sabiha Gökçen) - Asian side, budget airlines\n\n**Dubai (2)**:\n- DXB (Dubai International) - Main hub\n- DWC (World Central) - Al Maktoum, secondary\n\n### Always Clarify\n\nWhen a user mentions a city with multiple airports, ask:\n- \"London has several airports. Do you mean Heathrow (LHR) or Gatwick (LGW)?\"\n- \"For New York, are you flying into JFK, Newark (EWR), or LaGuardia (LGA)?\"\n\nThis ensures accurate searches and prevents booking mistakes.\n\n---\n\n**Note**: This list covers ~200 of the most commonly used airports. For complete coverage, the Navifare system has access to 10,000+ airports worldwide.\n\nFile v1.1.1:references/EXAMPLES.md\n\n# Navifare Flight Validator - Usage Examples\n\nReal conversation examples showing how to use this skill effectively.\n\n---\n\n## Example 1: User Found Price on Skyscanner\n\n### Conversation\n\n**User**: I found a flight from New York to London on Skyscanner for $450. It's BA553 departing June 15 at 6 PM.\n\n**Assistant** (activates skill):\nI'd love to help you check if that's the best price! However, Navifare currently only supports **round-trip** flight searches.\n\nDo you have a return flight as well? If so, share the return flight details (airline, flight number, date, and times) and I'll compare prices across multiple booking sites for the full round trip.\n\n---\n\n## Example 2: Screenshot Upload from Kayak\n\n### Conversation\n\n**User**: *[Uploads screenshot of Kayak search showing Milan to Barcelona for €299]*\n\n**Assistant** (activates skill):\nI can see your flight search. Let me extract the details and find the best price for you.\n\n*[Extracts flight details from screenshot]*\n\nExtracted from your screenshot:\n- Route: MXP (Milan Malpensa) → BCN (Barcelona)\n- Date: June 20, 2025\n- Return: June 27, 2025\n- Airline: Vueling\n- Passengers: 1 adult\n- Class: Economy\n- Reference price: €299 on Kayak\n\n*[Calls mcp__navifare-mcp__flight_pricecheck with extracted data]*\n\nSearching multiple booking sites...\n\n*[Results come back]*\n\n✅ **Price verified!**\n\nYour reference: €299 on Kayak\nNavifare best price: **€295 on Kiwi.com**\n📊 Difference: €4 (1.3%)\n\nYour price is very competitive! The best available is nearly identical.\n\n**Top 5 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Kiwi.com | €295 | Standard | [Book Now](https://kiwi.com/...) |\n| 2 | Kayak | €299 | Standard | [Book Now](https://kayak.com/...) |\n| 3 | Momondo | €305 | Standard | [Book Now](https://momondo.com/...) |\n| 4 | Skyscanner | €310 | Standard | [Book Now](https://skyscanner.com/...) |\n| 5 | eDreams | €315 | Special Fare | [Book Now](https://edreams.com/...) |\n\nAll prices checked: 2025-02-11 16:45 UTC\n\nThe price you found is excellent. I'd recommend booking soon as prices for June travel tend to increase closer to departure.\n\n---\n\n## Example 3: Multi-Segment Connection Flight\n\n### Conversation\n\n**User**: Google Flights shows $890 for LAX to Tokyo via Seattle on July 10. Alaska AS338 to Seattle, then ANA NH178 to Tokyo. Should I book it?\n\n**Assistant** (activates skill):\nLet me verify that's the best price for your itinerary with the connection in Seattle.\n\n*[Extracts details]*\n- Segment 1: AS338, LAX → SEA, July 10\n- Segment 2: NH178, SEA → NRT, July 10\n- Need departure/arrival times for accurate search\n\n**Question**: What are the departure and arrival times for each segment?\n- AS338 LAX → SEA: Departure time?\n- NH178 SEA → NRT: Departure time?\n\n**User**: AS338 departs 10 AM arrives 12:30 PM. NH178 departs 2:30 PM arrives 5 PM next day.\n\n**Assistant**:\nPerfect! Searching now...\n\n*[Calls search with both segments]*\n\n⚠️ **Prices have changed**\n\nYour reference: $890 on Google Flights\nCurrent best price: **$925 on Kiwi.com**\n📈 Increase: $35 (3.9%)\n\nPrices for this route have gone up slightly since you checked.\n\n**Top 3 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Kiwi.com | $925 | Standard | [Book Now](https://kiwi.com/...) |\n| 2 | Momondo | $945 | Standard | [Book Now](https://momondo.com/...) |\n| 3 | Google Flights | $890* | Standard | [Book Now](https://google.com/flights/...) |\n\n*Note: The $890 price on Google Flights may no longer be available. Verify on their site.*\n\nAll prices checked: 2025-02-11 17:00 UTC\n\n**Recommendation**: If the $890 price is still available on Google Flights when you check, that's your best option. Otherwise, Kiwi.com at $925 is the next best choice.\n\n---\n\n## Example 4: Round-Trip Validation Before Booking\n\n### Conversation\n\n**User**: I'm about to book this flight to Athens. Can you check if it's a good price first?\n\n**Details:**\n- London Gatwick to Athens, June 10-17\n- British Airways outbound, Aegean return\n- £380 total on Skyscanner\n\n**Assistant** (activates skill):\nAbsolutely! Let me verify that's the best price before you commit.\n\nI need a few more details for an accurate search:\n- Outbound: BA flight number and departure time?\n- Return: Aegean (A3) flight number and departure time?\n- Travel class (Economy, Business)?\n\n**User**:\n- Outbound: BA632, departs 7:30 AM, arrives 1:15 PM\n- Return: A3605, departs 9:00 AM, arrives 11:30 AM\n- Economy class\n\n**Assistant**:\nThank you! Searching now...\n\n*[Builds round-trip search with both flights]*\n\n✅ **I found savings!**\n\nYour reference: £380 on Skyscanner\nBest price found: **£365 on Momondo**\n💰 You save: £15 (3.9%)\n\n**Top 5 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Momondo | £365 | Standard | [Book Now](https://momondo.com/...) |\n| 2 | Kiwi.com | £370 | Standard | [Book Now](https://kiwi.com/...) |\n| 3 | Kayak | £375 | Standard | [Book Now](https://kayak.com/...) |\n| 4 | Skyscanner | £380 | Standard | [Book Now](https://skyscanner.com/...) |\n| 5 | eDreams | £395 | Special Fare | [Book Now](https://edreams.com/...) |\n\nAll prices checked: 2025-02-11 17:15 UTC\n\nI recommend booking with Momondo to save £15. However, verify that both flights (BA632 and A3605) are included in their quote before purchasing.\n\n---\n\n## Example 5: Missing Information Handling\n\n### Conversation\n\n**User**: Found a flight to Paris for $600. Is that good?\n\n**Assistant** (activates skill):\nI'd be happy to check if that's the best price! To search accurately, I need more details:\n\n**Missing information:**\n❌ Departure city/airport\n❌ Travel dates\n❌ Airline and flight number\n❌ Departure/arrival times\n❌ Travel class\n\nCould you provide:\n1. **Where are you flying from?** (e.g., \"New York JFK\")\n2. **What date?** (e.g., \"June 15, 2025\")\n3. **Which airline and flight?** (e.g., \"Air France AF007\")\n4. **What time does it depart?** (e.g., \"6:00 PM\")\n5. **Economy or Business class?**\n\n**User**: Oh right! Flying from Boston to Paris CDG on June 8. Air France AF334 leaving at 8:30 PM, arriving 9:45 AM next day. Economy.\n\n**Assistant**:\nPerfect! Now I can search properly.\n\n*[Extracts details]*\n- BOS → CDG\n- AF334\n- June 8, 2025\n- 20:30 → 09:45 (+1 day)\n- Economy\n- 1 adult\n- Reference: $600\n\nSearching across multiple booking sites...\n\n*[Results]*\n\n✅ **Better prices available!**\n\nYour reference: $600 on [unknown site]\nBest price found: **$565 on Kiwi.com**\n💰 You save: $35 (5.8%)\n\n**Top 3 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Kiwi.com | $565 | Standard | [Book Now](https://kiwi.com/...) |\n| 2 | Momondo | $580 | Standard | [Book Now](https://momondo.com/...) |\n| 3 | Google Flights | $595 | Standard | [Book Now](https://google.com/flights/...) |\n\nAll prices checked: 2025-02-11 17:30 UTC\n\n---\n\n## Example 6: No Better Price Found\n\n### Conversation\n\n**User**: Kayak shows €450 for Zurich to Rome on LX1612, March 15. Can you beat it?\n\n**Assistant** (activates skill):\nLet me check what other booking sites have for that flight.\n\n*[Needs more info]*\n\n**Question**: What time does LX1612 depart and arrive on March 15?\n\n**User**: Departs 10:40 AM, arrives 12:25 PM.\n\n**Assistant**:\nSearching...\n\n*[Results show higher prices]*\n\n✅ **Your price is the best available!**\n\nYour reference: €450 on Kayak\nNavifare best price: €450 on Kayak\n📊 Match: €0 (0%)\n\n**All available prices:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Kayak | €450 | Standard | [Book Now](https://kayak.com/...) |\n| 2 | Skyscanner | €450 | Standard | [Book Now](https://skyscanner.com/...) |\n| 3 | Momondo | €465 | Standard | [Book Now](https://momondo.com/...) |\n| 4 | Kiwi.com | €475 | Standard | [Book Now](https://kiwi.com/...) |\n| 5 | eDreams | €490 | Special Fare | [Book Now](https://edreams.com/...) |\n\nAll prices checked: 2025-02-11 17:45 UTC\n\nThe €450 price you found is the best current rate. I recommend booking it through Kayak or Skyscanner (both offer the same price).\n\n**Note**: Swiss International Air Lines (LX) is a reputable carrier. This is a direct flight with good timing, making it excellent value.\n\n---\n\n## Example 7: Price Alert - High Demand Route\n\n### Conversation\n\n**User**: Is $1,200 good for Miami to London on December 20? American Airlines.\n\n**Assistant** (activates skill):\nLet me check current prices for that route and date.\n\n*[Extracts details, asks for flight number and times]*\n\n**User**: AA38, departs 9:15 PM, arrives 10:30 AM next day.\n\n**Assistant**:\nSearching...\n\n⚠️ **Peak season alert**\n\nYour reference: $1,200\nCurrent best price: **$1,150 on Momondo**\n💰 Savings: $50 (4.2%)\n\n**Top 3 Options:**\n\n| # | Website | Price | Fare Type | Booking Link |\n|---|---------|-------|-----------|--------------|\n| 1 | Momondo | $1,150 | Standard | [Book Now](https://momondo.com/...) |\n| 2 | Kayak | $1,195 | Standard | [Book Now](https://kayak.com/...) |\n| 3 | Google Flights | $1,200 | Standard | [Book Now](https://google.com/flights/...) |\n\nAll prices checked: 2025-02-11 18:00 UTC\n\n**Important context:**\n- December 20 is peak Christmas travel\n- Transatlantic flights are in very high demand\n- Prices typically increase significantly closer to departure\n- $1,150-$1,200 is actually reasonable for this route/date\n\n**Recommendation**: If you need to travel on December 20 specifically, I'd suggest booking the $1,150 Momondo option soon. If you have flexibility, flying a few days earlier (Dec 17-19) or later (Dec 21-23) could save $300-500.\n\nWould you like me to check alternative dates?\n\n---\n\n## Example 8: Error Handling - No Results\n\n### Conversation\n\n**User**: Can you check if £250 is good for Manchester to Ibiza on June 30? Flight ZZ1234.\n\n**Assistant** (activates skill):\nLet me search for that flight.\n\n*[Searches but gets no results]*\n\n❌ **No results found**\n\nNavifare couldn't find current prices for this exact itinerary.\n\n**Possible issues:**\n1. **Airline code \"ZZ\"** is not recognized in our database\n2. **Flight number 1234** may be incorrect or the flight may not exist\n3. The route may not be currently scheduled for June 30\n\n**Can you help me verify:**\n- Which airline operates this flight? (Ryanair, easyJet, Jet2?)\n- Are you sure about the flight number ZZ1234?\n- Is this a direct flight or with connections?\n\n**Alternative approach:**\nIf you're flexible on the exact flight, I can search for:\n- \"Manchester to Ibiza on June 30, Economy, 1 adult\"\n- And find the best prices across all airlines\n\nWould you like me to do that instead?\n\n**User**: Oh sorry, it's Jet2 flight LS449, not ZZ1234!\n\n**Assistant**:\nNo problem! Let me search for Jet2 LS449 now.\n\n*[Searches with correct airline/flight]*\n\n✅ **Found better prices!**\n... [continues with normal results]\n\n---\n\n## Key Patterns from Examples\n\n### What Triggers the Skill\n1. ✅ \"I found a flight for $X on [site]\"\n2. ✅ \"Is this a good price?\"\n3. ✅ \"Can you beat this deal?\"\n4. ✅ Screenshot of booking site\n5. ✅ \"I'm about to book...\"\n6. ✅ \"Should I book this flight?\"\n\n### What Information to Extract\n- **Route**: Departure and arrival airports (IATA codes)\n- **Date(s)**: Departure date, return date if applicable\n- **Flight(s)**: Airline code + flight number(s)\n- **Times**: Departure and arrival times (24-hour format)\n- **Class**: Economy, Premium Economy, Business, First\n- **Passengers**: Adults, children, infants\n- **Reference Price**: Amount user saw + currency\n\n### How to Handle Missing Data\n1. **Ask specific questions** - don't guess\n2. **Reference documentation** - check AIRPORTS.md, AIRLINES.md\n3. **Provide examples** - show format you need\n4. **Be patient** - walk user through each missing field\n\n### How to Present Results\n1. **Clear comparison** - reference price vs best found\n2. **Savings calculation** - amount and percentage\n3. **Top 3-5 options** - formatted table\n4. **Clickable links** - make booking easy\n5. **Timestamp** - show when prices were checked\n6. **Context** - explain price trends, seasonality\n7. **Recommendations** - guide user to best choice\n\n### Edge Cases to Handle\n- ❌ No results: Verify flight details, suggest alternatives\n- ⚠️ Price increased: Warn user, explain demand\n- ✅ Price matched: Validate user's research\n- 💰 Price decreased: Celebrate savings!\n- ⏱️ Timeout: Show partial results, explain delay\n- ❓ Unclear airports: Clarify multi-airport cities\n- 🔄 Codeshares: Use operating carrier\n- 📅 Past dates: Ask for correct year/date\n\n---\n\nThese examples demonstrate the full workflow from user inquiry to actionable booking recommendations. Always prioritize clarity, accuracy, and helpfulness in your responses.\n\nFile v1.1.1:INSTALLATION.md\n\n# Navifare Flight Validator Skill - Installation & Validation\n\n## ✅ Installation Complete!\n\nThe skill has been successfully created at:\n```\n~/.claude/skills/navifare-flight-validator/\n```\n\n## 📁 Directory Structure\n\n```\nnavifare-flight-validator/\n├── SKILL.md (573 lines)          # Main skill instructions\n├── README.md                      # User guide\n├── INSTALLATION.md                # This file\n├── references/\n│   ├── AIRPORTS.md (232 lines)   # IATA airport codes\n│   ├── AIRLINES.md (299 lines)   # IATA airline codes\n│   └── EXAMPLES.md (441 lines)   # Usage examples\n└── scripts/                       # Reserved for future use\n```\n\n## 🔧 Configuration Required\n\n### Step 1: Configure Navifare MCP HTTP Endpoint\n\nThe Navifare MCP server is available as a hosted service at `https://mcp.navifare.com/mcp`.\n\nAdd this to your MCP client configuration file (e.g., `mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n```\n\n**Note**: This uses the HTTP transport to connect to the hosted Navifare MCP service. No local installation required!\n\n### Step 2: Restart Your MCP Client\n\nAfter adding/updating the MCP configuration:\n1. Quit your MCP client completely\n2. Relaunch the client\n3. The Navifare MCP connection will be established automatically\n\n### Step 3: Verify MCP Tools are Available\n\nThe following tools should be accessible in your MCP client:\n- `mcp__navifare-mcp__flight_pricecheck` (main search tool)\n- `mcp__navifare-mcp__format_flight_pricecheck_request` (formatting helper)\n\nYou can verify by checking the available MCP tools in your client.\n\n## ✅ Validation Checklist\n\n### Skill Structure Validation\n\n- [x] **SKILL.md exists** with valid frontmatter\n- [x] **Required fields present**: name, description\n- [x] **Optional fields included**: license, compatibility, metadata, allowed-tools\n- [x] **Name format correct**: lowercase, hyphens only, matches directory name\n- [x] **Description under 1024 chars**: 262 characters ✓\n- [x] **Body content present**: 573 lines of instructions\n- [x] **Reference files created**: AIRPORTS.md, AIRLINES.md, EXAMPLES.md\n\n### AgentSkills Compliance\n\nAccording to [agentskills.io/specification](https://agentskills.io/specification):\n\n✅ **Directory structure**: Correct\n✅ **SKILL.md format**: Valid YAML frontmatter + Markdown body\n✅ **Name constraints**: Meets all requirements (1-64 chars, lowercase, hyphens)\n✅ **Description**: Clear, includes when to use, under 1024 chars\n✅ **Progressive disclosure**:\n  - Metadata: ~100 tokens\n  - SKILL.md: ~4500 tokens\n  - References: ~2500 tokens (loaded on-demand)\n✅ **File references**: All relative paths, one level deep\n\n### Content Validation\n\n- [x] **Clear activation triggers**: 5 scenarios listed\n- [x] **Step-by-step workflow**: 6 detailed steps\n- [x] **Error handling**: 6 error scenarios covered\n- [x] **Best practices**: 6 guidelines provided\n- [x] **Data format examples**: 3 different flight types\n- [x] **Reference documentation**: Complete IATA codes\n- [x] **Real usage examples**: 8 realistic conversations\n\n## 🧪 Testing the Skill\n\n### Test 1: Simple Price Validation\n\n**Input**:\n> I found a flight from New York JFK to London Heathrow for $450. It's British Airways flight 178 departing June 15 at 8:00 PM. Is this a good price?\n\n**Expected behavior**:\n1. Skill activates automatically\n2. Agent extracts flight details\n3. Agent calls `mcp__navifare-mcp__format_flight_pricecheck_request` then `mcp__navifare-mcp__flight_pricecheck`\n4. Agent presents comparison table with results\n\n### Test 2: Screenshot Upload\n\n**Input**:\n> *[Upload a flight booking screenshot from Kayak/Skyscanner]*\n\n**Expected behavior**:\n1. Skill activates\n2. Agent recognizes image contains flight info\n3. Agent extracts flight details from the image using its vision capabilities\n4. Agent calls the MCP tools to search and compare prices\n5. Agent shows results table\n\n### Test 3: Missing Information Handling\n\n**Input**:\n> I found a cheap flight to Paris. Should I book it?\n\n**Expected behavior**:\n1. Skill activates\n2. Agent identifies missing information\n3. Agent asks specific questions:\n   - Departure city/airport?\n   - Travel date?\n   - Airline and flight number?\n   - Departure time?\n   - Reference price?\n\n### Test 4: Unknown Airport Code\n\n**Input**:\n> Flight from LON to PAR for €200\n\n**Expected behavior**:\n1. Skill recognizes ambiguity\n2. Agent asks which London airport (LHR/LGW/STN/LTN/LCY)\n3. Agent asks which Paris airport (CDG/ORY)\n4. Agent references AIRPORTS.md for clarification\n\n## 🔍 Validation with skills-ref\n\nTo validate the skill structure using the official AgentSkills reference tool:\n\n```bash\n# Install skills-ref (if not already installed)\nnpm install -g @agentskills/skills-ref\n\n# Validate the skill\nskills-ref validate ~/.claude/skills/navifare-flight-validator\n\n# Expected output:\n# ✓ SKILL.md frontmatter is valid\n# ✓ Name format is correct\n# ✓ Description is valid\n# ✓ All required fields present\n# ✓ Directory structure is correct\n```\n\n**Note**: skills-ref may not be installed yet. If the command fails, the manual checks above are sufficient.\n\n## 🐛 Troubleshooting\n\n### Issue: Skill doesn't activate\n\n**Check**:\n1. SKILL.md is in correct location: `~/.claude/skills/navifare-flight-validator/SKILL.md`\n2. Frontmatter is valid YAML (no syntax errors)\n3. MCP client has restarted since skill was added\n\n**Fix**: Restart your MCP client\n\n### Issue: MCP tools not available\n\n**Check**:\n1. Your MCP configuration file exists and is valid JSON\n2. The `navifare-mcp` entry has `\"url\": \"https://mcp.navifare.com/mcp\"`\n3. Your MCP client has been restarted after config changes\n\n**Fix**:\nVerify your MCP configuration contains:\n```json\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n```\nThen restart your MCP client completely.\n\n### Issue: Search returns no results\n\n**Possible causes**:\n1. Navifare API is down\n2. Flight details are incorrect\n3. The MCP endpoint is unreachable\n\n**Fix**:\n1. Check the MCP URL in your configuration\n2. Verify flight details (airline codes, airport codes)\n3. Check network connectivity\n\n### Issue: Skill activates but search times out\n\n**Expected behavior**: Navifare searches take up to 90 seconds\n\n**What to do**:\n- Wait for full 90 seconds\n- Partial results may be shown\n- Try again if timeout occurs\n\n## 📊 Skill Metrics\n\n- **Total lines**: 1,545 lines across all files\n- **SKILL.md**: 573 lines (main instructions)\n- **References**: 972 lines (IATA codes + examples)\n- **Token estimate**:\n  - Metadata: ~100 tokens (always loaded)\n  - SKILL.md body: ~4,500 tokens (loaded when activated)\n  - References: ~2,500 tokens (loaded on-demand)\n- **Load time**: < 1 second (metadata), ~2 seconds (full skill)\n\n## 🎯 Success Criteria\n\nThe skill is working correctly when:\n\n✅ Agent recognizes flight price mentions and activates skill\n✅ Agent extracts flight details from conversation\n✅ Agent calls Navifare MCP flight_pricecheck tool\n✅ Agent presents results in formatted table\n✅ Agent provides clickable booking links\n✅ Agent handles missing information gracefully\n✅ Agent references AIRPORTS.md and AIRLINES.md as needed\n✅ Agent follows examples from EXAMPLES.md\n\n## 🚀 Next Steps\n\n1. **Test with real queries**: Try the examples from Test 1-4 above\n2. **Refine triggers**: If skill activates too often/rarely, adjust description\n3. **Add more examples**: Update EXAMPLES.md with real usage patterns\n4. **Enhance references**: Add more airports/airlines as needed\n5. **Monitor performance**: Track search times and success rates\n\n## 📚 Related Documentation\n\n- **AgentSkills Specification**: https://agentskills.io/specification\n- **Navifare API Docs**: (see main Navifare repo)\n\n## ✉️ Support\n\n- **Skill issues**: Check README.md and this file\n- **MCP configuration**: See main Navifare MCP docs\n\n---\n\n**Installation Date**: 2025-02-11\n**Skill Version**: 1.1.1\n**Last Updated**: 2026-02-23\n\nFile v1.1.1:SPEC-UPDATES.md\n\n# Navifare MCP Specification Updates\n\nBased on the official documentation at https://www.navifare.com/mcp\n\n## 🔥 BREAKING CHANGE - MCP Compliance Fix (Feb 12, 2026)\n\n**The Navifare MCP server response format has been updated to comply with the official MCP specification.**\n\n### What Changed\n\n**Before (Non-compliant)**:\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"message\": \"...\",\n    \"searchResult\": {...},\n    \"status\": \"success\"\n  }\n}\n```\n\n**After (MCP-compliant)**:\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"message\\\":\\\"...\\\",\\\"searchResult\\\":{...}}\"\n      }\n    ],\n    \"isError\": false\n  }\n}\n```\n\n### Why This Matters\n\nThe old format caused issues with all Claude clients:\n- ❌ Claude Code: Tool results not displayed\n- ❌ Claude.ai: Generic \"Error occurred\" messages\n- ❌ Claude Desktop: Tools keep running after completion\n\nThe new format follows the [MCP Tools specification](https://modelcontextprotocol.io/specification/2025-06-18/server/tools) and works correctly with all clients.\n\n### Migration Guide\n\nIf you're using the Navifare MCP client directly (not through Claude), update your parsing:\n\n**Old code**:\n```javascript\nconst { message, searchResult } = response.result;\n```\n\n**New code**:\n```javascript\nconst data = JSON.parse(response.result.content[0].text);\nconst { message, searchResult } = data;\n```\n\n---\n\n## ✅ Corrections Made to Skill\n\n### 1. **Round-Trip Format** (CRITICAL FIX)\n**Before (WRONG)**:\n```json\n{\n  \"legs\": [\n    {\n      \"segments\": [\n        /* outbound AND return all in one leg */\n      ]\n    }\n  ]\n}\n```\n\n**After (CORRECT)**:\n```json\n{\n  \"legs\": [\n    {\n      \"segments\": [/* outbound only */]\n    },\n    {\n      \"segments\": [/* return only */]\n    }\n  ]\n}\n```\n\n### 2. **Location Parameter**\n- **Format**: 2-letter ISO country code (e.g., \"IT\", \"US\", \"GB\")\n- **Default**: \"ZZ\" if unknown\n- **Pattern**: `^[A-Z]{2}$`\n\n### 3. **Travel Class Enum**\nExact values required:\n- `ECONOMY`\n- `PREMIUM_ECONOMY`\n- `BUSINESS`\n- `FIRST`\n\n### 4. **Tool Names Confirmed**\n- ✅ `flight_pricecheck` - Main search tool\n- ✅ `format_flight_pricecheck_request` - Natural language formatter\n\n## 📋 Complete Tool Specifications\n\n### Tool 1: `flight_pricecheck`\n\n**Purpose**: Search multiple booking sources to find better prices for a specific flight\n\n**Input Parameters**:\n```typescript\n{\n  trip: {\n    legs: Array<{\n      segments: Array<{\n        airline: string;           // 2-letter IATA code\n        flightNumber: string;      // Numeric part only\n        departureAirport: string;  // 3-letter IATA code\n        arrivalAirport: string;    // 3-letter IATA code\n        departureDate: string;     // YYYY-MM-DD\n        departureTime: string;     // HH:MM (24-hour)\n        arrivalTime: string;       // HH:MM (24-hour)\n        plusDays: number;          // 0, 1, 2, etc.\n      }>;\n    }>;\n    travelClass: \"ECONOMY\" | \"PREMIUM_ECONOMY\" | \"BUSINESS\" | \"FIRST\";\n    adults: number;      // min: 1\n    children: number;    // min: 0\n    infantsInSeat: number;  // min: 0\n    infantsOnLap: number;   // min: 0\n  };\n  source: string;        // e.g., \"Kayak\", \"ChatGPT\"\n  price: string;         // e.g., \"84.00\", \"500\"\n  currency: string;      // 3-letter ISO code, pattern: ^[A-Z]{3}$\n  location?: string;     // 2-letter ISO code, pattern: ^[A-Z]{2}$, default: \"ZZ\"\n}\n```\n\n**Output** (MCP-compliant format):\n```typescript\n{\n  content: [\n    {\n      type: \"text\",\n      text: string  // JSON string containing { message, searchResult }\n    }\n  ],\n  isError: boolean\n}\n```\n\n**Parsed content structure**:\n```typescript\n{\n  message: string;        // Summary message\n  searchResult: {\n    status: string;       // Overall status\n    request_id: string;\n    totalResults: number;\n    results: Array<...>\n  }\n}\n```\n\n### Tool 2: `format_flight_pricecheck_request`\n\n**Purpose**: Parse natural language into structured format\n\n**Input**:\n```typescript\n{\n  user_request: string;  // Natural language flight details\n}\n```\n\n**Output**:\n```typescript\n{\n  message: string;\n  needsMoreInfo: boolean;\n  missingFields?: string[];           // If needsMoreInfo is true\n  flightData?: object;                // If needsMoreInfo is false\n  readyForPriceCheck: boolean;\n}\n```\n\n## 🎯 Your Milan → Sydney Flight (Corrected Format)\n\n**Saved as**: `milan-sydney-example.json`\n\n```json\n{\n  \"trip\": {\n    \"legs\": [\n      {\n        \"segments\": [\n          {\n            \"airline\": \"QR\",\n            \"flightNumber\": \"124\",\n            \"departureAirport\": \"MXP\",\n            \"arrivalAirport\": \"DOH\",\n            \"departureDate\": \"2026-02-19\",\n            \"departureTime\": \"08:55\",\n            \"arrivalTime\": \"16:40\",","readmeExcerpt":"Skill: Navifare - Flight Price Double-Check, Finds Hidden Deals Owner: simonenavifare Summary: Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kaya... Tags: latest:1.2.0 Version history: v1.2.0 | 2026-02-23T12:25:11.410Z | user Version 1.2.0 - Added privacy enhancement: When users upload flight screenshots, only e","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"Check for these MCP tools:\n- mcp__navifare-mcp__flight_pricecheck (main search tool)\n- mcp__navifare-mcp__format_flight_pricecheck_request (formatting helper)\n\nIf not available: Inform user to configure the Navifare MCP server\nin their MCP settings with:\n{\n  \"navifare-mcp\": {\n    \"url\": \"https://mcp.navifare.com/mcp\"\n  }\n}"},{"language":"text","snippet":"Tool: mcp__navifare-mcp__format_flight_pricecheck_request\nParameters: {\n  \"user_request\": \"[paste the complete flight description from the user, including all details: airlines, flight numbers, dates, times, airports, price, passengers, class]\"\n}\n\nExample user_request value:\n\"Outbound Feb 19, 2026: QR124 MXP-DOH 08:55-16:40, QR908 DOH-SYD 20:40-18:50 (+1 day).\nReturn Mar 1, 2026: QR909 SYD-DOH 21:40-04:30 (+1 day), QR127 DOH-MXP 08:50-13:10.\nPrice: 1500 EUR, 1 adult, economy class.\""},{"language":"json","snippet":"{\n  \"trip\": {\n    \"legs\": [\n      {\n        \"segments\": [\n          {\n            \"airline\": \"BA\",\n            \"flightNumber\": \"553\",\n            \"departureAirport\": \"JFK\",\n            \"arrivalAirport\": \"LHR\",\n            \"departureDate\": \"2025-06-15\",\n            \"departureTime\": \"18:00\",\n            \"arrivalTime\": \"06:30\",\n            \"plusDays\": 1\n          }\n        ]\n      }\n    ],\n    \"travelClass\": \"ECONOMY\",\n    \"adults\": 1,\n    \"children\": 0,\n    \"infantsInSeat\": 0,\n    \"infantsOnLap\": 0\n  },\n  \"source\": \"MCP\",\n  \"price\": \"450\",\n  \"currency\": \"USD\",\n  \"location\": \"US\"\n}"},{"language":"text","snippet":"if trip has only 1 leg:\n     ❌ Return error: \"Sorry, Navifare currently only supports round-trip flights.\n        One-way flight price checking is not available yet.\"\n     DO NOT proceed with the search."},{"language":"text","snippet":"\"🔍 Searching for better prices across multiple booking sites...\n   This typically takes 30-60 seconds as I check real-time availability.\""},{"language":"text","snippet":"Tool: mcp__navifare-mcp__flight_pricecheck\nParameters: {\n  Use the EXACT flightData object returned from format_flight_pricecheck_request.\n  This includes: trip, source, price, currency, location\n}\n\nThe MCP server will:\n1. Submit the search request to Navifare API\n2. Poll for results automatically (up to 90 seconds)\n3. Return final ranked results when complete"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: navifare-flight-validator\ndescription: Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kayak, etc.) or upload flight screenshots to find better deals. Returns ranked results with booking links from multiple providers.\nlicense: MIT\ncompatibility: Requires Navifare MCP server configured. Access to mcp__navifare-mcp tools required.\nmetadata:\n  author: navifare\n  version: \"1.2.0\"\n  category: travel\n  mcp_required: navifare-mcp\nallowed-tools: mcp__navifare-mcp__flight_pricecheck mcp__navifare-mcp__format_flight_pricecheck_request Read\n---\n\n# Navifare Flight Price Validator Skill\n\nYou are a travel price comparison specialist. Your role is to help users find the best flight prices by validating deals they find on booking sites and comparing them across multiple providers using Navifare's price discovery platform.\n\n## When to Activate This Skill\n\nTrigger this skill whenever:\n\n1. **User shares a flight price** from any booking website:\n   - \"I found this flight on Skyscanner for $450\"\n   - \"Kayak shows €299 for this route\"\n   - \"Google Flights has this for £320\"\n\n2. **User uploads a flight screenshot** from any booking platform\n\n3. **User asks for price validation**:\n   - \"Is this a good deal?\"\n   - \"Can you find a cheaper flight?\"\n   - \"Should I book this or wait?\"\n\n4. **User mentions booking** but hasn't checked multiple sites:\n   - \"I'm about to book this flight\"\n   - \"Ready to purchase this ticket\"\n\n5. **User compares options** and wants validation:\n   - \"Which of these flights should I choose?\"\n   - \"Is option A or B better?\"\n\n## Prerequisites Check\n\nBefore executing the skill, verify Navifare MCP is available:\n\n```\nCheck for these MCP tools:\n- mcp__navifare-mcp__flight_pricecheck (main search tool)\n- mcp__navifare-mcp__format_flight_pricecheck_request (formatting helper)\n\nIf not available: Inform user to configure the Navifare MCP server\nin their MCP settings with:\n{\n  \"navifare-mcp\": {\n    \"url\": \"https://mcp.navifare.com/mcp\"\n  }\n}\n```\n\n## Execution Workflow\n\n⚠️ **IMPORTANT**: Always follow this exact sequence:\n1. Format with `format_flight_pricecheck_request` → resolve any missing info → search with `flight_pricecheck`\n2. **NEVER** call `flight_pricecheck` directly without calling `format_flight_pricecheck_request` first\n\n### Step 1: Format the Request\n\nThis is always the first action. Take whatever the user provided (text description, screenshot details, partial info) and send it to the formatting tool.\n\n⚠️ **CRITICAL**: You MUST call this tool before `flight_pricecheck`.\n\n```\nTool: mcp__navifare-mcp__format_flight_pricecheck_request\nParameters: {\n  \"user_request\": \"[paste the complete flight description from the user, including all details: airlines, flight numbers, dates, times, airports, price, passengers, class]\"\n}\n\nExample user_request value:\n\"Outbound Feb 19, 2026: QR124 MXP-DOH 08:55-16:40, QR908 DOH-SYD 20:40-18:50 (+1 day)."},{"path":"README.md","content":"# Navifare Flight Price Validator Skill\n\nAn AgentSkills-compliant skill that enables AI agents to validate and compare flight prices across multiple booking sites using the Navifare MCP. Compatible with any MCP-enabled client (Claude Code, OpenClawd, etc.).\n\n## What This Skill Does\n\nWhen users mention flight prices from any booking website (Skyscanner, Kayak, Google Flights, etc.), this skill automatically:\n1. ✈️ Extracts flight details from text or screenshots\n2. 🔍 Searches Navifare's network of booking sites\n3. 💰 Compares prices to find the best deals\n4. 🔗 Provides direct booking links to providers\n\n## Installation\n\n### Prerequisites\n\n**Required**: Navifare MCP Server must be configured in your MCP client.\n\nThe Navifare MCP is available as a hosted service. Add the following to your MCP client configuration (e.g., `mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"navifare-mcp\": {\n      \"url\": \"https://mcp.navifare.com/mcp\"\n    }\n  }\n}\n```\n\n**No local installation required!** The MCP server is hosted and always available.\n\n### Install the Skill\n\nInstall the skill in your agent's skills directory. For example:\n```\n~/.claude/skills/navifare-flight-validator/\n```\n\nDirectory structure:\n```\nnavifare-flight-validator/\n├── SKILL.md              # Main skill definition\n├── README.md             # This file\n├── references/\n│   ├── AIRPORTS.md       # IATA airport codes reference\n│   ├── AIRLINES.md       # IATA airline codes reference\n│   └── EXAMPLES.md       # Real usage examples\n└── scripts/              # (Reserved for future enhancements)\n```\n\n### Verify Installation\n\n1. **Check MCP is running**:\n   The following Navifare MCP tools should be available in your client:\n   - `mcp__navifare-mcp__flight_pricecheck`\n   - `mcp__navifare-mcp__format_flight_pricecheck_request`\n\n2. **Verify skill is detected**:\n   Your MCP client should automatically discover skills in the configured skills directory.\n\n## Usage\n\n### Example 1: Validate a Price from Skyscanner\n\n**You**: I found a flight from New York to London on Skyscanner for $450. It's BA553 departing June 15 at 6 PM.\n\n**Agent** (automatically activates skill):\n- Extracts flight details\n- Searches Navifare for better prices\n- Presents comparison table with booking links\n\n### Example 2: Upload a Screenshot\n\n**You**: *[Upload screenshot from Kayak]*\n\n**Agent**:\n- Extracts visible flight details from the screenshot\n- Validates prices across booking sites\n- Shows savings opportunities\n\n### Example 3: Before Booking\n\n**You**: I'm about to book this flight. Should I?\n\n**Agent**:\n- Asks for flight details\n- Runs price comparison\n- Recommends best option\n\n## When The Skill Activates\n\nThe skill automatically triggers when you:\n- 💬 Mention finding a flight price: \"I found this flight for $X\"\n- 📸 Upload a flight booking screenshot\n- ❓ Ask \"Is this a good price?\"\n- 🤔 Say \"Should I book this?\"\n- 🔍 Ask \"Can you find cheaper?\"\n\n## What Information is Needed\n\nFor accurate price comparison, the skill needs:\n\n**Required*"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70azdj03erwqsvqfshxqmvyx80zftx\",\n  \"slug\": \"navifare-hidden-flight-deals\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1771849511410\n}"},{"path":"references/AIRLINES.md","content":"# IATA Airline Codes Reference\n\nQuick reference for common airline codes used in flight searches.\n\n## Major Full-Service Airlines\n\n### North America\n- **AA** - American Airlines\n- **DL** - Delta Air Lines\n- **UA** - United Airlines\n- **AC** - Air Canada\n- **AS** - Alaska Airlines\n- **WS** - WestJet\n\n### Europe - Major Carriers\n- **BA** - British Airways\n- **AF** - Air France\n- **LH** - Lufthansa\n- **KL** - KLM Royal Dutch Airlines\n- **AZ** - ITA Airways (formerly Alitalia)\n- **LX** - Swiss International Air Lines\n- **OS** - Austrian Airlines\n- **LO** - LOT Polish Airlines\n- **SN** - Brussels Airlines\n- **IB** - Iberia\n- **TP** - TAP Portugal\n- **SK** - Scandinavian Airlines (SAS)\n- **AY** - Finnair\n- **EI** - Aer Lingus\n\n### Middle East\n- **EK** - Emirates\n- **QR** - Qatar Airways\n- **EY** - Etihad Airways\n- **TK** - Turkish Airlines\n- **MS** - EgyptAir\n- **SV** - Saudia\n\n### Asia-Pacific\n- **SQ** - Singapore Airlines\n- **CX** - Cathay Pacific\n- **NH** - All Nippon Airways (ANA)\n- **JL** - Japan Airlines (JAL)\n- **KE** - Korean Air\n- **OZ** - Asiana Airlines\n- **TG** - Thai Airways\n- **MH** - Malaysia Airlines\n- **GA** - Garuda Indonesia\n- **QF** - Qantas\n- **NZ** - Air New Zealand\n- **AI** - Air India\n- **9W** - Jet Airways\n\n### Latin America\n- **LA** - LATAM Airlines\n- **AM** - Aeroméxico\n- **CM** - Copa Airlines\n- **AV** - Avianca\n\n### China\n- **CA** - Air China\n- **CZ** - China Southern Airlines\n- **MU** - China Eastern Airlines\n- **HU** - Hainan Airlines\n- **3U** - Sichuan Airlines\n\n## Low-Cost Carriers\n\n### Europe\n- **FR** - Ryanair\n- **U2** - easyJet\n- **W6** - Wizz Air\n- **VY** - Vueling\n- **PC** - Pegasus Airlines\n- **LS** - Jet2.com\n- **TO** - Transavia\n- **DY** - Norwegian Air Shuttle\n- **BT** - airBaltic\n\n### North America\n- **WN** - Southwest Airlines\n- **B6** - JetBlue Airways\n- **NK** - Spirit Airlines\n- **F9** - Frontier Airlines\n- **G4** - Allegiant Air\n\n### Asia-Pacific\n- **3K** - Jetstar Asia\n- **FD** - Thai AirAsia\n- **AK** - AirAsia\n- **5J** - Cebu Pacific\n- **TR** - Scoot\n- **VJ** - VietJet Air\n- **IX** - Air India Express\n- **SG** - SpiceJet\n- **6E** - IndiGo\n\n### Middle East & Africa\n- **FZ** - flydubai\n- **XY** - flynas\n- **G9** - Air Arabia\n- **XQ** - SunExpress\n- **WY** - Oman Air\n- **FP** - Mango (South Africa)\n\n## Alliance Members\n\n### Star Alliance\nMembers include: UA, LH, AC, NH, SQ, TK, LO, SK, AY, OS, LX, SN, TP, AI, CA, OZ, TG, EY\n\n### SkyTeam\nMembers include: AF, KL, DL, AZ, KE, CZ, MU, SV, AM, GA, VN\n\n### oneworld\nMembers include: AA, BA, IB, AY, QR, JL, QF, CX, LA, AS, WY\n\n## Regional European Airlines\n\n### Germany\n- **DE** - Condor\n- **4U** - Germanwings (now Eurowings)\n- **EW** - Eurowings\n\n### UK & Ireland\n- **BE** - Flybe (defunct)\n- **LS** - Jet2.com\n- **FR** - Ryanair\n- **EI** - Aer Lingus\n\n### Scandinavia\n- **D8** - Norwegian Air International\n- **DY** - Norwegian\n- **BT** - airBaltic\n- **AY** - Finnair\n- **RC** - Atlantic Airways\n\n### Eastern Europe\n- **W6** - Wizz Air\n- **FR** - Ryanair (operates thro"},{"path":"references/AIRPORTS.md","content":"# IATA Airport Codes Reference\n\nQuick reference for common airport codes used in flight searches.\n\n## Major International Hubs\n\n### United States\n- **JFK** - New York John F. Kennedy International\n- **EWR** - Newark Liberty International\n- **LGA** - New York LaGuardia\n- **LAX** - Los Angeles International\n- **SFO** - San Francisco International\n- **ORD** - Chicago O'Hare International\n- **MIA** - Miami International\n- **ATL** - Atlanta Hartsfield-Jackson\n- **DFW** - Dallas/Fort Worth International\n- **SEA** - Seattle-Tacoma International\n- **BOS** - Boston Logan International\n- **IAD** - Washington Dulles International\n- **DCA** - Washington Reagan National\n\n### United Kingdom & Ireland\n- **LHR** - London Heathrow\n- **LGW** - London Gatwick\n- **STN** - London Stansted\n- **LTN** - London Luton\n- **MAN** - Manchester\n- **EDI** - Edinburgh\n- **DUB** - Dublin\n\n### Continental Europe\n- **CDG** - Paris Charles de Gaulle\n- **ORY** - Paris Orly\n- **FRA** - Frankfurt\n- **MUC** - Munich\n- **AMS** - Amsterdam Schiphol\n- **BRU** - Brussels\n- **MAD** - Madrid Barajas\n- **BCN** - Barcelona El Prat\n- **FCO** - Rome Fiumicino\n- **MXP** - Milan Malpensa\n- **LIN** - Milan Linate\n- **VCE** - Venice Marco Polo\n- **ZRH** - Zurich\n- **GVA** - Geneva\n- **VIE** - Vienna\n- **PRG** - Prague\n- **WAW** - Warsaw\n- **CPH** - Copenhagen\n- **ARN** - Stockholm Arlanda\n- **OSL** - Oslo\n- **HEL** - Helsinki\n- **LIS** - Lisbon\n- **ATH** - Athens\n\n### Middle East\n- **DXB** - Dubai International\n- **DWC** - Dubai World Central (Al Maktoum)\n- **AUH** - Abu Dhabi International\n- **DOH** - Doha Hamad International\n- **IST** - Istanbul Airport\n- **SAW** - Istanbul Sabiha Gökçen\n- **TLV** - Tel Aviv Ben Gurion\n\n### Asia-Pacific\n- **HKG** - Hong Kong International\n- **SIN** - Singapore Changi\n- **NRT** - Tokyo Narita\n- **HND** - Tokyo Haneda\n- **ICN** - Seoul Incheon\n- **PEK** - Beijing Capital\n- **PKX** - Beijing Daxing\n- **PVG** - Shanghai Pudong\n- **SHA** - Shanghai Hongqiao\n- **CAN** - Guangzhou Baiyun\n- **SZX** - Shenzhen Bao'an\n- **BKK** - Bangkok Suvarnabhumi\n- **SYD** - Sydney Kingsford Smith\n- **MEL** - Melbourne\n- **AKL** - Auckland\n\n### Canada\n- **YYZ** - Toronto Pearson\n- **YVR** - Vancouver International\n- **YUL** - Montreal Trudeau\n- **YYC** - Calgary International\n\n### Latin America\n- **MEX** - Mexico City International\n- **GRU** - São Paulo Guarulhos\n- **GIG** - Rio de Janeiro Galeão\n- **EZE** - Buenos Aires Ezeiza\n- **SCL** - Santiago International\n- **BOG** - Bogotá El Dorado\n- **LIM** - Lima Jorge Chávez\n\n### Africa\n- **CAI** - Cairo International\n- **JNB** - Johannesburg OR Tambo\n- **CPT** - Cape Town International\n- **NBO** - Nairobi Jomo Kenyatta\n- **ADD** - Addis Ababa Bole\n\n## Regional European Airports\n\n### Germany\n- **TXL/BER** - Berlin Brandenburg\n- **HAM** - Hamburg\n- **DUS** - Düsseldorf\n- **STR** - Stuttgart\n- **CGN** - Cologne Bonn\n\n### France\n- **NCE** - Nice Côte d'Azur\n- **LYS** - Lyon Saint-Exupéry\n- **MRS** - Marseille Provence\n- **TLS** - Toulouse Blagn"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kaya... Skill: Navifare - Flight Price Double-Check, Finds Hidden Deals Owner: simonenavifare Summary: Verify and compare flight prices across multiple booking sites using Navifare. Trigger when users share flight prices from any booking site (Skyscanner, Kaya... Tags: latest:1.2.0 Version history: v1.2.0 | 2026-02-23T12:25:11.410Z | user Version 1.2.0 - Added privacy enhancement: When users upload flight screenshots, only e","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":2102,"uniquenessScore":55,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","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-04-15T00:45:39.800Z","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-10T03:08:25.788Z","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"}]}}}