Delta Air Lines Capabilities

Naftiko 0.5 capability definitions for Delta Air Lines - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Creates an ADA accommodation request for a passenger with disabilities.

naftiko: "0.5"
info:
  label: "ADA Accommodation Request"
  description: "Creates an ADA accommodation request for a passenger with disabilities."
  tags:
    - customer-service
    - accessibility
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: ada
      port: 8080
      tools:
        - name: request-accommodation
          description: "Submit ADA accommodation request."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "PNR."
            - name: accommodation_type
              in: body
              type: string
              description: "Accommodation type."
            - name: station
              in: body
              type: string
              description: "Station."
          call: "ground-ops.create-ada"
          with:
            pnr: "{{pnr}}"
            type: "{{accommodation_type}}"
            station: "{{station}}"
          outputParameters:
            - name: request_id
              type: string
              mapping: "$.requestId"
  consumes:
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: ada
          path: "/ada/request"
          operations:
            - name: create-ada
              method: POST

Retrieves maintenance status, open MEL items, and next scheduled check for a Delta aircraft by tail number.

naftiko: "0.5"
info:
  label: "Aircraft Maintenance Status Check"
  description: "Retrieves maintenance status, open MEL items, and next scheduled check for a Delta aircraft by tail number."
  tags:
    - maintenance
    - flight-operations
    - safety
capability:
  exposes:
    - type: mcp
      namespace: mx-status
      port: 8080
      tools:
        - name: get-mx-status
          description: "Check aircraft maintenance status by tail number."
          inputParameters:
            - name: tail_number
              in: body
              type: string
              description: "Aircraft tail number."
          call: "mx-api.get-status"
          with:
            tail: "{{tail_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.maintenanceStatus"
            - name: open_items
              type: array
              mapping: "$.openMELItems"
            - name: next_check
              type: string
              mapping: "$.nextScheduledCheck"
  consumes:
    - type: http
      namespace: mx-api
      baseUri: "https://maintenance.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_mx_token"
      resources:
        - name: aircraft
          path: "/aircraft/{{tail}}/status"
          inputParameters:
            - name: tail
              in: path
          operations:
            - name: get-status
              method: GET

Executes an aircraft swap by finding replacement, updating flight records, recalculating weight/balance, and notifying dispatch.

naftiko: "0.5"
info:
  label: "Aircraft Swap Orchestrator"
  description: "Executes an aircraft swap by finding replacement, updating flight records, recalculating weight/balance, and notifying dispatch."
  tags:
    - flight-operations
    - dispatch
    - fleet-management
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: aircraft-swap
      port: 8080
      tools:
        - name: execute-swap
          description: "Execute an aircraft swap for a flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: original_tail
              in: body
              type: string
              description: "Original tail number."
            - name: station
              in: body
              type: string
              description: "Station."
          steps:
            - name: find-replacement
              type: call
              call: "fleet-api.find-available"
              with:
                station: "{{station}}"
                original: "{{original_tail}}"
            - name: update-flight
              type: call
              call: "pss.update-aircraft"
              with:
                flight: "{{flight_number}}"
                new_tail: "{{find-replacement.tail_number}}"
            - name: recalc-wb
              type: call
              call: "dispatch-api.recalc-wb"
              with:
                flight: "{{flight_number}}"
                tail: "{{find-replacement.tail_number}}"
            - name: notify-ops
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{ops_channel}}"
                text: "Aircraft swap: {{flight_number}} — {{original_tail}} -> {{find-replacement.tail_number}} at {{station}}"
  consumes:
    - type: http
      namespace: fleet-api
      baseUri: "https://fleet.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_fleet_token"
      resources:
        - name: available
          path: "/aircraft/available"
          operations:
            - name: find-available
              method: POST
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: aircraft
          path: "/flights/{{flight}}/aircraft"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: update-aircraft
              method: PUT
    - type: http
      namespace: dispatch-api
      baseUri: "https://dispatch.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_dispatch_token"
      resources:
        - name: wb
          path: "/weight-balance/recalculate"
          operations:
            - name: recalc-wb
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Coordinates the aircraft turnaround process including fueling, ground crew dispatch, catering, and cleaning for an arriving flight at a Delta hub.

naftiko: "0.5"
info:
  label: "Aircraft Turnaround Orchestrator"
  description: "Coordinates the aircraft turnaround process including fueling, ground crew dispatch, catering, and cleaning for an arriving flight at a Delta hub."
  tags:
    - ground-ops
    - flight-operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: turnaround
      port: 8080
      tools:
        - name: coordinate-turnaround
          description: "Initiate turnaround activities for an arriving aircraft."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Arriving flight number."
            - name: gate
              in: body
              type: string
              description: "Gate number."
            - name: station
              in: body
              type: string
              description: "Airport station code."
          steps:
            - name: request-fueling
              type: call
              call: "ground-ops.create-fuel-request"
              with:
                flight: "{{flight_number}}"
                gate: "{{gate}}"
                station: "{{station}}"
            - name: dispatch-ground-crew
              type: call
              call: "ground-ops.dispatch-crew"
              with:
                gate: "{{gate}}"
                station: "{{station}}"
            - name: order-catering
              type: call
              call: "catering-api.create-order"
              with:
                flight: "{{flight_number}}"
                station: "{{station}}"
            - name: notify-ops
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{ops_channel_id}}"
                text: "Turnaround initiated for {{flight_number}} at gate {{gate}} ({{station}}). Fuel: {{request-fueling.status}} | Crew: {{dispatch-ground-crew.status}}"
  consumes:
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: fueling
          path: "/fueling/request"
          operations:
            - name: create-fuel-request
              method: POST
        - name: crew-dispatch
          path: "/crew/dispatch"
          operations:
            - name: dispatch-crew
              method: POST
    - type: http
      namespace: catering-api
      baseUri: "https://catering.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_catering_token"
      resources:
        - name: orders
          path: "/orders"
          operations:
            - name: create-order
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves current shift staffing levels at a Delta station comparing against required minimums.

naftiko: "0.5"
info:
  label: "Airport Staffing Report"
  description: "Retrieves current shift staffing levels at a Delta station comparing against required minimums."
  tags:
    - ground-ops
    - workforce-management
    - workday
capability:
  exposes:
    - type: mcp
      namespace: staffing
      port: 8080
      tools:
        - name: get-staffing
          description: "Get staffing levels for an airport station."
          inputParameters:
            - name: station
              in: body
              type: string
              description: "Airport station."
            - name: shift
              in: body
              type: string
              description: "Shift period."
          call: "workforce-api.get-staffing"
          with:
            station: "{{station}}"
            shift: "{{shift}}"
          outputParameters:
            - name: current_staff
              type: number
              mapping: "$.currentStaff"
            - name: required_minimum
              type: number
              mapping: "$.requiredMinimum"
  consumes:
    - type: http
      namespace: workforce-api
      baseUri: "https://workforce.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_workforce_token"
      resources:
        - name: staffing
          path: "/stations/{{station}}/staffing"
          inputParameters:
            - name: station
              in: path
          operations:
            - name: get-staffing
              method: GET

Retrieves ancillary revenue details for a booking including upgrades, bag fees, and purchases.

naftiko: "0.5"
info:
  label: "Ancillary Revenue Lookup"
  description: "Retrieves ancillary revenue details for a booking including upgrades, bag fees, and purchases."
  tags:
    - revenue-management
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: ancillary
      port: 8080
      tools:
        - name: get-ancillary
          description: "Get ancillary revenue for a booking."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "PNR."
          call: "analytics-api.get-ancillaries"
          with:
            pnr: "{{pnr}}"
          outputParameters:
            - name: total
              type: number
              mapping: "$.totalAncillaryRevenue"
            - name: items
              type: array
              mapping: "$.items"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://analytics.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_analytics_token"
      resources:
        - name: ancillaries
          path: "/bookings/{{pnr}}/ancillaries"
          inputParameters:
            - name: pnr
              in: path
          operations:
            - name: get-ancillaries
              method: GET

When an aircraft is grounded, searches TechOps parts inventory, arranges expedited shipping, creates a SAP PO, and notifies maintenance control.

naftiko: "0.5"
info:
  label: "AOG Parts Expedite Orchestrator"
  description: "When an aircraft is grounded, searches TechOps parts inventory, arranges expedited shipping, creates a SAP PO, and notifies maintenance control."
  tags:
    - maintenance
    - logistics
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: aog-parts
      port: 8080
      tools:
        - name: expedite-aog-part
          description: "Find and expedite delivery of a critical AOG part."
          inputParameters:
            - name: part_number
              in: body
              type: string
              description: "Part number."
            - name: tail_number
              in: body
              type: string
              description: "AOG aircraft."
            - name: station
              in: body
              type: string
              description: "Station."
          steps:
            - name: search-inventory
              type: call
              call: "parts-api.search-network"
              with:
                part: "{{part_number}}"
            - name: arrange-shipping
              type: call
              call: "logistics-api.expedite"
              with:
                part: "{{part_number}}"
                from: "{{search-inventory.closest_station}}"
                to: "{{station}}"
            - name: create-po
              type: call
              call: "sap.create-po"
              with:
                material: "{{part_number}}"
                plant: "{{station}}"
                priority: "AOG"
            - name: notify-mx
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{mx_channel}}"
                text: "AOG: {{part_number}} for {{tail_number}} at {{station}} | From: {{search-inventory.closest_station}} | ETA: {{arrange-shipping.eta}}"
  consumes:
    - type: http
      namespace: parts-api
      baseUri: "https://techops.delta.com/api/v1/parts"
      authentication:
        type: bearer
        token: "$secrets.delta_mx_token"
      resources:
        - name: search
          path: "/search/network"
          operations:
            - name: search-network
              method: POST
    - type: http
      namespace: logistics-api
      baseUri: "https://logistics.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_logistics_token"
      resources:
        - name: expedite
          path: "/shipments/expedite"
          operations:
            - name: expedite
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://delta-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: po
          path: "/A_PurchaseOrder"
          operations:
            - name: create-po
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves baggage claim carousel assignment and delivery status for a flight arrival.

naftiko: "0.5"
info:
  label: "Baggage Claim Status Lookup"
  description: "Retrieves baggage claim carousel assignment and delivery status for a flight arrival."
  tags:
    - customer-service
    - baggage
    - ground-ops
capability:
  exposes:
    - type: mcp
      namespace: baggage
      port: 8080
      tools:
        - name: get-baggage-claim
          description: "Look up baggage claim carousel for a flight arrival."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: station
              in: body
              type: string
              description: "Arrival airport code."
          call: "baggage-api.get-claim"
          with:
            flight: "{{flight_number}}"
            station: "{{station}}"
          outputParameters:
            - name: carousel
              type: string
              mapping: "$.carouselNumber"
            - name: status
              type: string
              mapping: "$.deliveryStatus"
  consumes:
    - type: http
      namespace: baggage-api
      baseUri: "https://baggage.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_baggage_token"
      resources:
        - name: claims
          path: "/claim/{{flight}}"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-claim
              method: GET

Tracks boarding progress for a flight showing scanned vs expected passengers and boarding group status.

naftiko: "0.5"
info:
  label: "Boarding Process Tracker"
  description: "Tracks boarding progress for a flight showing scanned vs expected passengers and boarding group status."
  tags:
    - ground-ops
    - flight-operations
    - tracking
capability:
  exposes:
    - type: mcp
      namespace: boarding
      port: 8080
      tools:
        - name: get-boarding-status
          description: "Get real-time boarding progress."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: gate
              in: body
              type: string
              description: "Gate."
          call: "gate-api.get-boarding"
          with:
            flight: "{{flight_number}}"
            gate: "{{gate}}"
          outputParameters:
            - name: boarded
              type: number
              mapping: "$.passengersBoarded"
            - name: expected
              type: number
              mapping: "$.totalExpected"
            - name: current_zone
              type: string
              mapping: "$.currentZone"
  consumes:
    - type: http
      namespace: gate-api
      baseUri: "https://groundops.delta.com/api/v1/gates"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: boarding
          path: "/{{gate}}/boarding-status"
          inputParameters:
            - name: gate
              in: path
          operations:
            - name: get-boarding
              method: GET

Finds crew with required language skills for international route assignments.

naftiko: "0.5"
info:
  label: "Cabin Crew Language Search"
  description: "Finds crew with required language skills for international route assignments."
  tags:
    - crew-scheduling
    - compliance
    - international
capability:
  exposes:
    - type: mcp
      namespace: crew-lang
      port: 8080
      tools:
        - name: search-language-crew
          description: "Find language-qualified crew."
          inputParameters:
            - name: language
              in: body
              type: string
              description: "Required language."
            - name: base
              in: body
              type: string
              description: "Crew base."
          call: "crew-api.search-language"
          with:
            language: "{{language}}"
            base: "{{base}}"
          outputParameters:
            - name: qualified
              type: array
              mapping: "$.qualifiedCrew"
            - name: count
              type: number
              mapping: "$.totalAvailable"
  consumes:
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: language
          path: "/crew/language-search"
          operations:
            - name: search-language
              method: POST

Retrieves cabin pressurization telemetry from the aircraft health monitoring system.

naftiko: "0.5"
info:
  label: "Cabin Pressure System Monitoring"
  description: "Retrieves cabin pressurization telemetry from the aircraft health monitoring system."
  tags:
    - maintenance
    - safety
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: ahm
      port: 8080
      tools:
        - name: get-pressure-data
          description: "Pull cabin pressure telemetry."
          inputParameters:
            - name: tail_number
              in: body
              type: string
              description: "Tail number."
          call: "ahm-api.get-pressure"
          with:
            tail: "{{tail_number}}"
          outputParameters:
            - name: cabin_altitude
              type: number
              mapping: "$.cabinAltitude"
            - name: status
              type: string
              mapping: "$.systemStatus"
  consumes:
    - type: http
      namespace: ahm-api
      baseUri: "https://ahm.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ahm_token"
      resources:
        - name: pressure
          path: "/aircraft/{{tail}}/pressure"
          inputParameters:
            - name: tail
              in: path
          operations:
            - name: get-pressure
              method: GET

Creates a new Delta Cargo booking with shipper, routing, commodity, and weight details.

naftiko: "0.5"
info:
  label: "Cargo Booking Creation"
  description: "Creates a new Delta Cargo booking with shipper, routing, commodity, and weight details."
  tags:
    - cargo
    - logistics
capability:
  exposes:
    - type: mcp
      namespace: cargo-booking
      port: 8080
      tools:
        - name: create-cargo-booking
          description: "Create a new cargo booking."
          inputParameters:
            - name: shipper
              in: body
              type: string
              description: "Shipper name."
            - name: origin
              in: body
              type: string
              description: "Origin airport."
            - name: destination
              in: body
              type: string
              description: "Destination airport."
            - name: weight_kg
              in: body
              type: number
              description: "Weight in kg."
          call: "cargo-api.create-booking"
          with:
            shipper: "{{shipper}}"
            origin: "{{origin}}"
            destination: "{{destination}}"
            weight: "{{weight_kg}}"
          outputParameters:
            - name: booking_id
              type: string
              mapping: "$.bookingId"
            - name: awb_number
              type: string
              mapping: "$.awbNumber"
  consumes:
    - type: http
      namespace: cargo-api
      baseUri: "https://cargo.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_cargo_token"
      resources:
        - name: bookings
          path: "/bookings"
          operations:
            - name: create-booking
              method: POST

Generates daily Delta Cargo revenue summary including shipments, revenue by commodity, and capacity utilization.

naftiko: "0.5"
info:
  label: "Cargo Revenue Daily Summary"
  description: "Generates daily Delta Cargo revenue summary including shipments, revenue by commodity, and capacity utilization."
  tags:
    - cargo
    - revenue-management
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: cargo-analytics
      port: 8080
      tools:
        - name: get-cargo-summary
          description: "Generate daily cargo revenue summary."
          inputParameters:
            - name: date
              in: body
              type: string
              description: "Report date."
          call: "cargo-api.get-daily"
          with:
            date: "{{date}}"
          outputParameters:
            - name: total_revenue
              type: number
              mapping: "$.totalRevenue"
            - name: shipments
              type: number
              mapping: "$.totalShipments"
  consumes:
    - type: http
      namespace: cargo-api
      baseUri: "https://cargo.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_cargo_token"
      resources:
        - name: daily
          path: "/analytics/daily-summary"
          operations:
            - name: get-daily
              method: POST

Retrieves tracking status for a Delta Cargo shipment by air waybill number.

naftiko: "0.5"
info:
  label: "Cargo Shipment Tracking"
  description: "Retrieves tracking status for a Delta Cargo shipment by air waybill number."
  tags:
    - cargo
    - logistics
    - tracking
