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
| Property | Value |
|---|---|
| Type | amadeus |
| Edition | Enterprise |
| Auth Methods | OAuth 2.0 (Client Credentials) |
| Capabilities | query, 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
- Register at developers.amadeus.com
- Create a new application in the My Self-Service dashboard
- Copy the API Key and API Secret
- 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
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | Yes | - | Amadeus API Key |
api_secret | string | Yes | - | Amadeus API Secret |
environment | string | No | test | API environment (test or production) |
timeout | string | No | 30s | Request timeout |
max_retries | integer | No | 3 | Maximum retry attempts |
rate_limit | integer | No | 10 | Max 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
| Operation | Description |
|---|---|
search_flights | Search flight offers with real-time pricing |
search_hotels | Search hotel availability and rates |
lookup_airport | Look 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
maxparameter 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_limitto match your plan's allowance - Test environment: maximum 1 request per second
No Results Returned
- Verify IATA codes are correct (use
lookup_airportto 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"
}
}
