Skip to main content
Glama

List orders

list_orders
Read-onlyIdempotent

The user's hotel orders, newest first, including those made on the Fortrip website. Pass nextCursor back as cursor for the next page.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_orders"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoOrders per page, 1 to 50. Default 20.
cursorNo`nextCursor` from the previous page of orders.
localeNoLanguage for names and text in the response: en or zh.

Output Schema

NameRequiredDescriptionDefault
dataYes
nextStepNoWhat to show and ask before giving a payment.url. Present when the answer holds a non-null payment.url, and only then.
nextCursorYesPass it back as cursor for the next page; null on the last page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedOutput schema / properties / data / items / properties / payment / properties / localCurrencyAtCheckout / description
      Previous value: -"Whether paying by url may charge the card in its own currency, converted by Stripe; false once paid by token, Alipay or WeChat Pay; always false on a CNY order."New value: +"Whether paying by url may charge the card in its own currency, converted by Stripe; false once paid by token, or by Alipay or WeChat Pay through pay_order or the Fortrip page; always false on a CNY order."
    • changedOutput schema / properties / data / items / properties / payment / properties / methods / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "description": "A Stripe shared payment token, through pay_order's sharedPaymentToken or payment. The entry is absent when a token can't pay the order: over $500, not charged in USD, an order started on the Fortrip website, a negotiated price, under 15 minutes left, 5 tokens tried, a token payment is under way, an Alipay or WeChat Pay payment is open, or token payment isn't offered for this order.",
      -    "properties": {
      -      "handler": {
      -        "additionalProperties": {},
      -        "description": "The com.stripe.payments handler, which takes the token.",
      -        "properties": {
      -          "available_instruments": {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "config": {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "type": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "type"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "config": {
      -            "additionalProperties": {},
      -            "properties": {
      -              "business_profile": {
      -                "type": "string"
      -              },
      -              "environment": {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "livemode",
      -                      "testmode"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ]
      -              }
      -            },
      -            "required": [
      -              "environment",
      -              "business_profile"
      -            ],
      -            "type": "object"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "schema": {
      -            "type": "string"
      -          },
      -          "spec": {
      -            "type": "string"
      -          },
      -          "type": {
      -            "type": "string"
      -          },
      -          "version": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "type",
      -          "version",
      -          "spec",
      -          "schema",
      -          "available_instruments",
      -          "config"
      -        ],
      -        "type": "object"
      -      },
      -      "id": {
      -        "const": "stripe_shared_payment_token",
      -        "type": "string"
      -      },
      -      "limits": {
      -        "additionalProperties": {},
      -        "description": "What the shared payment token for pay_order must allow.",
      -        "properties": {
      -          "currency": {
      -            "description": "The token's currency, lowercase as Stripe takes it: usd.",
      -            "type": "string"
      -          },
      -          "expiresAt": {
      -            "description": "Request the token valid until at least this time; the order can't be paid after it.",
      -            "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      -            "type": "string"
      -          },
      -          "maxAmount": {
      -            "description": "Request the token for at least this amount, in cents; a token that allows less can't pay.",
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "maxAmount",
      -          "currency",
      -          "expiresAt"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "handler",
      -      "limits"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "description": "Paying with Alipay or WeChat Pay: pass method stripe_alipay_wechat_pay to pay_order to open it. The entry is absent when the order can't be paid this way and none is open, as on a CNY order.",
      -    "properties": {
      -      "alipay": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {},
      -            "properties": {
      -              "url": {
      -                "description": "A link, on fortrip.ai, for the user to pay with Alipay; anyone holding it can pay.",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "url"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The Alipay link; null until the payment is open."
      -      },
      -      "current": {
      -        "anyOf": [
      -          {
      -            "anyOf": [
      -              {
      -                "enum": [
      -                  "wechat_pay",
      -                  "alipay"
      -                ],
      -                "type": "string"
      -              },
      -              {
      -                "type": "string"
      -              }
      -            ]
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Which of the two the payment is on now; null until it is open."
      -      },
      -      "id": {
      -        "const": "stripe_alipay_wechat_pay",
      -        "type": "string"
      -      },
      -      "open": {
      -        "description": "Whether pay_order has opened an Alipay or WeChat Pay payment on this order.",
      -        "type": "boolean"
      -      },
      -      "wechatPay": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {},
      -            "properties": {
      -              "qrData": {
      -                "description": "The WeChat Pay code's content, to draw as a QR code; null when there is no live code (open wechatPay.url for one).",
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "qrImageUrl": {
      -                "description": "A 480 px PNG of the same code.",
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "url": {
      -                "description": "A link, on fortrip.ai, for the user to pay with WeChat Pay; anyone holding it can pay.",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "qrData",
      -              "qrImageUrl",
      -              "url"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The WeChat Pay code and link; null until the payment is open."
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "open",
      -      "current",
      -      "wechatPay",
      -      "alipay"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "description": "A Stripe shared payment token, through pay_order's sharedPaymentToken or payment. The entry is absent when a token can't pay this order (for example over $500, not charged in USD, or started on the Fortrip website); then give payment.url or use another entry.",
      +    "properties": {
      +      "handler": {
      +        "additionalProperties": {},
      +        "description": "The com.stripe.payments handler, which takes the token.",
      +        "properties": {
      +          "available_instruments": {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "config": {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "type": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "type"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "config": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "business_profile": {
      +                "type": "string"
      +              },
      +              "environment": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "livemode",
      +                      "testmode"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ]
      +              }
      +            },
      +            "required": [
      +              "environment",
      +              "business_profile"
      +            ],
      +            "type": "object"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "schema": {
      +            "type": "string"
      +          },
      +          "spec": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "type": "string"
      +          },
      +          "version": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "type",
      +          "version",
      +          "spec",
      +          "schema",
      +          "available_instruments",
      +          "config"
      +        ],
      +        "type": "object"
      +      },
      +      "id": {
      +        "const": "stripe_shared_payment_token",
      +        "type": "string"
      +      },
      +      "limits": {
      +        "additionalProperties": {},
      +        "description": "What the shared payment token for pay_order must allow.",
      +        "properties": {
      +          "currency": {
      +            "description": "The token's currency, lowercase as Stripe takes it: usd.",
      +            "type": "string"
      +          },
      +          "expiresAt": {
      +            "description": "Request the token valid until at least this time; the order can't be paid after it.",
      +            "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      +            "type": "string"
      +          },
      +          "maxAmount": {
      +            "description": "Request the token for at least this amount, in cents; a token that allows less can't pay.",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "maxAmount",
      +          "currency",
      +          "expiresAt"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "handler",
      +      "limits"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "description": "Paying with Alipay or WeChat Pay: pass method stripe_alipay_wechat_pay to pay_order to open it. The entry is absent when the order can't be paid this way and none is open, as on a CNY order.",
      +    "properties": {
      +      "alipay": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "url": {
      +                "description": "A link, on fortrip.ai, for the user to pay with Alipay; anyone holding it can pay.",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "url"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The Alipay link; null until the payment is open."
      +      },
      +      "current": {
      +        "anyOf": [
      +          {
      +            "anyOf": [
      +              {
      +                "enum": [
      +                  "wechat_pay",
      +                  "alipay"
      +                ],
      +                "type": "string"
      +              },
      +              {
      +                "type": "string"
      +              }
      +            ]
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Which of the two the payment is on now; null until it is open."
      +      },
      +      "id": {
      +        "const": "stripe_alipay_wechat_pay",
      +        "type": "string"
      +      },
      +      "open": {
      +        "description": "Whether pay_order has opened an Alipay or WeChat Pay payment on this order.",
      +        "type": "boolean"
      +      },
      +      "wechatPay": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "qrData": {
      +                "description": "The WeChat Pay code's content, to draw as a QR code; null when there is no live code (open wechatPay.url for one).",
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "qrImageUrl": {
      +                "description": "A 480 px PNG of the same code.",
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "url": {
      +                "description": "A link, on fortrip.ai, for the user to pay with WeChat Pay; anyone holding it can pay.",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "qrData",
      +              "qrImageUrl",
      +              "url"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The WeChat Pay code and link; null until the payment is open."
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "open",
      +      "current",
      +      "wechatPay",
      +      "alipay"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / properties / data / items / properties / payment / properties / url / description
      Previous value: -"The payment page, on fortrip.ai; it continues to the payment provider. With requiresSignIn false anyone holding it can pay; with requiresSignIn true (an order started on the Fortrip website) it continues to the Fortrip booking page, where only the signed-in owner can pay. null while a payment is held (authorized) or when the order isn't awaiting payment, or, while it is and its payment is unpaid, when the link couldn't be read this time: read the order again."New value: +"The payment page, on fortrip.ai; it continues to the payment provider. With requiresSignIn false anyone holding it can pay; with requiresSignIn true (an order started on the Fortrip website) it continues to the Fortrip booking page, where only the signed-in owner can pay. null while a payment is held (authorized) or when the order isn't awaiting payment, or, while it is and its payment is unpaid, while a payment is being processed: read the order again shortly, and don't give an earlier link."
    • changedOutput schema / properties / data / items / properties / status / description
      Previous value: -"awaiting_payment: unpaid, nothing charged; payable until payment.expiresAt. expired: not paid; the time ran out or the order was closed. Nothing charged. confirming: paid or held, the booking is with the hotel. confirmed: the hotel confirmed and the payment is charged. failed: no stay was booked; payment.status says what became of the money. cancelling, then cancelled: a cancellation under the terms. needs_attention: a person at Fortrip has to resolve it."New value: +"awaiting_payment: not paid yet (a payment just made may still be settling); payable until payment.expiresAt. expired: not paid; the time ran out or the order was closed. Nothing charged. confirming: paid or held, the booking is with the hotel. confirmed: the hotel confirmed and the payment is charged. failed: no stay was booked; payment.status says what became of the money. cancelling, then cancelled: a cancellation under the terms. needs_attention: a person at Fortrip has to resolve it."
  2. Changed17 schema fields changed
    • changedOutput schema / properties / data / items / properties / cancel / properties / available / description
      Previous value: -"Whether the user can cancel the order now."New value: +"Whether the user can cancel the order now, or, unpaid (reason unpaid), close it."
    • changedOutput schema / properties / data / items / properties / cancel / properties / penalty / description
      Previous value: -"The penalty if cancelled now, under the accepted terms, in the charge currency; null when not stated."New value: +"The penalty if cancelled now, under the accepted terms, in the charge currency; null when not stated, except on an unpaid order (reason unpaid), where null means closing it charges nothing."
    • changedOutput schema / properties / data / items / properties / cancel / properties / reason / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "cancellable",
      -      "already_cancelled",
      -      "in_progress",
      -      "not_confirmed",
      -      "stay_started",
      -      "non_refundable",
      -      "refused",
      -      "terms_unknown",
      -      "needs_attention"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "cancellable",
      +      "unpaid",
      +      "already_cancelled",
      +      "in_progress",
      +      "not_confirmed",
      +      "stay_started",
      +      "non_refundable",
      +      "refused",
      +      "terms_unknown",
      +      "needs_attention"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "string"
      +  }
      +]
    • changedOutput schema / properties / data / items / properties / cancel / properties / reason / description
      Previous value: -"cancellable when it can be cancelled now; otherwise why not."New value: +"cancellable: a paid order can be cancelled now; unpaid: an unpaid order can be closed; otherwise why not."
    • changedOutput schema / properties / data / items / properties / items / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "hotel": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "cancellation": {
      -            "additionalProperties": {},
      -            "properties": {
      -              "asOf": {
      -                "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      -                "type": "string"
      -              },
      -              "freeCancellationEndsAt": {
      -                "anyOf": [
      -                  {
      -                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "penalties": {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "amount": {
      -                      "additionalProperties": {},
      -                      "properties": {
      -                        "amount": {
      -                          "pattern": "^\\d+(\\.\\d+)?$",
      -                          "type": "string"
      -                        },
      -                        "currency": {
      -                          "pattern": "^[A-Z]{3}$",
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "amount",
      -                        "currency"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "startsAt": {
      -                      "anyOf": [
      -                        {
      -                          "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "startsAt",
      -                    "amount"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "status": {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "free",
      -                      "partial_penalty",
      -                      "non_refundable",
      -                      "unknown"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ]
      -              },
      -              "timeZone": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "status",
      -              "asOf",
      -              "freeCancellationEndsAt",
      -              "penalties",
      -              "timeZone"
      -            ],
      -            "type": "object"
      -          },
      -          "checkIn": {
      -            "type": "string"
      -          },
      -          "checkOut": {
      -            "type": "string"
      -          },
      -          "confirmationNumber": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "hotelId": {
      -            "anyOf": [
      -              {
      -                "pattern": "^htl_[0-9A-Za-z]{20}$",
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "meals": {
      -            "additionalProperties": {},
      -            "properties": {
      -              "allInclusive": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "guestsCoveredPerRoom": {
      -                "anyOf": [
      -                  {
      -                    "maximum": 9007199254740991,
      -                    "minimum": -9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "included": {
      -                "anyOf": [
      -                  {
      -                    "items": {
      -                      "anyOf": [
      -                        {
      -                          "enum": [
      -                            "breakfast",
      -                            "lunch",
      -                            "dinner"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "string"
      -                        }
      -                      ]
      -                    },
      -                    "type": "array"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "known": {
      -                "type": "boolean"
      -              },
      -              "label": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": {},
      -                    "properties": {
      -                      "locale": {
      -                        "anyOf": [
      -                          {
      -                            "anyOf": [
      -                              {
      -                                "enum": [
      -                                  "en",
      -                                  "zh"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "string"
      -                              }
      -                            ]
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "text",
      -                      "locale"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "unspecifiedMainMeals": {
      -                "anyOf": [
      -                  {
      -                    "maximum": 9007199254740991,
      -                    "minimum": -9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "required": [
      -              "known",
      -              "included",
      -              "unspecifiedMainMeals",
      -              "allInclusive",
      -              "guestsCoveredPerRoom",
      -              "label"
      -            ],
      -            "type": "object"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "names": {
      -            "additionalProperties": {},
      -            "properties": {
      -              "en": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "zh": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "en",
      -              "zh"
      -            ],
      -            "type": "object"
      -          },
      -          "payAtProperty": {
      -            "additionalProperties": {},
      -            "properties": {
      -              "disclosure": {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "complete",
      -                      "incomplete"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ]
      -              },
      -              "items": {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "amount": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": {},
      -                          "properties": {
      -                            "amount": {
      -                              "pattern": "^\\d+(\\.\\d+)?$",
      -                              "type": "string"
      -                            },
      -                            "currency": {
      -                              "pattern": "^[A-Z]{3}$",
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "amount",
      -                            "currency"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "basis": {
      -                      "anyOf": [
      -                        {
      -                          "enum": [
      -                            "per_stay",
      -                            "per_night",
      -                            "per_person",
      -                            "per_person_per_night",
      -                            "unknown"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "string"
      -                        }
      -                      ]
      -                    },
      -                    "collectedAt": {
      -                      "anyOf": [
      -                        {
      -                          "enum": [
      -                            "property",
      -                            "unknown"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "string"
      -                        }
      -                      ]
      -                    },
      -                    "label": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": {},
      -                          "properties": {
      -                            "locale": {
      -                              "anyOf": [
      -                                {
      -                                  "anyOf": [
      -                                    {
      -                                      "enum": [
      -                                        "en",
      -                                        "zh"
      -                                      ],
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "string"
      -                                    }
      -                                  ]
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "text": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "text",
      -                            "locale"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mandatory": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "label",
      -                    "amount",
      -                    "mandatory",
      -                    "basis",
      -                    "collectedAt"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "required": [
      -              "disclosure",
      -              "items"
      -            ],
      -            "type": "object"
      -          },
      -          "room": {
      -            "additionalProperties": {},
      -            "properties": {
      -              "beds": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": {},
      -                    "properties": {
      -                      "locale": {
      -                        "anyOf": [
      -                          {
      -                            "anyOf": [
      -                              {
      -                                "enum": [
      -                                  "en",
      -                                  "zh"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "string"
      -                              }
      -                            ]
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "text",
      -                      "locale"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "name": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": {},
      -                    "properties": {
      -                      "locale": {
      -                        "anyOf": [
      -                          {
      -                            "anyOf": [
      -                              {
      -                                "enum": [
      -                                  "en",
      -                                  "zh"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "string"
      -                              }
      -                            ]
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "text",
      -                      "locale"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "beds"
      -            ],
      -            "type": "object"
      -          },
      -          "rooms": {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "adults": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                },
      -                "childrenAges": {
      -                  "items": {
      -                    "maximum": 9007199254740991,
      -                    "minimum": -9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "adults",
      -                "childrenAges"
      -              ],
      -              "type": "object"
      -            },
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "timeZone": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "hotelId",
      -          "name",
      -          "names",
      -          "checkIn",
      -          "checkOut",
      -          "timeZone",
      -          "rooms",
      -          "room",
      -          "meals",
      -          "cancellation",
      -          "payAtProperty",
      -          "confirmationNumber"
      -        ],
      -        "type": "object"
      -      },
      -      "type": {
      -        "const": "hotel",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "hotel"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "type": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "hotel": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "cancellation": {
      +            "additionalProperties": {},
      +            "description": "The terms the order was made on, read at asOf; cancel says whether it can be cancelled now.",
      +            "properties": {
      +              "asOf": {
      +                "description": "When these terms were read: status and penalties are as of this time.",
      +                "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      +                "type": "string"
      +              },
      +              "freeCancellationEndsAt": {
      +                "anyOf": [
      +                  {
      +                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "penalties": {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "amount": {
      +                      "additionalProperties": {},
      +                      "properties": {
      +                        "amount": {
      +                          "pattern": "^\\d+(\\.\\d+)?$",
      +                          "type": "string"
      +                        },
      +                        "currency": {
      +                          "pattern": "^[A-Z]{3}$",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "amount",
      +                        "currency"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "startsAt": {
      +                      "anyOf": [
      +                        {
      +                          "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "startsAt",
      +                    "amount"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "status": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "free",
      +                      "partial_penalty",
      +                      "non_refundable",
      +                      "unknown"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ]
      +              },
      +              "timeZone": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "status",
      +              "asOf",
      +              "freeCancellationEndsAt",
      +              "penalties",
      +              "timeZone"
      +            ],
      +            "type": "object"
      +          },
      +          "checkIn": {
      +            "type": "string"
      +          },
      +          "checkOut": {
      +            "type": "string"
      +          },
      +          "confirmationNumber": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "hotelId": {
      +            "anyOf": [
      +              {
      +                "pattern": "^htl_[0-9A-Za-z]{20}$",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "meals": {
      +            "additionalProperties": {},
      +            "description": "What the rate includes to eat. known false: the meals are unknown, not none, and included, unspecifiedMainMeals and allInclusive are null.",
      +            "properties": {
      +              "allInclusive": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "guestsCoveredPerRoom": {
      +                "anyOf": [
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": -9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "How many guests in each room the meals are for; fewer than the guests in the room means not everyone gets them. null when not stated."
      +              },
      +              "included": {
      +                "anyOf": [
      +                  {
      +                    "items": {
      +                      "anyOf": [
      +                        {
      +                          "enum": [
      +                            "breakfast",
      +                            "lunch",
      +                            "dinner"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "string"
      +                        }
      +                      ]
      +                    },
      +                    "type": "array"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "known": {
      +                "type": "boolean"
      +              },
      +              "label": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": {},
      +                    "properties": {
      +                      "locale": {
      +                        "anyOf": [
      +                          {
      +                            "anyOf": [
      +                              {
      +                                "enum": [
      +                                  "en",
      +                                  "zh"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "string"
      +                              }
      +                            ]
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "text",
      +                      "locale"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "unspecifiedMainMeals": {
      +                "anyOf": [
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": -9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "Main meals a day beyond included that the rate doesn't name (e.g. 1 when a half-board rate doesn't say lunch or dinner); null when known is false."
      +              }
      +            },
      +            "required": [
      +              "known",
      +              "included",
      +              "unspecifiedMainMeals",
      +              "allInclusive",
      +              "guestsCoveredPerRoom",
      +              "label"
      +            ],
      +            "type": "object"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "names": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "en": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "zh": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "en",
      +              "zh"
      +            ],
      +            "type": "object"
      +          },
      +          "payAtProperty": {
      +            "additionalProperties": {},
      +            "description": "Fees paid at the property, on top of price.total, in the property's currency, not converted. disclosure incomplete: there may be fees not listed.",
      +            "properties": {
      +              "disclosure": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "complete",
      +                      "incomplete"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ]
      +              },
      +              "items": {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "amount": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "amount": {
      +                              "pattern": "^\\d+(\\.\\d+)?$",
      +                              "type": "string"
      +                            },
      +                            "currency": {
      +                              "pattern": "^[A-Z]{3}$",
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "amount",
      +                            "currency"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "basis": {
      +                      "anyOf": [
      +                        {
      +                          "enum": [
      +                            "per_stay",
      +                            "per_night",
      +                            "per_person",
      +                            "per_person_per_night",
      +                            "unknown"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "string"
      +                        }
      +                      ]
      +                    },
      +                    "collectedAt": {
      +                      "anyOf": [
      +                        {
      +                          "enum": [
      +                            "property",
      +                            "unknown"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "string"
      +                        }
      +                      ]
      +                    },
      +                    "label": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "locale": {
      +                              "anyOf": [
      +                                {
      +                                  "anyOf": [
      +                                    {
      +                                      "enum": [
      +                                        "en",
      +                                        "zh"
      +                                      ],
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "string"
      +                                    }
      +                                  ]
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "text": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "text",
      +                            "locale"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mandatory": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "label",
      +                    "amount",
      +                    "mandatory",
      +                    "basis",
      +                    "collectedAt"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "disclosure",
      +              "items"
      +            ],
      +            "type": "object"
      +          },
      +          "room": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "beds": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": {},
      +                    "properties": {
      +                      "locale": {
      +                        "anyOf": [
      +                          {
      +                            "anyOf": [
      +                              {
      +                                "enum": [
      +                                  "en",
      +                                  "zh"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "string"
      +                              }
      +                            ]
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "text",
      +                      "locale"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "name": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": {},
      +                    "properties": {
      +                      "locale": {
      +                        "anyOf": [
      +                          {
      +                            "anyOf": [
      +                              {
      +                                "enum": [
      +                                  "en",
      +                                  "zh"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "string"
      +                              }
      +                            ]
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "text",
      +                      "locale"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "beds"
      +            ],
      +            "type": "object"
      +          },
      +          "rooms": {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "adults": {
      +                  "maximum": 9007199254740991,
      +                  "minimum": -9007199254740991,
      +                  "type": "integer"
      +                },
      +                "childrenAges": {
      +                  "items": {
      +                    "maximum": 9007199254740991,
      +                    "minimum": -9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "adults",
      +                "childrenAges"
      +              ],
      +              "type": "object"
      +            },
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "timeZone": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "hotelId",
      +          "name",
      +          "names",
      +          "checkIn",
      +          "checkOut",
      +          "timeZone",
      +          "rooms",
      +          "room",
      +          "meals",
      +          "cancellation",
      +          "payAtProperty",
      +          "confirmationNumber"
      +        ],
      +        "type": "object"
      +      },
      +      "type": {
      +        "const": "hotel",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "hotel"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "type": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / properties / data / items / properties / payment / properties / chargeCurrency / description
      Added value: +"USD or CNY: the currency of the offer the order was made from. An order made on the Fortrip website may be in another currency."
    • removedOutput schema / properties / data / items / properties / payment / properties / credentialLimits
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": {},
      -      "properties": {
      -        "currency": {
      -          "description": "The token's currency, lowercase as Stripe takes it: usd.",
      -          "type": "string"
      -        },
      -        "expiresAt": {
      -          "description": "Request the token valid until at least this time; the order can't be paid after it.",
      -          "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      -          "type": "string"
      -        },
      -        "maxAmount": {
      -          "description": "Request the token for at least this amount, in cents; a token that allows less can't pay.",
      -          "maximum": 9007199254740991,
      -          "minimum": -9007199254740991,
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "maxAmount",
      -        "currency",
      -        "expiresAt"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "What the shared payment token for pay_order must allow. null exactly when handlers is []."
      -}
    • addedOutput schema / properties / data / items / properties / payment / properties / expiresAt / description
      Added value: +"When the time to pay ends: an order unpaid by then expires, with nothing charged. null unless status is awaiting_payment."
    • removedOutput schema / properties / data / items / properties / payment / properties / handlers
      Removed value: -{
      -  "description": "The ways to pay other than url: a com.stripe.payments handler takes a Stripe shared payment token through pay_order. [] when a token can't pay the order: over $500, not charged in USD, an order started on the Fortrip website, a negotiated price, under 15 minutes left, 5 tokens tried, a token payment is under way, or token payment isn't offered for this order.",
      -  "items": {
      -    "additionalProperties": {},
      -    "properties": {
      -      "available_instruments": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "config": {
      -              "additionalProperties": {},
      -              "propertyNames": {
      -                "type": "string"
      -              },
      -              "type": "object"
      -            },
      -            "type": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "type"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "config": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "business_profile": {
      -            "type": "string"
      -          },
      -          "environment": {
      -            "anyOf": [
      -              {
      -                "enum": [
      -                  "livemode",
      -                  "testmode"
      -                ],
      -                "type": "string"
      -              },
      -              {
      -                "type": "string"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "environment",
      -          "business_profile"
      -        ],
      -        "type": "object"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "schema": {
      -        "type": "string"
      -      },
      -      "spec": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "type": "string"
      -      },
      -      "version": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "version",
      -      "spec",
      -      "schema",
      -      "available_instruments",
      -      "config"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / data / items / properties / payment / properties / localCharge / description
      Added value: +"What the card was charged in its own currency, when Stripe converted the total; otherwise null. Always null on a CNY order."
    • addedOutput schema / properties / data / items / properties / payment / properties / localCurrencyAtCheckout / description
      Added value: +"Whether paying by url may charge the card in its own currency, converted by Stripe; false once paid by token, Alipay or WeChat Pay; always false on a CNY order."
    • addedOutput schema / properties / data / items / properties / payment / properties / methods
      Added value: +{
      +  "description": "What pay_order accepts for this order now, by id. [] means: give the user payment.url, when it isn't null.",
      +  "items": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": {},
      +        "description": "A Stripe shared payment token, through pay_order's sharedPaymentToken or payment. The entry is absent when a token can't pay the order: over $500, not charged in USD, an order started on the Fortrip website, a negotiated price, under 15 minutes left, 5 tokens tried, a token payment is under way, an Alipay or WeChat Pay payment is open, or token payment isn't offered for this order.",
      +        "properties": {
      +          "handler": {
      +            "additionalProperties": {},
      +            "description": "The com.stripe.payments handler, which takes the token.",
      +            "properties": {
      +              "available_instruments": {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "config": {
      +                      "additionalProperties": {},
      +                      "propertyNames": {
      +                        "type": "string"
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "type"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "config": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "business_profile": {
      +                    "type": "string"
      +                  },
      +                  "environment": {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "livemode",
      +                          "testmode"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "environment",
      +                  "business_profile"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "schema": {
      +                "type": "string"
      +              },
      +              "spec": {
      +                "type": "string"
      +              },
      +              "type": {
      +                "type": "string"
      +              },
      +              "version": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "type",
      +              "version",
      +              "spec",
      +              "schema",
      +              "available_instruments",
      +              "config"
      +            ],
      +            "type": "object"
      +          },
      +          "id": {
      +            "const": "stripe_shared_payment_token",
      +            "type": "string"
      +          },
      +          "limits": {
      +            "additionalProperties": {},
      +            "description": "What the shared payment token for pay_order must allow.",
      +            "properties": {
      +              "currency": {
      +                "description": "The token's currency, lowercase as Stripe takes it: usd.",
      +                "type": "string"
      +              },
      +              "expiresAt": {
      +                "description": "Request the token valid until at least this time; the order can't be paid after it.",
      +                "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      +                "type": "string"
      +              },
      +              "maxAmount": {
      +                "description": "Request the token for at least this amount, in cents; a token that allows less can't pay.",
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "maxAmount",
      +              "currency",
      +              "expiresAt"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "handler",
      +          "limits"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": {},
      +        "description": "Paying with Alipay or WeChat Pay: pass method stripe_alipay_wechat_pay to pay_order to open it. The entry is absent when the order can't be paid this way and none is open, as on a CNY order.",
      +        "properties": {
      +          "alipay": {
      +            "anyOf": [
      +              {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "url": {
      +                    "description": "A link, on fortrip.ai, for the user to pay with Alipay; anyone holding it can pay.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "url"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The Alipay link; null until the payment is open."
      +          },
      +          "current": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "wechat_pay",
      +                      "alipay"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ]
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Which of the two the payment is on now; null until it is open."
      +          },
      +          "id": {
      +            "const": "stripe_alipay_wechat_pay",
      +            "type": "string"
      +          },
      +          "open": {
      +            "description": "Whether pay_order has opened an Alipay or WeChat Pay payment on this order.",
      +            "type": "boolean"
      +          },
      +          "wechatPay": {
      +            "anyOf": [
      +              {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "qrData": {
      +                    "description": "The WeChat Pay code's content, to draw as a QR code; null when there is no live code (open wechatPay.url for one).",
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "qrImageUrl": {
      +                    "description": "A 480 px PNG of the same code.",
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "url": {
      +                    "description": "A link, on fortrip.ai, for the user to pay with WeChat Pay; anyone holding it can pay.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "qrData",
      +                  "qrImageUrl",
      +                  "url"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The WeChat Pay code and link; null until the payment is open."
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "open",
      +          "current",
      +          "wechatPay",
      +          "alipay"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": {},
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / data / items / properties / payment / properties / url / description
      Previous value: -"The payment page, on fortrip.ai. With requiresSignIn false it continues to Stripe Checkout, and anyone holding it can pay; with requiresSignIn true (an order started on the Fortrip website) it continues to the Fortrip booking page, where only the signed-in owner can pay. null when the order isn't awaiting payment, or, while it is, when the link couldn't be read this time: read the order again."New value: +"The payment page, on fortrip.ai; it continues to the payment provider. With requiresSignIn false anyone holding it can pay; with requiresSignIn true (an order started on the Fortrip website) it continues to the Fortrip booking page, where only the signed-in owner can pay. null while a payment is held (authorized) or when the order isn't awaiting payment, or, while it is and its payment is unpaid, when the link couldn't be read this time: read the order again."
    • removedOutput schema / properties / data / items / properties / payment / properties / wallets
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": {},
      -      "properties": {
      -        "alipay": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": {},
      -              "properties": {
      -                "url": {
      -                  "description": "A link, on fortrip.ai, for the user to pay with Alipay; anyone holding it can pay.",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "url"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "The Alipay link; null until the payment is open."
      -        },
      -        "current": {
      -          "anyOf": [
      -            {
      -              "anyOf": [
      -                {
      -                  "enum": [
      -                    "wechat_pay",
      -                    "alipay"
      -                  ],
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "string"
      -                }
      -              ]
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "The wallet the payment is on now; null until it is open."
      -        },
      -        "open": {
      -          "description": "Whether pay_order has opened a wallet payment on this order.",
      -          "type": "boolean"
      -        },
      -        "wechatPay": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": {},
      -              "properties": {
      -                "qrData": {
      -                  "description": "The WeChat Pay code's content, to draw as a QR code; null when there is no live code (open wechatPay.url for one).",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "qrImageUrl": {
      -                  "description": "A 480 px PNG of the same code.",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "url": {
      -                  "description": "A link, on fortrip.ai, for the user to pay with WeChat Pay; anyone holding it can pay.",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "qrData",
      -                "qrImageUrl",
      -                "url"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "The WeChat Pay code and link; null until the payment is open."
      -        }
      -      },
      -      "required": [
      -        "open",
      -        "current",
      -        "wechatPay",
      -        "alipay"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Paying with Alipay or WeChat Pay: pass method alipay_wechat_pay to pay_order to open it. null when the order can't be paid this way and none is open."
      -}
    • changedOutput schema / properties / data / items / properties / payment / required
      Previous value: -[
      -  "status",
      -  "url",
      -  "requiresSignIn",
      -  "expiresAt",
      -  "chargeCurrency",
      -  "localCurrencyAtCheckout",
      -  "localCharge",
      -  "handlers",
      -  "credentialLimits",
      -  "wallets"
      -]New value: +[
      +  "status",
      +  "url",
      +  "requiresSignIn",
      +  "expiresAt",
      +  "chargeCurrency",
      +  "localCurrencyAtCheckout",
      +  "localCharge",
      +  "methods"
      +]
    • addedOutput schema / properties / data / items / properties / price / properties / total / description
      Added value: +"The whole stay for all rooms, in payment.chargeCurrency: what paying charges, or once paid what was charged. Fees payable at the property are not in it."
    • addedOutput schema / properties / data / items / properties / status / description
      Added value: +"awaiting_payment: unpaid, nothing charged; payable until payment.expiresAt. expired: not paid; the time ran out or the order was closed. Nothing charged. confirming: paid or held, the booking is with the hotel. confirmed: the hotel confirmed and the payment is charged. failed: no stay was booked; payment.status says what became of the money. cancelling, then cancelled: a cancellation under the terms. needs_attention: a person at Fortrip has to resolve it."
  3. Changed2 schema fields changed
    • addedOutput schema / properties / data / items / properties / payment / properties / wallets
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "alipay": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "url": {
      +                  "description": "A link, on fortrip.ai, for the user to pay with Alipay; anyone holding it can pay.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "url"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The Alipay link; null until the payment is open."
      +        },
      +        "current": {
      +          "anyOf": [
      +            {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "wechat_pay",
      +                    "alipay"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "string"
      +                }
      +              ]
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The wallet the payment is on now; null until it is open."
      +        },
      +        "open": {
      +          "description": "Whether pay_order has opened a wallet payment on this order.",
      +          "type": "boolean"
      +        },
      +        "wechatPay": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "qrData": {
      +                  "description": "The WeChat Pay code's content, to draw as a QR code; null when there is no live code (open wechatPay.url for one).",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "qrImageUrl": {
      +                  "description": "A 480 px PNG of the same code.",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "url": {
      +                  "description": "A link, on fortrip.ai, for the user to pay with WeChat Pay; anyone holding it can pay.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "qrData",
      +                "qrImageUrl",
      +                "url"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The WeChat Pay code and link; null until the payment is open."
      +        }
      +      },
      +      "required": [
      +        "open",
      +        "current",
      +        "wechatPay",
      +        "alipay"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Paying with Alipay or WeChat Pay: pass method alipay_wechat_pay to pay_order to open it. null when the order can't be paid this way and none is open."
      +}
    • changedOutput schema / properties / data / items / properties / payment / required
      Previous value: -[
      -  "status",
      -  "url",
      -  "requiresSignIn",
      -  "expiresAt",
      -  "chargeCurrency",
      -  "localCurrencyAtCheckout",
      -  "localCharge",
      -  "handlers",
      -  "credentialLimits"
      -]New value: +[
      +  "status",
      +  "url",
      +  "requiresSignIn",
      +  "expiresAt",
      +  "chargeCurrency",
      +  "localCurrencyAtCheckout",
      +  "localCharge",
      +  "handlers",
      +  "credentialLimits",
      +  "wallets"
      +]
  4. Changed10 schema fields changed
    • addedOutput schema / properties / data / items / properties / cancel / description
      Added value: +"Whether the order can be cancelled now, and for what penalty and refund."
    • addedOutput schema / properties / data / items / properties / cancel / properties / available / description
      Added value: +"Whether the user can cancel the order now."
    • addedOutput schema / properties / data / items / properties / cancel / properties / penalty / description
      Added value: +"The penalty if cancelled now, under the accepted terms, in the charge currency; null when not stated."
    • addedOutput schema / properties / data / items / properties / cancel / properties / reason / description
      Added value: +"cancellable when it can be cancelled now; otherwise why not."
    • addedOutput schema / properties / data / items / properties / cancel / properties / refund / description
      Added value: +"What a cancellation now refunds: what was paid less the penalty, in the charge currency; null when not stated."
    • changedOutput schema / properties / data / items / properties / payment / properties / credentialLimits / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "currency": {
      -        "type": "string"
      -      },
      -      "expiresAt": {
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      -        "type": "string"
      -      },
      -      "maxAmount": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "maxAmount",
      -      "currency",
      -      "expiresAt"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "currency": {
      +        "description": "The token's currency, lowercase as Stripe takes it: usd.",
      +        "type": "string"
      +      },
      +      "expiresAt": {
      +        "description": "Request the token valid until at least this time; the order can't be paid after it.",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      +        "type": "string"
      +      },
      +      "maxAmount": {
      +        "description": "Request the token for at least this amount, in cents; a token that allows less can't pay.",
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "maxAmount",
      +      "currency",
      +      "expiresAt"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / data / items / properties / payment / properties / credentialLimits / description
      Added value: +"What the shared payment token for pay_order must allow. null exactly when handlers is []."
    • addedOutput schema / properties / data / items / properties / payment / properties / handlers / description
      Added value: +"The ways to pay other than url: a com.stripe.payments handler takes a Stripe shared payment token through pay_order. [] when a token can't pay the order: over $500, not charged in USD, an order started on the Fortrip website, a negotiated price, under 15 minutes left, 5 tokens tried, a token payment is under way, or token payment isn't offered for this order."
    • addedOutput schema / properties / data / items / properties / payment / properties / url / description
      Added value: +"The payment page, on fortrip.ai. With requiresSignIn false it continues to Stripe Checkout, and anyone holding it can pay; with requiresSignIn true (an order started on the Fortrip website) it continues to the Fortrip booking page, where only the signed-in owner can pay. null when the order isn't awaiting payment, or, while it is, when the link couldn't be read this time: read the order again."
    • addedOutput schema / properties / nextCursor / description
      Added value: +"Pass it back as cursor for the next page; null on the last page."
  5. Changed12 schema fields changed
    • removedOutput schema / properties / data / items / properties / payment / properties / credentialLimits / additionalProperties
      Removed value: -{}
    • addedOutput schema / properties / data / items / properties / payment / properties / credentialLimits / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "currency": {
      +        "type": "string"
      +      },
      +      "expiresAt": {
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      +        "type": "string"
      +      },
      +      "maxAmount": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "maxAmount",
      +      "currency",
      +      "expiresAt"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / data / items / properties / payment / properties / credentialLimits / properties
      Removed value: -{
      -  "currency": {
      -    "type": "string"
      -  },
      -  "expiresAt": {
      -    "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      -    "type": "string"
      -  },
      -  "maxAmount": {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  }
      -}
    • removedOutput schema / properties / data / items / properties / payment / properties / credentialLimits / required
      Removed value: -[
      -  "maxAmount",
      -  "currency",
      -  "expiresAt"
      -]
    • removedOutput schema / properties / data / items / properties / payment / properties / credentialLimits / type
      Removed value: -"object"
    • addedOutput schema / properties / data / items / properties / payment / properties / handlers / items / properties / available_instruments
      Added value: +{
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "config": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "type": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / data / items / properties / payment / properties / handlers / items / properties / config
      Added value: +{
      +  "additionalProperties": {},
      +  "properties": {
      +    "business_profile": {
      +      "type": "string"
      +    },
      +    "environment": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "livemode",
      +            "testmode"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "string"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "environment",
      +    "business_profile"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / data / items / properties / payment / properties / handlers / items / properties / networkId
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / data / items / properties / payment / properties / handlers / items / properties / schema
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / data / items / properties / payment / properties / handlers / items / required
      Previous value: -[
      -  "id",
      -  "type",
      -  "version",
      -  "spec",
      -  "networkId"
      -]New value: +[
      +  "id",
      +  "type",
      +  "version",
      +  "spec",
      +  "schema",
      +  "available_instruments",
      +  "config"
      +]
    • changedOutput schema / properties / data / items / properties / payment / required
      Previous value: -[
      -  "status",
      -  "url",
      -  "requiresSignIn",
      -  "expiresAt",
      -  "chargeCurrency",
      -  "localCurrencyAtCheckout",
      -  "localCharge"
      -]New value: +[
      +  "status",
      +  "url",
      +  "requiresSignIn",
      +  "expiresAt",
      +  "chargeCurrency",
      +  "localCurrencyAtCheckout",
      +  "localCharge",
      +  "handlers",
      +  "credentialLimits"
      +]
    • changedOutput schema / properties / data / items / required
      Previous value: -[
      -  "orderId",
      -  "reference",
      -  "status",
      -  "createdAt",
      -  "updatedAt",
      -  "items",
      -  "price",
      -  "payment",
      -  "manageUrl"
      -]New value: +[
      +  "orderId",
      +  "reference",
      +  "status",
      +  "createdAt",
      +  "updatedAt",
      +  "items",
      +  "price",
      +  "payment",
      +  "cancel",
      +  "manageUrl"
      +]
  6. Changed2 schema fields changed
    • addedOutput schema / properties / data / items / properties / payment / properties / credentialLimits
      Added value: +{
      +  "additionalProperties": {},
      +  "properties": {
      +    "currency": {
      +      "type": "string"
      +    },
      +    "expiresAt": {
      +      "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
      +      "type": "string"
      +    },
      +    "maxAmount": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "maxAmount",
      +    "currency",
      +    "expiresAt"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / items / properties / payment / properties / handlers
      Added value: +{
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "networkId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "spec": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "type": "string"
      +      },
      +      "version": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "version",
      +      "spec",
      +      "networkId"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  7. Changed1 schema field changed
    • addedOutput schema / properties / data / items / properties / cancel
      Added value: +{
      +  "additionalProperties": {},
      +  "properties": {
      +    "available": {
      +      "type": "boolean"
      +    },
      +    "penalty": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "amount": {
      +              "pattern": "^\\d+(\\.\\d+)?$",
      +              "type": "string"
      +            },
      +            "currency": {
      +              "pattern": "^[A-Z]{3}$",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "amount",
      +            "currency"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "reason": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "cancellable",
      +            "already_cancelled",
      +            "in_progress",
      +            "not_confirmed",
      +            "stay_started",
      +            "non_refundable",
      +            "refused",
      +            "terms_unknown",
      +            "needs_attention"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "string"
      +        }
      +      ]
      +    },
      +    "refund": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "amount": {
      +              "pattern": "^\\d+(\\.\\d+)?$",
      +              "type": "string"
      +            },
      +            "currency": {
      +              "pattern": "^[A-Z]{3}$",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "amount",
      +            "currency"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "available",
      +    "reason",
      +    "penalty",
      +    "refund"
      +  ],
      +  "type": "object"
      +}
  8. Added

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds real value beyond that: result ordering (newest first), the inclusion of Fortrip website orders, and the pagination contract. It does not discuss rate limits or total-count behavior, keeping it short of a 5.

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

Conciseness5/5

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

Two tight sentences with zero filler, and the most important facts (scope and ordering) come first, followed by the pagination instruction the agent must act on.

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

Completeness4/5

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

With annotations, full schema coverage and an output schema covering return values, the description supplies exactly what structured fields cannot: sort order, the Fortrip-inclusion rule, and the paging loop. Only the absence of any sibling routing guidance keeps it from a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents limit, cursor and the locale enum. The description restates the cursor chaining rule (nextCursor → cursor) but adds nothing about limit defaults or locale effects, so baseline 3 applies.

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

Purpose4/5

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

The description names a specific resource and scope: the user's hotel orders, returned newest first, including orders placed on the Fortrip website. It doesn't explicitly distinguish itself from the sibling get_order (single order) or cancel_order, but the plural list framing makes the purpose clear.

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

Usage Guidelines3/5

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

Usage is implied rather than stated — the agent can infer this is the browse/list path versus get_order for one order, but no alternative is named and no when-not condition is given. The one concrete procedural instruction, passing nextCursor back as cursor, is present and useful.

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.

Resources