capability:
  exposes:
    - type: mcp
      namespace: cargo-tracking
      port: 8080
      tools:
        - name: track-cargo
          description: "Track a Delta Cargo shipment by AWB number."
          inputParameters:
            - name: awb_number
              in: body
              type: string
              description: "Air waybill number."
          call: "cargo-api.get-tracking"
          with:
            awb: "{{awb_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: current_location
              type: string
              mapping: "$.currentLocation"
            - name: eta
              type: string
              mapping: "$.estimatedArrival"
  consumes:
    - type: http
      namespace: cargo-api
      baseUri: "https://cargo.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_cargo_token"
      resources:
        - name: tracking
          path: "/tracking/{{awb}}"
          inputParameters:
            - name: awb
              in: path
          operations:
            - name: get-tracking
              method: GET

Creates or updates a catering order for a flight departure.

naftiko: "0.5"
info:
  label: "Catering Order Management"
  description: "Creates or updates a catering order for a flight departure."
  tags:
    - catering
    - flight-operations
capability:
  exposes:
    - type: mcp
      namespace: catering
      port: 8080
      tools:
        - name: manage-catering
          description: "Manage catering order for a flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: station
              in: body
              type: string
              description: "Station."
            - name: meal_counts
              in: body
              type: string
              description: "Meal counts by cabin."
          call: "catering-api.upsert-order"
          with:
            flight: "{{flight_number}}"
            station: "{{station}}"
            meals: "{{meal_counts}}"
          outputParameters:
            - name: order_id
              type: string
              mapping: "$.orderId"
  consumes:
    - type: http
      namespace: catering-api
      baseUri: "https://catering.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_catering_token"
      resources:
        - name: orders
          path: "/orders"
          operations:
            - name: upsert-order
              method: PUT

Synchronizes seat inventory with codeshare partners including Air France-KLM, Virgin Atlantic, and other SkyTeam airlines.

naftiko: "0.5"
info:
  label: "Codeshare Inventory Sync"
  description: "Synchronizes seat inventory with codeshare partners including Air France-KLM, Virgin Atlantic, and other SkyTeam airlines."
  tags:
    - flight-operations
    - partnerships
    - revenue-management
capability:
  exposes:
    - type: mcp
      namespace: codeshare
      port: 8080
      tools:
        - name: sync-inventory
          description: "Sync seat inventory with a codeshare partner."
          inputParameters:
            - name: partner_code
              in: body
              type: string
              description: "Partner airline code."
            - name: flight_number
              in: body
              type: string
              description: "Marketing flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
          call: "inventory-api.sync-partner"
          with:
            partner: "{{partner_code}}"
            flight: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: sync_status
              type: string
              mapping: "$.syncStatus"
            - name: seats_synced
              type: number
              mapping: "$.seatsSynced"
  consumes:
    - type: http
      namespace: inventory-api
      baseUri: "https://inventory.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_inventory_token"
      resources:
        - name: codeshare
          path: "/codeshare/sync"
          operations:
            - name: sync-partner
              method: POST

Monitors tight passenger connections at Delta hubs and identifies at-risk connecting passengers.

naftiko: "0.5"
info:
  label: "Passenger Connection Monitor"
  description: "Monitors tight passenger connections at Delta hubs and identifies at-risk connecting passengers."
  tags:
    - customer-service
    - flight-operations
    - connections
capability:
  exposes:
    - type: mcp
      namespace: connections
      port: 8080
      tools:
        - name: check-connections
          description: "Identify passengers with tight connections."
          inputParameters:
            - name: hub_station
              in: body
              type: string
              description: "Hub code."
            - name: threshold_minutes
              in: body
              type: number
              description: "Threshold in minutes."
          call: "pss.get-tight-connections"
          with:
            station: "{{hub_station}}"
            threshold: "{{threshold_minutes}}"
          outputParameters:
            - name: at_risk_passengers
              type: array
              mapping: "$.atRiskPassengers"
            - name: total_at_risk
              type: number
              mapping: "$.totalAtRisk"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: connections
          path: "/connections/at-risk"
          operations:
            - name: get-tight-connections
              method: POST

Generates monthly crew bid packages with trip pairings and credit values for bidding.

naftiko: "0.5"
info:
  label: "Crew Bid Package Generation"
  description: "Generates monthly crew bid packages with trip pairings and credit values for bidding."
  tags:
    - crew-scheduling
    - operations
capability:
  exposes:
    - type: mcp
      namespace: crew-bidding
      port: 8080
      tools:
        - name: generate-bid-package
          description: "Generate a crew bid package."
          inputParameters:
            - name: base
              in: body
              type: string
              description: "Crew base."
            - name: position
              in: body
              type: string
              description: "Position type."
            - name: bid_month
              in: body
              type: string
              description: "Bid month."
          call: "crew-api.generate-bids"
          with:
            base: "{{base}}"
            position: "{{position}}"
            month: "{{bid_month}}"
          outputParameters:
            - name: package_id
              type: string
              mapping: "$.packageId"
            - name: total_pairings
              type: number
              mapping: "$.totalPairings"
  consumes:
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: bids
          path: "/bidding/generate"
          operations:
            - name: generate-bids
              method: POST

Verifies crew member FAA duty time compliance, returning remaining legal hours and rest requirements.

naftiko: "0.5"
info:
  label: "Crew Duty Time Compliance Check"
  description: "Verifies crew member FAA duty time compliance, returning remaining legal hours and rest requirements."
  tags:
    - crew-scheduling
    - compliance
    - safety
capability:
  exposes:
    - type: mcp
      namespace: crew-compliance
      port: 8080
      tools:
        - name: check-duty-time
          description: "Check crew duty time against FAA Part 117 limits."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Crew member employee ID."
          call: "crew-api.get-duty-status"
          with:
            employee_id: "{{employee_id}}"
          outputParameters:
            - name: hours_flown
              type: number
              mapping: "$.hoursFlown"
            - name: remaining_hours
              type: number
              mapping: "$.remainingLegalHours"
            - name: compliant
              type: boolean
              mapping: "$.isCompliant"
  consumes:
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: duty-status
          path: "/crew/{{employee_id}}/duty-status"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-duty-status
              method: GET

Books crew layover hotels by checking contracted hotel availability, booking rooms, arranging transport, and notifying crew.

naftiko: "0.5"
info:
  label: "Crew Hotel Booking Orchestrator"
  description: "Books crew layover hotels by checking contracted hotel availability, booking rooms, arranging transport, and notifying crew."
  tags:
    - crew-scheduling
    - logistics
    - operations
capability:
  exposes:
    - type: mcp
      namespace: crew-hotels
      port: 8080
      tools:
        - name: book-crew-hotel
          description: "Book crew layover hotels."
          inputParameters:
            - name: crew_count
              in: body
              type: number
              description: "Number of crew."
            - name: station
              in: body
              type: string
              description: "Layover station."
            - name: check_in
              in: body
              type: string
              description: "Check-in time."
            - name: trip_id
              in: body
              type: string
              description: "Trip ID."
          steps:
            - name: check-availability
              type: call
              call: "hotel-api.check-availability"
              with:
                station: "{{station}}"
                rooms: "{{crew_count}}"
            - name: book-rooms
              type: call
              call: "hotel-api.book-rooms"
              with:
                hotel_id: "{{check-availability.hotel_id}}"
                rooms: "{{crew_count}}"
            - name: arrange-van
              type: call
              call: "transport-api.book-crew-van"
              with:
                station: "{{station}}"
                hotel: "{{check-availability.hotel_id}}"
            - name: notify-crew
              type: call
              call: "crew-comms.send-update"
              with:
                trip_id: "{{trip_id}}"
                message: "Hotel: {{check-availability.hotel_name}} | Confirmation: {{book-rooms.confirmation}}"
  consumes:
    - type: http
      namespace: hotel-api
      baseUri: "https://crew-services.delta.com/api/v1/hotels"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_services_token"
      resources:
        - name: availability
          path: "/availability"
          operations:
            - name: check-availability
              method: POST
        - name: bookings
          path: "/bookings"
          operations:
            - name: book-rooms
              method: POST
    - type: http
      namespace: transport-api
      baseUri: "https://crew-services.delta.com/api/v1/transport"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_services_token"
      resources:
        - name: vans
          path: "/crew-van/book"
          operations:
            - name: book-crew-van
              method: POST
    - type: http
      namespace: crew-comms
      baseUri: "https://crew.delta.com/api/v1/comms"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: updates
          path: "/trips/{{trip_id}}/notify"
          inputParameters:
            - name: trip_id
              in: path
          operations:
            - name: send-update
              method: POST

Checks crew passport and visa expiration against upcoming international assignments.

naftiko: "0.5"
info:
  label: "Crew Passport and Visa Check"
  description: "Checks crew passport and visa expiration against upcoming international assignments."
  tags:
    - crew-scheduling
    - compliance
    - international
capability:
  exposes:
    - type: mcp
      namespace: crew-docs
      port: 8080
      tools:
        - name: check-documents
          description: "Verify crew travel documents."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Employee ID."
            - name: destination
              in: body
              type: string
              description: "Destination country."
          call: "crew-api.check-docs"
          with:
            employee_id: "{{employee_id}}"
            country: "{{destination}}"
          outputParameters:
            - name: passport_valid
              type: boolean
              mapping: "$.passportValid"
            - name: visa_valid
              type: boolean
              mapping: "$.visaValid"
  consumes:
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: docs
          path: "/crew/{{employee_id}}/documents/check"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: check-docs
              method: POST

Finds and assigns a qualified reserve crew member when a crew member calls in sick, checking duty time compliance and notifying scheduling.

naftiko: "0.5"
info:
  label: "Crew Reserve Callout Orchestrator"
  description: "Finds and assigns a qualified reserve crew member when a crew member calls in sick, checking duty time compliance and notifying scheduling."
  tags:
    - crew-scheduling
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: crew-reserve
      port: 8080
      tools:
        - name: callout-reserve
          description: "Find and assign a reserve crew member for an open trip."
          inputParameters:
            - name: trip_id
              in: body
              type: string
              description: "Trip pairing ID."
            - name: base
              in: body
              type: string
              description: "Crew base (ATL, MSP, DTW, SLC, SEA)."
            - name: position
              in: body
              type: string
              description: "Position needed."
          steps:
            - name: find-reserves
              type: call
              call: "crew-api.search-reserves"
              with:
                base: "{{base}}"
                position: "{{position}}"
            - name: verify-duty
              type: call
              call: "crew-api.verify-duty-time"
              with:
                employee_id: "{{find-reserves.top_candidate}}"
                trip_id: "{{trip_id}}"
            - name: assign-trip
              type: call
              call: "crew-api.assign-trip"
              with:
                employee_id: "{{find-reserves.top_candidate}}"
                trip_id: "{{trip_id}}"
            - name: notify-scheduling
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{scheduling_channel}}"
                text: "Reserve assigned: {{find-reserves.top_candidate_name}} to trip {{trip_id}} at {{base}}"
  consumes:
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: reserves
          path: "/reserves/search"
          operations:
            - name: search-reserves
              method: POST
        - name: duty-verify
          path: "/crew/{{employee_id}}/duty-verify"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: verify-duty-time
              method: POST
        - name: assignments
          path: "/trips/assign"
          operations:
            - name: assign-trip
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Processes a customer complaint by creating a Salesforce case, checking SkyMiles tier, determining compensation, and sending a resolution email.

naftiko: "0.5"
info:
  label: "Customer Complaint Resolution Orchestrator"
  description: "Processes a customer complaint by creating a Salesforce case, checking SkyMiles tier, determining compensation, and sending a resolution email."
  tags:
    - customer-service
    - salesforce
    - loyalty
    - notifications
capability:
  exposes:
    - type: mcp
      namespace: complaint-resolution
      port: 8080
      tools:
        - name: resolve-complaint
          description: "Process a customer complaint to resolution."
          inputParameters:
            - name: skymiles_number
              in: body
              type: string
              description: "SkyMiles number."
            - name: complaint_type
              in: body
              type: string
              description: "Complaint type."
            - name: flight_number
              in: body
              type: string
              description: "Related flight."
            - name: description
              in: body
              type: string
              description: "Description."
          steps:
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Complaint: {{complaint_type}} — {{flight_number}}"
                description: "{{description}}"
                priority: "High"
            - name: check-tier
              type: call
              call: "loyalty-api.get-member"
              with:
                member_id: "{{skymiles_number}}"
            - name: issue-compensation
              type: call
              call: "loyalty-api.issue-credit"
              with:
                member_id: "{{skymiles_number}}"
                complaint_type: "{{complaint_type}}"
                tier: "{{check-tier.medallionTier}}"
            - name: send-resolution
              type: call
              call: "notification-api.send-email"
              with:
                member_id: "{{skymiles_number}}"
                template: "complaint_resolution"
                credit: "{{issue-compensation.creditAmount}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://delta.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: loyalty-api
      baseUri: "https://loyalty.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_loyalty_token"
      resources:
        - name: members
          path: "/members/{{member_id}}"
          inputParameters:
            - name: member_id
              in: path
          operations:
            - name: get-member
              method: GET
        - name: credits
          path: "/members/{{member_id}}/credits"
          inputParameters:
            - name: member_id
              in: path
          operations:
            - name: issue-credit
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://notifications.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_notification_token"
      resources:
        - name: email
          path: "/email/send"
          operations:
            - name: send-email
              method: POST

Generates and submits customs documentation for international cargo including invoice, declaration, and broker submission.

naftiko: "0.5"
info:
  label: "Customs Documentation Orchestrator"
  description: "Generates and submits customs documentation for international cargo including invoice, declaration, and broker submission."
  tags:
    - cargo
    - compliance
    - logistics
    - customs
capability:
  exposes:
    - type: mcp
      namespace: customs
      port: 8080
      tools:
        - name: process-customs
          description: "Generate and submit customs documentation for cargo."
          inputParameters:
            - name: awb_number
              in: body
              type: string
              description: "Air waybill."
            - name: destination_country
              in: body
              type: string
              description: "Destination country."
            - name: commodity_code
              in: body
              type: string
              description: "HS commodity code."
          steps:
            - name: generate-invoice
              type: call
              call: "cargo-api.generate-invoice"
              with:
                awb: "{{awb_number}}"
                country: "{{destination_country}}"
            - name: generate-declaration
              type: call
              call: "cargo-api.generate-declaration"
              with:
                awb: "{{awb_number}}"
                hs_code: "{{commodity_code}}"
            - name: submit-to-broker
              type: call
              call: "customs-api.submit"
              with:
                awb: "{{awb_number}}"
                invoice: "{{generate-invoice.invoice_id}}"
                declaration: "{{generate-declaration.declaration_id}}"
  consumes:
    - type: http
      namespace: cargo-api
      baseUri: "https://cargo.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_cargo_token"
      resources:
        - name: invoices
          path: "/documentation/invoice"
          operations:
            - name: generate-invoice
              method: POST
        - name: declarations
          path: "/documentation/declaration"
          operations:
            - name: generate-declaration
              method: POST
    - type: http
      namespace: customs-api
      baseUri: "https://customs.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_customs_token"
      resources:
        - name: submissions
          path: "/submit"
          operations:
            - name: submit
              method: POST

Retrieves the current status of all critical flight operations system monitors from Datadog and returns a structured health summary for the operations control center.

naftiko: "0.5"
info:
  label: "Datadog Flight Systems Health Monitor"
  description: "Retrieves the current status of all critical flight operations system monitors from Datadog and returns a structured health summary for the operations control center."
  tags:
    - observability
    - monitoring
    - datadog
    - operations
capability:
  exposes:
    - type: mcp
      namespace: systems-health
      port: 8080
      tools:
        - name: get-flight-systems-health
          description: "Given a Datadog environment and service tag, retrieve monitor statuses for the matching flight operations systems and return a structured health report. Use at the start of any operational incident investigation."
          inputParameters:
            - name: service_tag
              in: body
              type: string
              description: "Datadog service tag to filter monitors (e.g. service:reservations or env:production)."
          call: datadog.get-monitors
          with:
            monitor_tags: "{{service_tag}}"
          outputParameters:
            - name: monitors
              type: array
              mapping: "$.monitors"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: DD-API-KEY
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor"
          inputParameters:
            - name: monitor_tags
              in: query
          operations:
            - name: get-monitors
              method: GET

When Datadog detects elevated latency on the reservation API, creates a PagerDuty incident and notifies the technology operations Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Datadog Reservation System Latency Alert"
  description: "When Datadog detects elevated latency on the reservation API, creates a PagerDuty incident and notifies the technology operations Microsoft Teams channel."
  tags:
    - observability
    - monitoring
    - datadog
    - pagerduty
    - reservations
