Amadeus Capabilities
Naftiko 0.5 capability definitions for Amadeus - 100 capabilities showing integration workflows and service orchestrations.
Collects access entitlements, routes for review, revokes expired access, and creates audit records.
naftiko: "0.5"
info:
label: "Access Review Certification Pipeline"
description: "Collects access entitlements, routes for review, revokes expired access, and creates audit records."
tags:
- security
- okta
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: access_review_certification_pipeline
description: "Orchestrate access review certification pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-okta
type: call
call: "okta.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-okta.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Access Review Certification Pipeline step 3 complete."
consumes:
- type: http
namespace: okta
baseUri: "https://amadeus.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: okta-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
After booking a flight in Amadeus, retrieves available ancillary services (baggage, meals, seats), presents upsell options, adds selected extras to the order, and tracks upsell conversion in Google Analytics.
naftiko: "0.5"
info:
label: "Airline Ancillary Upsell Pipeline"
description: "After booking a flight in Amadeus, retrieves available ancillary services (baggage, meals, seats), presents upsell options, adds selected extras to the order, and tracks upsell conversion in Google Analytics."
tags:
- travel
- flights
- amadeus
- ancillary
- upsell
- google-analytics
capability:
exposes:
- type: mcp
namespace: ancillary-upsell
port: 8080
tools:
- name: upsell-ancillaries
description: "Retrieve ancillary options for a booking and add selected services."
inputParameters:
- name: order_id
in: body
type: string
description: "Amadeus flight order ID."
- name: selected_services
in: body
type: array
description: "Array of selected ancillary service IDs."
- name: ga_tracking_id
in: body
type: string
description: "Google Analytics tracking ID."
steps:
- name: get-order
type: call
call: "amadeus-orders.get-order"
with:
order_id: "{{order_id}}"
- name: get-ancillaries
type: call
call: "amadeus-ancillary.list-services"
with:
order_id: "{{order_id}}"
- name: add-services
type: call
call: "amadeus-ancillary.add-to-order"
with:
order_id: "{{order_id}}"
services: "{{selected_services}}"
- name: track-upsell
type: call
call: "google-analytics.send-event"
with:
tracking_id: "{{ga_tracking_id}}"
event_category: "ancillary_upsell"
event_action: "purchase"
event_value: "{{add-services.totalPrice}}"
consumes:
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: amadeus-ancillary
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: services
path: "/shopping/flight-offers/{{order_id}}/ancillaries"
inputParameters:
- name: order_id
in: path
operations:
- name: list-services
method: GET
- name: add-to-order
method: POST
- type: http
namespace: google-analytics
baseUri: "https://www.google-analytics.com"
resources:
- name: collect
path: "/collect"
operations:
- name: send-event
method: POST
Looks up airline details by IATA carrier code in the Amadeus reference data API. Returns the airline name, ICAO code, and common name for display in booking interfaces.
naftiko: "0.5"
info:
label: "Airline Code Lookup"
description: "Looks up airline details by IATA carrier code in the Amadeus reference data API. Returns the airline name, ICAO code, and common name for display in booking interfaces."
tags:
- travel
- airline
- amadeus
- reference-data
capability:
exposes:
- type: mcp
namespace: airline-reference
port: 8080
tools:
- name: lookup-airline
description: "Look up airline details by IATA carrier code."
inputParameters:
- name: airline_code
in: body
type: string
description: "Two-character IATA airline code (e.g. BA, LH)."
call: "amadeus-ref.get-airline"
with:
airlineCodes: "{{airline_code}}"
outputParameters:
- name: airline_name
type: string
mapping: "$.data[0].businessName"
- name: icao_code
type: string
mapping: "$.data[0].icaoCode"
consumes:
- type: http
namespace: amadeus-ref
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: airlines
path: "/reference-data/airlines"
inputParameters:
- name: airlineCodes
in: query
operations:
- name: get-airline
method: GET
Aggregates booking volume and revenue for an airline route from Amadeus analytics, computes profitability metrics, and sends the report to a Confluence page for executive review.
naftiko: "0.5"
info:
label: "Airline Route Profitability Report"
description: "Aggregates booking volume and revenue for an airline route from Amadeus analytics, computes profitability metrics, and sends the report to a Confluence page for executive review."
tags:
- travel
- amadeus
- analytics
- confluence
- revenue
- airline
capability:
exposes:
- type: mcp
namespace: route-profitability
port: 8080
tools:
- name: generate-route-report
description: "Generate route profitability report from Amadeus data and publish to Confluence."
inputParameters:
- name: origin
in: body
type: string
description: "Route origin IATA code."
- name: destination
in: body
type: string
description: "Route destination IATA code."
- name: period
in: body
type: string
description: "Reporting period (e.g. 2026-Q1)."
- name: confluence_space_key
in: body
type: string
description: "Confluence space key."
steps:
- name: get-air-traffic
type: call
call: "amadeus-analytics.air-traffic-booked"
with:
originCityCode: "{{origin}}"
period: "{{period}}"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "{{confluence_space_key}}"
title: "Route Profitability: {{origin}}-{{destination}} {{period}}"
body: "Route {{origin}}-{{destination}} for {{period}}. Total bookings: {{get-air-traffic.data[0].analytics.flights.score}}. Traveler volume: {{get-air-traffic.data[0].analytics.travelers.score}}."
consumes:
- type: http
namespace: amadeus-analytics
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: air-traffic
path: "/travel/analytics/air-traffic/booked"
inputParameters:
- name: originCityCode
in: query
- name: period
in: query
operations:
- name: air-traffic-booked
method: GET
- type: http
namespace: confluence
baseUri: "https://amadeus-it.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Detects schedule changes, identifies affected bookings, notifies travelers, and logs updates.
naftiko: "0.5"
info:
label: "Airline Schedule Change Processor"
description: "Detects schedule changes, identifies affected bookings, notifies travelers, and logs updates."
tags:
- operations
- servicenow
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: airline_schedule_change_processor
description: "Orchestrate airline schedule change processor workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Airline Schedule Change Processor step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves on-time performance data for an airport from Amadeus, computes summary statistics, and sends a weekly digest to a Slack channel via webhook for airport operations teams.
naftiko: "0.5"
info:
label: "Airport On-Time Performance Report"
description: "Retrieves on-time performance data for an airport from Amadeus, computes summary statistics, and sends a weekly digest to a Slack channel via webhook for airport operations teams."
tags:
- travel
- airports
- amadeus
- analytics
- operations
capability:
exposes:
- type: mcp
namespace: airport-performance
port: 8080
tools:
- name: report-airport-performance
description: "Get airport on-time stats and post summary to Slack."
inputParameters:
- name: airport_code
in: body
type: string
description: "IATA airport code."
- name: date
in: body
type: string
description: "Date for the performance report YYYY-MM-DD."
- name: slack_webhook
in: body
type: string
description: "Slack incoming webhook URL."
steps:
- name: get-performance
type: call
call: "amadeus-analytics.airport-on-time"
with:
airportCode: "{{airport_code}}"
date: "{{date}}"
- name: post-to-slack
type: call
call: "slack.send-webhook"
with:
webhook_url: "{{slack_webhook}}"
text: "Airport {{airport_code}} on-time report for {{date}}: On-time departures: {{get-performance.data.analytics.flights.onTime}}%. Delayed: {{get-performance.data.analytics.flights.delayed}}%. Cancelled: {{get-performance.data.analytics.flights.cancelled}}%."
consumes:
- type: http
namespace: amadeus-analytics
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: on-time
path: "/airport/predictions/on-time"
inputParameters:
- name: airportCode
in: query
- name: date
in: query
operations:
- name: airport-on-time
method: GET
- type: http
namespace: slack
baseUri: "https://hooks.slack.com"
resources:
- name: webhook
path: "/services/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: send-webhook
method: POST
Books an airport transfer (taxi, shuttle, or private car) through the Amadeus transfer API for a passenger arriving at a destination airport. Returns confirmation, driver details, and pickup instructions.
naftiko: "0.5"
info:
label: "Airport Transfer Booking"
description: "Books an airport transfer (taxi, shuttle, or private car) through the Amadeus transfer API for a passenger arriving at a destination airport. Returns confirmation, driver details, and pickup instructions."
tags:
- travel
- amadeus
- transfer
- ground-transport
- booking
capability:
exposes:
- type: mcp
namespace: airport-transfer
port: 8080
tools:
- name: book-airport-transfer
description: "Book a ground transfer from the airport to a destination address."
inputParameters:
- name: airport_code
in: body
type: string
description: "Arrival airport IATA code."
- name: pickup_datetime
in: body
type: string
description: "Pickup datetime ISO 8601."
- name: dropoff_address
in: body
type: string
description: "Destination address."
- name: transfer_type
in: body
type: string
description: "Transfer type: PRIVATE, SHARED, TAXI."
call: "amadeus-transfer.book-transfer"
with:
startLocationCode: "{{airport_code}}"
startDateTime: "{{pickup_datetime}}"
endAddressLine: "{{dropoff_address}}"
transferType: "{{transfer_type}}"
outputParameters:
- name: confirmation_id
type: string
mapping: "$.data.id"
- name: vehicle_type
type: string
mapping: "$.data.vehicle.description"
- name: pickup_instructions
type: string
mapping: "$.data.pickupInstructions"
consumes:
- type: http
namespace: amadeus-transfer
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: transfer-orders
path: "/ordering/transfer-orders"
operations:
- name: book-transfer
method: POST
Detects schedule changes, identifies affected bookings, notifies travelers, and logs updates.
naftiko: "0.5"
info:
label: "Airline Schedule Change Processor"
description: "Detects schedule changes, identifies affected bookings, notifies travelers, and logs updates."
tags:
- operations
- servicenow
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: amadeus_airline_schedule_change_processo
description: "Orchestrate airline schedule change processor workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Airline Schedule Change Processor step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves current monitoring alert status. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Alert Status Check"
description: "Retrieves current monitoring alert status. Used by Amadeus teams."
tags:
- travel
- powerbi
capability:
exposes:
- type: mcp
namespace: powerbi
port: 8080
tools:
- name: get-alert_status_check
description: "Retrieves current monitoring alert status. Used by Amadeus teams."
inputParameters:
- name: alert_id
in: body
type: string
description: "The alert_id to look up."
call: "powerbi.get-alert_id"
with:
alert_id: "{{alert_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_alert_status_check
method: GET
Checks availability of an API endpoint. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus API Endpoint Status"
description: "Checks availability of an API endpoint. Used by Amadeus teams."
tags:
- travel
- confluence
capability:
exposes:
- type: mcp
namespace: confluence
port: 8080
tools:
- name: get-api_endpoint_status
description: "Checks availability of an API endpoint. Used by Amadeus teams."
inputParameters:
- name: endpoint_url
in: body
type: string
description: "The endpoint_url to look up."
call: "confluence.get-endpoint_url"
with:
endpoint_url: "{{endpoint_url}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://amadeus.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_api_endpoint_status
method: GET
Refreshes the Amadeus OAuth2 access token using client credentials flow and stores the new token in Azure Key Vault for all downstream capabilities to consume securely.
naftiko: "0.5"
info:
label: "Amadeus API Token Refresh"
description: "Refreshes the Amadeus OAuth2 access token using client credentials flow and stores the new token in Azure Key Vault for all downstream capabilities to consume securely."
tags:
- travel
- amadeus
- azure-key-vault
- authentication
- security
capability:
exposes:
- type: mcp
namespace: token-management
port: 8080
tools:
- name: refresh-amadeus-token
description: "Obtain a fresh Amadeus API token and store it in Azure Key Vault."
inputParameters:
- name: vault_name
in: body
type: string
description: "Azure Key Vault name."
steps:
- name: get-token
type: call
call: "amadeus-auth.get-access-token"
with:
grant_type: "client_credentials"
client_id: "$secrets.amadeus_client_id"
client_secret: "$secrets.amadeus_client_secret"
- name: store-in-vault
type: call
call: "azure-kv.set-secret"
with:
vault_name: "{{vault_name}}"
secret_name: "amadeus-api-token"
value: "{{get-token.access_token}}"
consumes:
- type: http
namespace: amadeus-auth
baseUri: "https://api.amadeus.com/v1"
resources:
- name: oauth
path: "/security/oauth2/token"
operations:
- name: get-access-token
method: POST
- type: http
namespace: azure-kv
baseUri: "https://{{vault_name}}.vault.azure.net"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: secrets
path: "/secrets/{{secret_name}}"
inputParameters:
- name: secret_name
in: path
- name: vault_name
in: path
operations:
- name: set-secret
method: PUT
Retrieves compliance check status. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Compliance Check Status"
description: "Retrieves compliance check status. Used by Amadeus teams."
tags:
- travel
- pagerduty
capability:
exposes:
- type: mcp
namespace: pagerduty
port: 8080
tools:
- name: get-compliance_check_status
description: "Retrieves compliance check status. Used by Amadeus teams."
inputParameters:
- name: check_id
in: body
type: string
description: "The check_id to look up."
call: "pagerduty.get-check_id"
with:
check_id: "{{check_id}}"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_compliance_check_statu
method: GET
Queries cost and spending data. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Cost Report Query"
description: "Queries cost and spending data. Used by Amadeus teams."
tags:
- travel
- okta
capability:
exposes:
- type: mcp
namespace: okta
port: 8080
tools:
- name: get-cost_report_query
description: "Queries cost and spending data. Used by Amadeus teams."
inputParameters:
- name: cost_center
in: body
type: string
description: "The cost_center to look up."
call: "okta.get-cost_center"
with:
cost_center: "{{cost_center}}"
consumes:
- type: http
namespace: okta
baseUri: "https://amadeus.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_cost_report_query
method: GET
Executes a read-only analytics query. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Database Query Runner"
description: "Executes a read-only analytics query. Used by Amadeus teams."
tags:
- travel
- slack
capability:
exposes:
- type: mcp
namespace: slack
port: 8080
tools:
- name: get-database_query_runner
description: "Executes a read-only analytics query. Used by Amadeus teams."
inputParameters:
- name: sql_query
in: body
type: string
description: "The sql_query to look up."
call: "slack.get-sql_query"
with:
sql_query: "{{sql_query}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_database_query_runner
method: GET
Checks status of a recent deployment. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Deployment Status Check"
description: "Checks status of a recent deployment. Used by Amadeus teams."
tags:
- travel
- elasticsearch
capability:
exposes:
- type: mcp
namespace: elasticsearc
port: 8080
tools:
- name: get-deployment_status_check
description: "Checks status of a recent deployment. Used by Amadeus teams."
inputParameters:
- name: deployment_id
in: body
type: string
description: "The deployment_id to look up."
call: "elasticsearch.get-deployment_id"
with:
deployment_id: "{{deployment_id}}"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://amadeus-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_deployment_status_chec
method: GET
Retrieves a document from knowledge management. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Document Retrieval"
description: "Retrieves a document from knowledge management. Used by Amadeus teams."
tags:
- travel
- grafana
capability:
exposes:
- type: mcp
namespace: grafana
port: 8080
tools:
- name: get-document_retrieval
description: "Retrieves a document from knowledge management. Used by Amadeus teams."
inputParameters:
- name: document_id
in: body
type: string
description: "The document_id to look up."
call: "grafana.get-document_id"
with:
document_id: "{{document_id}}"
consumes:
- type: http
namespace: grafana
baseUri: "https://amadeus-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_document_retrieval
method: GET
Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
naftiko: "0.5"
info:
label: "Employee Onboarding Automation Pipeline"
description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: amadeus_employee_onboarding_automation
description: "Orchestrate employee onboarding automation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Employee Onboarding Automation Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Analyzes weather and traffic data, predicts delays, alerts operations, and updates dashboards.
naftiko: "0.5"
info:
label: "Flight Delay Prediction Alert Pipeline"
description: "Analyzes weather and traffic data, predicts delays, alerts operations, and updates dashboards."
tags:
- operations
- snowflake
- grafana
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: amadeus_flight_delay_prediction_alert_pi
description: "Orchestrate flight delay prediction alert pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-grafana
type: call
call: "grafana.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Flight Delay Prediction Alert Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: grafana
baseUri: "https://amadeus-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Queries metric values from a monitoring dashboard. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Metric Dashboard Query"
description: "Queries metric values from a monitoring dashboard. Used by Amadeus teams."
tags:
- travel
- jira
capability:
exposes:
- type: mcp
namespace: jira
port: 8080
tools:
- name: get-metric_dashboard_query
description: "Queries metric values from a monitoring dashboard. Used by Amadeus teams."
inputParameters:
- name: metric_name
in: body
type: string
description: "The metric_name to look up."
call: "jira.get-metric_name"
with:
metric_name: "{{metric_name}}"
consumes:
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_jira_metric_dashboard_
method: GET
Searches application logs for matching patterns. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Log Search Query"
description: "Searches application logs for matching patterns. Used by Amadeus teams."
tags:
- travel
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-log_search_query
description: "Searches application logs for matching patterns. Used by Amadeus teams."
inputParameters:
- name: search_query
in: body
type: string
description: "The search_query to look up."
call: "servicenow.get-search_query"
with:
search_query: "{{search_query}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_log_search_query
method: GET
Queries metric values from a monitoring dashboard. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Metric Dashboard Query"
description: "Queries metric values from a monitoring dashboard. Used by Amadeus teams."
tags:
- travel
- jira
capability:
exposes:
- type: mcp
namespace: jira
port: 8080
tools:
- name: get-metric_dashboard_query
description: "Queries metric values from a monitoring dashboard. Used by Amadeus teams."
inputParameters:
- name: metric_name
in: body
type: string
description: "The metric_name to look up."
call: "jira.get-metric_name"
with:
metric_name: "{{metric_name}}"
consumes:
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_metric_dashboard_query
method: GET
Evaluates traveler activity, calculates tier status, updates CRM, and sends notifications.
naftiko: "0.5"
info:
label: "Passenger Loyalty Tier Evaluation Pipeline"
description: "Evaluates traveler activity, calculates tier status, updates CRM, and sends notifications."
tags:
- loyalty
- salesforce
- hubspot
- slack
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: amadeus_passenger_loyalty_tier_evaluatio
description: "Orchestrate passenger loyalty tier evaluation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-hubspot
type: call
call: "hubspot.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Passenger Loyalty Tier Evaluation Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: hubspot-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Checks the current status of a project. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Project Status Check"
description: "Checks the current status of a project. Used by Amadeus teams."
tags:
- travel
- datadog
capability:
exposes:
- type: mcp
namespace: datadog
port: 8080
tools:
- name: get-project_status_check
description: "Checks the current status of a project. Used by Amadeus teams."
inputParameters:
- name: project_key
in: body
type: string
description: "The project_key to look up."
call: "datadog.get-project_key"
with:
project_key: "{{project_key}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_project_status_check
method: GET
Retrieves code repository information. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Repository Info Lookup"
description: "Retrieves code repository information. Used by Amadeus teams."
tags:
- travel
- hubspot
capability:
exposes:
- type: mcp
namespace: hubspot
port: 8080
tools:
- name: get-repository_info_lookup
description: "Retrieves code repository information. Used by Amadeus teams."
inputParameters:
- name: repo_name
in: body
type: string
description: "The repo_name to look up."
call: "hubspot.get-repo_name"
with:
repo_name: "{{repo_name}}"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_repository_info_lookup
method: GET
Checks the health status of a monitored service. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Service Health Check"
description: "Checks the health status of a monitored service. Used by Amadeus teams."
tags:
- travel
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-service_health_check
description: "Checks the health status of a monitored service. Used by Amadeus teams."
inputParameters:
- name: health_target
in: body
type: string
description: "The health_target to look up."
call: "salesforce.get-health_target"
with:
health_target: "{{health_target}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_salesforce_service_hea
method: GET
Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
naftiko: "0.5"
info:
label: "Security Incident Response Pipeline"
description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
tags:
- security
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: amadeus_security_incident_response_pipel
description: "Orchestrate security incident response pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-splunk
type: call
call: "splunk.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-splunk.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Incident Response Pipeline step 3 complete."
consumes:
- type: http
namespace: splunk
baseUri: "https://amadeus-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Retrieves vulnerability scan results. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Security Scan Results"
description: "Retrieves vulnerability scan results. Used by Amadeus teams."
tags:
- travel
- github
capability:
exposes:
- type: mcp
namespace: github
port: 8080
tools:
- name: get-security_scan_results
description: "Retrieves vulnerability scan results. Used by Amadeus teams."
inputParameters:
- name: scan_id
in: body
type: string
description: "The scan_id to look up."
call: "github.get-scan_id"
with:
scan_id: "{{scan_id}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_security_scan_results
method: GET
Checks the health status of a monitored service. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Service Health Check"
description: "Checks the health status of a monitored service. Used by Amadeus teams."
tags:
- travel
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-service_health_check
description: "Checks the health status of a monitored service. Used by Amadeus teams."
inputParameters:
- name: health_target
in: body
type: string
description: "The health_target to look up."
call: "salesforce.get-health_target"
with:
health_target: "{{health_target}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_service_health_check
method: GET
Searches application logs for matching patterns. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Log Search Query"
description: "Searches application logs for matching patterns. Used by Amadeus teams."
tags:
- travel
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-log_search_query
description: "Searches application logs for matching patterns. Used by Amadeus teams."
inputParameters:
- name: search_query
in: body
type: string
description: "The search_query to look up."
call: "servicenow.get-search_query"
with:
search_query: "{{search_query}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_servicenow_log_search_
method: GET
Retrieves the details of a support ticket. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus Ticket Details Lookup"
description: "Retrieves the details of a support ticket. Used by Amadeus teams."
tags:
- travel
- splunk
capability:
exposes:
- type: mcp
namespace: splunk
port: 8080
tools:
- name: get-ticket_details_lookup
description: "Retrieves the details of a support ticket. Used by Amadeus teams."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The ticket_id to look up."
call: "splunk.get-ticket_id"
with:
ticket_id: "{{ticket_id}}"
consumes:
- type: http
namespace: splunk
baseUri: "https://amadeus-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_ticket_details_lookup
method: GET
Reconciles booking records with payment transactions, identifies discrepancies, and alerts finance.
naftiko: "0.5"
info:
label: "Travel Booking Reconciliation Pipeline"
description: "Reconciles booking records with payment transactions, identifies discrepancies, and alerts finance."
tags:
- finance
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: amadeus_travel_booking_reconciliation_pi
description: "Orchestrate travel booking reconciliation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Travel Booking Reconciliation Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Validates travel expenses against policy, flags violations, creates audit records, and notifies management.
naftiko: "0.5"
info:
label: "Travel Expense Compliance Pipeline"
description: "Validates travel expenses against policy, flags violations, creates audit records, and notifies management."
tags:
- compliance
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: amadeus_travel_expense_compliance_pipeli
description: "Orchestrate travel expense compliance pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Travel Expense Compliance Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves user account details from the directory. Used by Amadeus teams.
naftiko: "0.5"
info:
label: "Amadeus User Account Lookup"
description: "Retrieves user account details from the directory. Used by Amadeus teams."
tags:
- travel
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake
port: 8080
tools:
- name: get-user_account_lookup
description: "Retrieves user account details from the directory. Used by Amadeus teams."
inputParameters:
- name: user_id
in: body
type: string
description: "The user_id to look up."
call: "snowflake.get-user_id"
with:
user_id: "{{user_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: amadeus_user_account_lookup
method: GET
Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress.
naftiko: "0.5"
info:
label: "API Deprecation Notice Pipeline"
description: "Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress."
tags:
- engineering
- datadog
- jira
- slack
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: api_deprecation_notice_pipeline
description: "Orchestrate api deprecation notice pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "API Deprecation Notice Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Processes a flight refund by cancelling the Amadeus booking, initiating payment reversal through Mastercard, logging the refund in SAP Concur, and notifying the traveler via Microsoft Teams.
naftiko: "0.5"
info:
label: "Automated Refund Processing"
description: "Processes a flight refund by cancelling the Amadeus booking, initiating payment reversal through Mastercard, logging the refund in SAP Concur, and notifying the traveler via Microsoft Teams."
tags:
- travel
- amadeus
- refund
- mastercard
- sap-concur
- microsoft-teams
- payment
capability:
exposes:
- type: mcp
namespace: refund-processing
port: 8080
tools:
- name: process-refund
description: "Cancel booking, reverse payment, log in Concur, and notify traveler."
inputParameters:
- name: order_id
in: body
type: string
description: "Amadeus flight order ID to refund."
- name: payment_transaction_id
in: body
type: string
description: "Original Mastercard transaction ID."
- name: refund_amount
in: body
type: string
description: "Refund amount."
- name: currency
in: body
type: string
description: "Currency code."
- name: employee_id
in: body
type: string
description: "Concur employee ID."
- name: traveler_upn
in: body
type: string
description: "Traveler Microsoft Teams UPN."
steps:
- name: cancel-booking
type: call
call: "amadeus-book.cancel-order"
with:
order_id: "{{order_id}}"
- name: reverse-payment
type: call
call: "mastercard.process-refund"
with:
transaction_id: "{{payment_transaction_id}}"
amount: "{{refund_amount}}"
currency: "{{currency}}"
- name: log-concur-refund
type: call
call: "concur.create-expense-entry"
with:
employee_id: "{{employee_id}}"
transaction_amount: "-{{refund_amount}}"
currency: "{{currency}}"
description: "Flight refund for order {{order_id}}"
- name: notify-traveler
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{traveler_upn}}"
text: "Your flight refund has been processed. Order {{order_id}} cancelled. Refund of {{refund_amount}} {{currency}} initiated. Payment ref: {{reverse-payment.refundId}}. Please allow 5-10 business days."
consumes:
- type: http
namespace: amadeus-book
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: cancel-order
method: DELETE
- type: http
namespace: mastercard
baseUri: "https://gateway.mastercard.com/api/rest/version/72"
authentication:
type: basic
username: "$secrets.mastercard_merchant_id"
password: "$secrets.mastercard_api_password"
resources:
- name: refunds
path: "/merchant/amadeus/order/{{transaction_id}}/transaction/refund"
inputParameters:
- name: transaction_id
in: path
operations:
- name: process-refund
method: PUT
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-entries
path: "/expense/entries"
operations:
- name: create-expense-entry
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Tracks checked baggage status through the Amadeus baggage tracking API. Returns current location, scan events, and delivery status for passenger self-service and ground ops systems.
naftiko: "0.5"
info:
label: "Baggage Tracking Integration"
description: "Tracks checked baggage status through the Amadeus baggage tracking API. Returns current location, scan events, and delivery status for passenger self-service and ground ops systems."
tags:
- travel
- amadeus
- baggage
- operations
- airline
capability:
exposes:
- type: mcp
namespace: baggage-tracking
port: 8080
tools:
- name: track-baggage
description: "Track the current status and location of a checked bag."
inputParameters:
- name: bag_tag_number
in: body
type: string
description: "10-digit bag tag number."
- name: carrier_code
in: body
type: string
description: "IATA airline code."
call: "amadeus-baggage.get-status"
with:
tagNumber: "{{bag_tag_number}}"
carrierCode: "{{carrier_code}}"
outputParameters:
- name: current_location
type: string
mapping: "$.data.currentLocation"
- name: status
type: string
mapping: "$.data.status"
- name: scan_events
type: array
mapping: "$.data.events"
consumes:
- type: http
namespace: amadeus-baggage
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: baggage
path: "/travel/baggage/{{tagNumber}}"
inputParameters:
- name: tagNumber
in: path
- name: carrierCode
in: query
operations:
- name: get-status
method: GET
Monitors Amadeus booking API responses for failures, extracts error codes, and triggers a PagerDuty incident with booking context so the on-call engineering team can respond immediately.
naftiko: "0.5"
info:
label: "Booking Failure Alert to PagerDuty"
description: "Monitors Amadeus booking API responses for failures, extracts error codes, and triggers a PagerDuty incident with booking context so the on-call engineering team can respond immediately."
tags:
- travel
- amadeus
- monitoring
- incident
- operations
capability:
exposes:
- type: mcp
namespace: booking-failure-alert
port: 8080
tools:
- name: alert-booking-failure
description: "On booking failure, create a PagerDuty incident with error details."
inputParameters:
- name: order_id
in: body
type: string
description: "Failed order attempt ID."
- name: error_code
in: body
type: string
description: "Amadeus API error code."
- name: error_message
in: body
type: string
description: "Error detail message."
- name: pagerduty_service_id
in: body
type: string
description: "PagerDuty service ID for routing."
steps:
- name: create-incident
type: call
call: "pagerduty.create-incident"
with:
service_id: "{{pagerduty_service_id}}"
title: "Amadeus Booking Failure: {{error_code}}"
body: "Order {{order_id}} failed with error {{error_code}}: {{error_message}}. Immediate investigation required."
urgency: "high"
- name: log-to-datadog
type: call
call: "datadog.send-log"
with:
message: "Booking failure alert - Order: {{order_id}}, Error: {{error_code}}, PD Incident: {{create-incident.incident.id}}"
service: "amadeus-booking"
status: "error"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: datadog
baseUri: "https://http-intake.logs.datadoghq.com/api/v2"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
resources:
- name: logs
path: "/logs"
operations:
- name: send-log
method: POST
Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports.
naftiko: "0.5"
info:
label: "Capacity Planning Forecast Pipeline"
description: "Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports."
tags:
- infrastructure
- grafana
- snowflake
- powerbi
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: capacity_planning_forecast_pipeline
description: "Orchestrate capacity planning forecast pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-grafana
type: call
call: "grafana.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-grafana.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "Capacity Planning Forecast Pipeline step 3 complete."
consumes:
- type: http
namespace: grafana
baseUri: "https://amadeus-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Searches for available car rentals at a destination through Amadeus car transfer API. Returns vehicle types, pricing, and pick-up/drop-off locations for travel booking platforms.
naftiko: "0.5"
info:
label: "Car Rental Availability Search"
description: "Searches for available car rentals at a destination through Amadeus car transfer API. Returns vehicle types, pricing, and pick-up/drop-off locations for travel booking platforms."
tags:
- travel
- amadeus
- car-rental
- ground-transport
capability:
exposes:
- type: mcp
namespace: car-rental
port: 8080
tools:
- name: search-car-rentals
description: "Search available car rentals at a destination."
inputParameters:
- name: pickup_location
in: body
type: string
description: "IATA airport code for pickup."
- name: pickup_date
in: body
type: string
description: "Pickup date YYYY-MM-DD."
- name: dropoff_date
in: body
type: string
description: "Drop-off date YYYY-MM-DD."
call: "amadeus-transfer.search-transfers"
with:
startLocationCode: "{{pickup_location}}"
startDateTime: "{{pickup_date}}"
endDateTime: "{{dropoff_date}}"
transferType: "CAR_RENTAL"
outputParameters:
- name: vehicles
type: array
mapping: "$.data"
consumes:
- type: http
namespace: amadeus-transfer
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: transfers
path: "/shopping/transfer-offers"
inputParameters:
- name: startLocationCode
in: query
- name: startDateTime
in: query
- name: endDateTime
in: query
- name: transferType
in: query
operations:
- name: search-transfers
method: GET
Validates change requests, routes for approval, schedules implementation, and notifies stakeholders.
naftiko: "0.5"
info:
label: "Change Management Approval Pipeline"
description: "Validates change requests, routes for approval, schedules implementation, and notifies stakeholders."
tags:
- itsm
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: change_management_approval_pipeline
description: "Orchestrate change management approval pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Change Management Approval Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Resolves codeshare partners for a given flight using Amadeus schedule data. Returns operating carrier, marketing carriers, and equipment type for airline partnership analysis.
naftiko: "0.5"
info:
label: "Codeshare Flight Mapping"
description: "Resolves codeshare partners for a given flight using Amadeus schedule data. Returns operating carrier, marketing carriers, and equipment type for airline partnership analysis."
tags:
- travel
- airline
- amadeus
- codeshare
- distribution
capability:
exposes:
- type: mcp
namespace: codeshare-mapping
port: 8080
tools:
- name: resolve-codeshares
description: "Resolve codeshare and operating carrier details for a flight."
inputParameters:
- name: carrier_code
in: body
type: string
description: "Marketing carrier IATA code."
- name: flight_number
in: body
type: string
description: "Flight number."
- name: departure_date
in: body
type: string
description: "Departure date YYYY-MM-DD."
call: "amadeus-schedule.get-flight"
with:
carrierCode: "{{carrier_code}}"
flightNumber: "{{flight_number}}"
scheduledDepartureDate: "{{departure_date}}"
outputParameters:
- name: operating_carrier
type: string
mapping: "$.data[0].flightDesignator.operatingCarrier"
- name: marketing_carriers
type: array
mapping: "$.data[0].partnerships"
- name: aircraft_type
type: string
mapping: "$.data[0].legs[0].aircraftEquipment.aircraftType"
consumes:
- type: http
namespace: amadeus-schedule
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: schedules
path: "/schedule/flights"
inputParameters:
- name: carrierCode
in: query
- name: flightNumber
in: query
- name: scheduledDepartureDate
in: query
operations:
- name: get-flight
method: GET
Collects audit events, validates against policies, generates compliance reports, and notifies auditors.
naftiko: "0.5"
info:
label: "Compliance Audit Trail Pipeline"
description: "Collects audit events, validates against policies, generates compliance reports, and notifies auditors."
tags:
- compliance
- elasticsearch
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: compliance_audit_trail_pipeline
description: "Orchestrate compliance audit trail pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-elasticsearch
type: call
call: "elasticsearch.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-elasticsearch.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Compliance Audit Trail Pipeline step 3 complete."
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://amadeus-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: elasticsearch-op
method: POST
- type: http
namespace: confluence
baseUri: "https://amadeus.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Orchestrates a corporate travel request: searches flights in Amadeus, creates an expense report pre-approval in SAP Concur, and logs the request in ServiceNow for IT travel policy compliance.
naftiko: "0.5"
info:
label: "Corporate Travel Request with SAP Concur"
description: "Orchestrates a corporate travel request: searches flights in Amadeus, creates an expense report pre-approval in SAP Concur, and logs the request in ServiceNow for IT travel policy compliance."
tags:
- travel
- corporate-travel
- amadeus
- sap-concur
- servicenow
- expense
capability:
exposes:
- type: mcp
namespace: corporate-travel-request
port: 8080
tools:
- name: submit-travel-request
description: "Search flights, create a Concur pre-approval, and open a ServiceNow travel request."
inputParameters:
- name: origin
in: body
type: string
description: "Departure IATA code."
- name: destination
in: body
type: string
description: "Arrival IATA code."
- name: departure_date
in: body
type: string
description: "Travel date YYYY-MM-DD."
- name: employee_id
in: body
type: string
description: "SAP Concur employee ID."
- name: cost_center
in: body
type: string
description: "Cost center for expense allocation."
steps:
- name: search-flights
type: call
call: "amadeus.search-offers"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "1"
- name: create-concur-request
type: call
call: "concur.create-travel-request"
with:
employee_id: "{{employee_id}}"
cost_center: "{{cost_center}}"
estimated_amount: "{{search-flights.data[0].price.grandTotal}}"
currency: "{{search-flights.data[0].price.currency}}"
destination: "{{destination}}"
departure_date: "{{departure_date}}"
- name: open-servicenow-ticket
type: call
call: "servicenow.create-request"
with:
short_description: "Travel request: {{origin}} to {{destination}} on {{departure_date}}"
category: "corporate_travel"
description: "Concur request {{create-concur-request.id}} for employee {{employee_id}}. Estimated cost: {{search-flights.data[0].price.grandTotal}} {{search-flights.data[0].price.currency}}."
consumes:
- type: http
namespace: amadeus
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: search-offers
method: GET
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: travel-requests
path: "/travelrequest/requests"
operations:
- name: create-travel-request
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders.
naftiko: "0.5"
info:
label: "Cost Center Budget Tracking Pipeline"
description: "Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders."
tags:
- finance
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: cost_center_budget_tracking
description: "Orchestrate cost center budget tracking pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Cost Center Budget Tracking Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM.
naftiko: "0.5"
info:
label: "Customer 360 Data Sync Pipeline"
description: "Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM."
tags:
- data
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: customer_360_data_sync_pipeline
description: "Orchestrate customer 360 data sync pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Customer 360 Data Sync Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards.
naftiko: "0.5"
info:
label: "Data Quality Monitoring Pipeline"
description: "Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards."
tags:
- data-quality
- snowflake
- jira
- grafana
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: data_quality_monitoring_pipeline
description: "Orchestrate data quality monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-grafana
type: call
call: "grafana.create-resource"
with:
channel: "{{notification_channel}}"
text: "Data Quality Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: grafana
baseUri: "https://amadeus-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
Issues a boarding pass through the Amadeus Departure Control System. Returns barcode data, gate assignment, boarding group, and seat number for mobile check-in applications.
naftiko: "0.5"
info:
label: "Departure Control Boarding Pass"
description: "Issues a boarding pass through the Amadeus Departure Control System. Returns barcode data, gate assignment, boarding group, and seat number for mobile check-in applications."
tags:
- travel
- amadeus
- boarding
- airline
- dcs
capability:
exposes:
- type: mcp
namespace: departure-control
port: 8080
tools:
- name: issue-boarding-pass
description: "Issue a boarding pass from the Departure Control System."
inputParameters:
- name: pnr
in: body
type: string
description: "PNR record locator."
- name: passenger_name
in: body
type: string
description: "Passenger last name."
- name: flight_number
in: body
type: string
description: "Flight number."
call: "amadeus-dcs.issue-pass"
with:
recordLocator: "{{pnr}}"
passengerName: "{{passenger_name}}"
flightNumber: "{{flight_number}}"
outputParameters:
- name: barcode_data
type: string
mapping: "$.data.barcodeData"
- name: gate
type: string
mapping: "$.data.gate"
- name: boarding_group
type: string
mapping: "$.data.boardingGroup"
- name: seat
type: string
mapping: "$.data.seatNumber"
consumes:
- type: http
namespace: amadeus-dcs
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: boarding
path: "/travel/boarding/passes"
operations:
- name: issue-pass
method: POST
Pulls points of interest and tours from the Amadeus destination content API for a city, enriches with safety scores, and publishes the combined travel guide content to a WordPress travel portal.
naftiko: "0.5"
info:
label: "Destination Content Enrichment"
description: "Pulls points of interest and tours from the Amadeus destination content API for a city, enriches with safety scores, and publishes the combined travel guide content to a WordPress travel portal."
tags:
- travel
- amadeus
- destination
- wordpress
- content
capability:
exposes:
- type: mcp
namespace: destination-content
port: 8080
tools:
- name: enrich-destination-guide
description: "Fetch POIs and safety data for a city, then publish a travel guide to WordPress."
inputParameters:
- name: latitude
in: body
type: number
description: "City center latitude."
- name: longitude
in: body
type: number
description: "City center longitude."
- name: city_name
in: body
type: string
description: "City name for the guide title."
- name: wordpress_site
in: body
type: string
description: "WordPress site URL."
steps:
- name: get-pois
type: call
call: "amadeus-pois.list-pois"
with:
latitude: "{{latitude}}"
longitude: "{{longitude}}"
radius: "5"
- name: get-safety
type: call
call: "amadeus-safety.get-safety"
with:
latitude: "{{latitude}}"
longitude: "{{longitude}}"
- name: publish-guide
type: call
call: "wordpress.create-post"
with:
title: "Travel Guide: {{city_name}}"
content: "Top attractions: {{get-pois.data[0].name}}, {{get-pois.data[1].name}}, {{get-pois.data[2].name}}. Safety score: {{get-safety.data[0].safetyScores.overall}}/100."
status: "draft"
consumes:
- type: http
namespace: amadeus-pois
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: pois
path: "/reference-data/locations/pois"
inputParameters:
- name: latitude
in: query
- name: longitude
in: query
- name: radius
in: query
operations:
- name: list-pois
method: GET
- type: http
namespace: amadeus-safety
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: safety
path: "/safety/safety-rated-locations"
inputParameters:
- name: latitude
in: query
- name: longitude
in: query
operations:
- name: get-safety
method: GET
- type: http
namespace: wordpress
baseUri: "https://{{wordpress_site}}/wp-json/wp/v2"
authentication:
type: basic
username: "$secrets.wordpress_user"
password: "$secrets.wordpress_app_password"
resources:
- name: posts
path: "/posts"
operations:
- name: create-post
method: POST
Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership.
naftiko: "0.5"
info:
label: "Disaster Recovery Readiness Pipeline"
description: "Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership."
tags:
- disaster-recovery
- servicenow
- confluence
- pagerduty
capability:
exposes:
- type: mcp
namespace: disaster-recovery
port: 8080
tools:
- name: disaster_recovery_readiness_pipeline
description: "Orchestrate disaster recovery readiness pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Disaster Recovery Readiness Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://amadeus.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
When a flight delay prediction exceeds threshold, searches alternate flights, rebooks the passenger in Amadeus, cancels the original order, and notifies the traveler via email through Amadeus notification services.
naftiko: "0.5"
info:
label: "Disruption Alert and Rebooking Pipeline"
description: "When a flight delay prediction exceeds threshold, searches alternate flights, rebooks the passenger in Amadeus, cancels the original order, and notifies the traveler via email through Amadeus notification services."
tags:
- travel
- flights
- amadeus
- disruption
- rebooking
- operations
capability:
exposes:
- type: mcp
namespace: disruption-rebooking
port: 8080
tools:
- name: handle-disruption-rebook
description: "Detect delay risk, find alternatives, rebook, and notify the traveler."
inputParameters:
- name: carrier_code
in: body
type: string
description: "IATA airline code of the original flight."
- name: flight_number
in: body
type: string
description: "Original flight number."
- name: departure_date
in: body
type: string
description: "Scheduled departure date YYYY-MM-DD."
- name: origin
in: body
type: string
description: "Origin IATA code."
- name: destination
in: body
type: string
description: "Destination IATA code."
- name: original_order_id
in: body
type: string
description: "Existing Amadeus flight order ID."
- name: travelers
in: body
type: array
description: "Traveler details for rebooking."
- name: contact_email
in: body
type: string
description: "Traveler notification email."
steps:
- name: check-delay
type: call
call: "amadeus-predict.get-delay"
with:
carrierCode: "{{carrier_code}}"
flightNumber: "{{flight_number}}"
scheduledDepartureDate: "{{departure_date}}"
- name: find-alternatives
type: call
call: "amadeus-search.search-flights"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "1"
- name: cancel-original
type: call
call: "amadeus-book.cancel-order"
with:
order_id: "{{original_order_id}}"
- name: rebook-flight
type: call
call: "amadeus-book.create-order"
with:
flightOffers: "{{find-alternatives.data[0]}}"
travelers: "{{travelers}}"
contact_email: "{{contact_email}}"
- name: send-notification
type: call
call: "amadeus-notify.send-email"
with:
to: "{{contact_email}}"
subject: "Rebooking Confirmation - {{origin}} to {{destination}}"
body: "Your flight {{carrier_code}}{{flight_number}} was at risk of delay. You have been rebooked. New PNR: {{rebook-flight.data.associatedRecords[0].reference}}."
consumes:
- type: http
namespace: amadeus-predict
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: delay
path: "/travel/predictions/flight-delay"
inputParameters:
- name: carrierCode
in: query
- name: flightNumber
in: query
- name: scheduledDepartureDate
in: query
operations:
- name: get-delay
method: GET
- type: http
namespace: amadeus-search
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flights
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: search-flights
method: GET
- type: http
namespace: amadeus-book
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-orders
path: "/booking/flight-orders"
operations:
- name: create-order
method: POST
- name: flight-order
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: cancel-order
method: DELETE
- type: http
namespace: amadeus-notify
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: notifications
path: "/messaging/email"
operations:
- name: send-email
method: POST
Fetches real-time flight pricing data from Amadeus for key routes, transforms the response, and loads pricing rows into Snowflake for the revenue management team's analytics warehouse.
naftiko: "0.5"
info:
label: "Dynamic Pricing Feed to Snowflake"
description: "Fetches real-time flight pricing data from Amadeus for key routes, transforms the response, and loads pricing rows into Snowflake for the revenue management team's analytics warehouse."
tags:
- travel
- amadeus
- snowflake
- pricing
- analytics
- data-engineering
capability:
exposes:
- type: mcp
namespace: pricing-data-feed
port: 8080
tools:
- name: load-pricing-to-warehouse
description: "Fetch flight prices for a route and load into Snowflake."
inputParameters:
- name: origin
in: body
type: string
description: "Origin IATA code."
- name: destination
in: body
type: string
description: "Destination IATA code."
- name: departure_date
in: body
type: string
description: "Date YYYY-MM-DD."
steps:
- name: fetch-prices
type: call
call: "amadeus.get-prices"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "1"
- name: insert-snowflake
type: call
call: "snowflake.execute-sql"
with:
statement: "INSERT INTO TRAVEL_DB.PRICING.FLIGHT_PRICES (ROUTE, DEPARTURE_DATE, CARRIER, PRICE, CURRENCY, FETCHED_AT) VALUES ('{{origin}}-{{destination}}', '{{departure_date}}', '{{fetch-prices.data[0].validatingAirlineCodes[0]}}', {{fetch-prices.data[0].price.grandTotal}}, '{{fetch-prices.data[0].price.currency}}', CURRENT_TIMESTAMP())"
consumes:
- type: http
namespace: amadeus
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: get-prices
method: GET
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-sql
method: POST
Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
naftiko: "0.5"
info:
label: "Employee Onboarding Automation Pipeline"
description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: employee_onboarding_automation
description: "Orchestrate employee onboarding automation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Employee Onboarding Automation Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Fetches the current fare for a route from Amadeus, compares it against the last cached fare in Redis, and logs any fare changes to Elasticsearch for the pricing audit trail.
naftiko: "0.5"
info:
label: "Fare Filing Audit with Redis Cache"
description: "Fetches the current fare for a route from Amadeus, compares it against the last cached fare in Redis, and logs any fare changes to Elasticsearch for the pricing audit trail."
tags:
- travel
- amadeus
- redis
- elasticsearch
- pricing
- audit
capability:
exposes:
- type: mcp
namespace: fare-audit
port: 8080
tools:
- name: audit-fare-change
description: "Compare current fare against Redis cache and log changes to Elasticsearch."
inputParameters:
- name: origin
in: body
type: string
description: "Origin IATA code."
- name: destination
in: body
type: string
description: "Destination IATA code."
- name: departure_date
in: body
type: string
description: "Date YYYY-MM-DD."
steps:
- name: get-current-fare
type: call
call: "amadeus.get-fare"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "1"
- name: get-cached-fare
type: call
call: "redis.get-key"
with:
key: "fare:{{origin}}:{{destination}}:{{departure_date}}"
- name: update-cache
type: call
call: "redis.set-key"
with:
key: "fare:{{origin}}:{{destination}}:{{departure_date}}"
value: "{{get-current-fare.data[0].price.grandTotal}}"
ttl: "3600"
- name: log-change
type: call
call: "elasticsearch.index-doc"
with:
index: "fare-audit-log"
body:
route: "{{origin}}-{{destination}}"
date: "{{departure_date}}"
previous_fare: "{{get-cached-fare.value}}"
current_fare: "{{get-current-fare.data[0].price.grandTotal}}"
carrier: "{{get-current-fare.data[0].validatingAirlineCodes[0]}}"
consumes:
- type: http
namespace: amadeus
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: get-fare
method: GET
- type: http
namespace: redis
baseUri: "https://amadeus-redis.redis.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.redis_token"
resources:
- name: keys
path: "/databases/default/keys/{{key}}"
inputParameters:
- name: key
in: path
operations:
- name: get-key
method: GET
- name: set-key
method: PUT
- type: http
namespace: elasticsearch
baseUri: "https://amadeus-es.elastic-cloud.com"
authentication:
type: basic
username: "$secrets.elastic_user"
password: "$secrets.elastic_password"
resources:
- name: documents
path: "/{{index}}/_doc"
inputParameters:
- name: index
in: path
operations:
- name: index-doc
method: POST
Searches and books both a flight and hotel through Amadeus APIs, then publishes a booking event to Apache Kafka for downstream systems like billing, CRM, and analytics to consume.
naftiko: "0.5"
info:
label: "Flight and Hotel Bundle with Kafka Event"
description: "Searches and books both a flight and hotel through Amadeus APIs, then publishes a booking event to Apache Kafka for downstream systems like billing, CRM, and analytics to consume."
tags:
- travel
- amadeus
- booking
- apache-kafka
- event-driven
capability:
exposes:
- type: mcp
namespace: bundle-booking
port: 8080
tools:
- name: book-flight-hotel-bundle
description: "Book a flight and hotel together, then emit a Kafka event."
inputParameters:
- name: origin
in: body
type: string
description: "Flight origin IATA code."
- name: destination
in: body
type: string
description: "Flight destination IATA code."
- name: departure_date
in: body
type: string
description: "Departure date YYYY-MM-DD."
- name: return_date
in: body
type: string
description: "Return date YYYY-MM-DD."
- name: travelers
in: body
type: array
description: "Traveler details."
- name: contact_email
in: body
type: string
description: "Contact email."
steps:
- name: search-flight
type: call
call: "amadeus-flight.search-offers"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "1"
- name: book-flight
type: call
call: "amadeus-book.create-flight-order"
with:
flightOffers: "{{search-flight.data[0]}}"
travelers: "{{travelers}}"
contact_email: "{{contact_email}}"
- name: search-hotel
type: call
call: "amadeus-hotel.search-hotels"
with:
cityCode: "{{destination}}"
checkInDate: "{{departure_date}}"
checkOutDate: "{{return_date}}"
- name: book-hotel
type: call
call: "amadeus-hotel.book-hotel"
with:
offerId: "{{search-hotel.data[0].offers[0].id}}"
guestName: "{{travelers[0].name.lastName}}"
- name: publish-event
type: call
call: "kafka.produce-message"
with:
topic: "travel.bookings.bundle"
key: "{{book-flight.data.id}}"
value:
type: "bundle"
flight_order_id: "{{book-flight.data.id}}"
flight_pnr: "{{book-flight.data.associatedRecords[0].reference}}"
hotel_booking_id: "{{book-hotel.data[0].id}}"
total_flight: "{{search-flight.data[0].price.grandTotal}}"
total_hotel: "{{search-hotel.data[0].offers[0].price.total}}"
consumes:
- type: http
namespace: amadeus-flight
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: search-offers
method: GET
- type: http
namespace: amadeus-book
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders"
operations:
- name: create-flight-order
method: POST
- type: http
namespace: amadeus-hotel
baseUri: "https://api.amadeus.com/v3"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: hotel-offers
path: "/shopping/hotel-offers"
inputParameters:
- name: cityCode
in: query
- name: checkInDate
in: query
- name: checkOutDate
in: query
operations:
- name: search-hotels
method: GET
- name: hotel-bookings
path: "/booking/hotel-bookings"
operations:
- name: book-hotel
method: POST
- type: http
namespace: kafka
baseUri: "https://amadeus-kafka.confluent.cloud/kafka/v3"
authentication:
type: basic
username: "$secrets.kafka_api_key"
password: "$secrets.kafka_api_secret"
resources:
- name: records
path: "/clusters/{{cluster_id}}/topics/{{topic}}/records"
inputParameters:
- name: cluster_id
in: path
- name: topic
in: path
operations:
- name: produce-message
method: POST
Analyzes weather and traffic data, predicts delays, alerts operations, and updates dashboards.
naftiko: "0.5"
info:
label: "Flight Delay Prediction Alert Pipeline"
description: "Analyzes weather and traffic data, predicts delays, alerts operations, and updates dashboards."
tags:
- operations
- snowflake
- grafana
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: flight_delay_prediction_alert_pipeline
description: "Orchestrate flight delay prediction alert pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-grafana
type: call
call: "grafana.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Flight Delay Prediction Alert Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: grafana
baseUri: "https://amadeus-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Predicts the likelihood of delay for a given flight using the Amadeus AI-powered delay prediction API. Returns probability buckets for on-time, short delay, and long delay.
naftiko: "0.5"
info:
label: "Flight Delay Prediction"
description: "Predicts the likelihood of delay for a given flight using the Amadeus AI-powered delay prediction API. Returns probability buckets for on-time, short delay, and long delay."
tags:
- travel
- flights
- amadeus
- prediction
- operations
capability:
exposes:
- type: mcp
namespace: flight-predictions
port: 8080
tools:
- name: predict-flight-delay
description: "Predict the probability of delay for a specific flight on a given date."
inputParameters:
- name: carrier_code
in: body
type: string
description: "IATA airline code."
- name: flight_number
in: body
type: string
description: "Flight number."
- name: departure_date
in: body
type: string
description: "Scheduled departure date YYYY-MM-DD."
call: "amadeus-predict.delay-prediction"
with:
carrierCode: "{{carrier_code}}"
flightNumber: "{{flight_number}}"
scheduledDepartureDate: "{{departure_date}}"
outputParameters:
- name: probability
type: object
mapping: "$.data[0].probability"
- name: result
type: string
mapping: "$.data[0].result"
consumes:
- type: http
namespace: amadeus-predict
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: delay-prediction
path: "/travel/predictions/flight-delay"
inputParameters:
- name: carrierCode
in: query
- name: flightNumber
in: query
- name: scheduledDepartureDate
in: query
operations:
- name: delay-prediction
method: GET
Searches Amadeus flight offers by origin, destination, and travel dates. Returns available itineraries with pricing, cabin class, and carrier details for travel agents and booking engines.
naftiko: "0.5"
info:
label: "Flight Offer Search"
description: "Searches Amadeus flight offers by origin, destination, and travel dates. Returns available itineraries with pricing, cabin class, and carrier details for travel agents and booking engines."
tags:
- travel
- flights
- amadeus
- booking
- distribution
capability:
exposes:
- type: mcp
namespace: flight-shopping
port: 8080
tools:
- name: search-flight-offers
description: "Search for available flight offers by origin, destination, departure date, and number of travelers."
inputParameters:
- name: origin
in: body
type: string
description: "IATA airport code for departure (e.g. LHR)."
- name: destination
in: body
type: string
description: "IATA airport code for arrival (e.g. JFK)."
- name: departure_date
in: body
type: string
description: "Departure date in YYYY-MM-DD format."
- name: adults
in: body
type: integer
description: "Number of adult travelers."
call: "amadeus.search-offers"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "{{adults}}"
outputParameters:
- name: offers
type: array
mapping: "$.data"
- name: currency
type: string
mapping: "$.data[0].price.currency"
consumes:
- type: http
namespace: amadeus
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: search-offers
method: GET
Creates a flight booking order in the Amadeus system from a confirmed flight offer, traveler details, and contact information. Returns the PNR record locator and order ID.
naftiko: "0.5"
info:
label: "Flight Order Creation"
description: "Creates a flight booking order in the Amadeus system from a confirmed flight offer, traveler details, and contact information. Returns the PNR record locator and order ID."
tags:
- travel
- booking
- amadeus
- reservation
- airline
capability:
exposes:
- type: mcp
namespace: flight-booking
port: 8080
tools:
- name: create-flight-order
description: "Create a flight booking order from a confirmed offer and traveler data."
inputParameters:
- name: flight_offer
in: body
type: object
description: "The confirmed flight offer object."
- name: travelers
in: body
type: array
description: "Array of traveler details with name, date of birth, and document info."
- name: contact_email
in: body
type: string
description: "Contact email for the booking."
- name: contact_phone
in: body
type: string
description: "Contact phone number."
call: "amadeus-book.create-order"
with:
flightOffers: "{{flight_offer}}"
travelers: "{{travelers}}"
contact_email: "{{contact_email}}"
contact_phone: "{{contact_phone}}"
outputParameters:
- name: order_id
type: string
mapping: "$.data.id"
- name: record_locator
type: string
mapping: "$.data.associatedRecords[0].reference"
consumes:
- type: http
namespace: amadeus-book
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-orders
path: "/booking/flight-orders"
operations:
- name: create-order
method: POST
Confirms the latest price for a selected flight offer before booking. Validates that the fare, taxes, and availability are still current in the Amadeus pricing engine.
naftiko: "0.5"
info:
label: "Flight Price Confirmation"
description: "Confirms the latest price for a selected flight offer before booking. Validates that the fare, taxes, and availability are still current in the Amadeus pricing engine."
tags:
- travel
- flights
- amadeus
- pricing
capability:
exposes:
- type: mcp
namespace: flight-pricing
port: 8080
tools:
- name: confirm-flight-price
description: "Confirm the price of a previously retrieved flight offer."
inputParameters:
- name: flight_offer
in: body
type: object
description: "The flight offer object from a prior search."
call: "amadeus-price.confirm-price"
with:
flightOffers: "{{flight_offer}}"
outputParameters:
- name: confirmed_price
type: string
mapping: "$.data.flightOffers[0].price.grandTotal"
- name: currency
type: string
mapping: "$.data.flightOffers[0].price.currency"
- name: payment_deadline
type: string
mapping: "$.data.flightOffers[0].lastTicketingDate"
consumes:
- type: http
namespace: amadeus-price
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: pricing
path: "/shopping/flight-offers/pricing"
operations:
- name: confirm-price
method: POST
Retrieves the seat map for a given flight offer from Amadeus. Returns cabin layout, available seats, seat characteristics, and pricing for seat selection workflows.
naftiko: "0.5"
info:
label: "Flight Seat Map Retrieval"
description: "Retrieves the seat map for a given flight offer from Amadeus. Returns cabin layout, available seats, seat characteristics, and pricing for seat selection workflows."
tags:
- travel
- flights
- amadeus
- seat-selection
capability:
exposes:
- type: mcp
namespace: flight-seatmap
port: 8080
tools:
- name: get-seat-map
description: "Get the seat map for a flight offer to display available seats and pricing."
inputParameters:
- name: flight_offer
in: body
type: object
description: "The flight offer object to retrieve seat map for."
call: "amadeus-seat.get-seatmap"
with:
flightOffers: "{{flight_offer}}"
outputParameters:
- name: decks
type: array
mapping: "$.data[0].decks"
- name: available_seats
type: array
mapping: "$.data[0].decks[0].seats"
consumes:
- type: http
namespace: amadeus-seat
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: seatmaps
path: "/shopping/seatmaps"
operations:
- name: get-seatmap
method: POST
Checks real-time flight status via Amadeus, and if the flight is delayed or cancelled, creates a Jira issue in the operations board for the airline ops team to track disruption handling.
naftiko: "0.5"
info:
label: "Flight Status and Jira Ops Alert"
description: "Checks real-time flight status via Amadeus, and if the flight is delayed or cancelled, creates a Jira issue in the operations board for the airline ops team to track disruption handling."
tags:
- travel
- flights
- amadeus
- jira
- operations
- disruption
capability:
exposes:
- type: mcp
namespace: flight-ops-alert
port: 8080
tools:
- name: check-status-alert-ops
description: "Check flight status and create a Jira ops ticket if disrupted."
inputParameters:
- name: carrier_code
in: body
type: string
description: "IATA airline code."
- name: flight_number
in: body
type: string
description: "Flight number."
- name: departure_date
in: body
type: string
description: "Departure date YYYY-MM-DD."
- name: jira_project_key
in: body
type: string
description: "Jira project key for ops board."
steps:
- name: get-status
type: call
call: "amadeus-status.flight-status"
with:
carrierCode: "{{carrier_code}}"
flightNumber: "{{flight_number}}"
scheduledDepartureDate: "{{departure_date}}"
- name: create-jira-issue
type: call
call: "jira.create-issue"
with:
project_key: "{{jira_project_key}}"
summary: "Flight disruption: {{carrier_code}}{{flight_number}} on {{departure_date}} - Status: {{get-status.data[0].flightPoints[0].departure.timings[0].qualifier}}"
description: "Automated alert for flight {{carrier_code}}{{flight_number}}. Departure status: {{get-status.data[0].flightPoints[0].departure.timings[0].qualifier}}. Gate: {{get-status.data[0].flightPoints[0].departure.gate.mainGate}}."
issue_type: "Task"
priority: "High"
consumes:
- type: http
namespace: amadeus-status
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-status
path: "/schedule/flights"
inputParameters:
- name: carrierCode
in: query
- name: flightNumber
in: query
- name: scheduledDepartureDate
in: query
operations:
- name: flight-status
method: GET
- type: http
namespace: jira
baseUri: "https://amadeus-it.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves completed flight orders from Amadeus, extracts revenue and route data, and pushes rows to a Power BI streaming dataset for real-time revenue reporting dashboards.
naftiko: "0.5"
info:
label: "GDS Booking to Power BI Revenue Dashboard"
description: "Retrieves completed flight orders from Amadeus, extracts revenue and route data, and pushes rows to a Power BI streaming dataset for real-time revenue reporting dashboards."
tags:
- travel
- amadeus
- power-bi
- revenue
- analytics
- reporting
capability:
exposes:
- type: mcp
namespace: revenue-dashboard
port: 8080
tools:
- name: push-booking-to-dashboard
description: "Fetch a booking and push revenue data to Power BI for dashboard reporting."
inputParameters:
- name: order_id
in: body
type: string
description: "Amadeus flight order ID."
- name: powerbi_dataset_id
in: body
type: string
description: "Power BI streaming dataset ID."
steps:
- name: get-order
type: call
call: "amadeus-orders.get-flight-order"
with:
order_id: "{{order_id}}"
- name: push-to-powerbi
type: call
call: "powerbi.push-rows"
with:
dataset_id: "{{powerbi_dataset_id}}"
table_name: "BookingRevenue"
rows:
- order_id: "{{order_id}}"
route: "{{get-order.data.flightOffers[0].itineraries[0].segments[0].departure.iataCode}}-{{get-order.data.flightOffers[0].itineraries[0].segments[0].arrival.iataCode}}"
revenue: "{{get-order.data.flightOffers[0].price.grandTotal}}"
currency: "{{get-order.data.flightOffers[0].price.currency}}"
carrier: "{{get-order.data.flightOffers[0].validatingAirlineCodes[0]}}"
consumes:
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-orders
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-flight-order
method: GET
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/tables/{{table_name}}/rows"
inputParameters:
- name: dataset_id
in: path
- name: table_name
in: path
operations:
- name: push-rows
method: POST
Collects Amadeus GDS transaction logs, formats them for security analysis, and forwards to Splunk HEC for the cybersecurity team to monitor for anomalous booking patterns and fraud indicators.
naftiko: "0.5"
info:
label: "GDS Log Ingestion to Splunk"
description: "Collects Amadeus GDS transaction logs, formats them for security analysis, and forwards to Splunk HEC for the cybersecurity team to monitor for anomalous booking patterns and fraud indicators."
tags:
- travel
- amadeus
- splunk
- security
- logging
- fraud
capability:
exposes:
- type: mcp
namespace: gds-log-splunk
port: 8080
tools:
- name: ingest-gds-logs
description: "Collect GDS transaction logs and send to Splunk for security monitoring."
inputParameters:
- name: date
in: body
type: string
description: "Date to collect logs YYYY-MM-DD."
- name: office_id
in: body
type: string
description: "Amadeus office ID (PCC)."
steps:
- name: get-logs
type: call
call: "amadeus-audit.get-transaction-logs"
with:
date: "{{date}}"
officeId: "{{office_id}}"
- name: send-to-splunk
type: call
call: "splunk.send-event"
with:
sourcetype: "amadeus:gds:transaction"
source: "amadeus-gds"
event: "{{get-logs.data}}"
index: "travel_security"
consumes:
- type: http
namespace: amadeus-audit
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: transaction-logs
path: "/audit/transactions"
inputParameters:
- name: date
in: query
- name: officeId
in: query
operations:
- name: get-transaction-logs
method: GET
- type: http
namespace: splunk
baseUri: "https://amadeus-splunk.splunkcloud.com:8088"
authentication:
type: bearer
token: "$secrets.splunk_hec_token"
resources:
- name: hec
path: "/services/collector/event"
operations:
- name: send-event
method: POST
Extracts daily booking segments from the Amadeus distribution system and triggers an Azure Data Factory pipeline to process and load the data into the enterprise data lake.
naftiko: "0.5"
info:
label: "GDS Segment Sync to Azure Data Factory"
description: "Extracts daily booking segments from the Amadeus distribution system and triggers an Azure Data Factory pipeline to process and load the data into the enterprise data lake."
tags:
- travel
- amadeus
- azure-data-factory
- data-engineering
- distribution
capability:
exposes:
- type: mcp
namespace: gds-data-sync
port: 8080
tools:
- name: sync-gds-segments
description: "Extract GDS booking segments and trigger ADF pipeline for data lake ingestion."
inputParameters:
- name: date
in: body
type: string
description: "Date to extract segments YYYY-MM-DD."
- name: pipeline_name
in: body
type: string
description: "Azure Data Factory pipeline name."
- name: factory_name
in: body
type: string
description: "ADF factory name."
steps:
- name: extract-segments
type: call
call: "amadeus-analytics.get-booked-flights"
with:
departureDate: "{{date}}"
- name: trigger-pipeline
type: call
call: "adf.create-pipeline-run"
with:
factory_name: "{{factory_name}}"
pipeline_name: "{{pipeline_name}}"
parameters:
source_date: "{{date}}"
segment_count: "{{extract-segments.meta.count}}"
consumes:
- type: http
namespace: amadeus-analytics
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: booked-flights
path: "/analytics/booked-flights"
inputParameters:
- name: departureDate
in: query
operations:
- name: get-booked-flights
method: GET
- type: http
namespace: adf
baseUri: "https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.DataFactory/factories"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: pipelines
path: "/{{factory_name}}/pipelines/{{pipeline_name}}/createRun"
inputParameters:
- name: factory_name
in: path
- name: pipeline_name
in: path
operations:
- name: create-pipeline-run
method: POST
Handles group travel booking requests: searches block availability in Amadeus, creates a group PNR, notifies the group coordinator via email, and creates a tracking record in Salesforce opportunities.
naftiko: "0.5"
info:
label: "Group Booking Request Pipeline"
description: "Handles group travel booking requests: searches block availability in Amadeus, creates a group PNR, notifies the group coordinator via email, and creates a tracking record in Salesforce opportunities."
tags:
- travel
- booking
- amadeus
- salesforce
- group-travel
capability:
exposes:
- type: mcp
namespace: group-booking
port: 8080
tools:
- name: create-group-booking
description: "Search group fares, create group PNR, notify coordinator, and log in CRM."
inputParameters:
- name: origin
in: body
type: string
description: "Departure IATA code."
- name: destination
in: body
type: string
description: "Arrival IATA code."
- name: departure_date
in: body
type: string
description: "Departure date YYYY-MM-DD."
- name: group_size
in: body
type: integer
description: "Number of travelers in the group."
- name: coordinator_email
in: body
type: string
description: "Group coordinator email."
- name: account_name
in: body
type: string
description: "Salesforce account name."
steps:
- name: search-group-fares
type: call
call: "amadeus-group.search-group"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
travelers: "{{group_size}}"
- name: create-group-pnr
type: call
call: "amadeus-group.create-group-order"
with:
flightOffers: "{{search-group-fares.data[0]}}"
groupSize: "{{group_size}}"
- name: notify-coordinator
type: call
call: "amadeus-notify.send-email"
with:
to: "{{coordinator_email}}"
subject: "Group Booking Created - {{origin}} to {{destination}}"
body: "Group booking for {{group_size}} travelers created. PNR: {{create-group-pnr.data.associatedRecords[0].reference}}. Please finalize passenger names by {{create-group-pnr.data.ticketingAgreement.deadline}}."
- name: create-opportunity
type: call
call: "salesforce.create-opportunity"
with:
Name: "Group Travel: {{origin}}-{{destination}} {{departure_date}}"
AccountName: "{{account_name}}"
Amount: "{{search-group-fares.data[0].price.grandTotal}}"
StageName: "Proposal"
CloseDate: "{{departure_date}}"
consumes:
- type: http
namespace: amadeus-group
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: group-offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: travelers
in: query
operations:
- name: search-group
method: GET
- name: group-orders
path: "/booking/flight-orders"
operations:
- name: create-group-order
method: POST
- type: http
namespace: amadeus-notify
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: email
path: "/messaging/email"
operations:
- name: send-email
method: POST
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: create-opportunity
method: POST
Queries Amadeus hotel search API for available properties by city code and check-in/check-out dates. Returns hotel name, star rating, price per night, and room types.
naftiko: "0.5"
info:
label: "Hotel Availability Lookup"
description: "Queries Amadeus hotel search API for available properties by city code and check-in/check-out dates. Returns hotel name, star rating, price per night, and room types."
tags:
- travel
- hotels
- amadeus
- hospitality
- booking
capability:
exposes:
- type: mcp
namespace: hotel-shopping
port: 8080
tools:
- name: search-hotel-availability
description: "Search for available hotels by city code and stay dates."
inputParameters:
- name: city_code
in: body
type: string
description: "IATA city code (e.g. PAR for Paris)."
- name: check_in
in: body
type: string
description: "Check-in date in YYYY-MM-DD format."
- name: check_out
in: body
type: string
description: "Check-out date in YYYY-MM-DD format."
call: "amadeus-hotel.search-hotels"
with:
cityCode: "{{city_code}}"
checkInDate: "{{check_in}}"
checkOutDate: "{{check_out}}"
outputParameters:
- name: hotels
type: array
mapping: "$.data"
- name: total_results
type: integer
mapping: "$.meta.count"
consumes:
- type: http
namespace: amadeus-hotel
baseUri: "https://api.amadeus.com/v3"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: hotel-search
path: "/shopping/hotel-offers"
inputParameters:
- name: cityCode
in: query
- name: checkInDate
in: query
- name: checkOutDate
in: query
operations:
- name: search-hotels
method: GET
Books a hotel through Amadeus hotel booking API, processes payment via Mastercard payment gateway, and sends a booking confirmation email through the Amadeus notification service.
naftiko: "0.5"
info:
label: "Hotel Booking with Mastercard Payment"
description: "Books a hotel through Amadeus hotel booking API, processes payment via Mastercard payment gateway, and sends a booking confirmation email through the Amadeus notification service."
tags:
- travel
- hotels
- amadeus
- mastercard
- payment
- booking
capability:
exposes:
- type: mcp
namespace: hotel-payment-booking
port: 8080
tools:
- name: book-hotel-with-payment
description: "Book hotel, process Mastercard payment, and send confirmation."
inputParameters:
- name: offer_id
in: body
type: string
description: "Amadeus hotel offer ID."
- name: guest_name
in: body
type: string
description: "Guest full name."
- name: card_number
in: body
type: string
description: "Mastercard card number (encrypted)."
- name: card_expiry
in: body
type: string
description: "Card expiry MM/YY."
- name: contact_email
in: body
type: string
description: "Guest email for confirmation."
steps:
- name: create-hotel-booking
type: call
call: "amadeus-hotel.book-hotel"
with:
offerId: "{{offer_id}}"
guestName: "{{guest_name}}"
- name: process-payment
type: call
call: "mastercard.process-payment"
with:
amount: "{{create-hotel-booking.data[0].hotel.price.total}}"
currency: "{{create-hotel-booking.data[0].hotel.price.currency}}"
card_number: "{{card_number}}"
card_expiry: "{{card_expiry}}"
merchant_id: "amadeus-hotel-booking"
- name: send-confirmation
type: call
call: "amadeus-notify.send-email"
with:
to: "{{contact_email}}"
subject: "Hotel Booking Confirmed - {{create-hotel-booking.data[0].hotel.name}}"
body: "Dear {{guest_name}}, your hotel booking at {{create-hotel-booking.data[0].hotel.name}} is confirmed. Booking ID: {{create-hotel-booking.data[0].id}}. Payment ref: {{process-payment.transactionId}}."
consumes:
- type: http
namespace: amadeus-hotel
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: hotel-bookings
path: "/booking/hotel-bookings"
operations:
- name: book-hotel
method: POST
- type: http
namespace: mastercard
baseUri: "https://gateway.mastercard.com/api/rest/version/72"
authentication:
type: basic
username: "$secrets.mastercard_merchant_id"
password: "$secrets.mastercard_api_password"
resources:
- name: payments
path: "/merchant/{{merchant_id}}/order/{{order_id}}/transaction/{{txn_id}}"
inputParameters:
- name: merchant_id
in: path
- name: order_id
in: path
- name: txn_id
in: path
operations:
- name: process-payment
method: PUT
- type: http
namespace: amadeus-notify
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: email
path: "/messaging/email"
operations:
- name: send-email
method: POST
Searches Amadeus hotel offers for a corporate traveler, books the selected hotel, and creates a lead in Salesforce tracking the corporate travel spend.
naftiko: "0.5"
info:
label: "Hotel Search and Book with Salesforce Lead"
description: "Searches Amadeus hotel offers for a corporate traveler, books the selected hotel, and creates a lead in Salesforce tracking the corporate travel spend."
tags:
- travel
- hotels
- amadeus
- salesforce
- booking
- corporate-travel
capability:
exposes:
- type: mcp
namespace: hotel-book-crm
port: 8080
tools:
- name: search-book-hotel-crm
description: "Search hotels, book the best offer, and log the booking as a Salesforce lead."
inputParameters:
- name: city_code
in: body
type: string
description: "IATA city code."
- name: check_in
in: body
type: string
description: "Check-in date YYYY-MM-DD."
- name: check_out
in: body
type: string
description: "Check-out date YYYY-MM-DD."
- name: guest_name
in: body
type: string
description: "Name of the guest."
- name: company_name
in: body
type: string
description: "Corporate account name."
steps:
- name: search-hotels
type: call
call: "amadeus-hotel.search-hotel-offers"
with:
cityCode: "{{city_code}}"
checkInDate: "{{check_in}}"
checkOutDate: "{{check_out}}"
- name: book-hotel
type: call
call: "amadeus-hotel.create-hotel-booking"
with:
offerId: "{{search-hotels.data[0].offers[0].id}}"
guestName: "{{guest_name}}"
- name: create-sf-lead
type: call
call: "salesforce.create-lead"
with:
LastName: "{{guest_name}}"
Company: "{{company_name}}"
Description: "Hotel booking {{book-hotel.data[0].id}} in {{city_code}} from {{check_in}} to {{check_out}}."
LeadSource: "Corporate Travel"
consumes:
- type: http
namespace: amadeus-hotel
baseUri: "https://api.amadeus.com/v3"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: hotel-offers
path: "/shopping/hotel-offers"
inputParameters:
- name: cityCode
in: query
- name: checkInDate
in: query
- name: checkOutDate
in: query
operations:
- name: search-hotel-offers
method: GET
- name: hotel-bookings
path: "/booking/hotel-bookings"
operations:
- name: create-hotel-booking
method: POST
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead"
operations:
- name: create-lead
method: POST
Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops.
naftiko: "0.5"
info:
label: "Infrastructure Drift Detection Pipeline"
description: "Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops."
tags:
- devops
- github
- jira
- slack
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: infrastructure_drift_detection
description: "Orchestrate infrastructure drift detection pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-github
type: call
call: "github.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-github.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Infrastructure Drift Detection Pipeline step 3 complete."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: github-op
method: POST
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Validates an electronic ticket number against the Amadeus ticketing system. Returns coupon status, fare basis, issuing airline, and endorsement restrictions for interline settlement.
naftiko: "0.5"
info:
label: "Interline E-Ticket Validation"
description: "Validates an electronic ticket number against the Amadeus ticketing system. Returns coupon status, fare basis, issuing airline, and endorsement restrictions for interline settlement."
tags:
- travel
- amadeus
- ticketing
- airline
- settlement
capability:
exposes:
- type: mcp
namespace: ticket-validation
port: 8080
tools:
- name: validate-eticket
description: "Validate an e-ticket number and return coupon and fare details."
inputParameters:
- name: ticket_number
in: body
type: string
description: "13-digit electronic ticket number."
call: "amadeus-ticket.get-ticket"
with:
ticketNumber: "{{ticket_number}}"
outputParameters:
- name: coupon_status
type: string
mapping: "$.data.coupons[0].status"
- name: fare_basis
type: string
mapping: "$.data.fareInfo.fareBasis"
- name: issuing_airline
type: string
mapping: "$.data.issuingAirline"
- name: endorsements
type: string
mapping: "$.data.endorsements"
consumes:
- type: http
namespace: amadeus-ticket
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: tickets
path: "/ticketing/e-tickets/{{ticketNumber}}"
inputParameters:
- name: ticketNumber
in: path
operations:
- name: get-ticket
method: GET
Monitors seat inventory on key routes via the Amadeus availability API. When inventory drops below a threshold, triggers a Grafana annotation and alerts the revenue management team via Slack.
naftiko: "0.5"
info:
label: "Inventory Availability Monitor"
description: "Monitors seat inventory on key routes via the Amadeus availability API. When inventory drops below a threshold, triggers a Grafana annotation and alerts the revenue management team via Slack."
tags:
- travel
- amadeus
- inventory
- grafana
- monitoring
- revenue
capability:
exposes:
- type: mcp
namespace: inventory-monitor
port: 8080
tools:
- name: monitor-route-inventory
description: "Check route inventory levels and alert if below threshold."
inputParameters:
- name: origin
in: body
type: string
description: "Route origin IATA code."
- name: destination
in: body
type: string
description: "Route destination IATA code."
- name: departure_date
in: body
type: string
description: "Flight date YYYY-MM-DD."
- name: threshold
in: body
type: integer
description: "Minimum seat inventory threshold."
- name: slack_webhook
in: body
type: string
description: "Slack webhook for revenue team."
steps:
- name: check-availability
type: call
call: "amadeus-avail.get-availability"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
- name: annotate-grafana
type: call
call: "grafana.create-annotation"
with:
text: "Low inventory: {{origin}}-{{destination}} on {{departure_date}}. Available: {{check-availability.data[0].availableSeats}}"
tags: "inventory,{{origin}},{{destination}}"
- name: alert-slack
type: call
call: "slack.post-message"
with:
webhook_url: "{{slack_webhook}}"
text: "Inventory alert: {{origin}}-{{destination}} on {{departure_date}} has {{check-availability.data[0].availableSeats}} seats remaining (threshold: {{threshold}})."
consumes:
- type: http
namespace: amadeus-avail
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: availability
path: "/shopping/availability/flight-availabilities"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
operations:
- name: get-availability
method: POST
- type: http
namespace: grafana
baseUri: "https://amadeus-grafana.grafana.net/api"
authentication:
type: bearer
token: "$secrets.grafana_token"
resources:
- name: annotations
path: "/annotations"
operations:
- name: create-annotation
method: POST
- type: http
namespace: slack
baseUri: "https://hooks.slack.com"
resources:
- name: webhook
path: "/services/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: post-message
method: POST
Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB.
naftiko: "0.5"
info:
label: "IT Asset Lifecycle Pipeline"
description: "Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB."
tags:
- operations
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: it_asset_lifecycle_pipeline
description: "Orchestrate it asset lifecycle pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "IT Asset Lifecycle Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports.
naftiko: "0.5"
info:
label: "Knowledge Base Freshness Pipeline"
description: "Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports."
tags:
- knowledge
- confluence
- jira
- slack
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: knowledge_base_freshness_pipeline
description: "Orchestrate knowledge base freshness pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-confluence
type: call
call: "confluence.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-confluence.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Knowledge Base Freshness Pipeline step 3 complete."
consumes:
- type: http
namespace: confluence
baseUri: "https://amadeus.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Queries the Amadeus loyalty engine for a traveler's frequent flyer points balance, tier status, and upcoming tier qualification progress. Used by airline loyalty portals and chatbots.
naftiko: "0.5"
info:
label: "Loyalty Points Balance Check"
description: "Queries the Amadeus loyalty engine for a traveler's frequent flyer points balance, tier status, and upcoming tier qualification progress. Used by airline loyalty portals and chatbots."
tags:
- travel
- amadeus
- loyalty
- airline
- frequent-flyer
capability:
exposes:
- type: mcp
namespace: loyalty-management
port: 8080
tools:
- name: get-loyalty-balance
description: "Check frequent flyer points balance and tier status."
inputParameters:
- name: loyalty_id
in: body
type: string
description: "Frequent flyer loyalty program member ID."
- name: program_code
in: body
type: string
description: "Airline loyalty program code."
call: "amadeus-loyalty.get-member"
with:
memberId: "{{loyalty_id}}"
programCode: "{{program_code}}"
outputParameters:
- name: points_balance
type: integer
mapping: "$.data.balance.points"
- name: tier_status
type: string
mapping: "$.data.tier.current"
- name: points_to_next_tier
type: integer
mapping: "$.data.tier.pointsToNext"
consumes:
- type: http
namespace: amadeus-loyalty
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: members
path: "/loyalty/programs/{{programCode}}/members/{{memberId}}"
inputParameters:
- name: programCode
in: path
- name: memberId
in: path
operations:
- name: get-member
method: GET
Searches multi-segment flights across Amadeus, aggregates pricing, books the full itinerary, and emits a custom Datadog metric tracking booking latency and revenue for observability dashboards.
naftiko: "0.5"
info:
label: "Multi-City Trip Planner with Datadog Monitoring"
description: "Searches multi-segment flights across Amadeus, aggregates pricing, books the full itinerary, and emits a custom Datadog metric tracking booking latency and revenue for observability dashboards."
tags:
- travel
- flights
- amadeus
- booking
- datadog
- monitoring
capability:
exposes:
- type: mcp
namespace: multicity-booking
port: 8080
tools:
- name: plan-book-multicity
description: "Search, price, and book a multi-city flight itinerary with observability metrics."
inputParameters:
- name: segments
in: body
type: array
description: "Array of flight segments, each with origin, destination, and date."
- name: adults
in: body
type: integer
description: "Number of adult travelers."
- name: travelers
in: body
type: array
description: "Traveler detail objects."
- name: contact_email
in: body
type: string
description: "Contact email for booking."
steps:
- name: search-multicity
type: call
call: "amadeus-multi.search-multi-offers"
with:
originDestinations: "{{segments}}"
adults: "{{adults}}"
- name: price-offer
type: call
call: "amadeus-price.price-offer"
with:
flightOffers: "{{search-multicity.data[0]}}"
- name: create-booking
type: call
call: "amadeus-book.book-order"
with:
flightOffers: "{{price-offer.data.flightOffers}}"
travelers: "{{travelers}}"
contact_email: "{{contact_email}}"
- name: emit-metric
type: call
call: "datadog.submit-metric"
with:
metric: "amadeus.booking.multicity.revenue"
points: "{{price-offer.data.flightOffers[0].price.grandTotal}}"
tags: "type:multicity,segments:{{segments.length}}"
consumes:
- type: http
namespace: amadeus-multi
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: multi-offers
path: "/shopping/flight-offers"
operations:
- name: search-multi-offers
method: POST
- type: http
namespace: amadeus-price
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: pricing
path: "/shopping/flight-offers/pricing"
operations:
- name: price-offer
method: POST
- type: http
namespace: amadeus-book
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders"
operations:
- name: book-order
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
resources:
- name: metrics
path: "/series"
operations:
- name: submit-metric
method: POST
Retrieves NDC-compliant flight offers from an airline's direct channel via Amadeus, applies corporate negotiated fares, and returns enriched offers with branded fare families for agent desktop display.
naftiko: "0.5"
info:
label: "NDC Offer Management"
description: "Retrieves NDC-compliant flight offers from an airline's direct channel via Amadeus, applies corporate negotiated fares, and returns enriched offers with branded fare families for agent desktop display."
tags:
- travel
- flights
- amadeus
- ndc
- distribution
capability:
exposes:
- type: mcp
namespace: ndc-offers
port: 8080
tools:
- name: get-ndc-offers
description: "Retrieve NDC flight offers with corporate negotiated fares."
inputParameters:
- name: origin
in: body
type: string
description: "Origin IATA code."
- name: destination
in: body
type: string
description: "Destination IATA code."
- name: departure_date
in: body
type: string
description: "Departure date YYYY-MM-DD."
- name: corporate_code
in: body
type: string
description: "Corporate negotiated fare code."
call: "amadeus-ndc.search-ndc-offers"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
corporateCodes: "{{corporate_code}}"
outputParameters:
- name: offers
type: array
mapping: "$.data"
- name: dictionaries
type: object
mapping: "$.dictionaries"
consumes:
- type: http
namespace: amadeus-ndc
baseUri: "https://ndc.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_ndc_token"
resources:
- name: offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: corporateCodes
in: query
operations:
- name: search-ndc-offers
method: GET
Instruments Amadeus API call performance by measuring search-to-book latency, recording custom events in New Relic, and alerting on degraded response times for SRE teams.
naftiko: "0.5"
info:
label: "New Relic Booking Performance Monitor"
description: "Instruments Amadeus API call performance by measuring search-to-book latency, recording custom events in New Relic, and alerting on degraded response times for SRE teams."
tags:
- travel
- amadeus
- new-relic
- monitoring
- performance
capability:
exposes:
- type: mcp
namespace: booking-performance
port: 8080
tools:
- name: monitor-booking-performance
description: "Track Amadeus API response times and log to New Relic."
inputParameters:
- name: origin
in: body
type: string
description: "Origin IATA code."
- name: destination
in: body
type: string
description: "Destination IATA code."
- name: departure_date
in: body
type: string
description: "Departure date."
steps:
- name: timed-search
type: call
call: "amadeus.search-offers"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "1"
- name: log-to-newrelic
type: call
call: "newrelic.insert-event"
with:
eventType: "AmadeusApiPerformance"
attributes:
endpoint: "flight-offers-search"
route: "{{origin}}-{{destination}}"
result_count: "{{timed-search.meta.count}}"
lowest_price: "{{timed-search.data[0].price.grandTotal}}"
consumes:
- type: http
namespace: amadeus
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: search-offers
method: GET
- type: http
namespace: newrelic
baseUri: "https://insights-collector.newrelic.com/v1"
authentication:
type: apiKey
key: "$secrets.newrelic_insert_key"
resources:
- name: events
path: "/accounts/{{account_id}}/events"
inputParameters:
- name: account_id
in: path
operations:
- name: insert-event
method: POST
Evaluates traveler activity, calculates tier status, updates CRM, and sends notifications.
naftiko: "0.5"
info:
label: "Passenger Loyalty Tier Evaluation Pipeline"
description: "Evaluates traveler activity, calculates tier status, updates CRM, and sends notifications."
tags:
- loyalty
- salesforce
- hubspot
- slack
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: passenger_loyalty_tier_evaluation
description: "Orchestrate passenger loyalty tier evaluation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-hubspot
type: call
call: "hubspot.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Passenger Loyalty Tier Evaluation Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: hubspot-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Coordinates a passenger transfer between connecting flights by checking both segment statuses in Amadeus, estimating transfer time, and sending real-time updates to the traveler via WhatsApp.
naftiko: "0.5"
info:
label: "Passenger Transfer Coordination"
description: "Coordinates a passenger transfer between connecting flights by checking both segment statuses in Amadeus, estimating transfer time, and sending real-time updates to the traveler via WhatsApp."
tags:
- travel
- flights
- amadeus
- whatsapp
- operations
- connection
capability:
exposes:
- type: mcp
namespace: transfer-coordination
port: 8080
tools:
- name: coordinate-transfer
description: "Check connection timing and notify traveler via WhatsApp."
inputParameters:
- name: order_id
in: body
type: string
description: "Amadeus booking order ID with connecting flights."
- name: traveler_phone
in: body
type: string
description: "Traveler WhatsApp number with country code."
steps:
- name: get-booking
type: call
call: "amadeus-orders.get-order"
with:
order_id: "{{order_id}}"
- name: check-inbound-status
type: call
call: "amadeus-status.get-status"
with:
carrierCode: "{{get-booking.data.flightOffers[0].itineraries[0].segments[0].carrierCode}}"
flightNumber: "{{get-booking.data.flightOffers[0].itineraries[0].segments[0].number}}"
scheduledDepartureDate: "{{get-booking.data.flightOffers[0].itineraries[0].segments[0].departure.at}}"
- name: notify-traveler
type: call
call: "whatsapp.send-message"
with:
to: "{{traveler_phone}}"
template: "transfer_update"
body: "Your connecting flight update: Inbound {{get-booking.data.flightOffers[0].itineraries[0].segments[0].carrierCode}}{{get-booking.data.flightOffers[0].itineraries[0].segments[0].number}} status: {{check-inbound-status.data[0].flightPoints[0].departure.timings[0].qualifier}}. Connection at {{get-booking.data.flightOffers[0].itineraries[0].segments[0].arrival.iataCode}}."
consumes:
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: amadeus-status
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-status
path: "/schedule/flights"
inputParameters:
- name: carrierCode
in: query
- name: flightNumber
in: query
- name: scheduledDepartureDate
in: query
operations:
- name: get-status
method: GET
- type: http
namespace: whatsapp
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.whatsapp_token"
resources:
- name: messages
path: "/{{phone_number_id}}/messages"
inputParameters:
- name: phone_number_id
in: path
operations:
- name: send-message
method: POST
Initiates review cycles, collects feedback, aggregates scores, and distributes to managers.
naftiko: "0.5"
info:
label: "Performance Review Cycle Pipeline"
description: "Initiates review cycles, collects feedback, aggregates scores, and distributes to managers."
tags:
- hr
- workday
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: performance_review_cycle_pipeline
description: "Orchestrate performance review cycle pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Performance Review Cycle Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: confluence
baseUri: "https://amadeus.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves a Passenger Name Record from the Amadeus reservation system by record locator. Returns passenger details, itinerary segments, ticketing status, and contact information.
naftiko: "0.5"
info:
label: "PNR Retrieval"
description: "Retrieves a Passenger Name Record from the Amadeus reservation system by record locator. Returns passenger details, itinerary segments, ticketing status, and contact information."
tags:
- travel
- reservation
- amadeus
- pnr
- airline
capability:
exposes:
- type: mcp
namespace: reservation-management
port: 8080
tools:
- name: get-pnr
description: "Retrieve a PNR by its record locator to view passenger, itinerary, and ticketing details."
inputParameters:
- name: record_locator
in: body
type: string
description: "The 6-character PNR record locator."
call: "amadeus-res.get-booking"
with:
pnr_id: "{{record_locator}}"
outputParameters:
- name: passengers
type: array
mapping: "$.data.travelers"
- name: segments
type: array
mapping: "$.data.flightOffers[0].itineraries"
- name: ticketing_status
type: string
mapping: "$.data.ticketingAgreement.option"
consumes:
- type: http
namespace: amadeus-res
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: bookings
path: "/booking/flight-orders/{{pnr_id}}"
inputParameters:
- name: pnr_id
in: path
operations:
- name: get-booking
method: GET
Compares Amadeus ticketed fares against filed tariffs, identifies revenue leakage from misfiled fares, logs discrepancies to Elasticsearch, and alerts the revenue integrity team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Revenue Leakage Detection Pipeline"
description: "Compares Amadeus ticketed fares against filed tariffs, identifies revenue leakage from misfiled fares, logs discrepancies to Elasticsearch, and alerts the revenue integrity team via Microsoft Teams."
tags:
- travel
- amadeus
- revenue
- elasticsearch
- microsoft-teams
- finance
capability:
exposes:
- type: mcp
namespace: revenue-leakage
port: 8080
tools:
- name: detect-revenue-leakage
description: "Compare ticketed fares against tariffs, log discrepancies, and alert the team."
inputParameters:
- name: order_id
in: body
type: string
description: "Amadeus flight order to audit."
- name: teams_channel_webhook
in: body
type: string
description: "Microsoft Teams webhook for revenue team."
steps:
- name: get-order-details
type: call
call: "amadeus-orders.get-order"
with:
order_id: "{{order_id}}"
- name: get-filed-fare
type: call
call: "amadeus-fare.get-fare-rules"
with:
carrier: "{{get-order-details.data.flightOffers[0].validatingAirlineCodes[0]}}"
fare_basis: "{{get-order-details.data.flightOffers[0].travelerPricings[0].fareDetailsBySegment[0].fareBasis}}"
- name: log-to-elastic
type: call
call: "elasticsearch.index-document"
with:
index: "revenue-leakage-audit"
body:
order_id: "{{order_id}}"
ticketed_fare: "{{get-order-details.data.flightOffers[0].price.grandTotal}}"
filed_fare: "{{get-filed-fare.data.fareAmount}}"
carrier: "{{get-order-details.data.flightOffers[0].validatingAirlineCodes[0]}}"
timestamp: "{{now}}"
- name: alert-team
type: call
call: "msteams.send-webhook"
with:
webhook_url: "{{teams_channel_webhook}}"
text: "Revenue leakage detected on order {{order_id}}: Ticketed {{get-order-details.data.flightOffers[0].price.grandTotal}} vs Filed {{get-filed-fare.data.fareAmount}}. Carrier: {{get-order-details.data.flightOffers[0].validatingAirlineCodes[0]}}."
consumes:
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: amadeus-fare
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: fare-rules
path: "/shopping/flight-offers/fare-rules"
inputParameters:
- name: carrier
in: query
- name: fare_basis
in: query
operations:
- name: get-fare-rules
method: GET
- type: http
namespace: elasticsearch
baseUri: "https://amadeus-es.elastic-cloud.com"
authentication:
type: basic
username: "$secrets.elastic_user"
password: "$secrets.elastic_password"
resources:
- name: documents
path: "/{{index}}/_doc"
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
- type: http
namespace: msteams
baseUri: "https://outlook.office.com/webhook"
resources:
- name: incoming-webhook
path: "/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: send-webhook
method: POST
Detects airline schedule changes by comparing stored itineraries against current Amadeus schedule data, identifies affected bookings, and sends batch notifications to impacted travelers via Microsoft Teams and email.
naftiko: "0.5"
info:
label: "Schedule Change Notification Pipeline"
description: "Detects airline schedule changes by comparing stored itineraries against current Amadeus schedule data, identifies affected bookings, and sends batch notifications to impacted travelers via Microsoft Teams and email."
tags:
- travel
- amadeus
- schedule
- microsoft-teams
- notification
- operations
capability:
exposes:
- type: mcp
namespace: schedule-change
port: 8080
tools:
- name: process-schedule-change
description: "Detect schedule changes and notify affected travelers."
inputParameters:
- name: carrier_code
in: body
type: string
description: "Airline IATA code."
- name: flight_number
in: body
type: string
description: "Flight number."
- name: departure_date
in: body
type: string
description: "Original departure date."
- name: affected_order_ids
in: body
type: array
description: "List of affected Amadeus order IDs."
- name: teams_webhook
in: body
type: string
description: "Microsoft Teams ops channel webhook."
steps:
- name: get-current-schedule
type: call
call: "amadeus-schedule.get-schedule"
with:
carrierCode: "{{carrier_code}}"
flightNumber: "{{flight_number}}"
scheduledDepartureDate: "{{departure_date}}"
- name: notify-ops-team
type: call
call: "msteams.send-webhook"
with:
webhook_url: "{{teams_webhook}}"
text: "Schedule change detected: {{carrier_code}}{{flight_number}} on {{departure_date}}. New departure: {{get-current-schedule.data[0].flightPoints[0].departure.timings[0].value}}. Affected bookings: {{affected_order_ids}}. Please review and contact impacted passengers."
consumes:
- type: http
namespace: amadeus-schedule
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: schedules
path: "/schedule/flights"
inputParameters:
- name: carrierCode
in: query
- name: flightNumber
in: query
- name: scheduledDepartureDate
in: query
operations:
- name: get-schedule
method: GET
- type: http
namespace: msteams
baseUri: "https://outlook.office.com/webhook"
resources:
- name: incoming-webhook
path: "/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: send-webhook
method: POST
End-to-end flight booking orchestration: searches for flights, confirms the lowest price, creates the booking order in Amadeus, and sends a confirmation notification via Microsoft Teams.
naftiko: "0.5"
info:
label: "Search, Price, and Book Flight"
description: "End-to-end flight booking orchestration: searches for flights, confirms the lowest price, creates the booking order in Amadeus, and sends a confirmation notification via Microsoft Teams."
tags:
- travel
- booking
- amadeus
- flights
- microsoft-teams
- orchestration
capability:
exposes:
- type: mcp
namespace: flight-book-orchestrator
port: 8080
tools:
- name: search-price-book-flight
description: "Search flights, confirm price, and create a booking in one workflow."
inputParameters:
- name: origin
in: body
type: string
description: "IATA code for departure airport."
- name: destination
in: body
type: string
description: "IATA code for arrival airport."
- name: departure_date
in: body
type: string
description: "Departure date YYYY-MM-DD."
- name: adults
in: body
type: integer
description: "Number of adult passengers."
- name: travelers
in: body
type: array
description: "Traveler details array."
- name: contact_email
in: body
type: string
description: "Booking contact email."
- name: teams_webhook
in: body
type: string
description: "Microsoft Teams webhook URL for notification."
steps:
- name: search-flights
type: call
call: "amadeus.search-offers"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "{{adults}}"
- name: confirm-price
type: call
call: "amadeus-price.confirm-pricing"
with:
flightOffers: "{{search-flights.data[0]}}"
- name: create-booking
type: call
call: "amadeus-book.create-flight-order"
with:
flightOffers: "{{confirm-price.data.flightOffers}}"
travelers: "{{travelers}}"
contact_email: "{{contact_email}}"
- name: notify-teams
type: call
call: "msteams.send-webhook"
with:
webhook_url: "{{teams_webhook}}"
text: "Flight booked! PNR: {{create-booking.data.associatedRecords[0].reference}} for {{origin}} to {{destination}} on {{departure_date}}. Total: {{confirm-price.data.flightOffers[0].price.grandTotal}} {{confirm-price.data.flightOffers[0].price.currency}}."
consumes:
- type: http
namespace: amadeus
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: search-offers
method: GET
- type: http
namespace: amadeus-price
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: pricing
path: "/shopping/flight-offers/pricing"
operations:
- name: confirm-pricing
method: POST
- type: http
namespace: amadeus-book
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: flight-orders
path: "/booking/flight-orders"
operations:
- name: create-flight-order
method: POST
- type: http
namespace: msteams
baseUri: "https://outlook.office.com/webhook"
resources:
- name: incoming-webhook
path: "/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: send-webhook
method: POST
Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
naftiko: "0.5"
info:
label: "Security Incident Response Pipeline"
description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
tags:
- security
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: security_incident_response_pipeline
description: "Orchestrate security incident response pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-splunk
type: call
call: "splunk.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-splunk.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Incident Response Pipeline step 3 complete."
consumes:
- type: http
namespace: splunk
baseUri: "https://amadeus-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management.
naftiko: "0.5"
info:
label: "SLA Compliance Monitoring Pipeline"
description: "Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management."
tags:
- operations
- datadog
- servicenow
- powerbi
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: sla_compliance_monitoring_pipeline
description: "Orchestrate sla compliance monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "SLA Compliance Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT.
naftiko: "0.5"
info:
label: "Software License Optimization Pipeline"
description: "Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT."
tags:
- operations
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: software_license_optimization
description: "Orchestrate software license optimization pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Software License Optimization Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team.
naftiko: "0.5"
info:
label: "Third-Party Integration Health Pipeline"
description: "Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team."
tags:
- integrations
- datadog
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: integrations
port: 8080
tools:
- name: third_party_integration_health_pipeline
description: "Orchestrate third-party integration health pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Third-Party Integration Health Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status.
naftiko: "0.5"
info:
label: "Training Compliance Tracker Pipeline"
description: "Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status."
tags:
- compliance
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: training_compliance_tracker_pipeline
description: "Orchestrate training compliance tracker pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Training Compliance Tracker Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves booking commission data from Amadeus for a travel agency, aggregates totals, and posts the summary to a Tableau Hyper extract endpoint for commission reporting dashboards.
naftiko: "0.5"
info:
label: "Travel Agent Commission Tracker"
description: "Retrieves booking commission data from Amadeus for a travel agency, aggregates totals, and posts the summary to a Tableau Hyper extract endpoint for commission reporting dashboards."
tags:
- travel
- amadeus
- tableau
- commission
- distribution
- finance
capability:
exposes:
- type: mcp
namespace: commission-tracker
port: 8080
tools:
- name: track-agency-commissions
description: "Pull agency commission data from Amadeus and push to Tableau."
inputParameters:
- name: agency_id
in: body
type: string
description: "Amadeus agency office ID (PCC)."
- name: date_from
in: body
type: string
description: "Start date YYYY-MM-DD."
- name: date_to
in: body
type: string
description: "End date YYYY-MM-DD."
- name: tableau_datasource_id
in: body
type: string
description: "Tableau datasource ID for commission data."
steps:
- name: get-commissions
type: call
call: "amadeus-agency.get-commissions"
with:
agencyId: "{{agency_id}}"
dateFrom: "{{date_from}}"
dateTo: "{{date_to}}"
- name: publish-to-tableau
type: call
call: "tableau.publish-data"
with:
datasource_id: "{{tableau_datasource_id}}"
data: "{{get-commissions.data}}"
consumes:
- type: http
namespace: amadeus-agency
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: commissions
path: "/agency/commissions"
inputParameters:
- name: agencyId
in: query
- name: dateFrom
in: query
- name: dateTo
in: query
operations:
- name: get-commissions
method: GET
- type: http
namespace: tableau
baseUri: "https://amadeus-tableau.online.tableau.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/{{site_id}}/datasources/{{datasource_id}}/data"
inputParameters:
- name: site_id
in: path
- name: datasource_id
in: path
operations:
- name: publish-data
method: POST
Reconciles booking records with payment transactions, identifies discrepancies, and alerts finance.
naftiko: "0.5"
info:
label: "Travel Booking Reconciliation Pipeline"
description: "Reconciles booking records with payment transactions, identifies discrepancies, and alerts finance."
tags:
- finance
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: travel_booking_reconciliation_pipeline
description: "Orchestrate travel booking reconciliation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Travel Booking Reconciliation Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://amadeus.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Validates travel expenses against policy, flags violations, creates audit records, and notifies management.
naftiko: "0.5"
info:
label: "Travel Expense Compliance Pipeline"
description: "Validates travel expenses against policy, flags violations, creates audit records, and notifies management."
tags:
- compliance
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: travel_expense_compliance_pipeline
description: "Orchestrate travel expense compliance pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Travel Expense Compliance Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: "https://amadeus.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Pulls completed bookings from Amadeus, matches them against SAP Concur expense reports, identifies discrepancies, and creates a reconciliation report in Microsoft Excel via Graph API.
naftiko: "0.5"
info:
label: "Travel Expense Reconciliation"
description: "Pulls completed bookings from Amadeus, matches them against SAP Concur expense reports, identifies discrepancies, and creates a reconciliation report in Microsoft Excel via Graph API."
tags:
- travel
- amadeus
- sap-concur
- microsoft-excel
- finance
- reconciliation
capability:
exposes:
- type: mcp
namespace: expense-reconciliation
port: 8080
tools:
- name: reconcile-travel-expenses
description: "Match Amadeus bookings to Concur expenses and generate an Excel report."
inputParameters:
- name: date_from
in: body
type: string
description: "Start date YYYY-MM-DD for reconciliation window."
- name: date_to
in: body
type: string
description: "End date YYYY-MM-DD."
- name: excel_workbook_id
in: body
type: string
description: "Microsoft Graph workbook ID for report output."
steps:
- name: get-bookings
type: call
call: "amadeus-orders.list-bookings"
with:
dateFrom: "{{date_from}}"
dateTo: "{{date_to}}"
- name: get-expenses
type: call
call: "concur.list-expense-reports"
with:
startDate: "{{date_from}}"
endDate: "{{date_to}}"
- name: write-excel-report
type: call
call: "msgraph-excel.add-rows"
with:
workbook_id: "{{excel_workbook_id}}"
worksheet_name: "Reconciliation"
values: "{{get-bookings.data}}"
consumes:
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: bookings
path: "/booking/flight-orders"
inputParameters:
- name: dateFrom
in: query
- name: dateTo
in: query
operations:
- name: list-bookings
method: GET
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports"
inputParameters:
- name: startDate
in: query
- name: endDate
in: query
operations:
- name: list-expense-reports
method: GET
- type: http
namespace: msgraph-excel
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: worksheets
path: "/me/drive/items/{{workbook_id}}/workbook/worksheets/{{worksheet_name}}/tables/1/rows"
inputParameters:
- name: workbook_id
in: path
- name: worksheet_name
in: path
operations:
- name: add-rows
method: POST
Retrieves a complete booking from Amadeus, generates an itinerary summary, and sends it as a formatted email to the traveler and their travel manager via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Travel Itinerary PDF and Email"
description: "Retrieves a complete booking from Amadeus, generates an itinerary summary, and sends it as a formatted email to the traveler and their travel manager via Microsoft Outlook."
tags:
- travel
- amadeus
- microsoft-outlook
- itinerary
- notification
capability:
exposes:
- type: mcp
namespace: itinerary-email
port: 8080
tools:
- name: send-itinerary-email
description: "Fetch booking details and email the itinerary to traveler and manager."
inputParameters:
- name: order_id
in: body
type: string
description: "Amadeus flight order ID."
- name: traveler_email
in: body
type: string
description: "Traveler email address."
- name: manager_email
in: body
type: string
description: "Travel manager email."
steps:
- name: get-booking
type: call
call: "amadeus-orders.get-order"
with:
order_id: "{{order_id}}"
- name: send-email
type: call
call: "outlook.send-mail"
with:
to: "{{traveler_email}}"
cc: "{{manager_email}}"
subject: "Your Travel Itinerary - PNR {{get-booking.data.associatedRecords[0].reference}}"
body: "Dear Traveler, your booking is confirmed. PNR: {{get-booking.data.associatedRecords[0].reference}}. Route: {{get-booking.data.flightOffers[0].itineraries[0].segments[0].departure.iataCode}} to {{get-booking.data.flightOffers[0].itineraries[0].segments[0].arrival.iataCode}}. Departure: {{get-booking.data.flightOffers[0].itineraries[0].segments[0].departure.at}}. Total: {{get-booking.data.flightOffers[0].price.grandTotal}} {{get-booking.data.flightOffers[0].price.currency}}."
consumes:
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: send-mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST
Validates a flight booking against corporate travel policy rules stored in ServiceNow, checks fare class restrictions, and logs compliance status in Confluence for audit purposes.
naftiko: "0.5"
info:
label: "Travel Policy Compliance Check"
description: "Validates a flight booking against corporate travel policy rules stored in ServiceNow, checks fare class restrictions, and logs compliance status in Confluence for audit purposes."
tags:
- travel
- compliance
- amadeus
- servicenow
- confluence
- corporate-travel
capability:
exposes:
- type: mcp
namespace: travel-compliance
port: 8080
tools:
- name: check-travel-compliance
description: "Validate a booking against corporate policy and log compliance audit."
inputParameters:
- name: order_id
in: body
type: string
description: "Amadeus flight order ID."
- name: employee_id
in: body
type: string
description: "Employee identifier."
- name: confluence_space_key
in: body
type: string
description: "Confluence space key for audit logs."
steps:
- name: get-booking
type: call
call: "amadeus-orders.get-order"
with:
order_id: "{{order_id}}"
- name: get-policy
type: call
call: "servicenow.get-policy"
with:
category: "travel_policy"
employee_id: "{{employee_id}}"
- name: log-audit
type: call
call: "confluence.create-page"
with:
space_key: "{{confluence_space_key}}"
title: "Travel Compliance: Order {{order_id}} - {{employee_id}}"
body: "Booking {{order_id}} for employee {{employee_id}}. Fare class: {{get-booking.data.flightOffers[0].travelerPricings[0].fareDetailsBySegment[0].cabin}}. Policy max fare: {{get-policy.max_fare_class}}. Status: reviewed."
consumes:
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: policies
path: "/table/u_travel_policy"
inputParameters:
- name: category
in: query
- name: employee_id
in: query
operations:
- name: get-policy
method: GET
- type: http
namespace: confluence
baseUri: "https://amadeus-it.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Retrieves a complete flight itinerary from an Amadeus booking and creates calendar events in Google Calendar for each flight segment, including departure times, terminals, and booking references.
naftiko: "0.5"
info:
label: "Traveler Itinerary to Google Calendar"
description: "Retrieves a complete flight itinerary from an Amadeus booking and creates calendar events in Google Calendar for each flight segment, including departure times, terminals, and booking references."
tags:
- travel
- amadeus
- google
- calendar
- itinerary
capability:
exposes:
- type: mcp
namespace: itinerary-calendar
port: 8080
tools:
- name: sync-itinerary-to-calendar
description: "Fetch Amadeus booking and create Google Calendar events for each segment."
inputParameters:
- name: order_id
in: body
type: string
description: "Amadeus flight order ID."
- name: calendar_id
in: body
type: string
description: "Google Calendar ID."
steps:
- name: get-itinerary
type: call
call: "amadeus-orders.get-order"
with:
order_id: "{{order_id}}"
- name: create-event
type: call
call: "google-calendar.create-event"
with:
calendar_id: "{{calendar_id}}"
summary: "Flight {{get-itinerary.data.flightOffers[0].itineraries[0].segments[0].carrierCode}}{{get-itinerary.data.flightOffers[0].itineraries[0].segments[0].number}}: {{get-itinerary.data.flightOffers[0].itineraries[0].segments[0].departure.iataCode}} to {{get-itinerary.data.flightOffers[0].itineraries[0].segments[0].arrival.iataCode}}"
start_datetime: "{{get-itinerary.data.flightOffers[0].itineraries[0].segments[0].departure.at}}"
end_datetime: "{{get-itinerary.data.flightOffers[0].itineraries[0].segments[0].arrival.at}}"
description: "PNR: {{get-itinerary.data.associatedRecords[0].reference}}. Terminal: {{get-itinerary.data.flightOffers[0].itineraries[0].segments[0].departure.terminal}}."
consumes:
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: google-calendar
baseUri: "https://www.googleapis.com/calendar/v3"
authentication:
type: bearer
token: "$secrets.google_calendar_token"
resources:
- name: events
path: "/calendars/{{calendar_id}}/events"
inputParameters:
- name: calendar_id
in: path
operations:
- name: create-event
method: POST
Retrieves traveler loyalty profile from Amadeus, enriches it with booking history, and upserts the contact record in Salesforce with travel preferences and tier status for CRM personalization.
naftiko: "0.5"
info:
label: "Traveler Profile Sync to Salesforce"
description: "Retrieves traveler loyalty profile from Amadeus, enriches it with booking history, and upserts the contact record in Salesforce with travel preferences and tier status for CRM personalization."
tags:
- travel
- amadeus
- salesforce
- crm
- loyalty
capability:
exposes:
- type: mcp
namespace: traveler-crm-sync
port: 8080
tools:
- name: sync-traveler-to-crm
description: "Pull traveler profile from Amadeus and sync to Salesforce contact."
inputParameters:
- name: traveler_id
in: body
type: string
description: "Amadeus traveler profile ID."
- name: salesforce_contact_id
in: body
type: string
description: "Salesforce contact record ID."
steps:
- name: get-profile
type: call
call: "amadeus-profile.get-traveler"
with:
traveler_id: "{{traveler_id}}"
- name: get-booking-history
type: call
call: "amadeus-orders.list-orders"
with:
traveler_id: "{{traveler_id}}"
- name: update-salesforce
type: call
call: "salesforce.update-contact"
with:
contact_id: "{{salesforce_contact_id}}"
Loyalty_Tier__c: "{{get-profile.data.loyaltyPrograms[0].tier}}"
Preferred_Airline__c: "{{get-profile.data.preferences.airline}}"
Total_Bookings__c: "{{get-booking-history.meta.count}}"
Last_Travel_Date__c: "{{get-booking-history.data[0].departureDate}}"
consumes:
- type: http
namespace: amadeus-profile
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: travelers
path: "/travel/travelers/{{traveler_id}}"
inputParameters:
- name: traveler_id
in: path
operations:
- name: get-traveler
method: GET
- type: http
namespace: amadeus-orders
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: orders
path: "/booking/flight-orders"
inputParameters:
- name: traveler_id
in: query
operations:
- name: list-orders
method: GET
- type: http
namespace: salesforce
baseUri: "https://amadeus.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/sobjects/Contact/{{contact_id}}"
inputParameters:
- name: contact_id
in: path
operations:
- name: update-contact
method: PATCH
Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement.
naftiko: "0.5"
info:
label: "Vendor Risk Assessment Pipeline"
description: "Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement."
tags:
- procurement
- servicenow
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: vendor_risk_assessment_pipeline
description: "Orchestrate vendor risk assessment pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Vendor Risk Assessment Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://amadeus.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://amadeus.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Checks travel visa requirements for a passenger nationality and destination country using the Amadeus travel restrictions API. Returns visa type needed, exemptions, and documentation requirements.
naftiko: "0.5"
info:
label: "Visa Requirements Check"
description: "Checks travel visa requirements for a passenger nationality and destination country using the Amadeus travel restrictions API. Returns visa type needed, exemptions, and documentation requirements."
tags:
- travel
- amadeus
- visa
- compliance
- destination
capability:
exposes:
- type: mcp
namespace: visa-requirements
port: 8080
tools:
- name: check-visa-requirements
description: "Check visa requirements by nationality and destination."
inputParameters:
- name: nationality
in: body
type: string
description: "ISO country code of traveler nationality."
- name: destination
in: body
type: string
description: "ISO country code of destination."
call: "amadeus-travel.get-restrictions"
with:
countryCode: "{{destination}}"
nationality: "{{nationality}}"
outputParameters:
- name: visa_required
type: boolean
mapping: "$.data.visaRequired"
- name: visa_type
type: string
mapping: "$.data.visaType"
- name: exemptions
type: array
mapping: "$.data.exemptions"
consumes:
- type: http
namespace: amadeus-travel
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: restrictions
path: "/duty-of-care/diseases/covid19/area-report"
inputParameters:
- name: countryCode
in: query
- name: nationality
in: query
operations:
- name: get-restrictions
method: GET
Integrates Amadeus flight search with Workday HR to validate employee travel eligibility, check budget against cost center allocations, and submit the travel authorization for manager approval.
naftiko: "0.5"
info:
label: "Workday Travel Authorization Workflow"
description: "Integrates Amadeus flight search with Workday HR to validate employee travel eligibility, check budget against cost center allocations, and submit the travel authorization for manager approval."
tags:
- travel
- amadeus
- workday
- authorization
- corporate-travel
- hr
capability:
exposes:
- type: mcp
namespace: travel-authorization
port: 8080
tools:
- name: submit-travel-authorization
description: "Validate employee, check budget, and submit travel auth in Workday."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID."
- name: origin
in: body
type: string
description: "Departure IATA code."
- name: destination
in: body
type: string
description: "Arrival IATA code."
- name: departure_date
in: body
type: string
description: "Travel date YYYY-MM-DD."
- name: purpose
in: body
type: string
description: "Business purpose for travel."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: search-flights
type: call
call: "amadeus.search-offers"
with:
originLocationCode: "{{origin}}"
destinationLocationCode: "{{destination}}"
departureDate: "{{departure_date}}"
adults: "1"
- name: submit-auth
type: call
call: "workday.create-travel-auth"
with:
worker_id: "{{worker_id}}"
cost_center: "{{get-employee.costCenter}}"
estimated_cost: "{{search-flights.data[0].price.grandTotal}}"
currency: "{{search-flights.data[0].price.currency}}"
destination: "{{destination}}"
purpose: "{{purpose}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- name: travel-auth
path: "/travel/authorizations"
operations:
- name: create-travel-auth
method: POST
- type: http
namespace: amadeus
baseUri: "https://api.amadeus.com/v2"
authentication:
type: bearer
token: "$secrets.amadeus_api_token"
resources:
- name: offers
path: "/shopping/flight-offers"
inputParameters:
- name: originLocationCode
in: query
- name: destinationLocationCode
in: query
- name: departureDate
in: query
- name: adults
in: query
operations:
- name: search-offers
method: GET