Amadeus Capabilities

Naftiko 0.5 capability definitions for Amadeus - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

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