capability:
  exposes:
    - type: mcp
      namespace: reservation-monitoring
      port: 8080
      tools:
        - name: handle-reservation-latency-alert
          description: "Given a Datadog latency alert for the reservation API exceeding p99 thresholds, create a PagerDuty incident and notify the technology operations Microsoft Teams channel for immediate investigation."
          inputParameters:
            - name: p99_latency_ms
              in: body
              type: number
              description: "Measured p99 latency in milliseconds."
            - name: threshold_ms
              in: body
              type: number
              description: "Configured latency threshold in milliseconds."
            - name: monitor_id
              in: body
              type: string
              description: "Datadog monitor ID that triggered the alert."
          steps:
            - name: create-incident
              type: call
              call: pagerduty.create-incident
              with:
                title: "Reservation API latency breach: p99={{p99_latency_ms}}ms vs threshold {{threshold_ms}}ms"
                urgency: high
                service_id: "$secrets.pagerduty_reservation_service_id"
            - name: notify-tech-ops
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_tech_ops_team_id"
                channel_id: "$secrets.teams_tech_ops_channel_id"
                text: "Reservation API latency breach: p99={{p99_latency_ms}}ms (threshold: {{threshold_ms}}ms) | Monitor: {{monitor_id}} | PD: {{create-incident.html_url}}"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: Authorization
        value: "$secrets.pagerduty_api_key"
        placement: header
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Coordinates winter deicing by checking conditions, queuing aircraft, dispatching trucks, and notifying flight crew of holdover times.

naftiko: "0.5"
info:
  label: "Deicing Coordination Orchestrator"
  description: "Coordinates winter deicing by checking conditions, queuing aircraft, dispatching trucks, and notifying flight crew of holdover times."
  tags:
    - ground-ops
    - flight-operations
    - weather
    - safety
capability:
  exposes:
    - type: mcp
      namespace: deicing
      port: 8080
      tools:
        - name: coordinate-deicing
          description: "Coordinate deicing for a departing aircraft."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: tail_number
              in: body
              type: string
              description: "Tail number."
            - name: gate
              in: body
              type: string
              description: "Gate."
            - name: station
              in: body
              type: string
              description: "Station."
          steps:
            - name: check-conditions
              type: call
              call: "weather-api.get-deice-conditions"
              with:
                station: "{{station}}"
            - name: queue-aircraft
              type: call
              call: "ground-ops.queue-deicing"
              with:
                tail: "{{tail_number}}"
                gate: "{{gate}}"
                fluid: "{{check-conditions.recommended_fluid}}"
            - name: dispatch-truck
              type: call
              call: "ground-ops.dispatch-deice-truck"
              with:
                gate: "{{gate}}"
                station: "{{station}}"
            - name: notify-crew
              type: call
              call: "crew-comms.send-message"
              with:
                flight: "{{flight_number}}"
                message: "Deicing queued. Fluid: {{check-conditions.recommended_fluid}} | Wait: {{queue-aircraft.estimated_wait}} min | Holdover: {{check-conditions.holdover_time}} min"
  consumes:
    - type: http
      namespace: weather-api
      baseUri: "https://dispatch.delta.com/api/v1/weather"
      authentication:
        type: bearer
        token: "$secrets.delta_dispatch_token"
      resources:
        - name: deice
          path: "/deicing/{{station}}"
          inputParameters:
            - name: station
              in: path
          operations:
            - name: get-deice-conditions
              method: GET
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: deice-queue
          path: "/deicing/queue"
          operations:
            - name: queue-deicing
              method: POST
        - name: deice-trucks
          path: "/deicing/dispatch"
          operations:
            - name: dispatch-deice-truck
              method: POST
    - type: http
      namespace: crew-comms
      baseUri: "https://crew.delta.com/api/v1/comms"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: messages
          path: "/flights/{{flight}}/message"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: send-message
              method: POST

Checks current occupancy and capacity of a Delta Sky Club lounge at a specific airport.

naftiko: "0.5"
info:
  label: "Delta Sky Club Capacity Check"
  description: "Checks current occupancy and capacity of a Delta Sky Club lounge at a specific airport."
  tags:
    - customer-service
    - lounge
    - ground-ops
capability:
  exposes:
    - type: mcp
      namespace: lounge
      port: 8080
      tools:
        - name: check-sky-club
          description: "Check Delta Sky Club capacity."
          inputParameters:
            - name: station
              in: body
              type: string
              description: "Airport code."
            - name: terminal
              in: body
              type: string
              description: "Terminal."
          call: "lounge-api.get-capacity"
          with:
            station: "{{station}}"
            terminal: "{{terminal}}"
          outputParameters:
            - name: occupancy
              type: number
              mapping: "$.currentOccupancy"
            - name: capacity
              type: number
              mapping: "$.maxCapacity"
  consumes:
    - type: http
      namespace: lounge-api
      baseUri: "https://lounges.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_lounge_token"
      resources:
        - name: capacity
          path: "/sky-clubs/{{station}}/{{terminal}}"
          inputParameters:
            - name: station
              in: path
            - name: terminal
              in: path
          operations:
            - name: get-capacity
              method: GET

Coordinates recovery after a flight diversion including ground handling, passenger accommodations, crew rest, and rebooking.

naftiko: "0.5"
info:
  label: "Diversion Recovery Orchestrator"
  description: "Coordinates recovery after a flight diversion including ground handling, passenger accommodations, crew rest, and rebooking."
  tags:
    - flight-operations
    - customer-service
    - ground-ops
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: diversion
      port: 8080
      tools:
        - name: handle-diversion
          description: "Coordinate diversion recovery operations."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Diverted flight."
            - name: diversion_airport
              in: body
              type: string
              description: "Diversion airport."
            - name: reason
              in: body
              type: string
              description: "Diversion reason."
          steps:
            - name: arrange-handling
              type: call
              call: "ground-ops.request-handling"
              with:
                station: "{{diversion_airport}}"
                flight: "{{flight_number}}"
            - name: book-hotels
              type: call
              call: "hotel-api.book-accommodations"
              with:
                flight: "{{flight_number}}"
                station: "{{diversion_airport}}"
            - name: check-crew-rest
              type: call
              call: "crew-api.check-rest"
              with:
                flight: "{{flight_number}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Diversion: {{flight_number}} to {{diversion_airport}} — {{reason}}"
                priority: "1"
  consumes:
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: handling
          path: "/handling/request"
          operations:
            - name: request-handling
              method: POST
    - type: http
      namespace: hotel-api
      baseUri: "https://crew-services.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_services_token"
      resources:
        - name: accommodations
          path: "/accommodations/book"
          operations:
            - name: book-accommodations
              method: POST
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: rest
          path: "/crew/rest-check"
          operations:
            - name: check-rest
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

When a new hire is created in Workday, provisions Microsoft 365 access, creates a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message to the team channel.

naftiko: "0.5"
info:
  label: "Employee New Hire Onboarding"
  description: "When a new hire is created in Workday, provisions Microsoft 365 access, creates a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message to the team channel."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-employee-onboarding
          description: "Given a Workday employee ID, provision Microsoft 365 access, open a ServiceNow onboarding ticket, and send a Microsoft Teams welcome message to the new hire's team channel."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "Employee start date in ISO 8601 format."
            - name: department_team_id
              in: body
              type: string
              description: "Microsoft Teams team ID for the new hire's department."
          steps:
            - name: get-employee
              type: call
              call: workday.get-worker
              with:
                worker_id: "{{workday_employee_id}}"
            - name: provision-m365
              type: call
              call: msgraph.create-user
              with:
                displayName: "{{get-employee.full_name}}"
                userPrincipalName: "{{get-employee.work_email}}"
                department: "{{get-employee.department}}"
            - name: create-snow-ticket
              type: call
              call: servicenow.create-incident
              with:
                category: hr_onboarding
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                assigned_group: IT_Onboarding
            - name: welcome-message
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "{{department_team_id}}"
                channel_id: "$secrets.teams_general_channel_id"
                text: "Please welcome {{get-employee.full_name}} who joins us on {{start_date}}! IT onboarding ticket: {{create-snow-ticket.number}}"
  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
    - type: http
      namespace: msgraph
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Monitors critical ETL data pipeline health in the Delta analytics platform.

naftiko: "0.5"
info:
  label: "ETL Pipeline Health Check"
  description: "Monitors critical ETL data pipeline health in the Delta analytics platform."
  tags:
    - data-engineering
    - monitoring
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: pipeline
      port: 8080
      tools:
        - name: check-pipeline
          description: "Check ETL pipeline status."
          inputParameters:
            - name: pipeline_name
              in: body
              type: string
              description: "Pipeline name."
          call: "data-api.get-pipeline-status"
          with:
            pipeline: "{{pipeline_name}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: last_run
              type: string
              mapping: "$.lastRunTime"
  consumes:
    - type: http
      namespace: data-api
      baseUri: "https://data-platform.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_data_token"
      resources:
        - name: pipelines
          path: "/pipelines/{{pipeline}}/status"
          inputParameters:
            - name: pipeline
              in: path
          operations:
            - name: get-pipeline-status
              method: GET

Generates fleet utilization summary showing block hours, cycles, and aircraft availability for a fleet type.

naftiko: "0.5"
info:
  label: "Fleet Utilization Report"
  description: "Generates fleet utilization summary showing block hours, cycles, and aircraft availability for a fleet type."
  tags:
    - fleet-management
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: fleet-analytics
      port: 8080
      tools:
        - name: get-fleet-utilization
          description: "Retrieve fleet utilization metrics."
          inputParameters:
            - name: fleet_type
              in: body
              type: string
              description: "Fleet type."
            - name: start_date
              in: body
              type: string
              description: "Start date."
            - name: end_date
              in: body
              type: string
              description: "End date."
          call: "fleet-api.get-utilization"
          with:
            fleet: "{{fleet_type}}"
            start: "{{start_date}}"
            end: "{{end_date}}"
          outputParameters:
            - name: total_block_hours
              type: number
              mapping: "$.totalBlockHours"
            - name: avg_daily_utilization
              type: number
              mapping: "$.avgDailyUtilization"
  consumes:
    - type: http
      namespace: fleet-api
      baseUri: "https://fleet.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_fleet_token"
      resources:
        - name: utilization
          path: "/utilization/report"
          operations:
            - name: get-utilization
              method: POST

Assigns cabin crew positions for a flight based on seniority and qualifications.

naftiko: "0.5"
info:
  label: "Flight Attendant Position Assignment"
  description: "Assigns cabin crew positions for a flight based on seniority and qualifications."
  tags:
    - crew-scheduling
    - flight-operations
capability:
  exposes:
    - type: mcp
      namespace: fa-positions
      port: 8080
      tools:
        - name: assign-positions
          description: "Generate FA position assignments."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight."
            - name: flight_date
              in: body
              type: string
              description: "Date."
          call: "crew-api.assign-fa"
          with:
            flight: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: assignments
              type: array
              mapping: "$.positionAssignments"
            - name: lead
              type: string
              mapping: "$.leadFA"
  consumes:
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: fa
          path: "/flights/{{flight}}/fa-positions"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: assign-fa
              method: POST

Retrieves the assigned crew roster for a specific Delta flight.

naftiko: "0.5"
info:
  label: "Flight Crew Assignment Lookup"
  description: "Retrieves the assigned crew roster for a specific Delta flight."
  tags:
    - crew-scheduling
    - flight-operations
capability:
  exposes:
    - type: mcp
      namespace: crew-roster
      port: 8080
      tools:
        - name: get-crew-assignment
          description: "Look up assigned crew for a flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
          call: "crew-api.get-assignment"
          with:
            flight: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: captain
              type: string
              mapping: "$.captain.name"
            - name: first_officer
              type: string
              mapping: "$.firstOfficer.name"
            - name: cabin_crew
              type: array
              mapping: "$.cabinCrew"
  consumes:
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: assignments
          path: "/flights/{{flight}}/crew"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-assignment
              method: GET

Determines and issues compensation for passengers on significantly delayed flights based on regulations.

naftiko: "0.5"
info:
  label: "Flight Delay Compensation Orchestrator"
  description: "Determines and issues compensation for passengers on significantly delayed flights based on regulations."
  tags:
    - customer-service
    - compliance
    - loyalty
    - notifications
capability:
  exposes:
    - type: mcp
      namespace: delay-comp
      port: 8080
      tools:
        - name: process-delay-compensation
          description: "Process delay compensation for a flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: delay_minutes
              in: body
              type: number
              description: "Delay in minutes."
            - name: route_type
              in: body
              type: string
              description: "Route type."
          steps:
            - name: get-passengers
              type: call
              call: "pss.get-passengers"
              with:
                flight: "{{flight_number}}"
            - name: calc-compensation
              type: call
              call: "compensation-api.calculate"
              with:
                delay: "{{delay_minutes}}"
                route: "{{route_type}}"
            - name: issue-vouchers
              type: call
              call: "compensation-api.issue-vouchers"
              with:
                passengers: "{{get-passengers.passengers}}"
                amount: "{{calc-compensation.amount}}"
            - name: notify
              type: call
              call: "notification-api.batch-notify"
              with:
                passengers: "{{get-passengers.passengers}}"
                template: "delay_compensation"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: passengers
          path: "/flights/{{flight}}/passengers"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-passengers
              method: GET
    - type: http
      namespace: compensation-api
      baseUri: "https://compensation.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_compensation_token"
      resources:
        - name: calculate
          path: "/calculate"
          operations:
            - name: calculate
              method: POST
        - name: vouchers
          path: "/vouchers/batch"
          operations:
            - name: issue-vouchers
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://notifications.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_notification_token"
      resources:
        - name: batch
          path: "/batch/notify"
          operations:
            - name: batch-notify
              method: POST

Orchestrates pre-departure checks including weather, crew legality, aircraft status, and weight/balance before generating a dispatch release.

naftiko: "0.5"
info:
  label: "Flight Dispatch Release Orchestrator"
  description: "Orchestrates pre-departure checks including weather, crew legality, aircraft status, and weight/balance before generating a dispatch release."
  tags:
    - dispatch
    - flight-operations
    - safety
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: dispatch
      port: 8080
      tools:
        - name: process-dispatch-release
          description: "Run all pre-departure checks and generate dispatch release."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: tail_number
              in: body
              type: string
              description: "Aircraft tail number."
            - name: captain_id
              in: body
              type: string
              description: "Captain employee ID."
          steps:
            - name: check-weather
              type: call
              call: "dispatch-api.get-route-weather"
              with:
                flight: "{{flight_number}}"
            - name: verify-crew
              type: call
              call: "crew-api.get-duty-status"
              with:
                employee_id: "{{captain_id}}"
            - name: check-mx
              type: call
              call: "mx-api.get-status"
              with:
                tail: "{{tail_number}}"
            - name: generate-release
              type: call
              call: "dispatch-api.create-release"
              with:
                flight: "{{flight_number}}"
                weather_ok: "{{check-weather.safe}}"
                crew_legal: "{{verify-crew.isCompliant}}"
                aircraft_ok: "{{check-mx.maintenanceStatus}}"
  consumes:
    - type: http
      namespace: dispatch-api
      baseUri: "https://dispatch.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_dispatch_token"
      resources:
        - name: weather
          path: "/weather/route/{{flight}}"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-route-weather
              method: GET
        - name: releases
          path: "/releases"
          operations:
            - name: create-release
              method: POST
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: duty
          path: "/crew/{{employee_id}}/duty-status"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-duty-status
              method: GET
    - type: http
      namespace: mx-api
      baseUri: "https://maintenance.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_mx_token"
      resources:
        - name: aircraft
          path: "/aircraft/{{tail}}/status"
          inputParameters:
            - name: tail
              in: path
          operations:
            - name: get-status
              method: GET

When a flight is cancelled or significantly delayed, retrieves affected passenger records from Salesforce, sends SMS notifications via Twilio, and creates a ServiceNow operations task for rebooking.

naftiko: "0.5"
info:
  label: "Flight Disruption Customer Notification"
  description: "When a flight is cancelled or significantly delayed, retrieves affected passenger records from Salesforce, sends SMS notifications via Twilio, and creates a ServiceNow operations task for rebooking."
  tags:
    - operations
    - customer-experience
    - salesforce
    - twilio
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: flight-ops
      port: 8080
      tools:
        - name: handle-flight-disruption
          description: "Given a flight number and disruption type (cancellation or delay), retrieve affected passengers from Salesforce, send SMS alerts via Twilio, and create a ServiceNow task for rebooking operations."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Delta flight number affected by the disruption (e.g. DL1234)."
            - name: disruption_type
              in: body
              type: string
              description: "Type of disruption: cancellation or delay."
            - name: new_departure_time
              in: body
              type: string
              description: "Updated departure time in ISO 8601 format, or null for cancellations."
            - name: origin_airport
              in: body
              type: string
              description: "IATA code of the origin airport (e.g. ATL)."
            - name: destination_airport
              in: body
              type: string
              description: "IATA code of the destination airport (e.g. JFK)."
          steps:
            - name: get-passengers
              type: call
              call: salesforce.search-contacts
              with:
                flight_number: "{{flight_number}}"
                status: booked
            - name: send-sms-alerts
              type: call
              call: twilio.send-message
              with:
                from: "$secrets.twilio_from_number"
                body: "Delta Alert: Flight {{flight_number}} from {{origin_airport}} to {{destination_airport}} has been {{disruption_type}}. New departure: {{new_departure_time}}. Visit delta.com or call 1-800-221-1212 to rebook."
            - name: create-ops-task
              type: call
              call: servicenow.create-task
              with:
                category: flight_disruption
                short_description: "Rebooking required: {{flight_number}} {{disruption_type}}"
                description: "{{disruption_type}} for {{flight_number}} {{origin_airport}}-{{destination_airport}}. Affected passengers notified via SMS."
                assigned_group: Airport_Operations
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://delta.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/query"
          inputParameters:
            - name: q
              in: query
          operations:
            - name: search-contacts
              method: GET
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01"
      authentication:
        type: basic
        username: "$secrets.twilio_account_sid"
        password: "$secrets.twilio_auth_token"
      resources:
        - name: messages
          path: "/Accounts/{{account_sid}}/Messages"
          inputParameters:
            - name: account_sid
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST

