# AwardSecrets Award Availability

> Award seat availability from a contracted GDS. One route, one airline, one date.

- name: com.awardsecrets/award-availability
- version: 1.0.0
- connection class: R1 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 76/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.awardsecrets%2Faward-availability
- tools: https://api.protogrid.dev/v1/servers/com.awardsecrets%2Faward-availability/tools

**An agent can connect on its own if it already holds `AWARD_AVAILABILITY_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "award-availability": {
      "type": "http",
      "url": "https://awardsecrets.com/mcp",
      "headers": {
        "Authorization": "Bearer ${AWARD_AVAILABILITY_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${AWARD_AVAILABILITY_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-69d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 76/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 64 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: search_award_availability (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)
- pass `tools.token_cost`: about 696 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 1, about 696 tokens to load them all
- tool set hash: b00f7b9c590a98cc9224dd6ff86f3d99
- tools last changed: 2026-10-09T17:11:03.382Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.awardsecrets/award-availability.svg)](https://protogrid.dev/servers/com.awardsecrets/award-availability)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-09 `search_award_availability` changed (description)
  - before: Look up award (points/miles) seat availability for ONE specific flight route on ONE specific date with ONE specific airline, sourced from a contracted GDS rather than scraped. Returns the flights found with cabin and seat count. IMPORTANT — this tool is strictly literal. Every argument takes a single concrete value: • origin / destination: exactly one 3-letter IATA airport code each. Not a city, not a list, not a region. • airline: exactly one 2-letter IATA carrier code (e.g. VS, CX, NH). Not an alliance and not a loyalty programme. • date: exactly one date, YYYY-MM-DD. Not a range and not a month. To cover several airports, airlines or dates, CALL THIS TOOL ONCE PER COMBINATION and combine the results yourself. Award space is scarce and volatile, so an empty result for one date says nothing about another — checking several dates is normal and expected. Interpreting the result: • seats is an availability indicator, not a guaranteed bookable count, and not a reservation. Low counts are the more precise signal; treat higher ones as less certain. Do not present any count as a firm number of seats a user can book. • cabin is one of business, first, economy or premium_economy. • An empty result means no availability was surfaced for that exact combination at that moment; it is not proof that the route never has space. • Availability changes fast. Treat every result as a point-in-time observation, not a reservation. If the call is declined for want of an API key, say so plainly and point the user at https://awardsecrets.com/api.html — access is in limited release and keys are issued individually. Do not invent availability, and do not substitute a guess for a result you could not retrieve.
  - after: Query the AwardSecrets data set (award-travel intelligence, AI-augmented and derived from GDS inventory and lived award-travel experience; not scraped) for award (points/miles) seat availability on ONE route, ONE date and ONE airline. Returns the flights found with cabin and seat count. IMPORTANT — this tool is strictly literal. Every argument takes a single concrete value: • origin / destination: exactly one 3-letter IATA airport code each. Not a city, not a list, not a region. • airline: exactly one 2-letter IATA carrier code (e.g. VS, CX, NH). Not an alliance and not a loyalty programme. • date: exactly one date, YYYY-MM-DD. Not a range and not a month. To cover several airports, airlines or dates, CALL THIS TOOL ONCE PER COMBINATION and combine the results yourself. Award space is scarce and volatile, so an empty result for one date says nothing about another — checking several dates is normal and expected. Interpreting the result: • seats is an availability indicator, not a guaranteed bookable count, and not a reservation. Low counts are the more precise signal; treat higher ones as less certain. Do not present any count as a firm number of seats a user can book. • cabin is one of business, first, economy or premium_economy. • An empty result means no availability was surfaced for that exact combination at that moment; it is not proof that the route never has space. • Availability changes fast. Treat every result as a point-in-time observation, not a reservation. If the call is declined for want of an API key, say so plainly and point the user at https://awardsecrets.com/api.html — access comes with an AwardSecrets API membership (monthly plans). If it is declined because the monthly query allowance is reached, say when it resets. Do not invent availability, and do not substitute a guess for a result you could not retrieve.

Full history: https://api.protogrid.dev/v1/servers/com.awardsecrets%2Faward-availability/changes

## Remotes

- https://awardsecrets.com/mcp (streamable-http, auth api_key ${AWARD_AVAILABILITY_TOKEN}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (1)

- `search_award_availability`: Query the AwardSecrets data set (award-travel intelligence, AI-augmented and derived from GDS inventory and lived award-travel experience; not scraped) for award (points/miles) seat availability on ONE route, ONE date and ONE airline. Returns the flights found with cabin and seat count.

IMPORTANT — this tool is strictly literal. Every argument takes a single concrete value:
  • origin / destination: exactly one 3-letter IATA airport code each. Not a city, not a list, not a region.
  • airline: exactly one 2-letter IATA carrier code (e.g. VS, CX, NH). Not an alliance and not a loyalty programme.
  • date: exactly one date, YYYY-MM-DD. Not a range and not a month.

To cover several airports, airlines or dates, CALL THIS TOOL ONCE PER COMBINATION and combine the results yourself. Award space is scarce and volatile, so an empty result for one date says nothing about another — checking several dates is normal and expected.

Interpreting the result:
  • seats is an availability indicator, not a guaranteed bookable count, and not a reservation. Low counts are the more precise signal; treat higher ones as less certain. Do not present any count as a firm number of seats a user can book.
  • cabin is one of business, first, economy or premium_economy.
  • An empty result means no availability was surfaced for that exact combination at that moment; it is not proof that the route never has space.
  • Availability changes fast. Treat every result as a point-in-time observation, not a reservation.

If the call is declined for want of an API key, say so plainly and point the user at https://awardsecrets.com/api.html — access comes with an AwardSecrets API membership (monthly plans). If it is declined because the monthly query allowance is reached, say when it resets. Do not invent availability, and do not substitute a guess for a result you could not retrieve.
