Skip to main content
Glama

Get order

get_order
Read-onlyIdempotent

One of the user's orders by orderId: its status, the payment status and, while it awaits payment, payment.url; the stay and its terms; and the hotel's confirmation number once there is one. Check it after the user pays.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "orderId": "<orderId>"
    },
    "name": "get_order"
  }
}

Input Schema

NameRequiredDescriptionDefault
localeNoLanguage for names and text in the response: en or zh.
orderIdYesThe order's orderId.

Output Schema

NameRequiredDescriptionDefault
itemsYes
priceYes
cancelYesWhether the order can be cancelled now, and for what penalty and refund.
statusYesawaiting_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.
orderIdYes
paymentYes
nextStepNoWhat to show and ask before giving a payment.url. Present when the answer holds a non-null payment.url, and only then.
createdAtYes
manageUrlYes
referenceYes
updatedAtYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedOutput schema / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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 / 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
    • changedInput schema / properties / orderId / description
      Previous value: -"orderId from create order or list orders."New value: +"The order's orderId."
    • addedOutput schema / properties / cancel / description
      Added value: +"Whether the order can be cancelled now, and for what penalty and refund."
    • addedOutput schema / properties / cancel / properties / available / description
      Added value: +"Whether the user can cancel the order now."
    • addedOutput schema / 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 / cancel / properties / reason / description
      Added value: +"cancellable when it can be cancelled now; otherwise why not."
    • addedOutput schema / 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 / 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 / payment / properties / credentialLimits / description
      Added value: +"What the shared payment token for pay_order must allow. null exactly when handlers is []."
    • addedOutput schema / 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 / 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."
  5. Changed12 schema fields changed
    • removedOutput schema / properties / payment / properties / credentialLimits / additionalProperties
      Removed value: -{}
    • addedOutput schema / 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 / 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 / payment / properties / credentialLimits / required
      Removed value: -[
      -  "maxAmount",
      -  "currency",
      -  "expiresAt"
      -]
    • removedOutput schema / properties / payment / properties / credentialLimits / type
      Removed value: -"object"
    • addedOutput schema / 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 / 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 / payment / properties / handlers / items / properties / networkId
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / payment / properties / handlers / items / properties / schema
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / 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 / payment / required
      Previous value: -[
      -  "status",
      -  "url",
      -  "requiresSignIn",
      -  "expiresAt",
      -  "chargeCurrency",
      -  "localCurrencyAtCheckout",
      -  "localCharge"
      -]New value: +[
      +  "status",
      +  "url",
      +  "requiresSignIn",
      +  "expiresAt",
      +  "chargeCurrency",
      +  "localCurrencyAtCheckout",
      +  "localCharge",
      +  "handlers",
      +  "credentialLimits"
      +]
    • changedOutput schema / 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 / 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 / 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 / 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.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds real value beyond that by disclosing conditional field presence — payment.url only while payment is awaited, the hotel confirmation number only 'once there is one' — which tells the agent not to treat those fields as always present.

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

Conciseness4/5

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

The return payload is front-loaded in one dense sentence, followed by a short imperative workflow cue; no sentence is filler. The field enumeration is packed into a single long clause, which costs a little parseability but not correctness.

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?

For a single-record read with an output schema, annotations, and fully documented params, the description covers what an agent needs to call it and interpret conditional fields. It omits only edge behavior such as what happens with an unknown or malformed orderId.

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% and both parameters (orderId, locale) are documented with pattern and enum respectively, so the baseline is 3. The description only reinforces that lookup is keyed on orderId and says nothing about locale, adding no meaning beyond the schema.

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?

It states a specific resource ('One of the user's orders by orderId') and enumerates the payload it returns (status, payment status, payment.url, stay and terms, confirmation number), so the agent knows exactly what a call yields. Sibling differentiation is only implicit via 'one of the user's orders by orderId' versus a listing tool; no alternative is named outright.

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?

It gives one explicit trigger condition — 'Check it after the user pays' — which ties the tool to a concrete workflow moment. However, there is no when-not guidance and no routing to obvious alternatives (pay_order, cancel_order, list_orders), so an agent must infer the rest from tool names.

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