Retrieves load factor and booking data for a specific flight across cabin classes.

naftiko: "0.5"
info:
  label: "Flight Load Factor Report"
  description: "Retrieves load factor and booking data for a specific flight across cabin classes."
  tags:
    - revenue-management
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: load-factor
      port: 8080
      tools:
        - name: get-load-factor
          description: "Get load factor data for a flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
          call: "analytics-api.get-load-factor"
          with:
            flight: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: overall_load_factor
              type: number
              mapping: "$.overallLoadFactor"
            - name: delta_one_load
              type: number
              mapping: "$.deltaOneLoad"
            - name: main_cabin_load
              type: number
              mapping: "$.mainCabinLoad"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://analytics.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_analytics_token"
      resources:
        - name: load-factor
          path: "/flights/{{flight}}/load-factor"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-load-factor
              method: GET

Checks filing status of a flight plan with ATC.

naftiko: "0.5"
info:
  label: "Flight Plan Filing Status"
  description: "Checks filing status of a flight plan with ATC."
  tags:
    - dispatch
    - flight-operations
capability:
  exposes:
    - type: mcp
      namespace: flight-plan
      port: 8080
      tools:
        - name: get-plan-status
          description: "Check flight plan filing status."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
          call: "dispatch-api.get-plan-status"
          with:
            flight: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.filingStatus"
            - name: route
              type: string
              mapping: "$.filedRoute"
  consumes:
    - type: http
      namespace: dispatch-api
      baseUri: "https://dispatch.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_dispatch_token"
      resources:
        - name: plans
          path: "/flight-plans/{{flight}}/status"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-plan-status
              method: GET

Retrieves real-time flight status for a Delta flight including departure, arrival, gate, and delay information.

naftiko: "0.5"
info:
  label: "Flight Status Real-Time Lookup"
  description: "Retrieves real-time flight status for a Delta flight including departure, arrival, gate, and delay information."
  tags:
    - flight-operations
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: flight-ops
      port: 8080
      tools:
        - name: get-flight-status
          description: "Look up current Delta flight status by flight number and date."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Delta flight number (e.g., DL1234)."
            - name: flight_date
              in: body
              type: string
              description: "Date of flight in YYYY-MM-DD format."
          call: "delta-api.get-status"
          with:
            flight_number: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.flightStatus"
            - name: departure_time
              type: string
              mapping: "$.departureTime"
            - name: arrival_time
              type: string
              mapping: "$.arrivalTime"
            - name: gate
              type: string
              mapping: "$.gate"
  consumes:
    - type: http
      namespace: delta-api
      baseUri: "https://api.delta.com/v1/flights"
      authentication:
        type: bearer
        token: "$secrets.delta_api_token"
      resources:
        - name: status
          path: "/status/{{flight_number}}/{{date}}"
          inputParameters:
            - name: flight_number
              in: path
            - name: date
              in: path
          operations:
            - name: get-status
              method: GET

Retrieves actual fuel burn data for a completed flight with planned vs actual comparison.

naftiko: "0.5"
info:
  label: "Flight Fuel Burn Lookup"
  description: "Retrieves actual fuel burn data for a completed flight with planned vs actual comparison."
  tags:
    - fuel-management
    - analytics
    - flight-operations
capability:
  exposes:
    - type: mcp
      namespace: fuel-burn
      port: 8080
      tools:
        - name: get-fuel-burn
          description: "Get actual fuel burn for a flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
          call: "fuel-api.get-burn"
          with:
            flight: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: planned
              type: number
              mapping: "$.plannedBurn"
            - name: actual
              type: number
              mapping: "$.actualBurn"
            - name: variance
              type: number
              mapping: "$.variancePercent"
  consumes:
    - type: http
      namespace: fuel-api
      baseUri: "https://analytics.delta.com/api/v1/fuel"
      authentication:
        type: bearer
        token: "$secrets.delta_analytics_token"
      resources:
        - name: burn
          path: "/flights/{{flight}}/burn"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-burn
              method: GET

Generates fuel cost analysis for a fleet segment showing tankering opportunities, hedging positions, and cost-per-gallon trends.

naftiko: "0.5"
info:
  label: "Fuel Cost Optimization Report"
  description: "Generates fuel cost analysis for a fleet segment showing tankering opportunities, hedging positions, and cost-per-gallon trends."
  tags:
    - fuel-management
    - analytics
    - cost-optimization
capability:
  exposes:
    - type: mcp
      namespace: fuel-analytics
      port: 8080
      tools:
        - name: get-fuel-report
          description: "Generate a fuel cost optimization report."
          inputParameters:
            - name: fleet_type
              in: body
              type: string
              description: "Fleet type."
            - name: start_date
              in: body
              type: string
              description: "Start date."
            - name: end_date
              in: body
              type: string
              description: "End date."
          call: "fuel-api.query-costs"
          with:
            fleet: "{{fleet_type}}"
            start: "{{start_date}}"
            end: "{{end_date}}"
          outputParameters:
            - name: total_cost
              type: number
              mapping: "$.totalCost"
            - name: avg_price_per_gallon
              type: number
              mapping: "$.avgPricePerGallon"
            - name: tankering_savings
              type: number
              mapping: "$.tankeringSavings"
  consumes:
    - type: http
      namespace: fuel-api
      baseUri: "https://analytics.delta.com/api/v1/fuel"
      authentication:
        type: bearer
        token: "$secrets.delta_analytics_token"
      resources:
        - name: cost-analysis
          path: "/cost-analysis"
          operations:
            - name: query-costs
              method: POST

Recommends optimal gate assignments for arriving flights minimizing passenger connection times and ground equipment repositioning.

naftiko: "0.5"
info:
  label: "Gate Assignment Optimizer"
  description: "Recommends optimal gate assignments for arriving flights minimizing passenger connection times and ground equipment repositioning."
  tags:
    - ground-ops
    - flight-operations
    - optimization
capability:
  exposes:
    - type: mcp
      namespace: gate-mgmt
      port: 8080
      tools:
        - name: optimize-gate
          description: "Get optimized gate recommendation for an arriving flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Arriving flight number."
            - name: station
              in: body
              type: string
              description: "Airport station."
            - name: arrival_time
              in: body
              type: string
              description: "Expected arrival time."
          call: "gate-api.get-recommendation"
          with:
            flight: "{{flight_number}}"
            station: "{{station}}"
            time: "{{arrival_time}}"
          outputParameters:
            - name: recommended_gate
              type: string
              mapping: "$.recommendedGate"
            - name: connection_score
              type: number
              mapping: "$.connectionScore"
  consumes:
    - type: http
      namespace: gate-api
      baseUri: "https://groundops.delta.com/api/v1/gates"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: optimize
          path: "/optimize"
          operations:
            - name: get-recommendation
              method: POST

When a GitHub Actions pipeline fails on a production service repository, creates a Datadog event and opens a Jira bug for the engineering team to remediate.

naftiko: "0.5"
info:
  label: "GitHub DevOps Pipeline Failure Alert"
  description: "When a GitHub Actions pipeline fails on a production service repository, creates a Datadog event and opens a Jira bug for the engineering team to remediate."
  tags:
    - devops
    - cicd
    - github
    - datadog
    - jira
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a GitHub Actions workflow failure on a production service, create a Datadog deployment event and open a Jira bug with full failure context for the engineering team."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "GitHub repository name where the pipeline failure occurred."
            - name: workflow_name
              in: body
              type: string
              description: "Name of the failed GitHub Actions workflow."
            - name: run_id
              in: body
              type: string
              description: "GitHub Actions workflow run ID."
            - name: commit_sha
              in: body
              type: string
              description: "Git commit SHA that triggered the failing run."
            - name: branch
              in: body
              type: string
              description: "Git branch name where the failure occurred."
          steps:
            - name: create-dd-event
              type: call
              call: datadog.create-event
              with:
                title: "CI failure: {{workflow_name}} on {{branch}}"
                text: "Run {{run_id}} failed at commit {{commit_sha}} in {{repo_name}}"
                alert_type: error
                tags: "env:ci,repo:{{repo_name}}"
            - name: create-jira-bug
              type: call
              call: jira.create-issue
              with:
                project_key: ENG
                issuetype: Bug
                summary: "[CI Failure] {{repo_name}} / {{workflow_name}} on {{branch}}"
                description: "Run: {{run_id}}\nBranch: {{branch}}\nCommit: {{commit_sha}}\nDatadog: {{create-dd-event.url}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: DD-API-KEY
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://delta.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves operational status of ground support equipment at a Delta station.

naftiko: "0.5"
info:
  label: "Ground Equipment Status"
  description: "Retrieves operational status of ground support equipment at a Delta station."
  tags:
    - ground-ops
    - equipment
    - tracking
capability:
  exposes:
    - type: mcp
      namespace: gse
      port: 8080
      tools:
        - name: get-gse-status
          description: "Check ground equipment status at a station."
          inputParameters:
            - name: station
              in: body
              type: string
              description: "Station."
            - name: equipment_type
              in: body
              type: string
              description: "Equipment type."
          call: "ground-ops.get-equipment"
          with:
            station: "{{station}}"
            type: "{{equipment_type}}"
          outputParameters:
            - name: available
              type: number
              mapping: "$.available"
            - name: in_use
              type: number
              mapping: "$.inUse"
  consumes:
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: equipment
          path: "/equipment/status"
          operations:
            - name: get-equipment
              method: POST

Retrieves ground transportation options at a Delta served airport.

naftiko: "0.5"
info:
  label: "Ground Transportation Lookup"
  description: "Retrieves ground transportation options at a Delta served airport."
  tags:
    - customer-service
    - ground-ops
    - partnerships
capability:
  exposes:
    - type: mcp
      namespace: ground-transport
      port: 8080
      tools:
        - name: get-transport
          description: "Get ground transportation options."
          inputParameters:
            - name: station
              in: body
              type: string
              description: "Airport."
          call: "transport-api.get-options"
          with:
            station: "{{station}}"
          outputParameters:
            - name: rental_cars
              type: array
              mapping: "$.rentalCars"
            - name: rideshare
              type: array
              mapping: "$.rideshare"
  consumes:
    - type: http
      namespace: transport-api
      baseUri: "https://partnerships.delta.com/api/v1/transport"
      authentication:
        type: bearer
        token: "$secrets.delta_partnerships_token"
      resources:
        - name: options
          path: "/airports/{{station}}/options"
          inputParameters:
            - name: station
              in: path
          operations:
            - name: get-options
              method: GET

Validates hazardous materials cargo against IATA dangerous goods regulations.

naftiko: "0.5"
info:
  label: "Hazmat Cargo Compliance Check"
  description: "Validates hazardous materials cargo against IATA dangerous goods regulations."
  tags:
    - cargo
    - compliance
    - safety
capability:
  exposes:
    - type: mcp
      namespace: hazmat
      port: 8080
      tools:
        - name: check-hazmat
          description: "Verify hazmat cargo compliance."
          inputParameters:
            - name: awb_number
              in: body
              type: string
              description: "Air waybill."
            - name: un_number
              in: body
              type: string
              description: "UN classification."
          call: "cargo-api.validate-hazmat"
          with:
            awb: "{{awb_number}}"
            un_number: "{{un_number}}"
          outputParameters:
            - name: compliant
              type: boolean
              mapping: "$.isCompliant"
            - name: violations
              type: array
              mapping: "$.violations"
  consumes:
    - type: http
      namespace: cargo-api
      baseUri: "https://cargo.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_cargo_token"
      resources:
        - name: hazmat
          path: "/hazmat/validate"
          operations:
            - name: validate-hazmat
              method: POST

Retrieves inflight WiFi performance metrics for an aircraft including uptime, bandwidth, and passenger connections.

naftiko: "0.5"
info:
  label: "Inflight WiFi Performance Report"
  description: "Retrieves inflight WiFi performance metrics for an aircraft including uptime, bandwidth, and passenger connections."
  tags:
    - inflight-services
    - technology
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: wifi
      port: 8080
      tools:
        - name: get-wifi-report
          description: "Pull WiFi metrics for an aircraft."
          inputParameters:
            - name: tail_number
              in: body
              type: string
              description: "Tail number."
          call: "connectivity-api.get-metrics"
          with:
            tail: "{{tail_number}}"
          outputParameters:
            - name: uptime_pct
              type: number
              mapping: "$.uptimePercent"
            - name: avg_bandwidth
              type: number
              mapping: "$.avgBandwidthMbps"
  consumes:
    - type: http
      namespace: connectivity-api
      baseUri: "https://connectivity.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_connectivity_token"
      resources:
        - name: metrics
          path: "/aircraft/{{tail}}/wifi"
          inputParameters:
            - name: tail
              in: path
          operations:
            - name: get-metrics
              method: GET

Looks up interline baggage agreements between Delta and partner airlines.

naftiko: "0.5"
info:
  label: "Interline Baggage Agreement Lookup"
  description: "Looks up interline baggage agreements between Delta and partner airlines."
  tags:
    - customer-service
    - baggage
    - partnerships
capability:
  exposes:
    - type: mcp
      namespace: interline
      port: 8080
      tools:
        - name: get-baggage-rules
          description: "Look up interline baggage agreement."
          inputParameters:
            - name: partner
              in: body
              type: string
              description: "Partner airline code."
          call: "partnership-api.get-baggage"
          with:
            partner: "{{partner}}"
          outputParameters:
            - name: through_check
              type: boolean
              mapping: "$.throughCheckEligible"
            - name: free_bags
              type: number
              mapping: "$.freeBags"
  consumes:
    - type: http
      namespace: partnership-api
      baseUri: "https://partnerships.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_partnerships_token"
      resources:
        - name: baggage
          path: "/interline/baggage/{{partner}}"
          inputParameters:
            - name: partner
              in: path
          operations:
            - name: get-baggage
              method: GET

When a flight is cancelled, identifies affected passengers, finds rebooking alternatives, processes rebookings, and sends customer notifications with new itineraries.

naftiko: "0.5"
info:
  label: "Irregular Ops Rebooking Orchestrator"
  description: "When a flight is cancelled, identifies affected passengers, finds rebooking alternatives, processes rebookings, and sends customer notifications with new itineraries."
  tags:
    - flight-operations
    - customer-service
    - rebooking
    - notifications
capability:
  exposes:
    - type: mcp
      namespace: irrops
      port: 8080
      tools:
        - name: handle-irrops-rebooking
          description: "Rebook passengers affected by a flight cancellation or major delay."
          inputParameters:
            - name: cancelled_flight
              in: body
              type: string
              description: "Cancelled flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
            - name: reason
              in: body
              type: string
              description: "Cancellation reason."
          steps:
            - name: get-affected-passengers
              type: call
              call: "pss.get-passengers"
              with:
                flight_number: "{{cancelled_flight}}"
                date: "{{flight_date}}"
            - name: find-alternatives
              type: call
              call: "pss.search-alternatives"
              with:
                origin: "{{get-affected-passengers.origin}}"
                destination: "{{get-affected-passengers.destination}}"
                date: "{{flight_date}}"
            - name: execute-rebookings
              type: call
              call: "pss.batch-rebook"
              with:
                passengers: "{{get-affected-passengers.pnrs}}"
                alternatives: "{{find-alternatives.options}}"
            - name: send-notifications
              type: call
              call: "notification-api.batch-notify"
              with:
                passengers: "{{get-affected-passengers.passengers}}"
                template: "irrops_rebooking"
                reason: "{{reason}}"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: passengers
          path: "/flights/{{flight_number}}/passengers"
          inputParameters:
            - name: flight_number
              in: path
          operations:
            - name: get-passengers
              method: GET
        - name: alternatives
          path: "/availability/search"
          operations:
            - name: search-alternatives
              method: POST
        - name: rebooking
          path: "/rebooking/batch"
          operations:
            - name: batch-rebook
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://notifications.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_notification_token"
      resources:
        - name: batch
          path: "/batch/notify"
          operations:
            - name: batch-notify
              method: POST

