Skip to main content

Amadeus Connector

The Amadeus connector enables AxonFlow agents to interact with the Amadeus Global Distribution System (GDS) for flight search, hotel availability, and airport lookups with built-in policy enforcement and rate limit management.

Overview

PropertyValue
Typeamadeus
EditionEnterprise
Auth MethodsOAuth 2.0 (Client Credentials)
Capabilitiesquery, search, flight_offers, hotel_search, airport_lookup

Use Cases

  • Build AI travel agents that search flights with corporate policy enforcement
  • Power hotel search and comparison workflows
  • Look up airport information and IATA codes for trip planning
  • Enforce travel budget limits automatically through AxonFlow policies

Prerequisites

  • AxonFlow Enterprise license (requires Enterprise Edition)
  • Amadeus for Developers account (developer portal)
  • API Key and API Secret from the Amadeus Self-Service dashboard
  • For production: Amadeus production API credentials (separate from test environment)

Amadeus API Key Setup

  1. Register at developers.amadeus.com
  2. Create a new application in the My Self-Service dashboard
  3. Copy the API Key and API Secret
  4. For production access, apply for production credentials through the Amadeus portal

Configuration

Environment Variables

# Required
MCP_amadeus_API_KEY="your-amadeus-api-key"
MCP_amadeus_API_SECRET="your-amadeus-api-secret"

# Optional
MCP_amadeus_ENVIRONMENT="production" # "test" or "production" (default: test)
MCP_amadeus_TIMEOUT="30s"
MCP_amadeus_MAX_RETRIES="3"
MCP_amadeus_RATE_LIMIT="10" # Requests per second (test: 1/sec, production: varies)

Configuration Options

OptionTypeRequiredDefaultDescription
api_keystringYes-Amadeus API Key
api_secretstringYes-Amadeus API Secret
environmentstringNotestAPI environment (test or production)
timeoutstringNo30sRequest timeout
max_retriesintegerNo3Maximum retry attempts
rate_limitintegerNo10Max requests per second

Connector Config (Customer Portal)

{
"name": "amadeus-travel",
"type": "amadeus",
"options": {
"environment": "production",
"timeout": 30,
"max_retries": 3,
"rate_limit": 10
},
"credentials": {
"api_key": "your-amadeus-api-key",
"api_secret": "your-amadeus-api-secret"
}
}

Installation

Install the Amadeus connector via the connector marketplace API:

curl -X POST http://localhost:8081/api/v1/connectors/amadeus/install \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name": "amadeus-travel",
"config": {
"api_key": "your-amadeus-api-key",
"api_secret": "your-amadeus-api-secret",
"environment": "production"
}
}'

Operations

Search Flights

curl -X POST https://your-axonflow.example.com/mcp/resources/query \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"connector": "amadeus-travel",
"statement": "search_flights",
"parameters": {
"originLocationCode": "JFK",
"destinationLocationCode": "CDG",
"departureDate": "2025-03-15",
"returnDate": "2025-03-22",
"adults": 1,
"travelClass": "ECONOMY",
"nonStop": false,
"max": 10
}
}'

Response:

{
"success": true,
"rows": [
{
"id": "1",
"source": "GDS",
"numberOfBookableSeats": 9,
"itineraries": [
{
"duration": "PT8H10M",
"segments": [
{
"departure": {"iataCode": "JFK", "at": "2025-03-15T18:00:00"},
"arrival": {"iataCode": "CDG", "at": "2025-03-16T07:10:00"},
"carrierCode": "AF",
"number": "9",
"aircraft": {"code": "77W"},
"duration": "PT7H10M"
}
]
}
],
"price": {
"currency": "USD",
"total": "485.00",
"grandTotal": "485.00"
}
}
],
"row_count": 1,
"duration_ms": 1200,
"connector": "amadeus-travel"
}

Search Hotels

curl -X POST https://your-axonflow.example.com/mcp/resources/query \
-d '{
"connector": "amadeus-travel",
"statement": "search_hotels",
"parameters": {
"cityCode": "PAR",
"checkInDate": "2025-03-15",
"checkOutDate": "2025-03-22",
"adults": 2,
"roomQuantity": 1,
"ratings": "4,5",
"priceRange": "100-300",
"currency": "EUR"
}
}'

Response:

{
"success": true,
"rows": [
{
"hotel": {
"hotelId": "HLPAR123",
"name": "Hotel Example Paris",
"cityCode": "PAR",
"rating": "4"
},
"offers": [
{
"id": "offer-1",
"checkInDate": "2025-03-15",
"checkOutDate": "2025-03-22",
"room": {"type": "DOUBLE"},
"price": {
"currency": "EUR",
"total": "1680.00"
}
}
]
}
],
"row_count": 1,
"duration_ms": 950,
"connector": "amadeus-travel"
}

Look Up Airport

curl -X POST https://your-axonflow.example.com/mcp/resources/query \
-d '{
"connector": "amadeus-travel",
"statement": "lookup_airport",
"parameters": {
"keyword": "Paris",
"subType": "AIRPORT"
}
}'

Response:

{
"success": true,
"rows": [
{
"iataCode": "CDG",
"name": "PARIS CHARLES DE GAULLE",
"cityName": "PARIS",
"countryCode": "FR"
},
{
"iataCode": "ORY",
"name": "PARIS ORLY",
"cityName": "PARIS",
"countryCode": "FR"
}
],
"row_count": 2,
"duration_ms": 85,
"connector": "amadeus-travel"
}

Supported Operations

OperationDescription
search_flightsSearch flight offers with real-time pricing
search_hotelsSearch hotel availability and rates
lookup_airportLook up airports and cities by keyword or IATA code

Limitations

  • Test environment: The test environment returns limited, cached data. Results may not reflect real-time availability or pricing.
  • Rate limits: Test environment is limited to 1 request per second and 10 transactions per second. Production limits vary by plan.
  • Search results: Flight search returns a maximum of 250 results per request. Use max parameter to limit.
  • Date range: Flight searches are limited to 365 days from the current date.
  • Booking: The connector supports search and lookup operations only. Booking and payment operations require direct Amadeus API integration.

Troubleshooting

Authentication Failed (401)

  • Verify the API Key and API Secret are correct
  • Check that the credentials match the environment (test vs. production keys are different)
  • Ensure the Amadeus application is active in the developer portal

Rate Limited (429)

  • The connector automatically retries with backoff on 429 responses
  • Reduce rate_limit to match your plan's allowance
  • Test environment: maximum 1 request per second

No Results Returned

  • Verify IATA codes are correct (use lookup_airport to find codes)
  • Check date formats (must be YYYY-MM-DD)
  • For the test environment, only certain city pairs return results
  • Ensure the departure date is in the future

Health Check

curl https://your-axonflow.example.com/mcp/connectors/amadeus-travel/health

Response:

{
"healthy": true,
"latency_ms": 200,
"details": {
"environment": "production",
"token_expires_in": "1200s",
"rate_limit_remaining": "8"
}
}