{
  "name": "Allegra Yacht Charters",
  "description": "Learn about Allegra, a private crewed Bali 5.4 catamaran in the British Virgin Islands, check open dates, get exact quotes and, with the client's clear approval, book a charter.",
  "supportedInterfaces": [
    {
      "url": "https://api.allegra-yacht.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://api.allegra-yacht.com/a2a",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://api.allegra-yacht.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    },
    {
      "url": "https://api.allegra-yacht.com/a2a",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "0.3"
    }
  ],
  "version": "0.1.0",
  "documentationUrl": "https://api.allegra-yacht.com/guide",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://api.allegra-yacht.com/oauth/authorize",
            "tokenUrl": "https://api.allegra-yacht.com/oauth/token",
            "refreshUrl": "https://api.allegra-yacht.com/oauth/token",
            "scopes": {
              "browse": "See the business's offer, open dates and quotes.",
              "client": "Act for the signed-in client: their record, bookings and payments."
            },
            "pkceRequired": true
          }
        },
        "oauth2MetadataUrl": "https://api.allegra-yacht.com/.well-known/oauth-authorization-server"
      },
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://api.allegra-yacht.com/oauth/authorize",
          "refreshUrl": "https://api.allegra-yacht.com/oauth/token",
          "scopes": {
            "browse": "See the business's offer, open dates and quotes.",
            "client": "Act for the signed-in client: their record, bookings and payments."
          },
          "tokenUrl": "https://api.allegra-yacht.com/oauth/token"
        }
      },
      "oauth2MetadataUrl": "https://api.allegra-yacht.com/.well-known/oauth-authorization-server",
      "type": "oauth2"
    }
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "get_boat",
      "name": "The boat",
      "description": "The yacht: cabins, crew, what is included, amenities and photos.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_itinerary",
      "name": "Home base, route and seasons",
      "description": "Where charters start, the usual route, and the season dates.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_destinations",
      "name": "Other destinations",
      "description": "Places a charter can go besides the home waters, with the relocation charge for each.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_charter_rules",
      "name": "Charter rules",
      "description": "How many nights a charter lasts, the start days, and the gap between charters.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_policies",
      "name": "Policies",
      "description": "The payment schedule, the deadlines, and the cancellation and refund terms.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_common_questions",
      "name": "Common questions",
      "description": "Answers to the questions clients ask most.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "check_availability",
      "name": "Check dates",
      "description": "Whether a start date and a number of nights are free, on request, or taken.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "find_nearest_dates",
      "name": "Nearest open dates",
      "description": "The open start dates nearest to the dates the client asked for.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "list_open_dates",
      "name": "Open dates and prices",
      "description": "Every open start day in a range, with its price for the payment method.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_quote",
      "name": "Get a quote",
      "description": "An itemized price for dates, guests and a payment method, with the payment schedule and the key terms. A booking needs the quote's total, which the client approved.",
      "tags": [
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "who_am_i",
      "name": "The signed-in client",
      "description": "The signed-in client's name, email and phone.",
      "tags": [
        "read",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "start_booking",
      "name": "Start a booking",
      "description": "Book the dates of a quote the client approved, at that quote's total. The dates are held only once the first payment arrives. Ask the client first.",
      "tags": [
        "sensitive_write",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "list_my_bookings",
      "name": "My bookings",
      "description": "The signed-in client's bookings, newest first.",
      "tags": [
        "read",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "get_booking",
      "name": "Where a booking stands",
      "description": "A booking's status, who acts next, the deadline, the amount due, and what the client may do.",
      "tags": [
        "read",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "get_payment",
      "name": "A payment",
      "description": "One payment of a booking: its amount, method, state, when it was paid, and any refund.",
      "tags": [
        "read",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "open_card_payment",
      "name": "Card payment page",
      "description": "A secure card payment page for the payment due now, open for an hour. Give the client the link; nothing is charged until they pay there. Ask the client first.",
      "tags": [
        "sensitive_write",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "get_bank_transfer_details",
      "name": "Bank transfer details",
      "description": "The bank details and the payment reference for the payment due now, at the bank price.",
      "tags": [
        "read",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "report_bank_transfer_sent",
      "name": "Bank transfer sent",
      "description": "Tell the owner the client sent the payment due by bank transfer. Nothing moves on until the owner confirms it arrived. Ask the client first.",
      "tags": [
        "sensitive_write",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "cancel_booking",
      "name": "Cancel a booking",
      "description": "Cancel a booking before the contract is signed, for good. The owner refunds by hand: a card payment less the card processor's fees, a bank transfer in full. Ask the client first, every time.",
      "tags": [
        "sensitive_write",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "request_change",
      "name": "Ask for a change",
      "description": "Send the client's change request to the owner, who answers it. Ask the client first.",
      "tags": [
        "sensitive_write",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    },
    {
      "id": "request_cancellation",
      "name": "Ask to cancel",
      "description": "After the contract is signed: ask the owner to cancel. The owner decides. Ask the client first.",
      "tags": [
        "sensitive_write",
        "signs-in"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "oauth2": {
              "list": [
                "client"
              ]
            }
          }
        }
      ],
      "security": [
        {
          "oauth2": [
            "client"
          ]
        }
      ]
    }
  ],
  "iconUrl": "https://www.allegra-yacht.com/assets/logo.png",
  "additionalInterfaces": [
    {
      "transport": "HTTP+JSON",
      "url": "https://api.allegra-yacht.com/a2a"
    }
  ],
  "preferredTransport": "JSONRPC",
  "protocolVersion": "0.3",
  "url": "https://api.allegra-yacht.com/a2a"
}