Retrieves IT asset details from ServiceNow CMDB.

naftiko: "0.5"
info:
  label: "ServiceNow IT Asset Lookup"
  description: "Retrieves IT asset details from ServiceNow CMDB."
  tags:
    - it-operations
    - servicenow
    - asset-management
capability:
  exposes:
    - type: mcp
      namespace: it-assets
      port: 8080
      tools:
        - name: get-asset
          description: "Look up an IT asset."
          inputParameters:
            - name: asset_tag
              in: body
              type: string
              description: "Asset tag."
          call: "servicenow.get-asset"
          with:
            asset_tag: "{{asset_tag}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.result.name"
            - name: assigned_to
              type: string
              mapping: "$.result.assigned_to.display_value"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: cmdb
          path: "/table/alm_hardware"
          operations:
            - name: get-asset
              method: GET

When Datadog detects a P1 infrastructure failure, creates a ServiceNow critical incident, pages the on-call SRE via PagerDuty, and notifies the IT operations Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "IT Infrastructure Incident P1 Response"
  description: "When Datadog detects a P1 infrastructure failure, creates a ServiceNow critical incident, pages the on-call SRE via PagerDuty, and notifies the IT operations Microsoft Teams channel."
  tags:
    - itsm
    - incident-response
    - datadog
    - servicenow
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: it-ops
      port: 8080
      tools:
        - name: handle-p1-incident
          description: "Given a Datadog P1 infrastructure alert, create a ServiceNow critical incident, page the SRE on-call team via PagerDuty, and post to the IT operations Microsoft Teams channel."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "Datadog monitor ID that triggered the P1 alert."
            - name: service_affected
              in: body
              type: string
              description: "Name of the affected infrastructure service."
            - name: alert_message
              in: body
              type: string
              description: "Full alert message text from Datadog."
          steps:
            - name: create-snow-incident
              type: call
              call: servicenow.create-incident
              with:
                category: infrastructure
                impact: 1
                urgency: 1
                short_description: "P1: {{service_affected}} — {{alert_message}}"
                assigned_group: SRE_OnCall
            - name: page-oncall
              type: call
              call: pagerduty.create-incident
              with:
                title: "P1 Infrastructure: {{service_affected}}"
                urgency: high
                service_id: "$secrets.pagerduty_infra_service_id"
            - name: notify-ops
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_it_ops_team_id"
                channel_id: "$secrets.teams_it_ops_channel_id"
                text: "P1 INCIDENT: {{service_affected}} | SNOW: {{create-snow-incident.number}} | PD: {{page-oncall.html_url}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: Authorization
        value: "$secrets.pagerduty_api_key"
        placement: header
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves the current sprint status for a technology project from Jira and posts the sprint health digest to the engineering Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Jira Technology Project Sprint Status"
  description: "Retrieves the current sprint status for a technology project from Jira and posts the sprint health digest to the engineering Microsoft Teams channel."
  tags:
    - devops
    - engineering
    - jira
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: project-reporting
      port: 8080
      tools:
        - name: digest-sprint-status
          description: "Given a Jira board ID and sprint ID, retrieve sprint progress metrics and post a status update to the engineering Microsoft Teams channel for sprint review ceremonies."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "Jira board ID for the technology project."
            - name: sprint_id
              in: body
              type: string
              description: "Jira sprint ID to report on."
            - name: teams_channel_id
              in: body
              type: string
              description: "Microsoft Teams channel ID to post the sprint status digest."
          steps:
            - name: get-sprint
              type: call
              call: jira.get-sprint-issues
              with:
                board_id: "{{board_id}}"
                sprint_id: "{{sprint_id}}"
            - name: post-digest
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_engineering_team_id"
                channel_id: "{{teams_channel_id}}"
                text: "Sprint status for board {{board_id}} sprint {{sprint_id}}: {{get-sprint.total}} total issues | {{get-sprint.done}} done | {{get-sprint.in_progress}} in progress"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://delta.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: sprint-issues
          path: "/board/{{board_id}}/sprint/{{sprint_id}}/issue"
          inputParameters:
            - name: board_id
              in: path
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint-issues
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Creates a lavatory service request for aircraft turnaround servicing.

naftiko: "0.5"
info:
  label: "Lavatory Service Request"
  description: "Creates a lavatory service request for aircraft turnaround servicing."
  tags:
    - ground-ops
    - maintenance
capability:
  exposes:
    - type: mcp
      namespace: lav
      port: 8080
      tools:
        - name: request-lav-service
          description: "Submit lavatory service request."
          inputParameters:
            - name: tail_number
              in: body
              type: string
              description: "Tail number."
            - name: gate
              in: body
              type: string
              description: "Gate."
            - name: station
              in: body
              type: string
              description: "Station."
          call: "ground-ops.create-lav-request"
          with:
            tail: "{{tail_number}}"
            gate: "{{gate}}"
            station: "{{station}}"
          outputParameters:
            - name: request_id
              type: string
              mapping: "$.requestId"
  consumes:
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: lav
          path: "/services/lavatory"
          operations:
            - name: create-lav-request
              method: POST

Retrieves LinkedIn campaign performance metrics for Delta's employer brand campaigns and posts a monthly digest to the HR marketing Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "LinkedIn Employer Brand Campaign Digest"
  description: "Retrieves LinkedIn campaign performance metrics for Delta's employer brand campaigns and posts a monthly digest to the HR marketing Microsoft Teams channel."
  tags:
    - marketing
    - hr
    - linkedin
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: employer-brand
      port: 8080
      tools:
        - name: digest-linkedin-employer-brand
          description: "Given a LinkedIn organization URN and date range, retrieve employer brand campaign impressions and engagement metrics, then post the digest to the HR marketing Microsoft Teams channel."
          inputParameters:
            - name: organization_urn
              in: body
              type: string
              description: "LinkedIn organization URN for Delta Air Lines."
            - name: start_date
              in: body
              type: string
              description: "ISO 8601 start date for the campaign performance period."
            - name: end_date
              in: body
              type: string
              description: "ISO 8601 end date for the campaign performance period."
          steps:
            - name: get-org-stats
              type: call
              call: linkedin.get-organization-statistics
              with:
                organization_urn: "{{organization_urn}}"
                start: "{{start_date}}"
                end: "{{end_date}}"
            - name: post-digest
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_hr_team_id"
                channel_id: "$secrets.teams_hr_marketing_channel_id"
                text: "LinkedIn Employer Brand digest ({{start_date}} to {{end_date}}): Impressions: {{get-org-stats.totalPageStatistics.views.allPageViews.pageViews}} | Followers: {{get-org-stats.followersCount}}"
  consumes:
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: organization-statistics
          path: "/organizationalEntityShareStatistics"
          inputParameters:
            - name: organization_urn
              in: query
            - name: start
              in: query
            - name: end
              in: query
          operations:
            - name: get-organization-statistics
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Files a lost baggage claim by creating a WorldTracer record, logging a Salesforce case, and sending the passenger a tracking SMS.

naftiko: "0.5"
info:
  label: "Lost Baggage Claim Orchestrator"
  description: "Files a lost baggage claim by creating a WorldTracer record, logging a Salesforce case, and sending the passenger a tracking SMS."
  tags:
    - customer-service
    - baggage
    - salesforce
    - notifications
capability:
  exposes:
    - type: mcp
      namespace: lost-baggage
      port: 8080
      tools:
        - name: file-lost-baggage
          description: "Process a lost baggage claim through all systems."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "Passenger name record."
            - name: bag_tag
              in: body
              type: string
              description: "Bag tag number."
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
          steps:
            - name: create-tracer
              type: call
              call: "baggage-api.create-tracer"
              with:
                pnr: "{{pnr}}"
                bag_tag: "{{bag_tag}}"
                flight: "{{flight_number}}"
            - name: create-sf-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Lost bag — {{bag_tag}} on {{flight_number}}"
                description: "PNR: {{pnr}} | Tracer: {{create-tracer.tracer_id}}"
                priority: "High"
            - name: send-tracking-link
              type: call
              call: "notification-api.send-sms"
              with:
                pnr: "{{pnr}}"
                message: "Your lost baggage claim is filed. Track: https://delta.com/baggage/track/{{create-tracer.tracer_id}}"
  consumes:
    - type: http
      namespace: baggage-api
      baseUri: "https://baggage.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_baggage_token"
      resources:
        - name: tracers
          path: "/worldtracer/create"
          operations:
            - name: create-tracer
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://delta.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://notifications.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_notification_token"
      resources:
        - name: sms
          path: "/sms/send"
          operations:
            - name: send-sms
              method: POST

Processes miles transfer between SkyMiles and SkyTeam partner loyalty programs.

naftiko: "0.5"
info:
  label: "Loyalty Partner Miles Transfer"
  description: "Processes miles transfer between SkyMiles and SkyTeam partner loyalty programs."
  tags:
    - loyalty
    - skymiles
    - partnerships
capability:
  exposes:
    - type: mcp
      namespace: miles-transfer
      port: 8080
      tools:
        - name: transfer-miles
          description: "Transfer miles to a partner program."
          inputParameters:
            - name: skymiles_number
              in: body
              type: string
              description: "SkyMiles number."
            - name: partner_program
              in: body
              type: string
              description: "Partner program code."
            - name: amount
              in: body
              type: number
              description: "Miles to transfer."
          call: "loyalty-api.transfer-miles"
          with:
            member_id: "{{skymiles_number}}"
            partner: "{{partner_program}}"
            amount: "{{amount}}"
          outputParameters:
            - name: transfer_id
              type: string
              mapping: "$.transferId"
            - name: new_balance
              type: number
              mapping: "$.newBalance"
  consumes:
    - type: http
      namespace: loyalty-api
      baseUri: "https://loyalty.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_loyalty_token"
      resources:
        - name: transfers
          path: "/miles/transfer"
          operations:
            - name: transfer-miles
              method: POST

Queries spare parts availability at a Delta TechOps maintenance station.

naftiko: "0.5"
info:
  label: "Maintenance Parts Inventory Check"
  description: "Queries spare parts availability at a Delta TechOps maintenance station."
  tags:
    - maintenance
    - sap
    - inventory
capability:
  exposes:
    - type: mcp
      namespace: parts
      port: 8080
      tools:
        - name: check-parts
          description: "Check spare parts availability."
          inputParameters:
            - name: part_number
              in: body
              type: string
              description: "Part number."
            - name: station
              in: body
              type: string
              description: "Station."
          call: "sap.get-stock"
          with:
            material: "{{part_number}}"
            plant: "{{station}}"
          outputParameters:
            - name: quantity
              type: number
              mapping: "$.d.UnrestrictedStock"
            - name: lead_time
              type: number
              mapping: "$.d.PlannedDeliveryDays"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://delta-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: stock
          path: "/A_MatlStkInAcctMod"
          operations:
            - name: get-stock
              method: GET

Creates a maintenance work order in the Delta TechOps system for a specific aircraft and discrepancy.

naftiko: "0.5"
info:
  label: "Maintenance Work Order Creation"
  description: "Creates a maintenance work order in the Delta TechOps system for a specific aircraft and discrepancy."
  tags:
    - maintenance
    - flight-operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: mx-orders
      port: 8080
      tools:
        - name: create-work-order
          description: "Create a maintenance work order."
          inputParameters:
            - name: tail_number
              in: body
              type: string
              description: "Tail number."
            - name: discrepancy
              in: body
              type: string
              description: "Discrepancy description."
            - name: priority
              in: body
              type: string
              description: "Priority (routine, urgent, AOG)."
          call: "mx-api.create-work-order"
          with:
            tail: "{{tail_number}}"
            description: "{{discrepancy}}"
            priority: "{{priority}}"
          outputParameters:
            - name: work_order_id
              type: string
              mapping: "$.workOrderId"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: mx-api
      baseUri: "https://maintenance.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_mx_token"
      resources:
        - name: work-orders
          path: "/work-orders"
          operations:
            - name: create-work-order
              method: POST

Coordinates inflight medical emergency response by contacting MedLink, identifying diversion airports, notifying stations, and creating incident reports.

naftiko: "0.5"
info:
  label: "Medical Emergency Response Orchestrator"
  description: "Coordinates inflight medical emergency response by contacting MedLink, identifying diversion airports, notifying stations, and creating incident reports."
  tags:
    - safety
    - flight-operations
    - emergency
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: medical-emergency
      port: 8080
      tools:
        - name: handle-medical-emergency
          description: "Coordinate inflight medical emergency response."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: emergency_type
              in: body
              type: string
              description: "Medical emergency type."
            - name: position
              in: body
              type: string
              description: "Current aircraft position."
          steps:
            - name: contact-medlink
              type: call
              call: "medlink-api.initiate-consult"
              with:
                flight: "{{flight_number}}"
                emergency: "{{emergency_type}}"
            - name: find-diversions
              type: call
              call: "dispatch-api.find-diversions"
              with:
                position: "{{position}}"
            - name: alert-station
              type: call
              call: "ground-ops.alert-station"
              with:
                station: "{{find-diversions.nearest_airport}}"
                flight: "{{flight_number}}"
                reason: "Medical: {{emergency_type}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Medical emergency on {{flight_number}}: {{emergency_type}}"
                category: "safety"
                priority: "1"
  consumes:
    - type: http
      namespace: medlink-api
      baseUri: "https://medlink.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_medlink_token"
      resources:
        - name: consults
          path: "/consults/initiate"
          operations:
            - name: initiate-consult
              method: POST
    - type: http
      namespace: dispatch-api
      baseUri: "https://dispatch.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_dispatch_token"
      resources:
        - name: diversions
          path: "/diversions/search"
          operations:
            - name: find-diversions
              method: POST
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: alerts
          path: "/stations/alert"
          operations:
            - name: alert-station
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Analyzes impact of a schedule change on connections, crew pairings, and gates, then notifies planning.

naftiko: "0.5"
info:
  label: "Network Schedule Change Orchestrator"
  description: "Analyzes impact of a schedule change on connections, crew pairings, and gates, then notifies planning."
  tags:
    - scheduling
    - flight-operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: schedule-change
      port: 8080
      tools:
        - name: assess-change
          description: "Analyze schedule change impact."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight being changed."
            - name: new_time
              in: body
              type: string
              description: "Proposed new departure."
          steps:
            - name: analyze-connections
              type: call
              call: "scheduling-api.analyze-connections"
              with:
                flight: "{{flight_number}}"
                new_time: "{{new_time}}"
            - name: analyze-crew
              type: call
              call: "crew-api.assess-impact"
              with:
                flight: "{{flight_number}}"
                new_time: "{{new_time}}"
            - name: notify-planning
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{planning_channel}}"
                text: "Schedule change {{flight_number}} to {{new_time}}: {{analyze-connections.affected}} connections, {{analyze-crew.pairings}} crew pairings affected"
  consumes:
    - type: http
      namespace: scheduling-api
      baseUri: "https://scheduling.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_scheduling_token"
      resources:
        - name: connections
          path: "/analysis/connections"
          operations:
            - name: analyze-connections
              method: POST
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: impact
          path: "/pairings/impact"
          operations:
            - name: assess-impact
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Verifies flight operations comply with airport noise curfew restrictions.

naftiko: "0.5"
info:
  label: "Noise Curfew Compliance Check"
  description: "Verifies flight operations comply with airport noise curfew restrictions."
  tags:
    - compliance
    - flight-operations
    - scheduling
capability:
  exposes:
    - type: mcp
      namespace: noise
      port: 8080
      tools:
        - name: check-curfew
          description: "Check noise curfew compliance."
          inputParameters:
            - name: airport
              in: body
              type: string
              description: "Airport."
            - name: time
              in: body
              type: string
              description: "Operation time."
            - name: aircraft_type
              in: body
              type: string
              description: "Aircraft type."
          call: "compliance-api.check-curfew"
          with:
            airport: "{{airport}}"
            time: "{{time}}"
            aircraft: "{{aircraft_type}}"
          outputParameters:
            - name: compliant
              type: boolean
              mapping: "$.isCompliant"
  consumes:
    - type: http
      namespace: compliance-api
      baseUri: "https://compliance.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_compliance_token"
      resources:
        - name: curfew
          path: "/noise/curfew-check"
          operations:
            - name: check-curfew
              method: POST

Compiles the daily OCC briefing from weather, maintenance, crew coverage, and posts to Teams.

