Skip to main content
Glama

Plan a sports trip

wever_sports-plan-trip

Assemble round-trip flights, hotel nights, event tickets and a dinner table for a specific game or event in any sport, using the home city, party size and budget cap. Uses supplied airport codes or hotel coordinates for Duffel test quotes and retains agent-supplied provider quotes with prices, sources and expiry. Marks remaining legs as quote needed. Returns an itemized itinerary, quoted subtotal, budget targets and a principal review link. POST /api/sports-plan-trip. Paid URL: 0.10 USDC per call on Base mainnet using x402 exact, under the shared 10 signed-wallet free calls over rolling 30 days. X-Wever-Wallet-Proof binds the exact JSON arguments to this API path. API access fees are separate from travel spending. Per-leg principal approval and delegated authority govern spending. Conditional escrow has a 300 USDC per-leg cap. Duffel test mode uses a test token and simulated travel. Booking approval is separate from quote selection. Uncertain attempts are reconciled through trip-status. Read /api/sports-trips-contract for schemas, provider availability, receipt verification and approval terms.

Input Schema

NameRequiredDescriptionDefault
eventYes
quotesNo
home_cityYes
party_sizeYes
duffel_testNo
table_nightNobefore
budget_cap_usdYes
idempotency_keyYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / duffel_test
      Added value: +{
      +  "additionalProperties": false,
      +  "anyOf": [
      +    {
      +      "required": [
      +        "flights"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "hotel"
      +      ]
      +    }
      +  ],
      +  "properties": {
      +    "flights": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "destination": {
      +          "pattern": "^[A-Z]{3}$",
      +          "type": "string"
      +        },
      +        "origin": {
      +          "pattern": "^[A-Z]{3}$",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "origin",
      +        "destination"
      +      ],
      +      "type": "object"
      +    },
      +    "hotel": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "latitude": {
      +          "maximum": 90,
      +          "minimum": -90,
      +          "type": "number"
      +        },
      +        "longitude": {
      +          "maximum": 180,
      +          "minimum": -180,
      +          "type": "number"
      +        },
      +        "radius_km": {
      +          "maximum": 10,
      +          "minimum": 1,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "latitude",
      +        "longitude",
      +        "radius_km"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [],
      +  "type": "object"
      +}
  2. Changed13 schema fields changed
    • addedInput schema / properties / event / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "event_name"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "home_team",
      +      "away_team"
      +    ]
      +  }
      +]
    • addedInput schema / properties / event / dependencies
      Added value: +{
      +  "away_team": [
      +    "home_team"
      +  ],
      +  "home_team": [
      +    "away_team"
      +  ]
      +}
    • changedInput schema / properties / event / properties / away_team / pattern
      Previous value: -"^[^\\u0000-\\u001f\\u007f]+$"New value: +"^(?!\\s)(?![\\s\\S]*\\s$)[^\\u0000-\\u001f\\u007f]+$"
    • changedInput schema / properties / event / properties / city / pattern
      Previous value: -"^[^\\u0000-\\u001f\\u007f]+$"New value: +"^(?!\\s)(?![\\s\\S]*\\s$)[^\\u0000-\\u001f\\u007f]+$"
    • addedInput schema / properties / event / properties / event_name
      Added value: +{
      +  "maxLength": 160,
      +  "minLength": 1,
      +  "pattern": "^(?!\\s)(?![\\s\\S]*\\s$)[^\\u0000-\\u001f\\u007f]+$",
      +  "type": "string"
      +}
    • changedInput schema / properties / event / properties / home_team / pattern
      Previous value: -"^[^\\u0000-\\u001f\\u007f]+$"New value: +"^(?!\\s)(?![\\s\\S]*\\s$)[^\\u0000-\\u001f\\u007f]+$"
    • removedInput schema / properties / event / properties / league / const
      Removed value: -"NFL"
    • addedInput schema / properties / event / properties / league / maxLength
      Added value: +80
    • addedInput schema / properties / event / properties / league / minLength
      Added value: +1
    • addedInput schema / properties / event / properties / league / pattern
      Added value: +"^(?!\\s)(?![\\s\\S]*\\s$)[^\\u0000-\\u001f\\u007f]+$"
    • addedInput schema / properties / event / properties / league / type
      Added value: +"string"
    • changedInput schema / properties / event / properties / venue / pattern
      Previous value: -"^[^\\u0000-\\u001f\\u007f]+$"New value: +"^(?!\\s)(?![\\s\\S]*\\s$)[^\\u0000-\\u001f\\u007f]+$"
    • changedInput schema / properties / event / required
      Previous value: -[
      -  "league",
      -  "home_team",
      -  "away_team",
      -  "date",
      -  "venue",
      -  "city"
      -]New value: +[
      +  "league",
      +  "date",
      +  "venue",
      +  "city"
      +]
  3. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Well beyond the annotations, it discloses that calls are paid (0.10 USDC per call via x402 exact on Base mainnet, within 10 signed-wallet free calls per rolling 30 days), that X-Wever-Wallet-Proof binds the exact JSON arguments to the API path, that API fees are separate from travel spending, that per-leg approval and a 300 USDC per-leg escrow cap govern spending, and that Duffel runs in simulated test mode. It also separates booking approval from quote selection and says remaining legs are marked 'quote needed'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded: what it assembles, then quote handling, then what it returns, then payment and approval terms, then a pointer to the contract endpoint. The dense payment/legal sentences are long but each carries operational information an agent needs. Minor redundancy around fees versus spending keeps it short of ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter nested-object tool with no output schema, the description states the return shape (itemized itinerary, quoted subtotal, budget targets, principal review link) and defers deeper schemas, provider availability, receipt verification and approval terms to the sports-trips-contract endpoint. Combined with the disclosed payment and reconciliation behavior, an agent has what it needs to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning, and it does for most of them: quotes are agent-supplied provider quotes carrying prices, sources and expiry; duffel_test uses airport codes or hotel coordinates for test quotes; home_city, party_size and budget_cap are named as the trip inputs. It leaves idempotency_key and the table_night before/after timing unexplained, plus the party-size ceiling and budget format that only the schema enforces.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a precise verb (assemble) and a composite resource (round-trip flights, hotel nights, event tickets, dinner table) scoped to 'a specific game or event in any sport.' It also distinguishes itself from the neighboring sports tools by stating that uncertain attempts are reconciled through trip-status, so an agent can tell plan-trip, book-leg, cancel-leg and trip-status apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear conditions for use (need a full trip for a specific event, given home city, party size and budget cap) and routes post-hoc uncertainty to trip-status. It also states prerequisites such as per-leg principal approval and delegated authority. It never explicitly names an alternative for the partial cases (e.g. 'for a single leg use sports-book-leg'), so exclusions are only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.