{
  "schemaVersion": "1.0",
  "item": {
    "slug": "seats-aero",
    "name": "Seats Aero",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/JarrodJS/seats-aero",
    "canonicalUrl": "https://clawhub.ai/JarrodJS/seats-aero",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/seats-aero",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=seats-aero",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/seats-aero"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/seats-aero",
    "agentPageUrl": "https://openagent3.xyz/skills/seats-aero/agent",
    "manifestUrl": "https://openagent3.xyz/skills/seats-aero/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/seats-aero/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Seats.aero Award Flight Search",
        "body": "Search award flight availability across 24 mileage programs using the seats.aero partner API."
      },
      {
        "title": "Setup",
        "body": "Before searching, you need a seats.aero API key:\n\nIf the user hasn't provided an API key, prompt them:\n\n\"Please provide your seats.aero API key. You can get one at https://seats.aero/partner\"\n\n\nStore the key in conversation context for subsequent requests\nAll requests require the header: Partner-Authorization: Bearer {api_key}"
      },
      {
        "title": "1. Search Routes (/search)",
        "body": "Search cached availability across all mileage programs for a specific origin-destination pair."
      },
      {
        "title": "2. Bulk Availability (/availability)",
        "body": "Explore all availability from a single mileage program, optionally filtered by region."
      },
      {
        "title": "3. Route Discovery (/routes)",
        "body": "Get all routes monitored for a specific mileage program."
      },
      {
        "title": "4. Trip Details (/trips/{id})",
        "body": "Get detailed flight segments and booking links for a specific availability."
      },
      {
        "title": "Quick Reference",
        "body": "ItemValueBase URLhttps://seats.aero/partnerapi/Auth HeaderPartner-Authorization: Bearer {key}Date FormatYYYY-MM-DD"
      },
      {
        "title": "Cabin Codes",
        "body": "Y = Economy\nW = Premium Economy\nJ = Business\nF = First"
      },
      {
        "title": "Regions",
        "body": "North America, South America, Europe, Africa, Middle East, Asia, Oceania"
      },
      {
        "title": "Supported Programs",
        "body": "aeroplan, alaska, american, aeromexico, azul, copa, delta, emirates,\nethiopian, etihad, finnair, flyingblue, gol, jetblue, lufthansa,\nqantas, qatar, sas, saudia, singapore, turkish, united,\nvirginatlantic, virginaustralia"
      },
      {
        "title": "Find availability on a specific route",
        "body": "User: \"Find business class SFO to Tokyo next month\"\n\nUse /search endpoint with:\n\norigin_airport=SFO\ndestination_airport=NRT,HND (both Tokyo airports)\ncabin=J\nstart_date and end_date for the date range"
      },
      {
        "title": "Explore program availability",
        "body": "User: \"What United awards are available from Europe?\"\n\nUse /availability endpoint with:\n\nsource=united\norigin_region=Europe"
      },
      {
        "title": "Get booking details",
        "body": "User: \"Show me details for that flight\"\n\nUse /trips/{id} with the availability ID from previous search\nResponse includes flight segments, times, and booking links"
      },
      {
        "title": "Check what routes a program covers",
        "body": "User: \"What routes does Aeroplan monitor?\"\n\nUse /routes endpoint with source=aeroplan"
      },
      {
        "title": "/search",
        "body": "ParameterRequiredDescriptionorigin_airportYes3-letter IATA codedestination_airportYes3-letter IATA code(s), comma-separatedcabinNoY, W, J, or F (comma-separated for multiple)start_dateNoYYYY-MM-DDend_dateNoYYYY-MM-DDsourcesNoProgram name(s), comma-separatedonly_directNotrue/falsetakeNoResults per page (default 100)cursorNoPagination cursor"
      },
      {
        "title": "/availability",
        "body": "ParameterRequiredDescriptionsourceYesSingle program namecabinNoSingle cabin codeorigin_regionNoFilter by origin regiondestination_regionNoFilter by destination regionstart_dateNoYYYY-MM-DDend_dateNoYYYY-MM-DDtakeNoResults per page"
      },
      {
        "title": "Script Usage",
        "body": "For complex or repeated searches, use the Python helper:\n\nfrom scripts.seats_api import search_availability, format_results\n\nresults = search_availability(\n    api_key=\"your_key\",\n    origin=\"SFO\",\n    destination=\"NRT\",\n    start_date=\"2024-03-01\",\n    end_date=\"2024-03-31\",\n    cabins=\"J,F\"\n)\nprint(format_results(results[\"data\"], cabin=\"J\"))\n\nSee scripts/seats_api.py for full API client implementation."
      },
      {
        "title": "Availability Object Fields",
        "body": "ID - Use for /trips/{id} lookup\nRoute - Origin-Destination pair\nDate - Flight date\nYAvailable, WAvailable, JAvailable, FAvailable - Boolean availability\nYMileageCost, etc. - Points required per cabin\nYDirects, etc. - Number of direct flights available\nSource - Program name\nComputedLastSeen - Data freshness timestamp"
      },
      {
        "title": "Error Handling",
        "body": "401: Invalid or missing API key\n429: Rate limited, wait and retry\n404: No results or invalid availability ID"
      },
      {
        "title": "Tips",
        "body": "Date ranges: Keep to 30-60 days for faster results\nMultiple cabins: Search J,F together for premium options\nDirect flights: Use only_direct=true to filter connections\nPagination: Use cursor from response for more results\nData freshness: Check ComputedLastSeen - older data may be stale"
      },
      {
        "title": "Reference Documentation",
        "body": "For complete API specification including all fields and response schemas, see references/api-spec.md."
      }
    ],
    "body": "Seats.aero Award Flight Search\n\nSearch award flight availability across 24 mileage programs using the seats.aero partner API.\n\nSetup\n\nBefore searching, you need a seats.aero API key:\n\nIf the user hasn't provided an API key, prompt them:\n\"Please provide your seats.aero API key. You can get one at https://seats.aero/partner\"\nStore the key in conversation context for subsequent requests\nAll requests require the header: Partner-Authorization: Bearer {api_key}\nCore Capabilities\n1. Search Routes (/search)\n\nSearch cached availability across all mileage programs for a specific origin-destination pair.\n\n2. Bulk Availability (/availability)\n\nExplore all availability from a single mileage program, optionally filtered by region.\n\n3. Route Discovery (/routes)\n\nGet all routes monitored for a specific mileage program.\n\n4. Trip Details (/trips/{id})\n\nGet detailed flight segments and booking links for a specific availability.\n\nQuick Reference\nItem\tValue\nBase URL\thttps://seats.aero/partnerapi/\nAuth Header\tPartner-Authorization: Bearer {key}\nDate Format\tYYYY-MM-DD\nCabin Codes\nY = Economy\nW = Premium Economy\nJ = Business\nF = First\nRegions\n\nNorth America, South America, Europe, Africa, Middle East, Asia, Oceania\n\nSupported Programs\naeroplan, alaska, american, aeromexico, azul, copa, delta, emirates,\nethiopian, etihad, finnair, flyingblue, gol, jetblue, lufthansa,\nqantas, qatar, sas, saudia, singapore, turkish, united,\nvirginatlantic, virginaustralia\n\nCommon Workflows\nFind availability on a specific route\n\nUser: \"Find business class SFO to Tokyo next month\"\n\nUse /search endpoint with:\norigin_airport=SFO\ndestination_airport=NRT,HND (both Tokyo airports)\ncabin=J\nstart_date and end_date for the date range\nExplore program availability\n\nUser: \"What United awards are available from Europe?\"\n\nUse /availability endpoint with:\nsource=united\norigin_region=Europe\nGet booking details\n\nUser: \"Show me details for that flight\"\n\nUse /trips/{id} with the availability ID from previous search\nResponse includes flight segments, times, and booking links\nCheck what routes a program covers\n\nUser: \"What routes does Aeroplan monitor?\"\n\nUse /routes endpoint with source=aeroplan\nAPI Parameters Quick Guide\n/search\nParameter\tRequired\tDescription\norigin_airport\tYes\t3-letter IATA code\ndestination_airport\tYes\t3-letter IATA code(s), comma-separated\ncabin\tNo\tY, W, J, or F (comma-separated for multiple)\nstart_date\tNo\tYYYY-MM-DD\nend_date\tNo\tYYYY-MM-DD\nsources\tNo\tProgram name(s), comma-separated\nonly_direct\tNo\ttrue/false\ntake\tNo\tResults per page (default 100)\ncursor\tNo\tPagination cursor\n/availability\nParameter\tRequired\tDescription\nsource\tYes\tSingle program name\ncabin\tNo\tSingle cabin code\norigin_region\tNo\tFilter by origin region\ndestination_region\tNo\tFilter by destination region\nstart_date\tNo\tYYYY-MM-DD\nend_date\tNo\tYYYY-MM-DD\ntake\tNo\tResults per page\nScript Usage\n\nFor complex or repeated searches, use the Python helper:\n\nfrom scripts.seats_api import search_availability, format_results\n\nresults = search_availability(\n    api_key=\"your_key\",\n    origin=\"SFO\",\n    destination=\"NRT\",\n    start_date=\"2024-03-01\",\n    end_date=\"2024-03-31\",\n    cabins=\"J,F\"\n)\nprint(format_results(results[\"data\"], cabin=\"J\"))\n\n\nSee scripts/seats_api.py for full API client implementation.\n\nResponse Handling\nAvailability Object Fields\nID - Use for /trips/{id} lookup\nRoute - Origin-Destination pair\nDate - Flight date\nYAvailable, WAvailable, JAvailable, FAvailable - Boolean availability\nYMileageCost, etc. - Points required per cabin\nYDirects, etc. - Number of direct flights available\nSource - Program name\nComputedLastSeen - Data freshness timestamp\nError Handling\n401: Invalid or missing API key\n429: Rate limited, wait and retry\n404: No results or invalid availability ID\nTips\nDate ranges: Keep to 30-60 days for faster results\nMultiple cabins: Search J,F together for premium options\nDirect flights: Use only_direct=true to filter connections\nPagination: Use cursor from response for more results\nData freshness: Check ComputedLastSeen - older data may be stale\nReference Documentation\n\nFor complete API specification including all fields and response schemas, see references/api-spec.md."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/JarrodJS/seats-aero",
    "publisherUrl": "https://clawhub.ai/JarrodJS/seats-aero",
    "owner": "JarrodJS",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/seats-aero",
    "downloadUrl": "https://openagent3.xyz/downloads/seats-aero",
    "agentUrl": "https://openagent3.xyz/skills/seats-aero/agent",
    "manifestUrl": "https://openagent3.xyz/skills/seats-aero/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/seats-aero/agent.md"
  }
}