naftiko: "0.5"
info:
  label: "Operations Daily Briefing Orchestrator"
  description: "Compiles the daily OCC briefing from weather, maintenance, crew coverage, and posts to Teams."
  tags:
    - operations
    - flight-operations
    - microsoft-teams
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: ops-briefing
      port: 8080
      tools:
        - name: generate-briefing
          description: "Generate daily ops briefing."
          inputParameters:
            - name: date
              in: body
              type: string
              description: "Briefing date."
          steps:
            - name: get-weather
              type: call
              call: "weather-api.get-network-outlook"
              with:
                date: "{{date}}"
            - name: get-mx
              type: call
              call: "mx-api.get-fleet-summary"
              with:
                date: "{{date}}"
            - name: get-crew
              type: call
              call: "crew-api.get-coverage"
              with:
                date: "{{date}}"
            - name: post-briefing
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{occ_channel}}"
                text: "DAILY OPS BRIEFING {{date}} | Weather: {{get-weather.summary}} | Fleet: {{get-mx.available}}/{{get-mx.total}} | Crew: {{get-crew.coverage_pct}}%"
  consumes:
    - type: http
      namespace: weather-api
      baseUri: "https://dispatch.delta.com/api/v1/weather"
      authentication:
        type: bearer
        token: "$secrets.delta_dispatch_token"
      resources:
        - name: outlook
          path: "/network/outlook"
          operations:
            - name: get-network-outlook
              method: POST
    - type: http
      namespace: mx-api
      baseUri: "https://maintenance.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_mx_token"
      resources:
        - name: fleet
          path: "/fleet/summary"
          operations:
            - name: get-fleet-summary
              method: POST
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: coverage
          path: "/coverage/summary"
          operations:
            - name: get-coverage
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Manages overbooked flights by identifying volunteer candidates, calculating compensation, finding alternatives, and sending offers.

naftiko: "0.5"
info:
  label: "Overbooking Management Orchestrator"
  description: "Manages overbooked flights by identifying volunteer candidates, calculating compensation, finding alternatives, and sending offers."
  tags:
    - revenue-management
    - customer-service
    - flight-operations
capability:
  exposes:
    - type: mcp
      namespace: overbooking
      port: 8080
      tools:
        - name: manage-overbooking
          description: "Handle an overbooking situation."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
            - name: overbook_count
              in: body
              type: number
              description: "Overbooked seats."
          steps:
            - name: find-volunteers
              type: call
              call: "pss.find-volunteers"
              with:
                flight: "{{flight_number}}"
                date: "{{flight_date}}"
                count: "{{overbook_count}}"
            - name: calc-compensation
              type: call
              call: "compensation-api.get-vdb-rates"
              with:
                flight: "{{flight_number}}"
            - name: find-alternatives
              type: call
              call: "pss.search-alternatives"
              with:
                origin: "{{find-volunteers.origin}}"
                destination: "{{find-volunteers.destination}}"
            - name: send-offers
              type: call
              call: "notification-api.batch-notify"
              with:
                passengers: "{{find-volunteers.candidates}}"
                template: "volunteer_offer"
                amount: "{{calc-compensation.offer_amount}}"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: volunteers
          path: "/flights/{{flight}}/volunteer-candidates"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: find-volunteers
              method: POST
        - name: alternatives
          path: "/availability/search"
          operations:
            - name: search-alternatives
              method: POST
    - type: http
      namespace: compensation-api
      baseUri: "https://compensation.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_compensation_token"
      resources:
        - name: rates
          path: "/rates/vdb"
          operations:
            - name: get-vdb-rates
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://notifications.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_notification_token"
      resources:
        - name: batch
          path: "/batch/notify"
          operations:
            - name: batch-notify
              method: POST

Retrieves the current on-call engineer for a Delta IT service from PagerDuty for use at the start of incident response workflows.

naftiko: "0.5"
info:
  label: "PagerDuty On-Call Roster Lookup"
  description: "Retrieves the current on-call engineer for a Delta IT service from PagerDuty for use at the start of incident response workflows."
  tags:
    - incident-response
    - operations
    - pagerduty
    - on-call
capability:
  exposes:
    - type: mcp
      namespace: oncall
      port: 8080
      tools:
        - name: get-current-oncall
          description: "Given a PagerDuty schedule ID, return the name and email of the current on-call engineer. Use at the beginning of any incident response to identify who to engage."
          inputParameters:
            - name: schedule_id
              in: body
              type: string
              description: "PagerDuty schedule ID for the service's on-call rotation."
          call: pagerduty.get-oncall
          with:
            schedule_id: "{{schedule_id}}"
          outputParameters:
            - name: user_name
              type: string
              mapping: "$.oncalls[0].user.name"
            - name: user_email
              type: string
              mapping: "$.oncalls[0].user.email"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: Authorization
        value: "$secrets.pagerduty_api_key"
        placement: header
      resources:
        - name: oncalls
          path: "/oncalls"
          inputParameters:
            - name: schedule_id
              in: query
          operations:
            - name: get-oncall
              method: GET

Checks real-time parking availability at Delta hub airports.

naftiko: "0.5"
info:
  label: "Airport Parking Availability"
  description: "Checks real-time parking availability at Delta hub airports."
  tags:
    - customer-service
    - airport
capability:
  exposes:
    - type: mcp
      namespace: parking
      port: 8080
      tools:
        - name: check-parking
          description: "Check parking availability."
          inputParameters:
            - name: station
              in: body
              type: string
              description: "Airport."
          call: "airport-api.get-parking"
          with:
            station: "{{station}}"
          outputParameters:
            - name: economy
              type: number
              mapping: "$.economyAvailable"
            - name: premium
              type: number
              mapping: "$.premiumAvailable"
  consumes:
    - type: http
      namespace: airport-api
      baseUri: "https://api.delta.com/v1/airports"
      authentication:
        type: bearer
        token: "$secrets.delta_api_token"
      resources:
        - name: parking
          path: "/{{station}}/parking"
          inputParameters:
            - name: station
              in: path
          operations:
            - name: get-parking
              method: GET

Processes no-show passengers after gate closure, releasing seats for standby passengers.

naftiko: "0.5"
info:
  label: "Passenger No-Show Processing"
  description: "Processes no-show passengers after gate closure, releasing seats for standby passengers."
  tags:
    - flight-operations
    - revenue-management
capability:
  exposes:
    - type: mcp
      namespace: no-show
      port: 8080
      tools:
        - name: process-no-shows
          description: "Process no-shows for a flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
          call: "pss.process-no-shows"
          with:
            flight: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: no_show_count
              type: number
              mapping: "$.noShowCount"
            - name: seats_released
              type: number
              mapping: "$.seatsReleased"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: no-shows
          path: "/flights/{{flight}}/no-shows"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: process-no-shows
              method: POST

Processes a passenger upgrade by checking cabin availability, verifying SkyMiles eligibility, executing the upgrade, and sending a confirmation.

naftiko: "0.5"
info:
  label: "Passenger Upgrade Orchestrator"
  description: "Processes a passenger upgrade by checking cabin availability, verifying SkyMiles eligibility, executing the upgrade, and sending a confirmation."
  tags:
    - customer-service
    - loyalty
    - skymiles
capability:
  exposes:
    - type: mcp
      namespace: upgrades
      port: 8080
      tools:
        - name: process-upgrade
          description: "Process a passenger upgrade request."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "Passenger name record."
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: skymiles_number
              in: body
              type: string
              description: "SkyMiles member number."
            - name: target_cabin
              in: body
              type: string
              description: "Target cabin (Delta One, First, Comfort+)."
          steps:
            - name: check-availability
              type: call
              call: "pss.check-cabin"
              with:
                flight: "{{flight_number}}"
                cabin: "{{target_cabin}}"
            - name: verify-eligibility
              type: call
              call: "loyalty-api.check-upgrade-eligible"
              with:
                member_id: "{{skymiles_number}}"
                cabin: "{{target_cabin}}"
            - name: execute-upgrade
              type: call
              call: "pss.process-upgrade"
              with:
                pnr: "{{pnr}}"
                flight: "{{flight_number}}"
                cabin: "{{target_cabin}}"
            - name: send-confirmation
              type: call
              call: "notification-api.send-email"
              with:
                member_id: "{{skymiles_number}}"
                template: "upgrade_confirmation"
                flight: "{{flight_number}}"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: cabin
          path: "/availability/cabin"
          operations:
            - name: check-cabin
              method: POST
        - name: upgrades
          path: "/upgrades/process"
          operations:
            - name: process-upgrade
              method: POST
    - type: http
      namespace: loyalty-api
      baseUri: "https://loyalty.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_loyalty_token"
      resources:
        - name: eligibility
          path: "/members/{{member_id}}/upgrade-eligibility"
          inputParameters:
            - name: member_id
              in: path
          operations:
            - name: check-upgrade-eligible
              method: GET
    - type: http
      namespace: notification-api
      baseUri: "https://notifications.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_notification_token"
      resources:
        - name: email
          path: "/email/send"
          operations:
            - name: send-email
              method: POST

Validates a pet-in-cabin booking against aircraft and route restrictions.

naftiko: "0.5"
info:
  label: "Pet Booking Validation"
  description: "Validates a pet-in-cabin booking against aircraft and route restrictions."
  tags:
    - customer-service
    - compliance
    - booking
capability:
  exposes:
    - type: mcp
      namespace: pet
      port: 8080
      tools:
        - name: validate-pet
          description: "Validate pet-in-cabin booking."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight."
            - name: pet_type
              in: body
              type: string
              description: "Pet type."
          call: "pss.validate-pet"
          with:
            flight: "{{flight_number}}"
            pet: "{{pet_type}}"
          outputParameters:
            - name: allowed
              type: boolean
              mapping: "$.isAllowed"
            - name: remaining_slots
              type: number
              mapping: "$.remainingSlots"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: pet
          path: "/bookings/pet-validation"
          operations:
            - name: validate-pet
              method: POST

Calculates fatigue risk score for a pilot based on duty periods and time zone crossings.

naftiko: "0.5"
info:
  label: "Pilot Fatigue Risk Assessment"
  description: "Calculates fatigue risk score for a pilot based on duty periods and time zone crossings."
  tags:
    - crew-scheduling
    - safety
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: fatigue
      port: 8080
      tools:
        - name: assess-fatigue
          description: "Calculate fatigue risk for a pilot."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Pilot employee ID."
            - name: trip_id
              in: body
              type: string
              description: "Proposed trip ID."
          call: "frms-api.calculate-risk"
          with:
            employee_id: "{{employee_id}}"
            trip_id: "{{trip_id}}"
          outputParameters:
            - name: risk_score
              type: number
              mapping: "$.riskScore"
            - name: risk_level
              type: string
              mapping: "$.riskLevel"
  consumes:
    - type: http
      namespace: frms-api
      baseUri: "https://safety.delta.com/api/v1/frms"
      authentication:
        type: bearer
        token: "$secrets.delta_safety_token"
      resources:
        - name: risk
          path: "/assess"
          operations:
            - name: calculate-risk
              method: POST

Retrieves pilot training records including type ratings, recency checks, and upcoming recurrent training dates.

naftiko: "0.5"
info:
  label: "Pilot Training Record Lookup"
  description: "Retrieves pilot training records including type ratings, recency checks, and upcoming recurrent training dates."
  tags:
    - crew-scheduling
    - training
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: crew-training
      port: 8080
      tools:
        - name: get-pilot-training
          description: "Look up pilot training records and certification status."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Pilot employee ID."
          call: "crew-api.get-training"
          with:
            employee_id: "{{employee_id}}"
          outputParameters:
            - name: type_ratings
              type: array
              mapping: "$.typeRatings"
            - name: last_check
              type: string
              mapping: "$.lastCheckDate"
            - name: next_recurrent
              type: string
              mapping: "$.nextRecurrent"
  consumes:
    - type: http
      namespace: crew-api
      baseUri: "https://crew.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_crew_token"
      resources:
        - name: training
          path: "/pilots/{{employee_id}}/training"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-training
              method: GET

Triggers a Power BI dataset refresh for the flight operations dashboard after Snowflake data loads complete, ensuring current on-time performance and load factor data is available.

naftiko: "0.5"
info:
  label: "Power BI Flight Operations Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh for the flight operations dashboard after Snowflake data loads complete, ensuring current on-time performance and load factor data is available."
  tags:
    - analytics
    - operations
    - power-bi
    - snowflake
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: ops-bi
      port: 8080
      tools:
        - name: refresh-flight-ops-dashboard
          description: "Given a Power BI dataset ID and the completed Snowflake pipeline name, trigger a dataset refresh so the flight operations dashboard reflects the latest on-time and load factor data."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset ID for the flight operations report."
            - name: pipeline_name
              in: body
              type: string
              description: "Name of the Snowflake pipeline that completed loading."
          steps:
            - name: verify-load
              type: call
              call: snowflake.execute-query
              with:
                statement: "SELECT MAX(loaded_at) as last_load FROM pipeline_audit WHERE pipeline = '{{pipeline_name}}' AND status = 'success'"
            - name: refresh-dataset
              type: call
              call: powerbi.refresh-dataset
              with:
                dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://delta.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - 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}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Submits a Delta One or First Class meal preorder for a passenger.

naftiko: "0.5"
info:
  label: "Premium Meal Preorder"
  description: "Submits a Delta One or First Class meal preorder for a passenger."
  tags:
    - inflight-services
    - catering
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: meal-preorder
      port: 8080
      tools:
        - name: submit-preorder
          description: "Submit a premium meal preorder."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "PNR."
            - name: flight_number
              in: body
              type: string
              description: "Flight."
            - name: meal_selection
              in: body
              type: string
              description: "Meal choice."
          call: "catering-api.submit-preorder"
          with:
            pnr: "{{pnr}}"
            flight: "{{flight_number}}"
            meal: "{{meal_selection}}"
          outputParameters:
            - name: confirmation
              type: string
              mapping: "$.confirmation"
  consumes:
    - type: http
      namespace: catering-api
      baseUri: "https://catering.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_catering_token"
      resources:
        - name: preorders
          path: "/preorders"
          operations:
            - name: submit-preorder
              method: POST

Reports a ramp safety incident by creating a ServiceNow safety report, notifying the station safety manager, and logging in Workday.

naftiko: "0.5"
info:
  label: "Ramp Safety Incident Orchestrator"
  description: "Reports a ramp safety incident by creating a ServiceNow safety report, notifying the station safety manager, and logging in Workday."
  tags:
    - safety
    - ground-ops
    - servicenow
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: ramp-safety
      port: 8080
      tools:
        - name: report-ramp-incident
          description: "Report a ramp safety incident across all systems."
          inputParameters:
            - name: station
              in: body
              type: string
              description: "Airport station."
            - name: incident_type
              in: body
              type: string
              description: "Incident type."
            - name: employee_id
              in: body
              type: string
              description: "Employee ID."
            - name: description
              in: body
              type: string
              description: "Description."
          steps:
            - name: create-report
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Ramp safety: {{incident_type}} at {{station}}"
                category: "safety"
                priority: "1"
            - name: notify-safety
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{safety_channel}}"
                text: "SAFETY ALERT at {{station}}: {{incident_type}} — {{description}}"
            - name: log-employee
              type: call
              call: "workday.create-safety-event"
              with:
                employee_id: "{{employee_id}}"
                event_type: "{{incident_type}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-services.delta.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: safety
          path: "/safety/events"
          operations:
            - name: create-safety-event
              method: POST

Runs revenue integrity checks on a flight, identifies discrepancies, and creates cases in Salesforce and Jira.

naftiko: "0.5"
info:
  label: "Revenue Integrity Orchestrator"
  description: "Runs revenue integrity checks on a flight, identifies discrepancies, and creates cases in Salesforce and Jira."
  tags:
    - revenue-management
    - salesforce
    - jira
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: rev-integrity
      port: 8080
      tools:
        - name: audit-revenue
          description: "Run revenue integrity audit."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight."
            - name: flight_date
              in: body
              type: string
              description: "Date."
          steps:
            - name: pull-data
              type: call
              call: "analytics-api.get-flight-revenue"
              with:
                flight: "{{flight_number}}"
                date: "{{flight_date}}"
            - name: check-integrity
              type: call
              call: "analytics-api.check-integrity"
              with:
                flight: "{{flight_number}}"
                bookings: "{{pull-data.bookings}}"
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Revenue discrepancy — {{flight_number}} {{flight_date}}"
                priority: "Medium"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "REVMGMT"
                summary: "Revenue integrity: {{flight_number}} {{flight_date}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://analytics.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_analytics_token"
      resources:
        - name: revenue
          path: "/flights/{{flight}}/revenue"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-flight-revenue
              method: GET
        - name: integrity
          path: "/integrity/check"
          operations:
            - name: check-integrity
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://delta.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://delta.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Triggers a Snowflake pipeline refresh for revenue-per-available-seat-mile (RASM) analytics and notifies the revenue management team in Microsoft Teams when the data is ready.

naftiko: "0.5"
info:
  label: "Revenue Management Analytics Refresh"
  description: "Triggers a Snowflake pipeline refresh for revenue-per-available-seat-mile (RASM) analytics and notifies the revenue management team in Microsoft Teams when the data is ready."
  tags:
    - analytics
    - finance
    - snowflake
    - reporting
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: revenue-analytics
      port: 8080
      tools:
        - name: refresh-rasm-analytics
          description: "Given a reporting date, execute the Snowflake RASM aggregation procedure and notify the revenue management Microsoft Teams channel when the refresh completes."
          inputParameters:
            - name: report_date
              in: body
              type: string
              description: "ISO 8601 date for the RASM analytics refresh."
          steps:
            - name: run-rasm-aggregation
              type: call
              call: snowflake.execute-query
              with:
                statement: "CALL refresh_rasm_aggregates('{{report_date}}')"
            - name: notify-revenue-mgmt
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_revenue_mgmt_team_id"
                channel_id: "$secrets.teams_revenue_mgmt_channel_id"
                text: "RASM analytics refreshed for {{report_date}}. Status: {{run-rasm-aggregation.status}}. Review in Power BI."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://delta.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Generates RPM report for a period broken down by domestic and international operations.

naftiko: "0.5"
info:
  label: "Revenue Passenger Miles Report"
  description: "Generates RPM report for a period broken down by domestic and international operations."
  tags:
    - revenue-management
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: rpm
      port: 8080
      tools:
        - name: get-rpm
          description: "Generate RPM report."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Start date."
            - name: end_date
              in: body
              type: string
              description: "End date."
          call: "analytics-api.get-rpm"
          with:
            start: "{{start_date}}"
            end: "{{end_date}}"
          outputParameters:
            - name: total_rpm
              type: number
              mapping: "$.totalRPM"
            - name: domestic
              type: number
              mapping: "$.domesticRPM"
            - name: international
              type: number
              mapping: "$.internationalRPM"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://analytics.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_analytics_token"
      resources:
        - name: rpm
          path: "/metrics/rpm"
          operations:
            - name: get-rpm
              method: POST

Generates route-level profitability metrics including load factor, RASM, CASM, and operating margin for a given origin-destination pair.

naftiko: "0.5"
info:
  label: "Route Profitability Analysis"
  description: "Generates route-level profitability metrics including load factor, RASM, CASM, and operating margin for a given origin-destination pair."
  tags:
    - revenue-management
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: route-analytics
      port: 8080
      tools:
        - name: get-route-profitability
          description: "Retrieve profitability metrics for a specific route."
          inputParameters:
            - name: origin
              in: body
              type: string
              description: "Origin airport."
            - name: destination
              in: body
              type: string
              description: "Destination airport."
            - name: period
              in: body
              type: string
              description: "Reporting period."
          call: "analytics-api.get-route-metrics"
          with:
            origin: "{{origin}}"
            destination: "{{destination}}"
            period: "{{period}}"
          outputParameters:
            - name: load_factor
              type: number
              mapping: "$.loadFactor"
            - name: rasm
              type: number
              mapping: "$.rasm"
            - name: operating_margin
              type: number
              mapping: "$.operatingMargin"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://analytics.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_analytics_token"
      resources:
        - name: route-metrics
          path: "/routes/profitability"
          operations:
            - name: get-route-metrics
              method: POST

Submits a runway slot request at slot-controlled airports.

naftiko: "0.5"
info:
  label: "Runway Slot Request"
  description: "Submits a runway slot request at slot-controlled airports."
  tags:
    - flight-operations
    - dispatch
    - scheduling
capability:
  exposes:
    - type: mcp
      namespace: slots
      port: 8080
      tools:
        - name: request-slot
          description: "Request a runway slot."
          inputParameters:
            - name: airport
              in: body
              type: string
              description: "Airport."
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: time
              in: body
              type: string
              description: "Requested time UTC."
          call: "slot-api.request-slot"
          with:
            airport: "{{airport}}"
            flight: "{{flight_number}}"
            time: "{{time}}"
          outputParameters:
            - name: slot_id
              type: string
              mapping: "$.slotId"
            - name: granted_time
              type: string
              mapping: "$.grantedTime"
  consumes:
    - type: http
      namespace: slot-api
      baseUri: "https://scheduling.delta.com/api/v1/slots"
      authentication:
        type: bearer
        token: "$secrets.delta_scheduling_token"
      resources:
        - name: slots
          path: "/request"
          operations:
            - name: request-slot
              method: POST

Looks up all open Salesforce support cases associated with a given flight number for use by operations and customer service teams during disruption response.

naftiko: "0.5"
info:
  label: "Salesforce Case Lookup by Flight Number"
  description: "Looks up all open Salesforce support cases associated with a given flight number for use by operations and customer service teams during disruption response."
  tags:
    - customer-support
    - operations
    - salesforce
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: case-lookup
      port: 8080
      tools:
        - name: get-cases-by-flight
          description: "Given a Delta flight number, return all open Salesforce support cases associated with that flight. Use during flight disruption response to understand the scope of customer impact."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Delta flight number to search for open cases (e.g. DL1234)."
          call: salesforce.query-cases
          with:
            q: "SELECT Id, CaseNumber, Status, Priority, Subject, CreatedDate FROM Case WHERE Flight_Number__c = '{{flight_number}}' AND Status != 'Closed' ORDER BY CreatedDate DESC"
          outputParameters:
            - name: cases
              type: array
              mapping: "$.records"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://delta.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          inputParameters:
            - name: q
              in: query
          operations:
            - name: query-cases
              method: GET

When a Salesforce customer support case breaches its SLA, escalates the case priority, reassigns it to a senior agent, and notifies the customer experience manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Salesforce Customer Case SLA Escalation"
  description: "When a Salesforce customer support case breaches its SLA, escalates the case priority, reassigns it to a senior agent, and notifies the customer experience manager in Microsoft Teams."
  tags:
    - customer-support
    - sla
    - salesforce
    - microsoft-teams
    - escalation
capability:
  exposes:
    - type: mcp
      namespace: cx-support
      port: 8080
      tools:
        - name: escalate-case-sla-breach
          description: "Given a Salesforce case ID that has breached its SLA and the breach duration, update the case priority to Critical, reassign to senior support, and notify the CX manager in Teams."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "Salesforce case ID that has breached its SLA."
            - name: breach_minutes
              in: body
              type: integer
              description: "Number of minutes the SLA has been exceeded."
            - name: cx_manager_upn
              in: body
              type: string
              description: "Microsoft 365 UPN of the customer experience manager to notify."
          steps:
            - name: escalate-case
              type: call
              call: salesforce.update-case
              with:
                case_id: "{{case_id}}"
                priority: Critical
                status: Escalated
            - name: notify-cx-manager
              type: call
              call: msteams.send-message
              with:
                recipient_upn: "{{cx_manager_upn}}"
                text: "SLA breach: Case {{case_id}} is {{breach_minutes}}min overdue and has been escalated to Critical priority."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://delta.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: update-case
              method: PATCH
    - 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

When a Salesforce partnership opportunity reaches Closed Won, creates a partner record in the SkyMiles partner system and notifies the partner development team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Salesforce Lead to SkyMiles Partner Sync"
  description: "When a Salesforce partnership opportunity reaches Closed Won, creates a partner record in the SkyMiles partner system and notifies the partner development team in Microsoft Teams."
  tags:
    - sales
    - loyalty
    - salesforce
    - microsoft-teams
    - partners
capability:
  exposes:
    - type: mcp
      namespace: partner-development
      port: 8080
      tools:
        - name: activate-skymiles-partner
          description: "Given a Salesforce opportunity ID that has reached Closed Won for a SkyMiles partnership, register the partner in Snowflake and notify the partner development team in Microsoft Teams."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID for the new SkyMiles partner."
            - name: partner_program_code
              in: body
              type: string
              description: "SkyMiles partner program code (e.g. RETAIL, HOTEL, CARD)."
          steps:
            - name: get-opportunity
              type: call
              call: salesforce.get-opportunity
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: register-partner
              type: call
              call: snowflake.execute-query
              with:
                statement: "INSERT INTO skymiles_partners (partner_name, program_code, salesforce_opportunity_id, activated_at) VALUES ('{{get-opportunity.account_name}}', '{{partner_program_code}}', '{{opportunity_id}}', CURRENT_TIMESTAMP)"
            - name: notify-partner-dev
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_partner_dev_team_id"
                channel_id: "$secrets.teams_partner_dev_channel_id"
                text: "New SkyMiles partner activated: {{get-opportunity.account_name}} ({{partner_program_code}}) | SF Opportunity: {{opportunity_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://delta.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://delta.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Processes a vendor invoice against a SAP purchase order, matches the line items, and notifies the accounts payable team in Microsoft Teams when the invoice is posted.

naftiko: "0.5"
info:
  label: "SAP Vendor Invoice Processing"
  description: "Processes a vendor invoice against a SAP purchase order, matches the line items, and notifies the accounts payable team in Microsoft Teams when the invoice is posted."
  tags:
    - finance
    - accounts-payable
    - sap
    - erp
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: accounts-payable
      port: 8080
      tools:
        - name: process-vendor-invoice
          description: "Given a vendor invoice number, related SAP PO, and total amount, post the invoice in SAP S/4HANA and notify the accounts payable Microsoft Teams channel for payment scheduling."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "Vendor invoice reference number."
            - name: po_number
              in: body
              type: string
              description: "SAP purchase order number the invoice is matched to."
            - name: amount_usd
              in: body
              type: number
              description: "Invoice total in USD."
            - name: vendor_id
              in: body
              type: string
              description: "SAP vendor master ID."
          steps:
            - name: post-invoice
              type: call
              call: sap.create-invoice
              with:
                vendor_id: "{{vendor_id}}"
                invoice_number: "{{invoice_number}}"
                po_number: "{{po_number}}"
                amount: "{{amount_usd}}"
                currency: USD
            - name: notify-ap
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_finance_team_id"
                channel_id: "$secrets.teams_ap_channel_id"
                text: "Invoice posted: {{invoice_number}} for ${{amount_usd}} matched to PO {{po_number}} | SAP doc: {{post-invoice.document_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://delta-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: supplier-invoices
          path: "/A_SupplierInvoice"
          operations:
            - name: create-invoice
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves seat map and availability for a Delta flight showing available, occupied, and blocked seats by cabin.

naftiko: "0.5"
info:
  label: "Seat Map Availability Lookup"
  description: "Retrieves seat map and availability for a Delta flight showing available, occupied, and blocked seats by cabin."
  tags:
    - customer-service
    - flight-operations
capability:
  exposes:
    - type: mcp
      namespace: seat-map
      port: 8080
      tools:
        - name: get-seat-map
          description: "Get seat availability for a flight."
          inputParameters:
            - name: flight_number
              in: body
              type: string
              description: "Flight number."
            - name: flight_date
              in: body
              type: string
              description: "Flight date."
          call: "pss.get-seat-map"
          with:
            flight: "{{flight_number}}"
            date: "{{flight_date}}"
          outputParameters:
            - name: available_seats
              type: number
              mapping: "$.availableSeats"
            - name: cabin_breakdown
              type: object
              mapping: "$.cabinBreakdown"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: seat-maps
          path: "/flights/{{flight}}/seat-map"
          inputParameters:
            - name: flight
              in: path
          operations:
            - name: get-seat-map
              method: GET

Retrieves estimated security checkpoint wait times at a Delta hub terminal.

naftiko: "0.5"
info:
  label: "Security Checkpoint Wait Times"
  description: "Retrieves estimated security checkpoint wait times at a Delta hub terminal."
  tags:
    - customer-service
    - ground-ops
    - airport
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: get-wait-times
          description: "Get security wait time estimates."
          inputParameters:
            - name: station
              in: body
              type: string
              description: "Airport."
            - name: terminal
              in: body
              type: string
              description: "Terminal."
          call: "airport-api.get-waits"
          with:
            station: "{{station}}"
            terminal: "{{terminal}}"
          outputParameters:
            - name: standard_wait
              type: number
              mapping: "$.standardWait"
            - name: precheck_wait
              type: number
              mapping: "$.precheckWait"
  consumes:
    - type: http
      namespace: airport-api
      baseUri: "https://api.delta.com/v1/airports"
      authentication:
        type: bearer
        token: "$secrets.delta_api_token"
      resources:
        - name: waits
          path: "/{{station}}/security/wait-times"
          inputParameters:
            - name: station
              in: path
          operations:
            - name: get-waits
              method: GET

Creates a ServiceNow change request for planned system maintenance windows, assigns it to the CAB, and notifies the technology operations Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "ServiceNow IT Change Request for Maintenance"
  description: "Creates a ServiceNow change request for planned system maintenance windows, assigns it to the CAB, and notifies the technology operations Microsoft Teams channel."
  tags:
    - itsm
    - change-management
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: create-maintenance-change-request
          description: "Given a maintenance description, risk level, and planned window, create a ServiceNow change request for CAB review and notify the technology operations Microsoft Teams channel."
          inputParameters:
            - name: short_description
              in: body
              type: string
              description: "Brief description of the planned maintenance."
            - name: risk_level
              in: body
              type: string
              description: "Risk level: low, medium, or high."
            - name: planned_start
              in: body
              type: string
              description: "Planned maintenance start time in ISO 8601 format."
            - name: planned_end
              in: body
              type: string
              description: "Planned maintenance end time in ISO 8601 format."
            - name: systems_affected
              in: body
              type: string
              description: "Comma-separated list of systems affected by the maintenance."
          steps:
            - name: create-cr
              type: call
              call: servicenow.create-change-request
              with:
                type: normal
                risk: "{{risk_level}}"
                short_description: "{{short_description}}"
                start_date: "{{planned_start}}"
                end_date: "{{planned_end}}"
            - name: notify-tech-ops
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_tech_ops_team_id"
                channel_id: "$secrets.teams_tech_ops_channel_id"
                text: "Maintenance window submitted: {{short_description}} | Systems: {{systems_affected}} | Window: {{planned_start}} – {{planned_end}} | SNOW: {{create-cr.number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change-request
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Enriches a Salesforce customer contact with SkyMiles loyalty tier and lifetime miles data from Snowflake to support personalized customer service interactions.

naftiko: "0.5"
info:
  label: "SkyMiles Member Loyalty Enrichment"
  description: "Enriches a Salesforce customer contact with SkyMiles loyalty tier and lifetime miles data from Snowflake to support personalized customer service interactions."
  tags:
    - loyalty
    - crm
    - salesforce
    - snowflake
    - customer-experience
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: enrich-skymiles-member
          description: "Given a Salesforce contact ID and SkyMiles member number, retrieve loyalty tier and lifetime mileage from Snowflake and update the Salesforce contact with the enriched profile for customer service use."
          inputParameters:
            - name: salesforce_contact_id
              in: body
              type: string
              description: "Salesforce contact ID for the customer."
            - name: skymiles_number
              in: body
              type: string
              description: "Delta SkyMiles member number."
          steps:
            - name: get-loyalty-data
              type: call
              call: snowflake.execute-query
              with:
                statement: "SELECT tier_status, lifetime_miles, ytd_miles, expiration_date FROM skymiles_members WHERE member_number = '{{skymiles_number}}'"
            - name: update-contact
              type: call
              call: salesforce.update-contact
              with:
                contact_id: "{{salesforce_contact_id}}"
                skymiles_tier: "{{get-loyalty-data.tier_status}}"
                lifetime_miles: "{{get-loyalty-data.lifetime_miles}}"
                ytd_miles: "{{get-loyalty-data.ytd_miles}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://delta.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://delta.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

Retrieves a SkyMiles member's loyalty tier, MQD balance, and Medallion status for customer service interactions.

naftiko: "0.5"
info:
  label: "SkyMiles Member Tier Lookup"
  description: "Retrieves a SkyMiles member's loyalty tier, MQD balance, and Medallion status for customer service interactions."
  tags:
    - customer-service
    - loyalty
    - skymiles
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: get-member-tier
          description: "Look up a SkyMiles member's Medallion tier and qualification status."
          inputParameters:
            - name: skymiles_number
              in: body
              type: string
              description: "SkyMiles member number."
          call: "loyalty-api.get-member"
          with:
            member_id: "{{skymiles_number}}"
          outputParameters:
            - name: medallion_tier
              type: string
              mapping: "$.medallionTier"
            - name: mqd_balance
              type: number
              mapping: "$.mqdBalance"
            - name: mqm_balance
              type: number
              mapping: "$.mqmBalance"
  consumes:
    - type: http
      namespace: loyalty-api
      baseUri: "https://loyalty.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_loyalty_token"
      resources:
        - name: members
          path: "/members/{{member_id}}"
          inputParameters:
            - name: member_id
              in: path
          operations:
            - name: get-member
              method: GET

Queries Snowflake for jet fuel consumption and cost data by route and fleet type and writes the weekly cost report for the finance operations team.

naftiko: "0.5"
info:
  label: "Snowflake Fuel Cost Analytics Report"
  description: "Queries Snowflake for jet fuel consumption and cost data by route and fleet type and writes the weekly cost report for the finance operations team."
  tags:
    - finance
    - analytics
    - snowflake
    - operations
    - fuel
capability:
  exposes:
    - type: mcp
      namespace: fuel-analytics
      port: 8080
      tools:
        - name: generate-fuel-cost-report
          description: "Given a week ending date, query Snowflake for fuel consumption, cost per gallon, and total fuel expense by route and fleet type, then store the weekly fuel cost report."
          inputParameters:
            - name: week_ending_date
              in: body
              type: string
              description: "ISO 8601 date of the week ending for the fuel cost report."
          call: snowflake.execute-query
          with:
            statement: "INSERT INTO fuel_cost_reports SELECT '{{week_ending_date}}' as week_ending, route, fleet_type, SUM(gallons_consumed) as total_gallons, AVG(cost_per_gallon) as avg_cost_per_gallon, SUM(total_fuel_cost_usd) as total_cost FROM fuel_transactions WHERE DATEPART(week, transaction_date) = DATEPART(week, '{{week_ending_date}}') GROUP BY route, fleet_type"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://delta.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Runs a Snowflake query to compute daily on-time departure and arrival performance by hub airport and writes the results to a reporting table for operations leadership.

naftiko: "0.5"
info:
  label: "Snowflake On-Time Performance Daily Summary"
  description: "Runs a Snowflake query to compute daily on-time departure and arrival performance by hub airport and writes the results to a reporting table for operations leadership."
  tags:
    - analytics
    - operations
    - snowflake
    - reporting
    - on-time-performance
capability:
  exposes:
    - type: mcp
      namespace: otp-analytics
      port: 8080
      tools:
        - name: compute-daily-otp
          description: "Given a flight date, compute on-time departure and arrival rates by hub airport from Snowflake and store the aggregated results in the OTP reporting table."
          inputParameters:
            - name: flight_date
              in: body
              type: string
              description: "ISO 8601 date to compute on-time performance for."
          call: snowflake.execute-query
          with:
            statement: "INSERT INTO otp_daily_summary SELECT '{{flight_date}}' as flight_date, origin_airport, COUNT(*) as total_departures, SUM(CASE WHEN departure_delay_minutes <= 15 THEN 1 ELSE 0 END) as on_time_departures FROM flights WHERE flight_date = '{{flight_date}}' GROUP BY origin_airport"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://delta.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Verifies passenger TSA PreCheck eligibility and Known Traveler Number.

naftiko: "0.5"
info:
  label: "TSA PreCheck Eligibility Check"
  description: "Verifies passenger TSA PreCheck eligibility and Known Traveler Number."
  tags:
    - customer-service
    - security
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: tsa
      port: 8080
      tools:
        - name: check-precheck
          description: "Verify PreCheck eligibility."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "PNR."
            - name: ktn
              in: body
              type: string
              description: "Known Traveler Number."
          call: "security-api.verify-precheck"
          with:
            pnr: "{{pnr}}"
            ktn: "{{ktn}}"
          outputParameters:
            - name: eligible
              type: boolean
              mapping: "$.eligible"
  consumes:
    - type: http
      namespace: security-api
      baseUri: "https://security.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_security_token"
      resources:
        - name: precheck
          path: "/tsa/verify"
          operations:
            - name: verify-precheck
              method: POST

Sends a post-flight SMS follow-up to customers via Twilio after a disruption-affected journey and logs the outreach in their Salesforce contact record.

naftiko: "0.5"
info:
  label: "Twilio Customer Service SMS Follow-Up"
  description: "Sends a post-flight SMS follow-up to customers via Twilio after a disruption-affected journey and logs the outreach in their Salesforce contact record."
  tags:
    - customer-experience
    - communications
    - twilio
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: cx-outreach
      port: 8080
      tools:
        - name: send-post-disruption-followup
          description: "Given a Salesforce contact ID, customer phone number, and flight number, send a post-disruption SMS via Twilio and log the outreach activity in the Salesforce contact record."
          inputParameters:
            - name: salesforce_contact_id
              in: body
              type: string
              description: "Salesforce contact ID of the affected customer."
            - name: customer_phone
              in: body
              type: string
              description: "Customer's mobile phone number in E.164 format."
            - name: flight_number
              in: body
              type: string
              description: "Flight number affected by the disruption."
            - name: compensation_offer
              in: body
              type: string
              description: "Compensation offered (e.g. 5000 SkyMiles, travel voucher)."
          steps:
            - name: send-sms
              type: call
              call: twilio.send-message
              with:
                to: "{{customer_phone}}"
                from: "$secrets.twilio_from_number"
                body: "We're sorry for the disruption to your flight {{flight_number}}. As a gesture of goodwill, we're crediting your account with {{compensation_offer}}. Thank you for choosing Delta."
            - name: log-activity
              type: call
              call: salesforce.create-activity
              with:
                contact_id: "{{salesforce_contact_id}}"
                subject: "Post-disruption SMS sent: {{flight_number}}"
                description: "Compensation offered: {{compensation_offer}}. SMS status: {{send-sms.status}}"
  consumes:
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01"
      authentication:
        type: basic
        username: "$secrets.twilio_account_sid"
        password: "$secrets.twilio_auth_token"
      resources:
        - name: messages
          path: "/Accounts/{{account_sid}}/Messages"
          inputParameters:
            - name: account_sid
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://delta.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: activities
          path: "/sobjects/Task"
          operations:
            - name: create-activity
              method: POST

Tracks unaccompanied minor passengers through checkpoint confirmations and handoff status.

naftiko: "0.5"
info:
  label: "Unaccompanied Minor Tracking"
  description: "Tracks unaccompanied minor passengers through checkpoint confirmations and handoff status."
  tags:
    - customer-service
    - safety
    - tracking
capability:
  exposes:
    - type: mcp
      namespace: umnr
      port: 8080
      tools:
        - name: track-umnr
          description: "Track unaccompanied minor by PNR."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "PNR."
          call: "umnr-api.get-status"
          with:
            pnr: "{{pnr}}"
          outputParameters:
            - name: checkpoint
              type: string
              mapping: "$.currentCheckpoint"
            - name: handoff
              type: string
              mapping: "$.handoffStatus"
  consumes:
    - type: http
      namespace: umnr-api
      baseUri: "https://pss.delta.com/api/v2/umnr"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: tracking
          path: "/tracking/{{pnr}}"
          inputParameters:
            - name: pnr
              in: path
          operations:
            - name: get-status
              method: GET

Arranges special handling for VIP passengers including reservation flagging, meet-and-greet, and station notification.

naftiko: "0.5"
info:
  label: "VIP Passenger Handling Orchestrator"
  description: "Arranges special handling for VIP passengers including reservation flagging, meet-and-greet, and station notification."
  tags:
    - customer-service
    - ground-ops
    - loyalty
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vip
      port: 8080
      tools:
        - name: arrange-vip
          description: "Set up VIP handling."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "PNR."
            - name: flight_number
              in: body
              type: string
              description: "Flight."
            - name: station
              in: body
              type: string
              description: "Station."
          steps:
            - name: flag-reservation
              type: call
              call: "pss.add-ssr"
              with:
                pnr: "{{pnr}}"
                ssr_code: "VIP"
            - name: arrange-meet-greet
              type: call
              call: "ground-ops.create-meet-greet"
              with:
                station: "{{station}}"
                flight: "{{flight_number}}"
            - name: notify-station
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{station_channel}}"
                text: "VIP handling for {{flight_number}} at {{station}}"
  consumes:
    - type: http
      namespace: pss
      baseUri: "https://pss.delta.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.delta_pss_token"
      resources:
        - name: ssr
          path: "/bookings/{{pnr}}/ssr"
          inputParameters:
            - name: pnr
              in: path
          operations:
            - name: add-ssr
              method: POST
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: meet-greet
          path: "/meet-greet/create"
          operations:
            - name: create-meet-greet
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Assesses severe weather impact at a Delta hub by querying weather forecasts, identifying affected flights, creating a ServiceNow incident, and alerting the OCC via Teams.

naftiko: "0.5"
info:
  label: "Weather Impact Assessment Orchestrator"
  description: "Assesses severe weather impact at a Delta hub by querying weather forecasts, identifying affected flights, creating a ServiceNow incident, and alerting the OCC via Teams."
  tags:
    - flight-operations
    - weather
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: weather-ops
      port: 8080
      tools:
        - name: assess-weather-impact
          description: "Assess weather impact on operations at a hub station."
          inputParameters:
            - name: hub_station
              in: body
              type: string
              description: "Hub airport code (ATL, MSP, DTW, SLC, SEA, LAX, JFK, BOS)."
            - name: forecast_hours
              in: body
              type: number
              description: "Hours ahead to assess."
          steps:
            - name: get-forecast
              type: call
              call: "weather-api.get-forecast"
              with:
                station: "{{hub_station}}"
                hours: "{{forecast_hours}}"
            - name: get-affected-flights
              type: call
              call: "delta-api.search-departures"
              with:
                station: "{{hub_station}}"
                hours: "{{forecast_hours}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Weather impact at {{hub_station}}: {{get-forecast.severity}} — {{get-affected-flights.count}} flights affected"
                category: "flight_operations"
                priority: "2"
            - name: notify-occ
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "{{occ_channel_id}}"
                text: "Weather alert at {{hub_station}}: {{get-forecast.summary}} | {{get-affected-flights.count}} departures impacted"
  consumes:
    - type: http
      namespace: weather-api
      baseUri: "https://api.weather.gov"
      authentication:
        type: none
      resources:
        - name: forecasts
          path: "/zones/forecast/{{station}}"
          inputParameters:
            - name: station
              in: path
          operations:
            - name: get-forecast
              method: GET
    - type: http
      namespace: delta-api
      baseUri: "https://api.delta.com/v1/flights"
      authentication:
        type: bearer
        token: "$secrets.delta_api_token"
      resources:
        - name: departures
          path: "/departures/search"
          operations:
            - name: search-departures
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Calculates aircraft weight and balance for a flight given passenger count, cargo, and fuel load.

naftiko: "0.5"
info:
  label: "Weight and Balance Calculation"
  description: "Calculates aircraft weight and balance for a flight given passenger count, cargo, and fuel load."
  tags:
    - dispatch
    - flight-operations
    - safety
capability:
  exposes:
    - type: mcp
      namespace: wb-calc
      port: 8080
      tools:
        - name: calculate-wb
          description: "Calculate weight and balance for pre-departure."
          inputParameters:
            - name: tail_number
              in: body
              type: string
              description: "Tail number."
            - name: passenger_count
              in: body
              type: number
              description: "Total passengers."
            - name: cargo_weight
              in: body
              type: number
              description: "Cargo weight in kg."
            - name: fuel_load
              in: body
              type: number
              description: "Fuel load in kg."
          call: "dispatch-api.calc-wb"
          with:
            tail: "{{tail_number}}"
            pax: "{{passenger_count}}"
            cargo: "{{cargo_weight}}"
            fuel: "{{fuel_load}}"
          outputParameters:
            - name: takeoff_weight
              type: number
              mapping: "$.takeoffWeight"
            - name: center_of_gravity
              type: number
              mapping: "$.centerOfGravity"
            - name: within_limits
              type: boolean
              mapping: "$.withinLimits"
  consumes:
    - type: http
      namespace: dispatch-api
      baseUri: "https://dispatch.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_dispatch_token"
      resources:
        - name: wb
          path: "/weight-balance/calculate"
          operations:
            - name: calc-wb
              method: POST

Creates a wheelchair assistance request for a passenger at an airport.

naftiko: "0.5"
info:
  label: "Wheelchair Service Request"
  description: "Creates a wheelchair assistance request for a passenger at an airport."
  tags:
    - customer-service
    - ground-ops
    - accessibility
capability:
  exposes:
    - type: mcp
      namespace: wheelchair
      port: 8080
      tools:
        - name: request-wheelchair
          description: "Submit a wheelchair service request."
          inputParameters:
            - name: pnr
              in: body
              type: string
              description: "PNR."
            - name: station
              in: body
              type: string
              description: "Station."
            - name: service_type
              in: body
              type: string
              description: "Type (WCHR, WCHS, WCHC)."
          call: "ground-ops.create-wheelchair-request"
          with:
            pnr: "{{pnr}}"
            station: "{{station}}"
            type: "{{service_type}}"
          outputParameters:
            - name: request_id
              type: string
              mapping: "$.requestId"
  consumes:
    - type: http
      namespace: ground-ops
      baseUri: "https://groundops.delta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.delta_ground_ops_token"
      resources:
        - name: wheelchair
          path: "/wheelchair/request"
          operations:
            - name: create-wheelchair-request
              method: POST

When an employee is terminated in Workday, disables their Microsoft 365 account and creates a ServiceNow IT offboarding task for credential and system access clean-up.

naftiko: "0.5"
info:
  label: "Workday Employee Offboarding Access Revocation"
  description: "When an employee is terminated in Workday, disables their Microsoft 365 account and creates a ServiceNow IT offboarding task for credential and system access clean-up."
  tags:
    - hr
    - offboarding
    - workday
    - microsoft-365
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: hr-offboarding
      port: 8080
      tools:
        - name: revoke-employee-access
          description: "Given a Workday employee ID and Microsoft 365 UPN, disable the M365 account and create a ServiceNow IT offboarding task to complete access revocation across all systems."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "Workday worker ID of the terminated employee."
            - name: upn
              in: body
              type: string
              description: "Microsoft 365 user principal name of the terminated employee."
          steps:
            - name: disable-m365
              type: call
              call: msgraph.disable-user
              with:
                user_id: "{{upn}}"
                accountEnabled: false
            - name: create-offboarding-task
              type: call
              call: servicenow.create-task
              with:
                category: hr_offboarding
                short_description: "IT offboarding: {{upn}}"
                assigned_group: IT_Security
                description: "Workday termination {{workday_employee_id}}. M365 account disabled. Complete access revocation for all airline systems."
  consumes:
    - type: http
      namespace: msgraph
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{user_id}}"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: disable-user
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://delta.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST

Pulls active headcount from Workday by department and writes the weekly payroll snapshot to Snowflake for finance planning and compliance reporting.

naftiko: "0.5"
info:
  label: "Workday Headcount and Payroll Snapshot"
  description: "Pulls active headcount from Workday by department and writes the weekly payroll snapshot to Snowflake for finance planning and compliance reporting."
  tags:
    - hr
    - finance
    - workday
    - snowflake
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: workforce-finance
      port: 8080
      tools:
        - name: snapshot-headcount-payroll
          description: "Retrieve active employee headcount and cost center allocations from Workday, then write the weekly snapshot to Snowflake for workforce planning and payroll reconciliation."
          inputParameters:
            - name: snapshot_date
              in: body
              type: string
              description: "ISO 8601 date for the headcount and payroll snapshot."
          steps:
            - name: get-workers
              type: call
              call: workday.list-workers
              with:
                effective_date: "{{snapshot_date}}"
                employment_status: active
            - name: store-snapshot
              type: call
              call: snowflake.execute-query
              with:
                statement: "INSERT INTO headcount_snapshots (snapshot_date, total_headcount, source) VALUES ('{{snapshot_date}}', {{get-workers.total_results}}, 'workday')"
  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"
          inputParameters:
            - name: effective_date
              in: query
            - name: employment_status
              in: query
          operations:
            - name: list-workers
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://delta.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Submits a new headcount position request from Workday, creates a Jira approval task for the hiring committee, and notifies talent acquisition in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Workday New Position Headcount Request"
  description: "Submits a new headcount position request from Workday, creates a Jira approval task for the hiring committee, and notifies talent acquisition in Microsoft Teams."
  tags:
    - hr
    - recruiting
    - workday
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: talent-acquisition
      port: 8080
      tools:
        - name: submit-headcount-request
          description: "Given a Workday requisition ID, job title, and department, create a Jira headcount approval task and notify the talent acquisition Microsoft Teams channel to begin the hiring workflow."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "Workday position requisition ID for the open headcount."
            - name: job_title
              in: body
              type: string
              description: "Job title for the open position."
            - name: department
              in: body
              type: string
              description: "Department requesting the new headcount."
          steps:
            - name: create-approval-task
              type: call
              call: jira.create-issue
              with:
                project_key: HR
                issuetype: Task
                summary: "Headcount approval: {{job_title}} in {{department}}"
                description: "Workday requisition {{requisition_id}} for {{job_title}} in {{department}} pending committee approval."
            - name: notify-ta
              type: call
              call: msteams.send-channel-message
              with:
                team_id: "$secrets.teams_hr_team_id"
                channel_id: "$secrets.teams_ta_channel_id"
                text: "New headcount request: {{job_title}} in {{department}} | Jira approval: {{create-approval-task.key}} | Workday req: {{requisition_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://delta.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST