United Airlines Capabilities
Naftiko 0.5 capability definitions for United Airlines - 100 capabilities showing integration workflows and service orchestrations.
Creates a lavatory service request in the ground operations system for turnaround servicing of aircraft lavatories.
naftiko: "0.5"
info:
label: "Aircraft Lavatory Service Request"
description: "Creates a lavatory service request in the ground operations system for turnaround servicing of aircraft lavatories."
tags:
- ground-ops
- maintenance
capability:
exposes:
- type: mcp
namespace: lav-service
port: 8080
tools:
- name: request-lav-service
description: "Submit a lavatory service request for an aircraft."
inputParameters:
- name: tail_number
in: body
type: string
description: "Aircraft tail number."
- name: gate
in: body
type: string
description: "Gate number."
- name: station
in: body
type: string
description: "Airport station."
call: "ground-ops.create-lav-request"
with:
tail: "{{tail_number}}"
gate: "{{gate}}"
station: "{{station}}"
outputParameters:
- name: request_id
type: string
mapping: "$.requestId"
- name: estimated_completion
type: string
mapping: "$.estimatedCompletion"
consumes:
- type: http
namespace: ground-ops
baseUri: "https://groundops.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: lav-service
path: "/services/lavatory"
operations:
- name: create-lav-request
method: POST
Retrieves the current maintenance status, open MEL items, and next scheduled check for a specific aircraft tail number.
naftiko: "0.5"
info:
label: "Aircraft Maintenance Status Lookup"
description: "Retrieves the current maintenance status, open MEL items, and next scheduled check for a specific aircraft tail number."
tags:
- maintenance
- flight-operations
- safety
capability:
exposes:
- type: mcp
namespace: mx-status
port: 8080
tools:
- name: get-aircraft-mx-status
description: "Look up maintenance status and open items for an aircraft by tail number."
inputParameters:
- name: tail_number
in: body
type: string
description: "Aircraft tail number (e.g., N12345)."
call: "mx-api.get-status"
with:
tail: "{{tail_number}}"
outputParameters:
- name: status
type: string
mapping: "$.maintenanceStatus"
- name: open_mel_items
type: array
mapping: "$.openMELItems"
- name: next_check
type: string
mapping: "$.nextScheduledCheck"
- name: flight_hours_remaining
type: number
mapping: "$.flightHoursRemaining"
consumes:
- type: http
namespace: mx-api
baseUri: "https://maintenance.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.mx_api_token"
resources:
- name: aircraft
path: "/aircraft/{{tail}}/status"
inputParameters:
- name: tail
in: path
operations:
- name: get-status
method: GET
When an aircraft maintenance defect is logged, creates a SAP Plant Maintenance work order, assigns it to the maintenance team, and notifies the maintenance director via Teams.
naftiko: "0.5"
info:
label: "Aircraft Maintenance Work Order Creation"
description: "When an aircraft maintenance defect is logged, creates a SAP Plant Maintenance work order, assigns it to the maintenance team, and notifies the maintenance director via Teams."
tags:
- maintenance
- sap
- microsoft-teams
- aviation
capability:
exposes:
- type: mcp
namespace: aircraft-maintenance
port: 8080
tools:
- name: create-maintenance-work-order
description: "Given an aircraft tail number, defect code, and description, create a SAP PM work order for the MRO team and notify the maintenance director via Teams."
inputParameters:
- name: tail_number
in: body
type: string
description: "Aircraft tail number (registration) with the defect."
- name: defect_code
in: body
type: string
description: "ATA chapter defect code for the maintenance issue."
- name: defect_description
in: body
type: string
description: "Description of the aircraft defect or squawk."
- name: maintenance_director_upn
in: body
type: string
description: "UPN of the maintenance director to notify."
steps:
- name: create-sap-work-order
type: call
call: "sap-mro.create-work-order"
with:
equipment: "{{tail_number}}"
short_text: "{{defect_code}}: {{defect_description}}"
order_type: "PM01"
- name: notify-maintenance-director
type: call
call: "msteams-mro.send-message"
with:
recipient_upn: "{{maintenance_director_upn}}"
text: "Maintenance work order created: Aircraft {{tail_number}} | Defect: {{defect_code}} | {{defect_description}} | SAP WO: {{create-sap-work-order.work_order_number}}"
consumes:
- type: http
namespace: sap-mro
baseUri: "https://united-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: work-orders
path: "/MaintenanceOrder"
operations:
- name: create-work-order
method: POST
- type: http
namespace: msteams-mro
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Orchestrates an aircraft swap by identifying a replacement aircraft, updating the flight record, recalculating weight and balance, notifying dispatch and crew, and adjusting gate assignments.
naftiko: "0.5"
info:
label: "Aircraft Swap Orchestrator"
description: "Orchestrates an aircraft swap by identifying a replacement aircraft, updating the flight record, recalculating weight and balance, notifying dispatch and crew, and adjusting gate assignments."
tags:
- flight-operations
- dispatch
- fleet-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aircraft-swap
port: 8080
tools:
- name: execute-aircraft-swap
description: "Execute an aircraft swap for a flight due to maintenance or operational needs."
inputParameters:
- name: flight_number
in: body
type: string
description: "Flight number requiring swap."
- name: original_tail
in: body
type: string
description: "Original aircraft tail number."
- name: station
in: body
type: string
description: "Station where swap occurs."
steps:
- name: find-replacement
type: call
call: "fleet-api.find-available-aircraft"
with:
station: "{{station}}"
original_tail: "{{original_tail}}"
- name: update-flight-record
type: call
call: "pss.update-aircraft"
with:
flight_number: "{{flight_number}}"
new_tail: "{{find-replacement.tail_number}}"
- name: recalc-wb
type: call
call: "dispatch-api.recalculate-wb"
with:
flight_number: "{{flight_number}}"
tail: "{{find-replacement.tail_number}}"
- name: notify-teams
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{ops_channel_id}}"
text: "Aircraft swap for {{flight_number}}: {{original_tail}} -> {{find-replacement.tail_number}} at {{station}}"
consumes:
- type: http
namespace: fleet-api
baseUri: "https://fleet.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.fleet_api_token"
resources:
- name: available
path: "/aircraft/available"
operations:
- name: find-available-aircraft
method: POST
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: flights
path: "/flights/{{flight_number}}/aircraft"
inputParameters:
- name: flight_number
in: path
operations:
- name: update-aircraft
method: PUT
- type: http
namespace: dispatch-api
baseUri: "https://dispatch.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.dispatch_token"
resources:
- name: weight-balance
path: "/weight-balance/recalculate"
operations:
- name: recalculate-wb
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Orchestrates the aircraft turnaround process by coordinating gate assignment, ground crew dispatch, fueling request, catering order, and cleaning crew notification for an arriving flight.
naftiko: "0.5"
info:
label: "Aircraft Turnaround Coordination Orchestrator"
description: "Orchestrates the aircraft turnaround process by coordinating gate assignment, ground crew dispatch, fueling request, catering order, and cleaning crew notification for an arriving flight."
tags:
- flight-operations
- ground-ops
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: turnaround-ops
port: 8080
tools:
- name: coordinate-turnaround
description: "Initiate and coordinate all 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: "Assigned gate number."
- name: station
in: body
type: string
description: "Airport station code."
- name: aircraft_type
in: body
type: string
description: "Aircraft type (e.g., B737-900, B787-10)."
steps:
- name: request-fueling
type: call
call: "ground-ops.create-fuel-request"
with:
flight_number: "{{flight_number}}"
gate: "{{gate}}"
aircraft_type: "{{aircraft_type}}"
station: "{{station}}"
- name: dispatch-ground-crew
type: call
call: "ground-ops.dispatch-crew"
with:
gate: "{{gate}}"
station: "{{station}}"
task_type: "turnaround"
- name: order-catering
type: call
call: "catering-api.create-order"
with:
flight_number: "{{flight_number}}"
gate: "{{gate}}"
station: "{{station}}"
- name: notify-cleaning
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{cleaning_channel_id}}"
text: "Cleaning required at gate {{gate}} for {{flight_number}} ({{aircraft_type}}) at {{station}}. Fuel: {{request-fueling.status}}, Ground crew: {{dispatch-ground-crew.status}}"
consumes:
- type: http
namespace: ground-ops
baseUri: "https://groundops.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: fuel-requests
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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.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: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Creates an ADA accommodation request for a passenger with disabilities, coordinating specialized equipment, seating, and assistance services at the airport.
naftiko: "0.5"
info:
label: "Airport ADA Accommodation Request"
description: "Creates an ADA accommodation request for a passenger with disabilities, coordinating specialized equipment, seating, and assistance services at the airport."
tags:
- customer-service
- accessibility
- compliance
capability:
exposes:
- type: mcp
namespace: ada-services
port: 8080
tools:
- name: request-ada-accommodation
description: "Submit an ADA accommodation request for a passenger."
inputParameters:
- name: pnr
in: body
type: string
description: "Passenger name record."
- name: accommodation_type
in: body
type: string
description: "Type of accommodation needed."
- name: station
in: body
type: string
description: "Airport station."
- name: flight_number
in: body
type: string
description: "Associated flight."
call: "ground-ops.create-ada-request"
with:
pnr: "{{pnr}}"
type: "{{accommodation_type}}"
station: "{{station}}"
flight: "{{flight_number}}"
outputParameters:
- name: request_id
type: string
mapping: "$.requestId"
- name: assigned_agent
type: string
mapping: "$.assignedAgent"
consumes:
- type: http
namespace: ground-ops
baseUri: "https://groundops.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: ada
path: "/ada/request"
operations:
- name: create-ada-request
method: POST
Retrieves the operational status and location of ground support equipment (tugs, belt loaders, GPUs) at an airport station.
naftiko: "0.5"
info:
label: "Airport Ground Equipment Status"
description: "Retrieves the operational status and location of ground support equipment (tugs, belt loaders, GPUs) at an airport station."
tags:
- ground-ops
- equipment
- tracking
capability:
exposes:
- type: mcp
namespace: gse-ops
port: 8080
tools:
- name: get-gse-status
description: "Check status of ground support equipment at a station."
inputParameters:
- name: station
in: body
type: string
description: "Airport station code."
- name: equipment_type
in: body
type: string
description: "Equipment type (tug, belt_loader, gpu, deice_truck)."
call: "ground-ops.get-equipment-status"
with:
station: "{{station}}"
type: "{{equipment_type}}"
outputParameters:
- name: available_units
type: number
mapping: "$.availableUnits"
- name: in_use_units
type: number
mapping: "$.inUseUnits"
- name: out_of_service
type: number
mapping: "$.outOfService"
consumes:
- type: http
namespace: ground-ops
baseUri: "https://groundops.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: equipment
path: "/equipment/status"
operations:
- name: get-equipment-status
method: POST
Verifies that a scheduled flight operation complies with airport noise curfew restrictions, checking departure and arrival times against local noise abatement rules.
naftiko: "0.5"
info:
label: "Airport Noise Curfew Compliance Check"
description: "Verifies that a scheduled flight operation complies with airport noise curfew restrictions, checking departure and arrival times against local noise abatement rules."
tags:
- compliance
- flight-operations
- scheduling
capability:
exposes:
- type: mcp
namespace: noise-compliance
port: 8080
tools:
- name: check-noise-curfew
description: "Verify noise curfew compliance for a flight."
inputParameters:
- name: airport
in: body
type: string
description: "Airport IATA code."
- name: operation_time
in: body
type: string
description: "Scheduled operation time in local time."
- name: aircraft_type
in: body
type: string
description: "Aircraft type."
call: "compliance-api.check-noise-curfew"
with:
airport: "{{airport}}"
time: "{{operation_time}}"
aircraft: "{{aircraft_type}}"
outputParameters:
- name: compliant
type: boolean
mapping: "$.isCompliant"
- name: curfew_start
type: string
mapping: "$.curfewStart"
- name: curfew_end
type: string
mapping: "$.curfewEnd"
consumes:
- type: http
namespace: compliance-api
baseUri: "https://compliance.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.compliance_token"
resources:
- name: noise-curfew
path: "/noise/curfew-check"
operations:
- name: check-noise-curfew
method: POST
Pulls current shift staffing levels from the workforce management system for a given airport station, comparing against required minimums.
naftiko: "0.5"
info:
label: "Airport Operations Staffing Report"
description: "Pulls current shift staffing levels from the workforce management system for a given airport station, comparing against required minimums."
tags:
- ground-ops
- workforce-management
- workday
capability:
exposes:
- type: mcp
namespace: staffing
port: 8080
tools:
- name: get-staffing-report
description: "Retrieve staffing levels and coverage gaps for an airport station."
inputParameters:
- name: station
in: body
type: string
description: "Airport station IATA code."
- name: shift
in: body
type: string
description: "Shift period (e.g., AM, PM, overnight)."
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"
- name: coverage_gaps
type: array
mapping: "$.coverageGaps"
consumes:
- type: http
namespace: workforce-api
baseUri: "https://workforce.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.workforce_token"
resources:
- name: staffing
path: "/stations/{{station}}/staffing"
inputParameters:
- name: station
in: path
operations:
- name: get-staffing
method: GET
Checks real-time parking availability at United-operated airport parking facilities for customer service and traveler information.
naftiko: "0.5"
info:
label: "Airport Parking Availability Check"
description: "Checks real-time parking availability at United-operated airport parking facilities for customer service and traveler information."
tags:
- customer-service
- airport
- ground-ops
capability:
exposes:
- type: mcp
namespace: parking
port: 8080
tools:
- name: check-parking
description: "Check parking availability at an airport."
inputParameters:
- name: station
in: body
type: string
description: "Airport IATA code."
call: "airport-api.get-parking"
with:
station: "{{station}}"
outputParameters:
- name: lots
type: array
mapping: "$.parkingLots"
- name: economy_available
type: number
mapping: "$.economyAvailable"
- name: premium_available
type: number
mapping: "$.premiumAvailable"
consumes:
- type: http
namespace: airport-api
baseUri: "https://api.united.com/v1/airports"
authentication:
type: bearer
token: "$secrets.united_api_token"
resources:
- name: parking
path: "/{{station}}/parking"
inputParameters:
- name: station
in: path
operations:
- name: get-parking
method: GET
Retrieves estimated security checkpoint wait times at a given airport terminal for customer service and rebooking decision support.
naftiko: "0.5"
info:
label: "Airport Security Checkpoint Wait Times"
description: "Retrieves estimated security checkpoint wait times at a given airport terminal for customer service and rebooking decision support."
tags:
- customer-service
- ground-ops
- airport
capability:
exposes:
- type: mcp
namespace: security-wait
port: 8080
tools:
- name: get-checkpoint-wait
description: "Get current security checkpoint wait time estimates."
inputParameters:
- name: station
in: body
type: string
description: "Airport IATA code."
- name: terminal
in: body
type: string
description: "Terminal number."
call: "airport-api.get-wait-times"
with:
station: "{{station}}"
terminal: "{{terminal}}"
outputParameters:
- name: standard_wait_minutes
type: number
mapping: "$.standardWait"
- name: precheck_wait_minutes
type: number
mapping: "$.precheckWait"
- name: clear_wait_minutes
type: number
mapping: "$.clearWait"
consumes:
- type: http
namespace: airport-api
baseUri: "https://api.united.com/v1/airports"
authentication:
type: bearer
token: "$secrets.united_api_token"
resources:
- name: wait-times
path: "/{{station}}/security/wait-times"
inputParameters:
- name: station
in: path
operations:
- name: get-wait-times
method: GET
Creates a wheelchair assistance request in the ground operations system for a passenger needing mobility support at a given airport station.
naftiko: "0.5"
info:
label: "Airport Wheelchair Service Request"
description: "Creates a wheelchair assistance request in the ground operations system for a passenger needing mobility support at a given airport station."
tags:
- customer-service
- ground-ops
- accessibility
capability:
exposes:
- type: mcp
namespace: wheelchair-svc
port: 8080
tools:
- name: request-wheelchair
description: "Submit a wheelchair service request for a passenger."
inputParameters:
- name: pnr
in: body
type: string
description: "Passenger name record."
- name: station
in: body
type: string
description: "Airport station code."
- name: service_type
in: body
type: string
description: "Service type (WCHR, WCHS, WCHC)."
- name: flight_number
in: body
type: string
description: "Associated flight number."
call: "ground-ops.create-wheelchair-request"
with:
pnr: "{{pnr}}"
station: "{{station}}"
type: "{{service_type}}"
flight: "{{flight_number}}"
outputParameters:
- name: request_id
type: string
mapping: "$.requestId"
- name: estimated_time
type: string
mapping: "$.estimatedServiceTime"
consumes:
- type: http
namespace: ground-ops
baseUri: "https://groundops.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: wheelchair
path: "/wheelchair/request"
operations:
- name: create-wheelchair-request
method: POST
Retrieves ancillary revenue details for a booking including seat upgrades, bag fees, inflight purchases, and travel insurance.
naftiko: "0.5"
info:
label: "Ancillary Revenue Booking Lookup"
description: "Retrieves ancillary revenue details for a booking including seat upgrades, bag fees, inflight purchases, and travel insurance."
tags:
- revenue-management
- customer-service
capability:
exposes:
- type: mcp
namespace: ancillary-revenue
port: 8080
tools:
- name: get-ancillary-revenue
description: "Look up ancillary revenue items associated with a booking."
inputParameters:
- name: pnr
in: body
type: string
description: "Passenger name record."
call: "revenue-api.get-ancillaries"
with:
pnr: "{{pnr}}"
outputParameters:
- name: total_ancillary_revenue
type: number
mapping: "$.totalAncillaryRevenue"
- name: items
type: array
mapping: "$.ancillaryItems"
consumes:
- type: http
namespace: revenue-api
baseUri: "https://analytics.united.com/api/v1/revenue"
authentication:
type: bearer
token: "$secrets.revenue_analytics_token"
resources:
- name: ancillaries
path: "/bookings/{{pnr}}/ancillaries"
inputParameters:
- name: pnr
in: path
operations:
- name: get-ancillaries
method: GET
Initiates the annual budget planning cycle by creating budget submission tasks in ServiceNow for all department heads and notifying them via Microsoft Teams.
naftiko: "0.5"
info:
label: "Annual Budget Planning Kickoff"
description: "Initiates the annual budget planning cycle by creating budget submission tasks in ServiceNow for all department heads and notifying them via Microsoft Teams."
tags:
- finance
- budgeting
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: budget-planning
port: 8080
tools:
- name: kickoff-budget-cycle
description: "Given a fiscal year and submission deadline, create ServiceNow budget submission tasks for all department heads and post a kickoff notification to the finance leadership Teams channel."
inputParameters:
- name: fiscal_year
in: body
type: string
description: "The fiscal year being budgeted (e.g., FY2027)."
- name: submission_deadline
in: body
type: string
description: "Budget submission deadline in YYYY-MM-DD format."
- name: finance_channel_id
in: body
type: string
description: "Teams channel ID for finance leadership."
steps:
- name: create-budget-task
type: call
call: "servicenow-budget.create-task"
with:
short_description: "{{fiscal_year}} Budget Planning — submission due {{submission_deadline}}"
category: "finance_planning"
assignment_group: "FP_And_A"
due_date: "{{submission_deadline}}"
- name: notify-finance-leadership
type: call
call: "msteams-budget.post-channel-message"
with:
channel_id: "{{finance_channel_id}}"
text: "{{fiscal_year}} budget planning cycle is open. Submit all department budgets by {{submission_deadline}}. Planning task: {{create-budget-task.number}}."
consumes:
- type: http
namespace: servicenow-budget
baseUri: "https://united.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
- type: http
namespace: msteams-budget
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When an aircraft is grounded (AOG), searches parts inventory across stations, arranges expedited shipping of the needed part, creates a SAP purchase order if needed, and notifies maintenance control.
naftiko: "0.5"
info:
label: "AOG Parts Expedite Orchestrator"
description: "When an aircraft is grounded (AOG), searches parts inventory across stations, arranges expedited shipping of the needed part, creates a SAP purchase order if needed, 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 part for an AOG aircraft."
inputParameters:
- name: part_number
in: body
type: string
description: "Required part number."
- name: tail_number
in: body
type: string
description: "AOG aircraft tail number."
- name: station
in: body
type: string
description: "Station where aircraft is grounded."
steps:
- name: search-inventory
type: call
call: "parts-api.search-network"
with:
part_number: "{{part_number}}"
- name: arrange-shipping
type: call
call: "logistics-api.expedite-shipment"
with:
part_number: "{{part_number}}"
from_station: "{{search-inventory.closest_station}}"
to_station: "{{station}}"
- name: create-po
type: call
call: "sap.create-purchase-order"
with:
material: "{{part_number}}"
plant: "{{station}}"
priority: "AOG"
- name: notify-mx-control
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{mx_control_channel}}"
text: "AOG Part expedite: {{part_number}} for {{tail_number}} at {{station}} | Source: {{search-inventory.closest_station}} | ETA: {{arrange-shipping.eta}} | PO: {{create-po.po_number}}"
consumes:
- type: http
namespace: parts-api
baseUri: "https://maintenance.united.com/api/v1/parts"
authentication:
type: bearer
token: "$secrets.mx_api_token"
resources:
- name: network-search
path: "/search/network"
operations:
- name: search-network
method: POST
- type: http
namespace: logistics-api
baseUri: "https://logistics.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.logistics_token"
resources:
- name: expedite
path: "/shipments/expedite"
operations:
- name: expedite-shipment
method: POST
- type: http
namespace: sap
baseUri: "https://united-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: purchase-orders
path: "/A_PurchaseOrder"
operations:
- name: create-purchase-order
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves baggage claim carousel assignment and status for a given flight arrival, enabling customer service agents to quickly resolve baggage inquiries.
naftiko: "0.5"
info:
label: "Baggage Claim Status Lookup"
description: "Retrieves baggage claim carousel assignment and status for a given flight arrival, enabling customer service agents to quickly resolve baggage inquiries."
tags:
- customer-service
- baggage
capability:
exposes:
- type: mcp
namespace: baggage-ops
port: 8080
tools:
- name: get-baggage-claim
description: "Look up baggage claim carousel and status for a specific flight arrival."
inputParameters:
- name: flight_number
in: body
type: string
description: "United flight number."
- name: arrival_station
in: body
type: string
description: "Arrival airport IATA code (e.g., ORD, EWR)."
call: "baggage-api.get-claim"
with:
flight_number: "{{flight_number}}"
station: "{{arrival_station}}"
outputParameters:
- name: carousel
type: string
mapping: "$.carouselNumber"
- name: status
type: string
mapping: "$.claimStatus"
consumes:
- type: http
namespace: baggage-api
baseUri: "https://api.united.com/v1/baggage"
authentication:
type: bearer
token: "$secrets.united_api_token"
resources:
- name: claims
path: "/claim/{{flight_number}}"
inputParameters:
- name: flight_number
in: path
operations:
- name: get-claim
method: GET
Tracks the boarding progress for a flight, showing scanned vs expected passengers, boarding group progress, and estimated completion time.
naftiko: "0.5"
info:
label: "Boarding Process Status Tracker"
description: "Tracks the boarding progress for a flight, showing scanned vs expected passengers, boarding group progress, and estimated completion time."
tags:
- ground-ops
- flight-operations
- tracking
capability:
exposes:
- type: mcp
namespace: boarding-ops
port: 8080
tools:
- name: get-boarding-status
description: "Get real-time boarding progress for a flight."
inputParameters:
- name: flight_number
in: body
type: string
description: "Flight number."
- name: gate
in: body
type: string
description: "Departure gate."
call: "gate-api.get-boarding-status"
with:
flight: "{{flight_number}}"
gate: "{{gate}}"
outputParameters:
- name: passengers_boarded
type: number
mapping: "$.passengersBoarded"
- name: total_expected
type: number
mapping: "$.totalExpected"
- name: current_group
type: string
mapping: "$.currentBoardingGroup"
- name: est_completion
type: string
mapping: "$.estimatedCompletion"
consumes:
- type: http
namespace: gate-api
baseUri: "https://groundops.united.com/api/v1/gates"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: boarding
path: "/{{gate}}/boarding-status"
inputParameters:
- name: gate
in: path
operations:
- name: get-boarding-status
method: GET
Queries crew language qualifications to find flight attendants with required language skills for international route assignments.
naftiko: "0.5"
info:
label: "Cabin Crew Language Qualification Lookup"
description: "Queries crew language qualifications to find flight attendants with required language skills for international route assignments."
tags:
- crew-scheduling
- compliance
- international
capability:
exposes:
- type: mcp
namespace: crew-languages
port: 8080
tools:
- name: search-language-qualified-crew
description: "Find crew members qualified in a specific language for international routes."
inputParameters:
- name: language
in: body
type: string
description: "Required language (e.g., Japanese, Mandarin, Portuguese)."
- name: base
in: body
type: string
description: "Crew base."
- name: date
in: body
type: string
description: "Date for availability check."
call: "crew-mgmt.search-language-crew"
with:
language: "{{language}}"
base: "{{base}}"
date: "{{date}}"
outputParameters:
- name: qualified_crew
type: array
mapping: "$.qualifiedCrew"
- name: total_available
type: number
mapping: "$.totalAvailable"
consumes:
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: language-search
path: "/crew/language-search"
operations:
- name: search-language-crew
method: POST
Retrieves real-time cabin pressurization system telemetry data from the aircraft health monitoring system for maintenance and safety analysis.
naftiko: "0.5"
info:
label: "Cabin Pressure System Monitoring"
description: "Retrieves real-time cabin pressurization system telemetry data from the aircraft health monitoring system for maintenance and safety analysis."
tags:
- maintenance
- safety
- monitoring
capability:
exposes:
- type: mcp
namespace: aircraft-health
port: 8080
tools:
- name: get-cabin-pressure-data
description: "Pull cabin pressurization telemetry for an aircraft."
inputParameters:
- name: tail_number
in: body
type: string
description: "Aircraft tail number."
- name: flight_number
in: body
type: string
description: "Flight number."
call: "ahm-api.get-pressure-data"
with:
tail: "{{tail_number}}"
flight: "{{flight_number}}"
outputParameters:
- name: cabin_altitude
type: number
mapping: "$.cabinAltitude"
- name: differential_pressure
type: number
mapping: "$.differentialPressure"
- name: status
type: string
mapping: "$.systemStatus"
consumes:
- type: http
namespace: ahm-api
baseUri: "https://ahm.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ahm_token"
resources:
- name: pressure
path: "/aircraft/{{tail}}/cabin-pressure"
inputParameters:
- name: tail
in: path
operations:
- name: get-pressure-data
method: GET
Creates a new cargo booking in the United Cargo system with shipper details, commodity type, weight, and requested routing.
naftiko: "0.5"
info:
label: "Cargo Booking Creation"
description: "Creates a new cargo booking in the United Cargo system with shipper details, commodity type, weight, and requested routing."
tags:
- cargo
- logistics
capability:
exposes:
- type: mcp
namespace: cargo-booking
port: 8080
tools:
- name: create-cargo-booking
description: "Create a new air cargo booking with routing and commodity details."
inputParameters:
- name: shipper_name
in: body
type: string
description: "Shipper company name."
- name: origin
in: body
type: string
description: "Origin airport IATA code."
- name: destination
in: body
type: string
description: "Destination airport IATA code."
- name: weight_kg
in: body
type: number
description: "Shipment weight in kilograms."
- name: commodity_type
in: body
type: string
description: "Commodity type code."
call: "cargo-api.create-booking"
with:
shipper: "{{shipper_name}}"
origin: "{{origin}}"
destination: "{{destination}}"
weight: "{{weight_kg}}"
commodity: "{{commodity_type}}"
outputParameters:
- name: booking_id
type: string
mapping: "$.bookingId"
- name: awb_number
type: string
mapping: "$.awbNumber"
consumes:
- type: http
namespace: cargo-api
baseUri: "https://cargo.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.united_cargo_token"
resources:
- name: bookings
path: "/bookings"
operations:
- name: create-booking
method: POST
Generates a daily cargo revenue summary report including total shipments, revenue by commodity type, and capacity utilization across the network.
naftiko: "0.5"
info:
label: "Cargo Revenue Daily Summary"
description: "Generates a daily cargo revenue summary report including total shipments, revenue by commodity type, and capacity utilization across the network."
tags:
- cargo
- revenue-management
- analytics
capability:
exposes:
- type: mcp
namespace: cargo-analytics
port: 8080
tools:
- name: get-cargo-daily-summary
description: "Generate a daily cargo revenue summary."
inputParameters:
- name: report_date
in: body
type: string
description: "Report date in YYYY-MM-DD."
call: "cargo-api.get-daily-summary"
with:
date: "{{report_date}}"
outputParameters:
- name: total_revenue
type: number
mapping: "$.totalRevenue"
- name: total_shipments
type: number
mapping: "$.totalShipments"
- name: capacity_utilization
type: number
mapping: "$.capacityUtilization"
- name: revenue_by_commodity
type: object
mapping: "$.revenueByCommodity"
consumes:
- type: http
namespace: cargo-api
baseUri: "https://cargo.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.united_cargo_token"
resources:
- name: daily-summary
path: "/analytics/daily-summary"
operations:
- name: get-daily-summary
method: POST
Retrieves current tracking status, origin, destination, and estimated arrival for a United Cargo air waybill number.
naftiko: "0.5"
info:
label: "Cargo Shipment Tracking Lookup"
description: "Retrieves current tracking status, origin, destination, and estimated arrival for a United Cargo air waybill number."
tags:
- cargo
- logistics
- tracking
capability:
exposes:
- type: mcp
namespace: cargo-tracking
port: 8080
tools:
- name: track-cargo-shipment
description: "Look up a United Cargo shipment by air waybill number and return current status and location."
inputParameters:
- name: awb_number
in: body
type: string
description: "Air waybill number (e.g., 016-12345678)."
call: "cargo-api.get-tracking"
with:
awb: "{{awb_number}}"
outputParameters:
- name: status
type: string
mapping: "$.shipmentStatus"
- name: current_location
type: string
mapping: "$.currentLocation"
- name: origin
type: string
mapping: "$.origin"
- name: destination
type: string
mapping: "$.destination"
- name: eta
type: string
mapping: "$.estimatedArrival"
consumes:
- type: http
namespace: cargo-api
baseUri: "https://cargo.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.united_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 specific flight, specifying meal counts by cabin class and special meal requirements.
naftiko: "0.5"
info:
label: "Catering Order Management"
description: "Creates or updates a catering order for a specific flight, specifying meal counts by cabin class and special meal requirements."
tags:
- catering
- flight-operations
capability:
exposes:
- type: mcp
namespace: catering
port: 8080
tools:
- name: manage-catering-order
description: "Create or update a catering order for a flight departure."
inputParameters:
- name: flight_number
in: body
type: string
description: "Flight number."
- name: flight_date
in: body
type: string
description: "Flight date."
- name: station
in: body
type: string
description: "Departure station code."
- name: meal_counts
in: body
type: string
description: "JSON object of cabin class to meal count."
call: "catering-api.upsert-order"
with:
flight_number: "{{flight_number}}"
date: "{{flight_date}}"
station: "{{station}}"
meals: "{{meal_counts}}"
outputParameters:
- name: order_id
type: string
mapping: "$.orderId"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: catering-api
baseUri: "https://catering.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.catering_token"
resources:
- name: orders
path: "/orders"
operations:
- name: upsert-order
method: PUT
When AWS Cost Anomaly Detection fires an alert, creates a Datadog event, opens a Jira FinOps investigation ticket, and notifies the cloud cost team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Cloud Cost Anomaly Responder"
description: "When AWS Cost Anomaly Detection fires an alert, creates a Datadog event, opens a Jira FinOps investigation ticket, and notifies the cloud cost team via Microsoft Teams."
tags:
- finops
- cloud-cost
- datadog
- jira
- microsoft-teams
- aws
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given an AWS cost anomaly with service name and estimated overage, create a Datadog event, open a Jira FinOps task, and notify the cloud cost team via Teams."
inputParameters:
- name: anomaly_id
in: body
type: string
description: "The AWS Cost Anomaly Detection anomaly ID."
- name: service_name
in: body
type: string
description: "The AWS service exhibiting unexpected cost."
- name: estimated_overage_usd
in: body
type: number
description: "Estimated cost overage in USD."
- name: finops_channel_id
in: body
type: string
description: "Teams channel ID for the FinOps team."
steps:
- name: create-datadog-event
type: call
call: "datadog.create-event"
with:
title: "AWS Cost Anomaly: {{service_name}}"
text: "Anomaly {{anomaly_id}} — ${{estimated_overage_usd}} overage"
alert_type: "warning"
- name: create-jira-task
type: call
call: "jira.create-issue"
with:
project_key: "FINOPS"
issuetype: "Task"
summary: "Cost anomaly: {{service_name}} — ${{estimated_overage_usd}} overage"
description: "Anomaly: {{anomaly_id}}\nDatadog: {{create-datadog-event.url}}"
- name: notify-finops-team
type: call
call: "msteams-finops.post-channel-message"
with:
channel_id: "{{finops_channel_id}}"
text: "Cost Anomaly: {{service_name}} | Overage: ${{estimated_overage_usd}} | Jira: {{create-jira-task.key}} | Datadog: {{create-datadog-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://united.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-finops
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Synchronizes seat inventory between United and codeshare partner airlines, ensuring availability is accurately reflected across all distribution channels.
naftiko: "0.5"
info:
label: "Codeshare Flight Inventory Sync"
description: "Synchronizes seat inventory between United and codeshare partner airlines, ensuring availability is accurately reflected across all distribution channels."
tags:
- flight-operations
- partnerships
- revenue-management
capability:
exposes:
- type: mcp
namespace: codeshare-sync
port: 8080
tools:
- name: sync-codeshare-inventory
description: "Sync seat inventory with a codeshare partner for a given route."
inputParameters:
- name: partner_code
in: body
type: string
description: "Partner airline code (e.g., LH, NH, AC)."
- name: flight_number
in: body
type: string
description: "United 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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.inventory_token"
resources:
- name: codeshare
path: "/codeshare/sync"
operations:
- name: sync-partner
method: POST
Generates monthly crew bid packages from the scheduling system, compiling trip pairings, credit values, and base assignments for pilot and flight attendant bidding.
naftiko: "0.5"
info:
label: "Crew Bid Package Generation"
description: "Generates monthly crew bid packages from the scheduling system, compiling trip pairings, credit values, and base assignments for pilot and flight attendant 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 for a given base and bid period."
inputParameters:
- name: base
in: body
type: string
description: "Crew base code."
- name: position
in: body
type: string
description: "Position type (captain, first_officer, flight_attendant)."
- name: bid_month
in: body
type: string
description: "Bid month in YYYY-MM format."
call: "crew-mgmt.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"
- name: publish_date
type: string
mapping: "$.publishDate"
consumes:
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: bids
path: "/bidding/generate"
operations:
- name: generate-bids
method: POST
Queries the crew management system to verify FAA duty time compliance for a specific crew member, returning remaining legal hours and rest requirements.
naftiko: "0.5"
info:
label: "Crew Duty Time Compliance Check"
description: "Queries the crew management system to verify FAA duty time compliance for a specific crew member, 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 a crew member's current duty time status against FAA Part 117 limits."
inputParameters:
- name: employee_id
in: body
type: string
description: "Crew member employee ID."
- name: check_date
in: body
type: string
description: "Date to check compliance for."
call: "crew-mgmt.get-duty-status"
with:
employee_id: "{{employee_id}}"
date: "{{check_date}}"
outputParameters:
- name: hours_flown_period
type: number
mapping: "$.hoursFlownPeriod"
- name: remaining_legal_hours
type: number
mapping: "$.remainingLegalHours"
- name: rest_required
type: string
mapping: "$.restRequired"
- name: compliant
type: boolean
mapping: "$.isCompliant"
consumes:
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: duty-status
path: "/crew/{{employee_id}}/duty-status"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-duty-status
method: GET
When crew layover hotel bookings are needed, checks contracted hotel availability, books rooms, arranges ground transport, and notifies crew members of their accommodation details.
naftiko: "0.5"
info:
label: "Crew Hotel Accommodation Booking Orchestrator"
description: "When crew layover hotel bookings are needed, checks contracted hotel availability, books rooms, arranges ground transport, and notifies crew members of their accommodation details."
tags:
- crew-scheduling
- operations
- logistics
capability:
exposes:
- type: mcp
namespace: crew-hotels
port: 8080
tools:
- name: book-crew-hotel
description: "Book layover hotel accommodations for crew members."
inputParameters:
- name: crew_count
in: body
type: number
description: "Number of crew members."
- name: station
in: body
type: string
description: "Layover station."
- name: check_in
in: body
type: string
description: "Check-in date and time."
- name: check_out
in: body
type: string
description: "Check-out date and time."
- name: trip_id
in: body
type: string
description: "Trip pairing ID."
steps:
- name: check-hotel-availability
type: call
call: "hotel-api.check-availability"
with:
station: "{{station}}"
rooms: "{{crew_count}}"
check_in: "{{check_in}}"
check_out: "{{check_out}}"
- name: book-rooms
type: call
call: "hotel-api.book-rooms"
with:
hotel_id: "{{check-hotel-availability.hotel_id}}"
rooms: "{{crew_count}}"
check_in: "{{check_in}}"
check_out: "{{check_out}}"
- name: arrange-transport
type: call
call: "transport-api.book-crew-van"
with:
station: "{{station}}"
hotel_id: "{{check-hotel-availability.hotel_id}}"
pickup_time: "{{check_in}}"
- name: notify-crew
type: call
call: "crew-comms.send-trip-update"
with:
trip_id: "{{trip_id}}"
message: "Hotel: {{check-hotel-availability.hotel_name}} | Confirmation: {{book-rooms.confirmation}} | Van pickup: {{arrange-transport.pickup_time}}"
consumes:
- type: http
namespace: hotel-api
baseUri: "https://crew-services.united.com/api/v1/hotels"
authentication:
type: bearer
token: "$secrets.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.united.com/api/v1/transport"
authentication:
type: bearer
token: "$secrets.crew_services_token"
resources:
- name: crew-vans
path: "/crew-van/book"
operations:
- name: book-crew-van
method: POST
- type: http
namespace: crew-comms
baseUri: "https://crew.united.com/api/v1/comms"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: trip-updates
path: "/trips/{{trip_id}}/notify"
inputParameters:
- name: trip_id
in: path
operations:
- name: send-trip-update
method: POST
Checks crew member passport and visa expiration dates against upcoming international trip assignments, flagging any that expire within the required validity window.
naftiko: "0.5"
info:
label: "Crew Passport and Visa Expiry Alert"
description: "Checks crew member passport and visa expiration dates against upcoming international trip assignments, flagging any that expire within the required validity window."
tags:
- crew-scheduling
- compliance
- international
capability:
exposes:
- type: mcp
namespace: crew-docs
port: 8080
tools:
- name: check-crew-document-expiry
description: "Check crew passport and visa validity for upcoming international trips."
inputParameters:
- name: employee_id
in: body
type: string
description: "Crew member employee ID."
- name: destination_country
in: body
type: string
description: "Destination country ISO code."
call: "crew-mgmt.check-documents"
with:
employee_id: "{{employee_id}}"
country: "{{destination_country}}"
outputParameters:
- name: passport_valid
type: boolean
mapping: "$.passportValid"
- name: passport_expiry
type: string
mapping: "$.passportExpiry"
- name: visa_valid
type: boolean
mapping: "$.visaValid"
- name: visa_expiry
type: string
mapping: "$.visaExpiry"
consumes:
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: documents
path: "/crew/{{employee_id}}/documents/check"
inputParameters:
- name: employee_id
in: path
operations:
- name: check-documents
method: POST
When a crew member calls in sick, identifies qualified reserve crew at the base, checks duty time compliance, assigns the reserve to the trip, and notifies both the crew member and scheduling team.
naftiko: "0.5"
info:
label: "Crew Reserve Callout Orchestrator"
description: "When a crew member calls in sick, identifies qualified reserve crew at the base, checks duty time compliance, assigns the reserve to the trip, and notifies both the crew member and scheduling team."
tags:
- crew-scheduling
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crew-reserve
port: 8080
tools:
- name: callout-reserve-crew
description: "Find and assign a qualified reserve crew member for an open trip."
inputParameters:
- name: trip_id
in: body
type: string
description: "Trip pairing ID needing coverage."
- name: base
in: body
type: string
description: "Crew base (e.g., ORD, EWR, IAH, SFO)."
- name: position
in: body
type: string
description: "Position needed (captain, first_officer, flight_attendant)."
- name: aircraft_type
in: body
type: string
description: "Aircraft type qualification required."
steps:
- name: find-available-reserves
type: call
call: "crew-mgmt.search-reserves"
with:
base: "{{base}}"
position: "{{position}}"
type_rating: "{{aircraft_type}}"
- name: check-duty-compliance
type: call
call: "crew-mgmt.verify-duty-time"
with:
employee_id: "{{find-available-reserves.top_candidate}}"
trip_id: "{{trip_id}}"
- name: assign-reserve
type: call
call: "crew-mgmt.assign-trip"
with:
employee_id: "{{find-available-reserves.top_candidate}}"
trip_id: "{{trip_id}}"
- name: notify-scheduling
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{scheduling_channel_id}}"
text: "Reserve assigned: {{find-available-reserves.top_candidate_name}} to trip {{trip_id}} at {{base}}. Position: {{position}}."
consumes:
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: reserves
path: "/reserves/search"
operations:
- name: search-reserves
method: POST
- name: duty-verification
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: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a weather or operational event causes a crew scheduling disruption, creates a ServiceNow operations incident and notifies the crew resources team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Crew Scheduling Disruption Alert"
description: "When a weather or operational event causes a crew scheduling disruption, creates a ServiceNow operations incident and notifies the crew resources team via Microsoft Teams."
tags:
- operations
- crew-scheduling
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crew-ops
port: 8080
tools:
- name: handle-crew-disruption
description: "Given a disruption event type and affected flight numbers, create a ServiceNow incident for crew scheduling coordination and notify the crew resources team via Teams."
inputParameters:
- name: disruption_type
in: body
type: string
description: "Type of disruption (e.g., weather delay, mechanical, irregular ops)."
- name: affected_flights
in: body
type: string
description: "Comma-separated list of affected flight numbers."
- name: hub_station
in: body
type: string
description: "Airport hub station code affected (e.g., ORD, IAH, EWR, DEN)."
- name: crew_channel_id
in: body
type: string
description: "Teams channel ID for the crew resources team."
steps:
- name: create-crew-incident
type: call
call: "servicenow-crew.create-incident"
with:
short_description: "Crew disruption at {{hub_station}}: {{disruption_type}} — Flights: {{affected_flights}}"
category: "crew_scheduling"
priority: "2"
assignment_group: "Crew_Resources"
- name: notify-crew-resources
type: call
call: "msteams-crew.post-channel-message"
with:
channel_id: "{{crew_channel_id}}"
text: "Crew disruption alert at {{hub_station}}: {{disruption_type}} | Affected flights: {{affected_flights}} | ServiceNow: {{create-crew-incident.number}}"
consumes:
- type: http
namespace: servicenow-crew
baseUri: "https://united.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-crew
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Processes a customer complaint by creating a Salesforce case, determining compensation eligibility based on loyalty tier, issuing travel credits, and sending a resolution email.
naftiko: "0.5"
info:
label: "Customer Complaint Resolution Orchestrator"
description: "Processes a customer complaint by creating a Salesforce case, determining compensation eligibility based on loyalty tier, issuing travel credits, 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 through investigation to resolution."
inputParameters:
- name: mileageplus_number
in: body
type: string
description: "MileagePlus member number."
- name: complaint_type
in: body
type: string
description: "Complaint category."
- name: flight_number
in: body
type: string
description: "Related flight number."
- name: description
in: body
type: string
description: "Complaint description."
steps:
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "Customer complaint: {{complaint_type}} — {{flight_number}}"
description: "{{description}}"
priority: "High"
- name: check-loyalty-tier
type: call
call: "loyalty-api.get-member"
with:
member_id: "{{mileageplus_number}}"
- name: issue-compensation
type: call
call: "loyalty-api.issue-credit"
with:
member_id: "{{mileageplus_number}}"
complaint_type: "{{complaint_type}}"
tier: "{{check-loyalty-tier.currentTier}}"
- name: send-resolution
type: call
call: "notification-api.send-email"
with:
member_id: "{{mileageplus_number}}"
template: "complaint_resolution"
credit_amount: "{{issue-compensation.creditAmount}}"
case_id: "{{create-case.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://united.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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.loyalty_api_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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.notification_token"
resources:
- name: emails
path: "/email/send"
operations:
- name: send-email
method: POST
When a Salesforce customer service case is escalated to critical priority, creates a ServiceNow incident, triggers a PagerDuty alert, and notifies the customer relations manager via Teams.
naftiko: "0.5"
info:
label: "Customer Service Escalation Handler"
description: "When a Salesforce customer service case is escalated to critical priority, creates a ServiceNow incident, triggers a PagerDuty alert, and notifies the customer relations manager via Teams."
tags:
- customer-service
- escalation
- salesforce
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-service
port: 8080
tools:
- name: handle-cs-escalation
description: "Given a Salesforce case ID escalated to critical, create a ServiceNow high-priority incident, trigger PagerDuty, and notify the customer relations manager via Teams."
inputParameters:
- name: salesforce_case_id
in: body
type: string
description: "The Salesforce case ID that has been escalated."
- name: customer_name
in: body
type: string
description: "Name of the affected customer or MileagePlus member."
- name: issue_summary
in: body
type: string
description: "Brief summary of the escalated customer issue."
- name: cr_manager_upn
in: body
type: string
description: "UPN of the customer relations manager."
steps:
- name: get-case
type: call
call: "salesforce-cs.get-case"
with:
case_id: "{{salesforce_case_id}}"
- name: create-servicenow-incident
type: call
call: "servicenow-cs.create-incident"
with:
short_description: "Customer escalation: {{customer_name}} — {{issue_summary}}"
category: "customer_relations"
priority: "2"
- name: trigger-pagerduty
type: call
call: "pagerduty-cs.create-incident"
with:
title: "Customer escalation: {{customer_name}}"
service_id: "$secrets.pagerduty_cs_service_id"
urgency: "high"
- name: notify-cr-manager
type: call
call: "msteams-cs.send-message"
with:
recipient_upn: "{{cr_manager_upn}}"
text: "Customer escalation: {{customer_name}} | Issue: {{issue_summary}} | Salesforce: {{salesforce_case_id}} | ServiceNow: {{create-servicenow-incident.number}}"
consumes:
- type: http
namespace: salesforce-cs
baseUri: "https://united.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: get-case
method: GET
- type: http
namespace: servicenow-cs
baseUri: "https://united.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-cs
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-cs
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the current status of Datadog monitors for United Airlines' core flight operations systems and posts a daily infrastructure health digest to the IT ops Teams channel.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Health Monitoring"
description: "Retrieves the current status of Datadog monitors for United Airlines' core flight operations systems and posts a daily infrastructure health digest to the IT ops Teams channel."
tags:
- observability
- monitoring
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-health
port: 8080
tools:
- name: get-infra-health-digest
description: "Given a Datadog monitor ID for a core system and a Teams channel, retrieve the monitor's current state and post a health status digest to the IT ops channel."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID for the core system."
- name: system_name
in: body
type: string
description: "Human-readable name of the monitored system."
- name: it_ops_channel_id
in: body
type: string
description: "Teams channel ID for IT operations."
steps:
- name: get-monitor-status
type: call
call: "datadog-health.get-monitor"
with:
monitor_id: "{{monitor_id}}"
- name: post-health-digest
type: call
call: "msteams-health.post-channel-message"
with:
channel_id: "{{it_ops_channel_id}}"
text: "Infra Health: {{system_name}} | Status: {{get-monitor-status.overall_state}} | Last triggered: {{get-monitor-status.last_triggered}} | Monitor: {{monitor_id}}"
consumes:
- type: http
namespace: datadog-health
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/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: msteams-health
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Coordinates winter deicing operations by checking weather conditions, queuing aircraft for deicing, dispatching deicing trucks, and notifying the flight crew of holdover time via the ground operations system.
naftiko: "0.5"
info:
label: "Deicing Coordination Orchestrator"
description: "Coordinates winter deicing operations by checking weather conditions, queuing aircraft for deicing, dispatching deicing trucks, and notifying the flight crew of holdover time via the ground operations system."
tags:
- ground-ops
- flight-operations
- weather
- safety
capability:
exposes:
- type: mcp
namespace: deicing-ops
port: 8080
tools:
- name: coordinate-deicing
description: "Initiate and coordinate deicing for a departing aircraft."
inputParameters:
- name: flight_number
in: body
type: string
description: "Departing flight number."
- name: tail_number
in: body
type: string
description: "Aircraft tail number."
- name: gate
in: body
type: string
description: "Current gate."
- name: station
in: body
type: string
description: "Airport station."
steps:
- name: check-deice-conditions
type: call
call: "weather-api.get-deice-conditions"
with:
station: "{{station}}"
- name: queue-aircraft
type: call
call: "ground-ops.queue-deicing"
with:
tail_number: "{{tail_number}}"
gate: "{{gate}}"
fluid_type: "{{check-deice-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_number: "{{flight_number}}"
message: "Deicing queued. Fluid: {{check-deice-conditions.recommended_fluid}} | Est wait: {{queue-aircraft.estimated_wait}} min | Holdover: {{check-deice-conditions.holdover_time}} min"
consumes:
- type: http
namespace: weather-api
baseUri: "https://dispatch.united.com/api/v1/weather"
authentication:
type: bearer
token: "$secrets.dispatch_token"
resources:
- name: deice-conditions
path: "/deicing/{{station}}"
inputParameters:
- name: station
in: path
operations:
- name: get-deice-conditions
method: GET
- type: http
namespace: ground-ops
baseUri: "https://groundops.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: deicing-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.united.com/api/v1/comms"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: messages
path: "/flights/{{flight_number}}/message"
inputParameters:
- name: flight_number
in: path
operations:
- name: send-message
method: POST
When a flight diverts to an alternate airport, orchestrates recovery by arranging ground handling, passenger accommodations, crew rest compliance, and rebooking connections.
naftiko: "0.5"
info:
label: "Diversion Recovery Orchestrator"
description: "When a flight diverts to an alternate airport, orchestrates recovery by arranging ground handling, passenger accommodations, crew rest compliance, and rebooking connections."
tags:
- flight-operations
- customer-service
- ground-ops
- servicenow
capability:
exposes:
- type: mcp
namespace: diversion-recovery
port: 8080
tools:
- name: handle-diversion
description: "Coordinate recovery operations for a diverted flight."
inputParameters:
- name: flight_number
in: body
type: string
description: "Diverted flight number."
- name: diversion_airport
in: body
type: string
description: "Diversion airport code."
- name: reason
in: body
type: string
description: "Diversion reason."
steps:
- name: arrange-ground-handling
type: call
call: "ground-ops.request-handling"
with:
station: "{{diversion_airport}}"
flight_number: "{{flight_number}}"
service_type: "diversion"
- name: check-crew-rest
type: call
call: "crew-mgmt.check-rest-requirements"
with:
flight_number: "{{flight_number}}"
station: "{{diversion_airport}}"
- name: arrange-passenger-accommodations
type: call
call: "hotel-api.book-passenger-hotels"
with:
flight_number: "{{flight_number}}"
station: "{{diversion_airport}}"
- name: create-recovery-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Flight diversion: {{flight_number}} to {{diversion_airport}} — {{reason}}"
category: "flight_operations"
priority: "1"
consumes:
- type: http
namespace: ground-ops
baseUri: "https://groundops.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: handling
path: "/handling/request"
operations:
- name: request-handling
method: POST
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: rest
path: "/crew/rest-check"
operations:
- name: check-rest-requirements
method: POST
- type: http
namespace: hotel-api
baseUri: "https://crew-services.united.com/api/v1/hotels"
authentication:
type: bearer
token: "$secrets.crew_services_token"
resources:
- name: passenger-hotels
path: "/passenger-accommodations"
operations:
- name: book-passenger-hotels
method: POST
- type: http
namespace: servicenow
baseUri: "https://united.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 an employee receives a role change in Workday (promotion, transfer), updates their access profile via ServiceNow and notifies the new manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Role Change Notification"
description: "When an employee receives a role change in Workday (promotion, transfer), updates their access profile via ServiceNow and notifies the new manager via Microsoft Teams."
tags:
- hr
- role-change
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-role-change
port: 8080
tools:
- name: process-role-change
description: "Given an employee ID, new role, and effective date, update access permissions in ServiceNow and notify the new manager via Teams."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID receiving the role change."
- name: new_role
in: body
type: string
description: "The new job title or role."
- name: effective_date
in: body
type: string
description: "Effective date in YYYY-MM-DD format."
steps:
- name: get-employee
type: call
call: "workday-role.get-worker"
with:
worker_id: "{{employee_id}}"
- name: update-access
type: call
call: "servicenow-role.create-request"
with:
short_description: "Access update: {{get-employee.full_name}} → {{new_role}} effective {{effective_date}}"
category: "access_management"
assignment_group: "IT_Security"
- name: notify-manager
type: call
call: "msteams-role.send-message"
with:
recipient_upn: "{{get-employee.manager_email}}"
text: "Role change: {{get-employee.full_name}} transitions to {{new_role}} on {{effective_date}}. Access request: {{update-access.number}}"
consumes:
- type: http
namespace: workday-role
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: servicenow-role
baseUri: "https://united.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: msteams-role
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Monitors the health and status of critical ETL data pipelines in Azure Data Factory, returning run status, duration, and error details.
naftiko: "0.5"
info:
label: "ETL Data Pipeline Health Check"
description: "Monitors the health and status of critical ETL data pipelines in Azure Data Factory, returning run status, duration, and error details."
tags:
- data-engineering
- azure-databricks
- monitoring
capability:
exposes:
- type: mcp
namespace: pipeline-health
port: 8080
tools:
- name: check-pipeline-health
description: "Check the status of ETL pipelines in Azure Data Factory."
inputParameters:
- name: pipeline_name
in: body
type: string
description: "Pipeline name."
- name: hours_back
in: body
type: number
description: "Hours to look back for recent runs."
call: "adf.get-pipeline-runs"
with:
pipeline: "{{pipeline_name}}"
hours: "{{hours_back}}"
outputParameters:
- name: last_run_status
type: string
mapping: "$.value[0].status"
- name: duration_seconds
type: number
mapping: "$.value[0].durationInMs"
- name: error_message
type: string
mapping: "$.value[0].message"
consumes:
- type: http
namespace: adf
baseUri: "https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{rg}}/providers/Microsoft.DataFactory/factories/{{factory}}"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: pipeline-runs
path: "/queryPipelineRuns?api-version=2018-06-01"
operations:
- name: get-pipeline-runs
method: POST
Generates a fleet utilization summary showing block hours, cycles, and aircraft availability for a specified fleet type and date range.
naftiko: "0.5"
info:
label: "Fleet Utilization Report"
description: "Generates a fleet utilization summary showing block hours, cycles, and aircraft availability for a specified fleet type and date range."
tags:
- fleet-management
- analytics
- operations
capability:
exposes:
- type: mcp
namespace: fleet-analytics
port: 8080
tools:
- name: get-fleet-utilization
description: "Retrieve fleet utilization metrics for a given fleet type."
inputParameters:
- name: fleet_type
in: body
type: string
description: "Fleet type (e.g., B737, B787, A320)."
- 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: total_cycles
type: number
mapping: "$.totalCycles"
- name: avg_daily_utilization
type: number
mapping: "$.avgDailyUtilization"
- name: aircraft_available
type: number
mapping: "$.aircraftAvailable"
consumes:
- type: http
namespace: fleet-api
baseUri: "https://fleet.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.fleet_api_token"
resources:
- name: utilization
path: "/utilization/report"
operations:
- name: get-utilization
method: POST
Assigns cabin crew positions (lead, galley, aisle) for a flight based on seniority, qualifications, and aircraft configuration.
naftiko: "0.5"
info:
label: "Flight Attendant Position Assignment"
description: "Assigns cabin crew positions (lead, galley, aisle) for a flight based on seniority, qualifications, and aircraft configuration."
tags:
- crew-scheduling
- flight-operations
capability:
exposes:
- type: mcp
namespace: fa-positions
port: 8080
tools:
- name: assign-fa-positions
description: "Generate flight attendant position assignments 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-mgmt.assign-positions"
with:
flight: "{{flight_number}}"
date: "{{flight_date}}"
outputParameters:
- name: assignments
type: array
mapping: "$.positionAssignments"
- name: lead_fa
type: string
mapping: "$.leadFlightAttendant"
consumes:
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: positions
path: "/flights/{{flight}}/fa-positions"
inputParameters:
- name: flight
in: path
operations:
- name: assign-positions
method: POST
When a flight is cancelled, retrieves passenger manifest, generates personalized rebooking options, and sends SMS and email notifications to all affected passengers with their new itineraries.
naftiko: "0.5"
info:
label: "Flight Cancellation Customer Notification Orchestrator"
description: "When a flight is cancelled, retrieves passenger manifest, generates personalized rebooking options, and sends SMS and email notifications to all affected passengers with their new itineraries."
tags:
- customer-service
- flight-operations
- notifications
- salesforce
capability:
exposes:
- type: mcp
namespace: cancel-notify
port: 8080
tools:
- name: notify-cancellation
description: "Send cancellation notifications with rebooking options to all passengers on a cancelled flight."
inputParameters:
- name: flight_number
in: body
type: string
description: "Cancelled flight number."
- name: flight_date
in: body
type: string
description: "Date of cancelled flight."
- name: reason
in: body
type: string
description: "Cancellation reason."
steps:
- name: get-manifest
type: call
call: "pss.get-passengers"
with:
flight_number: "{{flight_number}}"
date: "{{flight_date}}"
- name: generate-options
type: call
call: "pss.search-alternatives"
with:
origin: "{{get-manifest.origin}}"
destination: "{{get-manifest.destination}}"
date: "{{flight_date}}"
- name: send-notifications
type: call
call: "notification-api.batch-notify"
with:
passengers: "{{get-manifest.passengers}}"
template: "flight_cancellation"
reason: "{{reason}}"
alternatives: "{{generate-options.options}}"
- name: log-case
type: call
call: "salesforce.create-case"
with:
subject: "Flight cancellation {{flight_number}} on {{flight_date}}"
description: "{{reason}} — {{get-manifest.passenger_count}} passengers notified"
priority: "High"
consumes:
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.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
- type: http
namespace: notification-api
baseUri: "https://notifications.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.notification_token"
resources:
- name: batch
path: "/batch/notify"
operations:
- name: batch-notify
method: POST
- type: http
namespace: salesforce
baseUri: "https://united.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
Retrieves the assigned crew roster for a specific flight, including captain, first officer, and cabin crew names and employee IDs.
naftiko: "0.5"
info:
label: "Flight Crew Assignment Lookup"
description: "Retrieves the assigned crew roster for a specific flight, including captain, first officer, and cabin crew names and employee IDs."
tags:
- crew-scheduling
- flight-operations
capability:
exposes:
- type: mcp
namespace: crew-roster
port: 8080
tools:
- name: get-crew-assignment
description: "Look up the crew assigned to 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-mgmt.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-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: assignments
path: "/flights/{{flight}}/crew"
inputParameters:
- name: flight
in: path
operations:
- name: get-assignment
method: GET
When a flight is significantly delayed, determines passenger compensation eligibility based on delay duration and EU261/DOT regulations, calculates amounts, issues vouchers, and notifies passengers.
naftiko: "0.5"
info:
label: "Flight Delay Compensation Orchestrator"
description: "When a flight is significantly delayed, determines passenger compensation eligibility based on delay duration and EU261/DOT regulations, calculates amounts, issues vouchers, and notifies passengers."
tags:
- customer-service
- compliance
- loyalty
- notifications
capability:
exposes:
- type: mcp
namespace: delay-compensation
port: 8080
tools:
- name: process-delay-compensation
description: "Determine and issue compensation for passengers on a delayed flight."
inputParameters:
- name: flight_number
in: body
type: string
description: "Delayed flight number."
- name: delay_minutes
in: body
type: number
description: "Actual delay in minutes."
- name: route_type
in: body
type: string
description: "Route type (domestic, transatlantic, transpacific)."
steps:
- name: get-passengers
type: call
call: "pss.get-passengers"
with:
flight_number: "{{flight_number}}"
- name: calculate-compensation
type: call
call: "compensation-api.calculate"
with:
delay_minutes: "{{delay_minutes}}"
route_type: "{{route_type}}"
passenger_count: "{{get-passengers.passenger_count}}"
- name: issue-vouchers
type: call
call: "compensation-api.issue-batch-vouchers"
with:
passengers: "{{get-passengers.passengers}}"
amount: "{{calculate-compensation.per_passenger_amount}}"
- name: notify-passengers
type: call
call: "notification-api.batch-notify"
with:
passengers: "{{get-passengers.passengers}}"
template: "delay_compensation"
amount: "{{calculate-compensation.per_passenger_amount}}"
consumes:
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: passengers
path: "/flights/{{flight_number}}/passengers"
inputParameters:
- name: flight_number
in: path
operations:
- name: get-passengers
method: GET
- type: http
namespace: compensation-api
baseUri: "https://compensation.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.compensation_token"
resources:
- name: calculations
path: "/calculate"
operations:
- name: calculate
method: POST
- name: vouchers
path: "/vouchers/batch"
operations:
- name: issue-batch-vouchers
method: POST
- type: http
namespace: notification-api
baseUri: "https://notifications.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.notification_token"
resources:
- name: batch
path: "/batch/notify"
operations:
- name: batch-notify
method: POST
Orchestrates the flight dispatch release process by verifying weather conditions, crew legality, aircraft maintenance status, fuel load, and weight/balance before generating a dispatch release.
naftiko: "0.5"
info:
label: "Flight Dispatch Release Orchestrator"
description: "Orchestrates the flight dispatch release process by verifying weather conditions, crew legality, aircraft maintenance status, fuel load, and weight/balance before generating a dispatch release."
tags:
- flight-operations
- dispatch
- safety
- compliance
capability:
exposes:
- type: mcp
namespace: dispatch
port: 8080
tools:
- name: process-dispatch-release
description: "Run all pre-departure checks and generate a dispatch release for a flight."
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: "weather-api.get-route-weather"
with:
flight_number: "{{flight_number}}"
- name: verify-crew-legal
type: call
call: "crew-mgmt.get-duty-status"
with:
employee_id: "{{captain_id}}"
- name: check-aircraft-mx
type: call
call: "mx-api.get-status"
with:
tail: "{{tail_number}}"
- name: generate-release
type: call
call: "dispatch-api.create-release"
with:
flight_number: "{{flight_number}}"
weather_ok: "{{check-weather.safe}}"
crew_legal: "{{verify-crew-legal.isCompliant}}"
aircraft_ok: "{{check-aircraft-mx.maintenanceStatus}}"
consumes:
- type: http
namespace: weather-api
baseUri: "https://dispatch.united.com/api/v1/weather"
authentication:
type: bearer
token: "$secrets.dispatch_token"
resources:
- name: route-weather
path: "/route/{{flight_number}}"
inputParameters:
- name: flight_number
in: path
operations:
- name: get-route-weather
method: GET
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: duty-status
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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.mx_api_token"
resources:
- name: aircraft
path: "/aircraft/{{tail}}/status"
inputParameters:
- name: tail
in: path
operations:
- name: get-status
method: GET
- type: http
namespace: dispatch-api
baseUri: "https://dispatch.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.dispatch_token"
resources:
- name: releases
path: "/releases"
operations:
- name: create-release
method: POST
Retrieves the load factor and booking curve data for a specific flight, showing current bookings vs capacity across cabin classes.
naftiko: "0.5"
info:
label: "Flight Load Factor Report"
description: "Retrieves the load factor and booking curve data for a specific flight, showing current bookings vs capacity 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 and booking 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: "revenue-api.get-load-factor"
with:
flight: "{{flight_number}}"
date: "{{flight_date}}"
outputParameters:
- name: overall_load_factor
type: number
mapping: "$.overallLoadFactor"
- name: economy_load
type: number
mapping: "$.economyLoad"
- name: premium_load
type: number
mapping: "$.premiumLoad"
- name: total_booked
type: number
mapping: "$.totalBooked"
consumes:
- type: http
namespace: revenue-api
baseUri: "https://analytics.united.com/api/v1/revenue"
authentication:
type: bearer
token: "$secrets.revenue_analytics_token"
resources:
- name: load-factor
path: "/flights/{{flight}}/load-factor"
inputParameters:
- name: flight
in: path
operations:
- name: get-load-factor
method: GET
Retrieves actual fuel burn data for a completed flight from the aircraft performance monitoring system, including planned vs actual comparisons.
naftiko: "0.5"
info:
label: "Flight Operational Fuel Burn Lookup"
description: "Retrieves actual fuel burn data for a completed flight from the aircraft performance monitoring system, including planned vs actual comparisons."
tags:
- fuel-management
- analytics
- flight-operations
capability:
exposes:
- type: mcp
namespace: fuel-burn
port: 8080
tools:
- name: get-fuel-burn
description: "Look up actual fuel burn for a completed 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-data"
with:
flight: "{{flight_number}}"
date: "{{flight_date}}"
outputParameters:
- name: planned_burn
type: number
mapping: "$.plannedBurn"
- name: actual_burn
type: number
mapping: "$.actualBurn"
- name: variance_pct
type: number
mapping: "$.variancePercent"
consumes:
- type: http
namespace: fuel-api
baseUri: "https://analytics.united.com/api/v1/fuel"
authentication:
type: bearer
token: "$secrets.fuel_analytics_token"
resources:
- name: burn-data
path: "/flights/{{flight}}/burn"
inputParameters:
- name: flight
in: path
operations:
- name: get-burn-data
method: GET
When a critical flight operations IT incident is reported, creates a P1 ServiceNow incident, triggers a PagerDuty page for the on-call operations engineer, and notifies the ops center via Teams.
naftiko: "0.5"
info:
label: "Flight Operations Incident Response"
description: "When a critical flight operations IT incident is reported, creates a P1 ServiceNow incident, triggers a PagerDuty page for the on-call operations engineer, and notifies the ops center via Teams."
tags:
- operations
- incident-response
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ops-incident
port: 8080
tools:
- name: handle-ops-incident
description: "Given an operations incident description and affected system, create a P1 ServiceNow incident, trigger a PagerDuty page, and notify the operations center via Teams."
inputParameters:
- name: affected_system
in: body
type: string
description: "The flight operations system affected (e.g., Departure Control, Crew Scheduling, Weight and Balance)."
- name: incident_description
in: body
type: string
description: "Description of the operational incident."
- name: ops_center_channel_id
in: body
type: string
description: "Teams channel ID for the operations center."
steps:
- name: create-p1-incident
type: call
call: "servicenow-ops.create-incident"
with:
short_description: "P1 Ops Incident: {{affected_system}} — {{incident_description}}"
priority: "1"
category: "flight_operations"
assignment_group: "Flight_Ops_IT"
- name: trigger-pagerduty
type: call
call: "pagerduty.create-incident"
with:
title: "P1 Flight Ops: {{affected_system}}"
service_id: "$secrets.pagerduty_ops_service_id"
urgency: "high"
- name: notify-ops-center
type: call
call: "msteams-ops.post-channel-message"
with:
channel_id: "{{ops_center_channel_id}}"
text: "P1 OPS INCIDENT: {{affected_system}} | {{incident_description}} | ServiceNow: {{create-p1-incident.number}} | PD: {{trigger-pagerduty.incident_url}}"
consumes:
- type: http
namespace: servicenow-ops
baseUri: "https://united.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_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-ops
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Checks the filing status of a flight plan with ATC, returning acceptance status, filed route, and any amendments.
naftiko: "0.5"
info:
label: "Flight Plan Filing Status"
description: "Checks the filing status of a flight plan with ATC, returning acceptance status, filed route, and any amendments."
tags:
- dispatch
- flight-operations
capability:
exposes:
- type: mcp
namespace: flight-plan
port: 8080
tools:
- name: get-flight-plan-status
description: "Check the current filing status of a flight plan."
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: filing_status
type: string
mapping: "$.filingStatus"
- name: filed_route
type: string
mapping: "$.filedRoute"
- name: amendments
type: array
mapping: "$.amendments"
consumes:
- type: http
namespace: dispatch-api
baseUri: "https://dispatch.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.dispatch_token"
resources:
- name: flight-plans
path: "/flight-plans/{{flight}}/status"
inputParameters:
- name: flight
in: path
operations:
- name: get-plan-status
method: GET
Retrieves real-time flight status including departure, arrival, gate, and delay information for a given United flight number and date.
naftiko: "0.5"
info:
label: "Flight Status Lookup"
description: "Retrieves real-time flight status including departure, arrival, gate, and delay information for a given United flight number and date."
tags:
- flight-operations
- salesforce
capability:
exposes:
- type: mcp
namespace: flight-ops
port: 8080
tools:
- name: get-flight-status
description: "Look up the current status of a United flight by flight number and date. Returns departure time, arrival time, gate, and delay reason if any."
inputParameters:
- name: flight_number
in: body
type: string
description: "United flight number (e.g., UA1234)."
- name: flight_date
in: body
type: string
description: "Date of flight in YYYY-MM-DD format."
call: "flight-api.get-status"
with:
flight_number: "{{flight_number}}"
flight_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: flight-api
baseUri: "https://api.united.com/v1/flights"
authentication:
type: bearer
token: "$secrets.united_api_token"
resources:
- name: flight-status
path: "/status/{{flight_number}}/{{flight_date}}"
inputParameters:
- name: flight_number
in: path
- name: flight_date
in: path
operations:
- name: get-status
method: GET
Generates a fuel cost analysis report for a fleet segment, pulling fuel uplift data and price benchmarks to identify tankering and hedging opportunities.
naftiko: "0.5"
info:
label: "Fuel Cost Optimization Report"
description: "Generates a fuel cost analysis report for a fleet segment, pulling fuel uplift data and price benchmarks to identify tankering and hedging opportunities."
tags:
- fuel-management
- analytics
- cost-optimization
capability:
exposes:
- type: mcp
namespace: fuel-analytics
port: 8080
tools:
- name: generate-fuel-report
description: "Generate a fuel cost optimization report for a given fleet type and date range."
inputParameters:
- name: fleet_type
in: body
type: string
description: "Fleet type (e.g., B737, B787, A320)."
- name: start_date
in: body
type: string
description: "Start date for analysis."
- name: end_date
in: body
type: string
description: "End date for analysis."
call: "fuel-db.query-costs"
with:
fleet: "{{fleet_type}}"
start: "{{start_date}}"
end: "{{end_date}}"
outputParameters:
- name: total_fuel_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-db
baseUri: "https://analytics.united.com/api/v1/fuel"
authentication:
type: bearer
token: "$secrets.fuel_analytics_token"
resources:
- name: cost-analysis
path: "/cost-analysis"
operations:
- name: query-costs
method: POST
Queries current gate utilization and upcoming arrivals to recommend optimal gate assignments, minimizing passenger connection times and ground equipment repositioning.
naftiko: "0.5"
info:
label: "Gate Assignment Optimizer"
description: "Queries current gate utilization and upcoming arrivals to recommend optimal gate assignments, 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-assignment
description: "Get an optimized gate assignment 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 code."
- name: arrival_time
in: body
type: string
description: "Expected arrival time in ISO 8601."
call: "gate-api.get-recommendation"
with:
flight_number: "{{flight_number}}"
station: "{{station}}"
arrival_time: "{{arrival_time}}"
outputParameters:
- name: recommended_gate
type: string
mapping: "$.recommendedGate"
- name: connection_score
type: number
mapping: "$.connectionScore"
- name: alternatives
type: array
mapping: "$.alternativeGates"
consumes:
- type: http
namespace: gate-api
baseUri: "https://groundops.united.com/api/v1/gates"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: recommendations
path: "/optimize"
operations:
- name: get-recommendation
method: POST
When a flight departure delay exceeds threshold, creates a ServiceNow operations record, logs it in Salesforce for customer recovery tracking, and notifies the station manager via Teams.
naftiko: "0.5"
info:
label: "Gate Operations Delay Reporting"
description: "When a flight departure delay exceeds threshold, creates a ServiceNow operations record, logs it in Salesforce for customer recovery tracking, and notifies the station manager via Teams."
tags:
- operations
- flight-delay
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: gate-ops
port: 8080
tools:
- name: log-flight-delay
description: "Given a flight number, station, delay minutes, and delay reason code, create a ServiceNow operational record, log in Salesforce for recovery, and notify the station manager via Teams."
inputParameters:
- name: flight_number
in: body
type: string
description: "The United flight number being delayed (e.g., UA123)."
- name: station_code
in: body
type: string
description: "Departure airport station code (e.g., ORD, IAH)."
- name: delay_minutes
in: body
type: integer
description: "Number of minutes the flight is delayed."
- name: delay_code
in: body
type: string
description: "IATA delay reason code (e.g., 93 for weather, 41 for late aircraft)."
- name: station_manager_upn
in: body
type: string
description: "UPN of the station manager to notify."
steps:
- name: create-ops-record
type: call
call: "servicenow-delay.create-incident"
with:
short_description: "Flight delay: {{flight_number}} at {{station_code}} — {{delay_minutes}} min — Code {{delay_code}}"
category: "flight_operations"
priority: "3"
- name: log-salesforce-case
type: call
call: "salesforce-delay.create-case"
with:
subject: "Delay recovery: {{flight_number}} at {{station_code}} — {{delay_minutes}} min"
description: "Delay code: {{delay_code}}. ServiceNow: {{create-ops-record.number}}"
priority: "Medium"
- name: notify-station-manager
type: call
call: "msteams-delay.send-message"
with:
recipient_upn: "{{station_manager_upn}}"
text: "Delay logged: {{flight_number}} at {{station_code}} — {{delay_minutes}} min — Code {{delay_code}} | ServiceNow: {{create-ops-record.number}} | Salesforce: {{log-salesforce-case.case_number}}"
consumes:
- type: http
namespace: servicenow-delay
baseUri: "https://united.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: salesforce-delay
baseUri: "https://united.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: msteams-delay
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Initiates month-end GL period close in SAP, creates a ServiceNow finance close checklist, and notifies the finance controller via Microsoft Teams.
naftiko: "0.5"
info:
label: "General Ledger Period Close"
description: "Initiates month-end GL period close in SAP, creates a ServiceNow finance close checklist, and notifies the finance controller via Microsoft Teams."
tags:
- finance
- period-close
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: initiate-period-close
description: "Given a fiscal period and year, open the period close in SAP, create a ServiceNow checklist, and notify the finance controller via Teams."
inputParameters:
- name: fiscal_period
in: body
type: string
description: "Fiscal period number (01-12)."
- name: fiscal_year
in: body
type: string
description: "Fiscal year (e.g., 2026)."
- name: controller_upn
in: body
type: string
description: "UPN of the finance controller to notify."
steps:
- name: open-period
type: call
call: "sap-close.open-period"
with:
period: "{{fiscal_period}}"
year: "{{fiscal_year}}"
- name: create-close-checklist
type: call
call: "servicenow-close.create-task"
with:
short_description: "Finance close checklist FY{{fiscal_year}}-P{{fiscal_period}}"
category: "finance_close"
assignment_group: "Finance_Accounting"
- name: notify-controller
type: call
call: "msteams-close.send-message"
with:
recipient_upn: "{{controller_upn}}"
text: "Period close initiated: FY{{fiscal_year}}-P{{fiscal_period}}. Checklist: {{create-close-checklist.number}}. Approve all journal entries by the close deadline."
consumes:
- type: http
namespace: sap-close
baseUri: "https://united-s4.sap.com/sap/opu/odata/sap/API_FISCALPERIOD_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: fiscal-periods
path: "/A_FiscalPeriod"
operations:
- name: open-period
method: POST
- type: http
namespace: servicenow-close
baseUri: "https://united.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
- type: http
namespace: msteams-close
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves available ground transportation options at an airport including rental cars, rideshare, and hotel shuttles for customer service referrals.
naftiko: "0.5"
info:
label: "Ground Transportation Partner Lookup"
description: "Retrieves available ground transportation options at an airport including rental cars, rideshare, and hotel shuttles for customer service referrals."
tags:
- customer-service
- ground-ops
- partnerships
capability:
exposes:
- type: mcp
namespace: ground-transport
port: 8080
tools:
- name: get-ground-transport
description: "Look up ground transportation options at an airport."
inputParameters:
- name: station
in: body
type: string
description: "Airport IATA code."
call: "transport-api.get-options"
with:
station: "{{station}}"
outputParameters:
- name: rental_cars
type: array
mapping: "$.rentalCars"
- name: rideshare
type: array
mapping: "$.rideshare"
- name: hotel_shuttles
type: array
mapping: "$.hotelShuttles"
consumes:
- type: http
namespace: transport-api
baseUri: "https://partnerships.united.com/api/v1/transport"
authentication:
type: bearer
token: "$secrets.partnerships_token"
resources:
- name: options
path: "/airports/{{station}}/options"
inputParameters:
- name: station
in: path
operations:
- name: get-options
method: GET
Validates a hazardous materials cargo shipment against IATA dangerous goods regulations, checking classification, packaging, and documentation compliance.
naftiko: "0.5"
info:
label: "Hazmat Cargo Compliance Check"
description: "Validates a hazardous materials cargo shipment against IATA dangerous goods regulations, checking classification, packaging, and documentation compliance."
tags:
- cargo
- compliance
- safety
capability:
exposes:
- type: mcp
namespace: hazmat-compliance
port: 8080
tools:
- name: check-hazmat-compliance
description: "Verify compliance of a hazmat cargo shipment with IATA DGR."
inputParameters:
- name: awb_number
in: body
type: string
description: "Air waybill number."
- name: un_number
in: body
type: string
description: "UN hazmat classification number."
- name: packaging_group
in: body
type: string
description: "Packaging group (I, II, III)."
call: "cargo-api.validate-hazmat"
with:
awb: "{{awb_number}}"
un_number: "{{un_number}}"
packaging: "{{packaging_group}}"
outputParameters:
- name: compliant
type: boolean
mapping: "$.isCompliant"
- name: violations
type: array
mapping: "$.violations"
- name: dg_class
type: string
mapping: "$.dangerousGoodsClass"
consumes:
- type: http
namespace: cargo-api
baseUri: "https://cargo.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.united_cargo_token"
resources:
- name: hazmat
path: "/hazmat/validate"
operations:
- name: validate-hazmat
method: POST
Retrieves inflight WiFi performance metrics for a specific aircraft including uptime, bandwidth utilization, and passenger connection counts.
naftiko: "0.5"
info:
label: "Inflight WiFi Connectivity Report"
description: "Retrieves inflight WiFi performance metrics for a specific aircraft including uptime, bandwidth utilization, and passenger connection counts."
tags:
- inflight-services
- technology
- analytics
capability:
exposes:
- type: mcp
namespace: wifi-ops
port: 8080
tools:
- name: get-wifi-report
description: "Pull WiFi connectivity metrics for an aircraft."
inputParameters:
- name: tail_number
in: body
type: string
description: "Aircraft tail number."
- name: flight_date
in: body
type: string
description: "Flight date."
call: "connectivity-api.get-metrics"
with:
tail: "{{tail_number}}"
date: "{{flight_date}}"
outputParameters:
- name: uptime_pct
type: number
mapping: "$.uptimePercent"
- name: avg_bandwidth_mbps
type: number
mapping: "$.avgBandwidthMbps"
- name: total_connections
type: number
mapping: "$.totalConnections"
consumes:
- type: http
namespace: connectivity-api
baseUri: "https://connectivity.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.connectivity_token"
resources:
- name: metrics
path: "/aircraft/{{tail}}/wifi-metrics"
inputParameters:
- name: tail
in: path
operations:
- name: get-metrics
method: GET
Looks up the interline baggage agreement between United and a partner airline to determine baggage allowance and through-check eligibility.
naftiko: "0.5"
info:
label: "Interline Baggage Agreement Lookup"
description: "Looks up the interline baggage agreement between United and a partner airline to determine baggage allowance and through-check eligibility."
tags:
- customer-service
- baggage
- partnerships
capability:
exposes:
- type: mcp
namespace: interline-baggage
port: 8080
tools:
- name: get-interline-baggage-rules
description: "Look up interline baggage agreement with a partner airline."
inputParameters:
- name: partner_airline
in: body
type: string
description: "Partner airline IATA code."
- name: route_type
in: body
type: string
description: "Route type (domestic, international)."
call: "partnership-api.get-baggage-agreement"
with:
partner: "{{partner_airline}}"
route: "{{route_type}}"
outputParameters:
- name: through_check_eligible
type: boolean
mapping: "$.throughCheckEligible"
- name: free_bags
type: number
mapping: "$.freeBaggageAllowance"
- name: weight_limit_kg
type: number
mapping: "$.weightLimitKg"
consumes:
- type: http
namespace: partnership-api
baseUri: "https://partnerships.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.partnerships_token"
resources:
- name: baggage-agreements
path: "/interline/baggage/{{partner}}"
inputParameters:
- name: partner
in: path
operations:
- name: get-baggage-agreement
method: GET
Orchestrates international cargo customs documentation by generating the commercial invoice, packing list, and customs declaration, then submitting to the customs broker and notifying the shipper.
naftiko: "0.5"
info:
label: "International Customs Documentation Orchestrator"
description: "Orchestrates international cargo customs documentation by generating the commercial invoice, packing list, and customs declaration, then submitting to the customs broker and notifying the shipper."
tags:
- cargo
- compliance
- logistics
- customs
capability:
exposes:
- type: mcp
namespace: customs-docs
port: 8080
tools:
- name: process-customs-docs
description: "Generate and submit customs documentation for an international cargo shipment."
inputParameters:
- name: awb_number
in: body
type: string
description: "Air waybill number."
- name: destination_country
in: body
type: string
description: "Destination country ISO code."
- name: commodity_code
in: body
type: string
description: "HS commodity code."
steps:
- name: generate-invoice
type: call
call: "cargo-api.generate-commercial-invoice"
with:
awb: "{{awb_number}}"
country: "{{destination_country}}"
- name: generate-declaration
type: call
call: "cargo-api.generate-customs-declaration"
with:
awb: "{{awb_number}}"
hs_code: "{{commodity_code}}"
country: "{{destination_country}}"
- name: submit-to-broker
type: call
call: "customs-api.submit-declaration"
with:
awb: "{{awb_number}}"
invoice_ref: "{{generate-invoice.invoice_id}}"
declaration_ref: "{{generate-declaration.declaration_id}}"
- name: notify-shipper
type: call
call: "notification-api.send-email"
with:
template: "customs_submitted"
awb: "{{awb_number}}"
broker_ref: "{{submit-to-broker.broker_reference}}"
consumes:
- type: http
namespace: cargo-api
baseUri: "https://cargo.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.united_cargo_token"
resources:
- name: invoices
path: "/documentation/invoice"
operations:
- name: generate-commercial-invoice
method: POST
- name: declarations
path: "/documentation/customs-declaration"
operations:
- name: generate-customs-declaration
method: POST
- type: http
namespace: customs-api
baseUri: "https://customs-broker.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.customs_broker_token"
resources:
- name: submissions
path: "/declarations/submit"
operations:
- name: submit-declaration
method: POST
- type: http
namespace: notification-api
baseUri: "https://notifications.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.notification_token"
resources:
- name: emails
path: "/email/send"
operations:
- name: send-email
method: POST
When a flight is cancelled due to irregular operations, identifies affected passengers, finds available rebooking options, rebooks customers, and sends notification via email and SMS.
naftiko: "0.5"
info:
label: "Irregular Operations Rebooking Orchestrator"
description: "When a flight is cancelled due to irregular operations, identifies affected passengers, finds available rebooking options, rebooks customers, and sends notification via email and SMS."
tags:
- flight-operations
- customer-service
- rebooking
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: irrops
port: 8080
tools:
- name: handle-irrops-rebooking
description: "Given a cancelled flight, retrieve affected passengers, find alternatives, rebook, and notify customers."
inputParameters:
- name: cancelled_flight
in: body
type: string
description: "Cancelled flight number."
- name: flight_date
in: body
type: string
description: "Date of the cancelled flight."
- name: reason
in: body
type: string
description: "Cancellation reason (weather, mechanical, ATC)."
steps:
- name: get-affected-passengers
type: call
call: "pss.get-passengers"
with:
flight_number: "{{cancelled_flight}}"
date: "{{flight_date}}"
- name: find-rebooking-options
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:
passenger_list: "{{get-affected-passengers.pnrs}}"
alternatives: "{{find-rebooking-options.options}}"
- name: notify-operations
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{ops_channel_id}}"
text: "IRROPS rebooking complete for {{cancelled_flight}} on {{flight_date}} — {{reason}}. {{execute-rebookings.rebooked_count}} passengers rebooked."
consumes:
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.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: 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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Submits an IT change request in ServiceNow for system changes affecting United Airlines operations, routes for CAB approval, and notifies impacted stakeholders via Teams.
naftiko: "0.5"
info:
label: "IT Change Management Request"
description: "Submits an IT change request in ServiceNow for system changes affecting United Airlines operations, routes for CAB approval, and notifies impacted stakeholders via Teams."
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-change-request
description: "Given a change description, risk level, and implementation date, create a ServiceNow change request, assign to the CAB, and notify IT stakeholders via Teams."
inputParameters:
- name: change_description
in: body
type: string
description: "Description of the proposed IT change."
- name: risk_level
in: body
type: string
description: "Risk level: low, medium, high, critical."
- name: implementation_date
in: body
type: string
description: "Planned implementation date in YYYY-MM-DD format."
- name: it_channel_id
in: body
type: string
description: "Teams channel ID for IT stakeholder notifications."
steps:
- name: create-change
type: call
call: "servicenow-change.create-change"
with:
short_description: "{{change_description}}"
risk: "{{risk_level}}"
start_date: "{{implementation_date}}"
assignment_group: "CAB"
- name: notify-stakeholders
type: call
call: "msteams-change.post-channel-message"
with:
channel_id: "{{it_channel_id}}"
text: "Change request {{create-change.number}}: {{change_description}} | Risk: {{risk_level}} | Implementation: {{implementation_date}} | CAB review in progress."
consumes:
- type: http
namespace: servicenow-change
baseUri: "https://united.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: msteams-change
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a Datadog security signal fires for a critical system, creates a ServiceNow security incident, escalates via PagerDuty, and posts an alert to the security operations Teams channel.
naftiko: "0.5"
info:
label: "IT Security Vulnerability Alert"
description: "When a Datadog security signal fires for a critical system, creates a ServiceNow security incident, escalates via PagerDuty, and posts an alert to the security operations Teams channel."
tags:
- security
- vulnerability
- datadog
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: handle-security-alert
description: "Given a Datadog security signal for a critical system, create a ServiceNow security incident, trigger a PagerDuty page, and alert the security operations team via Teams."
inputParameters:
- name: signal_id
in: body
type: string
description: "The Datadog security signal ID."
- name: affected_system
in: body
type: string
description: "Name of the affected system or service."
- name: severity
in: body
type: string
description: "Signal severity: critical, high, medium, low."
- name: soc_channel_id
in: body
type: string
description: "Teams channel ID for the security operations center."
steps:
- name: create-security-incident
type: call
call: "servicenow-sec.create-incident"
with:
short_description: "Security alert: {{affected_system}} — {{severity}} — Signal {{signal_id}}"
category: "security"
priority: "1"
assignment_group: "Security_Operations"
- name: page-security-oncall
type: call
call: "pagerduty-sec.create-incident"
with:
title: "Security alert: {{affected_system}} — {{severity}}"
service_id: "$secrets.pagerduty_security_service_id"
urgency: "high"
- name: alert-soc
type: call
call: "msteams-sec.post-channel-message"
with:
channel_id: "{{soc_channel_id}}"
text: "SECURITY ALERT: {{affected_system}} | Severity: {{severity}} | Signal: {{signal_id}} | ServiceNow: {{create-security-incident.number}} | PD: {{page-security-oncall.incident_url}}"
consumes:
- type: http
namespace: servicenow-sec
baseUri: "https://united.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-sec
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-sec
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves LinkedIn Company Page engagement metrics for United Airlines and posts a weekly employer brand performance digest to the talent acquisition Teams channel.
naftiko: "0.5"
info:
label: "LinkedIn Employer Brand Campaign Report"
description: "Retrieves LinkedIn Company Page engagement metrics for United Airlines and posts a weekly employer brand performance digest to the talent acquisition Teams channel."
tags:
- marketing
- employer-brand
- linkedin
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: employer-brand
port: 8080
tools:
- name: digest-linkedin-brand-metrics
description: "Given a LinkedIn organization ID, retrieve follower count, engagement, and job post metrics and post a weekly employer brand report to the talent acquisition Teams channel."
inputParameters:
- name: linkedin_org_id
in: body
type: string
description: "United Airlines' LinkedIn organization ID."
- name: talent_channel_id
in: body
type: string
description: "Teams channel ID for the talent acquisition team."
steps:
- name: get-linkedin-stats
type: call
call: "linkedin.get-organization-statistics"
with:
organizationId: "{{linkedin_org_id}}"
- name: post-brand-digest
type: call
call: "msteams-brand.post-channel-message"
with:
channel_id: "{{talent_channel_id}}"
text: "LinkedIn Brand Report: United Airlines | Followers: {{get-linkedin-stats.follower_count}} | New (7d): {{get-linkedin-stats.new_followers}} | Engagement rate: {{get-linkedin-stats.engagement_rate}}%"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: organization-statistics
path: "/organizationPageStatistics"
inputParameters:
- name: organizationId
in: query
operations:
- name: get-organization-statistics
method: GET
- type: http
namespace: msteams-brand
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Processes a lost baggage claim by creating a WorldTracer record, logging a Salesforce case, initiating a baggage search, and sending the passenger an SMS tracking link.
naftiko: "0.5"
info:
label: "Lost Baggage Claim Orchestrator"
description: "Processes a lost baggage claim by creating a WorldTracer record, logging a Salesforce case, initiating a baggage search, and sending the passenger an SMS tracking link."
tags:
- customer-service
- baggage
- salesforce
- notifications
capability:
exposes:
- type: mcp
namespace: lost-baggage
port: 8080
tools:
- name: process-lost-baggage
description: "File a lost baggage claim and initiate tracking across 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."
- name: passenger_phone
in: body
type: string
description: "Passenger contact phone."
steps:
- name: create-worldtracer-record
type: call
call: "baggage-api.create-tracer"
with:
pnr: "{{pnr}}"
bag_tag: "{{bag_tag}}"
flight: "{{flight_number}}"
- name: create-salesforce-case
type: call
call: "salesforce.create-case"
with:
subject: "Lost baggage — {{bag_tag}} on {{flight_number}}"
description: "PNR: {{pnr}} | Tracer: {{create-worldtracer-record.tracer_id}}"
priority: "High"
- name: send-tracking-sms
type: call
call: "notification-api.send-sms"
with:
phone: "{{passenger_phone}}"
message: "Your lost baggage claim has been filed. Track at: https://www.united.com/baggage/track/{{create-worldtracer-record.tracer_id}}"
consumes:
- type: http
namespace: baggage-api
baseUri: "https://baggage.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.baggage_api_token"
resources:
- name: tracers
path: "/worldtracer/create"
operations:
- name: create-tracer
method: POST
- type: http
namespace: salesforce
baseUri: "https://united.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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.notification_token"
resources:
- name: sms
path: "/sms/send"
operations:
- name: send-sms
method: POST
Processes a miles transfer between MileagePlus and a Star Alliance partner loyalty program, validating both accounts and executing the credit.
naftiko: "0.5"
info:
label: "Loyalty Partner Miles Transfer"
description: "Processes a miles transfer between MileagePlus and a Star Alliance partner loyalty program, validating both accounts and executing the credit."
tags:
- loyalty
- mileageplus
- partnerships
capability:
exposes:
- type: mcp
namespace: miles-transfer
port: 8080
tools:
- name: transfer-partner-miles
description: "Transfer miles between MileagePlus and a partner program."
inputParameters:
- name: mileageplus_number
in: body
type: string
description: "MileagePlus member number."
- name: partner_program
in: body
type: string
description: "Partner loyalty program code."
- name: partner_number
in: body
type: string
description: "Partner program member number."
- name: miles_amount
in: body
type: number
description: "Miles to transfer."
call: "loyalty-api.transfer-miles"
with:
member_id: "{{mileageplus_number}}"
partner: "{{partner_program}}"
partner_id: "{{partner_number}}"
amount: "{{miles_amount}}"
outputParameters:
- name: transfer_id
type: string
mapping: "$.transferId"
- name: status
type: string
mapping: "$.status"
- name: new_balance
type: number
mapping: "$.newBalance"
consumes:
- type: http
namespace: loyalty-api
baseUri: "https://loyalty.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.loyalty_api_token"
resources:
- name: transfers
path: "/miles/transfer"
operations:
- name: transfer-miles
method: POST
Queries the SAP materials management system for aircraft spare parts availability at a maintenance station, returning stock levels and lead times.
naftiko: "0.5"
info:
label: "Maintenance Parts Inventory Lookup"
description: "Queries the SAP materials management system for aircraft spare parts availability at a maintenance station, returning stock levels and lead times."
tags:
- maintenance
- sap
- inventory
capability:
exposes:
- type: mcp
namespace: parts-inventory
port: 8080
tools:
- name: check-parts-inventory
description: "Check spare parts availability for aircraft maintenance."
inputParameters:
- name: part_number
in: body
type: string
description: "Part number."
- name: station
in: body
type: string
description: "Maintenance station code."
call: "sap.get-material-stock"
with:
material: "{{part_number}}"
plant: "{{station}}"
outputParameters:
- name: quantity_on_hand
type: number
mapping: "$.d.UnrestrictedStock"
- name: reorder_point
type: number
mapping: "$.d.ReorderPoint"
- name: lead_time_days
type: number
mapping: "$.d.PlannedDeliveryDays"
consumes:
- type: http
namespace: sap
baseUri: "https://united-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: material-stock
path: "/A_MatlStkInAcctMod(Material='{{material}}',Plant='{{plant}}')"
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-material-stock
method: GET
When an inflight medical emergency is reported, contacts MedLink ground physicians, identifies nearest diversion airports, notifies station operations, and creates an incident report.
naftiko: "0.5"
info:
label: "Medical Emergency Response Orchestrator"
description: "When an inflight medical emergency is reported, contacts MedLink ground physicians, identifies nearest diversion airports, notifies station operations, and creates an incident report."
tags:
- safety
- flight-operations
- emergency
- servicenow
capability:
exposes:
- type: mcp
namespace: medical-emergency
port: 8080
tools:
- name: handle-medical-emergency
description: "Coordinate response to an inflight medical emergency."
inputParameters:
- name: flight_number
in: body
type: string
description: "Flight number."
- name: emergency_type
in: body
type: string
description: "Type of medical emergency."
- name: current_position
in: body
type: string
description: "Current aircraft position (lat/lon)."
steps:
- name: contact-medlink
type: call
call: "medlink-api.initiate-consult"
with:
flight_number: "{{flight_number}}"
emergency_type: "{{emergency_type}}"
- name: find-diversion-airports
type: call
call: "dispatch-api.find-diversions"
with:
position: "{{current_position}}"
emergency: true
- name: notify-station
type: call
call: "ground-ops.alert-station"
with:
station: "{{find-diversion-airports.nearest_airport}}"
flight_number: "{{flight_number}}"
reason: "Medical emergency: {{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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.medlink_token"
resources:
- name: consults
path: "/consults/initiate"
operations:
- name: initiate-consult
method: POST
- type: http
namespace: dispatch-api
baseUri: "https://dispatch.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.dispatch_token"
resources:
- name: diversions
path: "/diversions/search"
operations:
- name: find-diversions
method: POST
- type: http
namespace: ground-ops
baseUri: "https://groundops.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: alerts
path: "/stations/alert"
operations:
- name: alert-station
method: POST
- type: http
namespace: servicenow
baseUri: "https://united.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
Retrieves a MileagePlus member's loyalty tier, PQP balance, and upgrade status from the loyalty platform for customer service interactions.
naftiko: "0.5"
info:
label: "MileagePlus Loyalty Tier Lookup"
description: "Retrieves a MileagePlus member's loyalty tier, PQP balance, and upgrade status from the loyalty platform for customer service interactions."
tags:
- customer-service
- loyalty
- mileageplus
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: get-member-tier
description: "Look up a MileagePlus member's current tier and qualification status."
inputParameters:
- name: mileageplus_number
in: body
type: string
description: "MileagePlus member number."
call: "loyalty-api.get-member"
with:
member_id: "{{mileageplus_number}}"
outputParameters:
- name: tier
type: string
mapping: "$.currentTier"
- name: pqp_balance
type: number
mapping: "$.pqpBalance"
- name: pqf_balance
type: number
mapping: "$.pqfBalance"
- name: upgrade_status
type: string
mapping: "$.upgradeStatus"
consumes:
- type: http
namespace: loyalty-api
baseUri: "https://loyalty.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.loyalty_api_token"
resources:
- name: members
path: "/members/{{member_id}}"
inputParameters:
- name: member_id
in: path
operations:
- name: get-member
method: GET
When a schedule change is proposed, analyzes the impact on connecting itineraries, crew pairings, and gate utilization, then generates an impact report and notifies affected departments via Teams.
naftiko: "0.5"
info:
label: "Network Schedule Change Impact Orchestrator"
description: "When a schedule change is proposed, analyzes the impact on connecting itineraries, crew pairings, and gate utilization, then generates an impact report and notifies affected departments via Teams."
tags:
- scheduling
- flight-operations
- analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: schedule-change
port: 8080
tools:
- name: assess-schedule-change
description: "Analyze the impact of a proposed schedule change across operations."
inputParameters:
- name: flight_number
in: body
type: string
description: "Flight number being changed."
- name: new_departure_time
in: body
type: string
description: "Proposed new departure time."
- name: effective_date
in: body
type: string
description: "Date change takes effect."
steps:
- name: analyze-connections
type: call
call: "scheduling-api.analyze-connections"
with:
flight: "{{flight_number}}"
new_time: "{{new_departure_time}}"
- name: analyze-crew-impact
type: call
call: "crew-mgmt.assess-pairing-impact"
with:
flight: "{{flight_number}}"
new_time: "{{new_departure_time}}"
- name: analyze-gate-impact
type: call
call: "gate-api.assess-utilization-impact"
with:
flight: "{{flight_number}}"
new_time: "{{new_departure_time}}"
- name: notify-departments
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{planning_channel_id}}"
text: "Schedule change impact for {{flight_number}} to {{new_departure_time}}: Connections affected: {{analyze-connections.affected_count}} | Crew pairings: {{analyze-crew-impact.pairings_affected}} | Gate conflicts: {{analyze-gate-impact.conflicts}}"
consumes:
- type: http
namespace: scheduling-api
baseUri: "https://scheduling.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.scheduling_token"
resources:
- name: connections
path: "/analysis/connections"
operations:
- name: analyze-connections
method: POST
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: pairing-impact
path: "/pairings/impact-analysis"
operations:
- name: assess-pairing-impact
method: POST
- type: http
namespace: gate-api
baseUri: "https://groundops.united.com/api/v1/gates"
authentication:
type: bearer
token: "$secrets.ground_ops_token"
resources:
- name: utilization
path: "/utilization/impact"
operations:
- name: assess-utilization-impact
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a new employee joins United Airlines, opens a ServiceNow onboarding ticket, provisions their Workday profile, and sends a Microsoft Teams welcome message to their department channel.
naftiko: "0.5"
info:
label: "New Employee Onboarding Orchestrator"
description: "When a new employee joins United Airlines, opens a ServiceNow onboarding ticket, provisions their Workday profile, and sends a Microsoft Teams welcome message to their department 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, department, and start date, orchestrate the onboarding sequence across ServiceNow and Microsoft Teams."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID for the new hire."
- name: department
in: body
type: string
description: "The department the employee is joining (e.g., Flight Operations, Inflight, Airport Operations, IT)."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: open-onboarding-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-employee.full_name}} — {{department}} — {{start_date}}"
category: "hr_onboarding"
assignment_group: "IT_Onboarding"
- name: notify-department
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.manager_email}}"
text: "New hire {{get-employee.first_name}} {{get-employee.last_name}} joins {{department}} on {{start_date}}. Onboarding ticket: {{open-onboarding-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: servicenow
baseUri: "https://united.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: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Triggers a refresh of the on-time performance Power BI dataset, pulling latest arrival and departure metrics for the operations dashboard.
naftiko: "0.5"
info:
label: "On-Time Performance Dashboard Refresh"
description: "Triggers a refresh of the on-time performance Power BI dataset, pulling latest arrival and departure metrics for the operations dashboard."
tags:
- analytics
- power-bi
- flight-operations
capability:
exposes:
- type: mcp
namespace: otp-analytics
port: 8080
tools:
- name: refresh-otp-dashboard
description: "Trigger a Power BI dataset refresh for on-time performance metrics."
inputParameters:
- name: dataset_id
in: body
type: string
description: "Power BI dataset ID for OTP dashboard."
call: "powerbi.refresh-dataset"
with:
dataset_id: "{{dataset_id}}"
outputParameters:
- name: refresh_id
type: string
mapping: "$.id"
- name: status
type: string
mapping: "$.status"
consumes:
- 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
Compiles the daily operations control briefing by pulling weather forecasts, maintenance status, crew coverage, and known disruptions, then posting a formatted summary to the ops Teams channel.
naftiko: "0.5"
info:
label: "Ops Control Daily Briefing Orchestrator"
description: "Compiles the daily operations control briefing by pulling weather forecasts, maintenance status, crew coverage, and known disruptions, then posting a formatted summary to the ops Teams channel."
tags:
- operations
- flight-operations
- microsoft-teams
- analytics
capability:
exposes:
- type: mcp
namespace: ops-briefing
port: 8080
tools:
- name: generate-daily-briefing
description: "Generate and distribute the daily operations control briefing."
inputParameters:
- name: briefing_date
in: body
type: string
description: "Briefing date."
steps:
- name: get-weather-outlook
type: call
call: "weather-api.get-network-outlook"
with:
date: "{{briefing_date}}"
- name: get-mx-summary
type: call
call: "mx-api.get-fleet-summary"
with:
date: "{{briefing_date}}"
- name: get-crew-coverage
type: call
call: "crew-mgmt.get-coverage-summary"
with:
date: "{{briefing_date}}"
- name: post-briefing
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{occ_channel_id}}"
text: "DAILY OPS BRIEFING — {{briefing_date}}\nWeather: {{get-weather-outlook.summary}}\nFleet: {{get-mx-summary.available_aircraft}}/{{get-mx-summary.total_aircraft}} available\nCrew coverage: {{get-crew-coverage.coverage_pct}}%\nKnown disruptions: {{get-weather-outlook.disruption_count}}"
consumes:
- type: http
namespace: weather-api
baseUri: "https://dispatch.united.com/api/v1/weather"
authentication:
type: bearer
token: "$secrets.dispatch_token"
resources:
- name: network-outlook
path: "/network/outlook"
operations:
- name: get-network-outlook
method: POST
- type: http
namespace: mx-api
baseUri: "https://maintenance.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.mx_api_token"
resources:
- name: fleet-summary
path: "/fleet/summary"
operations:
- name: get-fleet-summary
method: POST
- type: http
namespace: crew-mgmt
baseUri: "https://crew.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: coverage
path: "/coverage/summary"
operations:
- name: get-coverage-summary
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Manages overbooked flights by identifying volunteer candidates based on itinerary flexibility, offering compensation tiers, processing voluntary denied boardings, and rebooking on alternative flights.
naftiko: "0.5"
info:
label: "Overbooking Management Orchestrator"
description: "Manages overbooked flights by identifying volunteer candidates based on itinerary flexibility, offering compensation tiers, processing voluntary denied boardings, and rebooking on alternative flights."
tags:
- revenue-management
- customer-service
- flight-operations
capability:
exposes:
- type: mcp
namespace: overbooking-mgmt
port: 8080
tools:
- name: manage-overbooking
description: "Handle overbooking situation for a flight."
inputParameters:
- name: flight_number
in: body
type: string
description: "Overbooked flight number."
- name: flight_date
in: body
type: string
description: "Flight date."
- name: overbook_count
in: body
type: number
description: "Number of seats overbooked."
steps:
- name: identify-volunteers
type: call
call: "pss.find-volunteer-candidates"
with:
flight: "{{flight_number}}"
date: "{{flight_date}}"
count: "{{overbook_count}}"
- name: calculate-compensation
type: call
call: "compensation-api.get-vdb-rates"
with:
flight: "{{flight_number}}"
date: "{{flight_date}}"
- name: find-alternatives
type: call
call: "pss.search-alternatives"
with:
origin: "{{identify-volunteers.origin}}"
destination: "{{identify-volunteers.destination}}"
date: "{{flight_date}}"
- name: send-volunteer-offers
type: call
call: "notification-api.batch-notify"
with:
passengers: "{{identify-volunteers.candidates}}"
template: "volunteer_offer"
compensation: "{{calculate-compensation.offer_amount}}"
alternatives: "{{find-alternatives.options}}"
consumes:
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: volunteers
path: "/flights/{{flight}}/volunteer-candidates"
inputParameters:
- name: flight
in: path
operations:
- name: find-volunteer-candidates
method: POST
- name: alternatives
path: "/availability/search"
operations:
- name: search-alternatives
method: POST
- type: http
namespace: compensation-api
baseUri: "https://compensation.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.compensation_token"
resources:
- name: vdb-rates
path: "/rates/voluntary-denied-boarding"
operations:
- name: get-vdb-rates
method: POST
- type: http
namespace: notification-api
baseUri: "https://notifications.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.notification_token"
resources:
- name: batch
path: "/batch/notify"
operations:
- name: batch-notify
method: POST
Monitors tight passenger connections at hub stations and returns at-risk connecting passengers with their current and onward flight details.
naftiko: "0.5"
info:
label: "Passenger Connection Monitor"
description: "Monitors tight passenger connections at hub stations and returns at-risk connecting passengers with their current and onward flight details."
tags:
- customer-service
- flight-operations
- connections
capability:
exposes:
- type: mcp
namespace: connection-monitor
port: 8080
tools:
- name: check-connections
description: "Identify passengers with tight or missed connections at a hub."
inputParameters:
- name: hub_station
in: body
type: string
description: "Hub airport code."
- name: threshold_minutes
in: body
type: number
description: "Connection time 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.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: connections
path: "/connections/at-risk"
operations:
- name: get-tight-connections
method: POST
Identifies no-show passengers after gate closure, updates their reservation status, and releases their seats for potential standby passengers.
naftiko: "0.5"
info:
label: "Passenger No-Show Processing"
description: "Identifies no-show passengers after gate closure, updates their reservation status, and releases their seats for potential standby passengers."
tags:
- flight-operations
- revenue-management
- customer-service
capability:
exposes:
- type: mcp
namespace: no-show-processing
port: 8080
tools:
- name: process-no-shows
description: "Process passenger no-shows for a departing 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"
- name: standby_cleared
type: number
mapping: "$.standbyCleared"
consumes:
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: no-shows
path: "/flights/{{flight}}/no-shows"
inputParameters:
- name: flight
in: path
operations:
- name: process-no-shows
method: POST
Processes passenger upgrade requests by checking availability in the premium cabin, verifying MileagePlus status, executing the upgrade in the reservation system, and sending a confirmation notification.
naftiko: "0.5"
info:
label: "Passenger Upgrade Processing Orchestrator"
description: "Processes passenger upgrade requests by checking availability in the premium cabin, verifying MileagePlus status, executing the upgrade in the reservation system, and sending a confirmation notification."
tags:
- customer-service
- loyalty
- mileageplus
- salesforce
capability:
exposes:
- type: mcp
namespace: upgrade-processing
port: 8080
tools:
- name: process-upgrade
description: "Process a passenger upgrade request end-to-end."
inputParameters:
- name: pnr
in: body
type: string
description: "Passenger name record."
- name: flight_number
in: body
type: string
description: "Flight number for upgrade."
- name: mileageplus_number
in: body
type: string
description: "MileagePlus member number."
- name: target_cabin
in: body
type: string
description: "Target cabin class (e.g., Polaris, First)."
steps:
- name: check-availability
type: call
call: "pss.check-cabin-availability"
with:
flight_number: "{{flight_number}}"
cabin: "{{target_cabin}}"
- name: verify-eligibility
type: call
call: "loyalty-api.get-upgrade-eligibility"
with:
member_id: "{{mileageplus_number}}"
cabin: "{{target_cabin}}"
- name: execute-upgrade
type: call
call: "pss.process-upgrade"
with:
pnr: "{{pnr}}"
flight_number: "{{flight_number}}"
cabin: "{{target_cabin}}"
- name: send-confirmation
type: call
call: "notification-api.send-email"
with:
member_id: "{{mileageplus_number}}"
template: "upgrade_confirmation"
flight_number: "{{flight_number}}"
cabin: "{{target_cabin}}"
consumes:
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: cabin-availability
path: "/availability/cabin"
operations:
- name: check-cabin-availability
method: POST
- name: upgrades
path: "/upgrades/process"
operations:
- name: process-upgrade
method: POST
- type: http
namespace: loyalty-api
baseUri: "https://loyalty.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.loyalty_api_token"
resources:
- name: upgrade-eligibility
path: "/members/{{member_id}}/upgrade-eligibility"
inputParameters:
- name: member_id
in: path
operations:
- name: get-upgrade-eligibility
method: GET
- type: http
namespace: notification-api
baseUri: "https://notifications.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.notification_token"
resources:
- name: emails
path: "/email/send"
operations:
- name: send-email
method: POST
Retrieves current headcount by department and employment classification from Workday for payroll planning and labor cost reporting.
naftiko: "0.5"
info:
label: "Payroll Headcount Snapshot"
description: "Retrieves current headcount by department and employment classification from Workday for payroll planning and labor cost reporting."
tags:
- hr
- payroll
- workday
- reporting
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Returns current active headcount grouped by department (Flight Operations, Inflight, Airport Ops, IT) and employment type. Use for payroll planning and union contract compliance."
inputParameters:
- name: department
in: body
type: string
description: "Department to filter by. Leave blank for all departments."
call: "workday-payroll.get-workers"
with:
department: "{{department}}"
outputParameters:
- name: total_count
type: number
mapping: "$.totalCount"
- name: unionized_count
type: number
mapping: "$.unionizedCount"
- name: management_count
type: number
mapping: "$.managementCount"
consumes:
- type: http
namespace: workday-payroll
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers"
inputParameters:
- name: department
in: query
operations:
- name: get-workers
method: GET
Validates a pet-in-cabin booking request against aircraft type restrictions, cabin pet limits, and route regulations.
naftiko: "0.5"
info:
label: "Pet in Cabin Booking Validation"
description: "Validates a pet-in-cabin booking request against aircraft type restrictions, cabin pet limits, and route regulations."
tags:
- customer-service
- compliance
- booking
capability:
exposes:
- type: mcp
namespace: pet-booking
port: 8080
tools:
- name: validate-pet-booking
description: "Validate whether a pet-in-cabin booking is allowed on a specific flight."
inputParameters:
- name: flight_number
in: body
type: string
description: "Flight number."
- name: flight_date
in: body
type: string
description: "Flight date."
- name: pet_type
in: body
type: string
description: "Pet type (dog, cat)."
- name: carrier_dimensions
in: body
type: string
description: "Carrier dimensions in inches (LxWxH)."
call: "booking-api.validate-pet"
with:
flight: "{{flight_number}}"
date: "{{flight_date}}"
pet: "{{pet_type}}"
carrier: "{{carrier_dimensions}}"
outputParameters:
- name: allowed
type: boolean
mapping: "$.isAllowed"
- name: remaining_slots
type: number
mapping: "$.remainingPetSlots"
- name: restrictions
type: array
mapping: "$.restrictions"
consumes:
- type: http
namespace: booking-api
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: pet-validation
path: "/bookings/pet-validation"
operations:
- name: validate-pet
method: POST
Calculates a fatigue risk score for a pilot based on recent duty periods, time zone crossings, and rest periods using the fatigue risk management system.
naftiko: "0.5"
info:
label: "Pilot Fatigue Risk Assessment"
description: "Calculates a fatigue risk score for a pilot based on recent duty periods, time zone crossings, and rest periods using the fatigue risk management system."
tags:
- crew-scheduling
- safety
- compliance
capability:
exposes:
- type: mcp
namespace: fatigue-risk
port: 8080
tools:
- name: assess-fatigue-risk
description: "Calculate fatigue risk score for a pilot."
inputParameters:
- name: employee_id
in: body
type: string
description: "Pilot employee ID."
- name: proposed_trip_id
in: body
type: string
description: "Proposed trip pairing ID."
call: "frms-api.calculate-risk"
with:
employee_id: "{{employee_id}}"
trip_id: "{{proposed_trip_id}}"
outputParameters:
- name: risk_score
type: number
mapping: "$.riskScore"
- name: risk_level
type: string
mapping: "$.riskLevel"
- name: recommendations
type: array
mapping: "$.recommendations"
consumes:
- type: http
namespace: frms-api
baseUri: "https://safety.united.com/api/v1/frms"
authentication:
type: bearer
token: "$secrets.safety_api_token"
resources:
- name: risk-assessment
path: "/assess"
operations:
- name: calculate-risk
method: POST
Retrieves a pilot's training and certification records from the crew training management system, including type ratings, recency checks, and upcoming recurrent training dates.
naftiko: "0.5"
info:
label: "Pilot Training Record Lookup"
description: "Retrieves a pilot's training and certification records from the crew training management system, 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 a pilot's training records and certification status."
inputParameters:
- name: employee_id
in: body
type: string
description: "Pilot employee ID."
call: "training-api.get-records"
with:
employee_id: "{{employee_id}}"
outputParameters:
- name: type_ratings
type: array
mapping: "$.typeRatings"
- name: last_check_date
type: string
mapping: "$.lastCheckDate"
- name: next_recurrent
type: string
mapping: "$.nextRecurrentDate"
consumes:
- type: http
namespace: training-api
baseUri: "https://crew.united.com/api/v1/training"
authentication:
type: bearer
token: "$secrets.crew_mgmt_token"
resources:
- name: records
path: "/pilots/{{employee_id}}/records"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-records
method: GET
Submits a meal preorder for a premium cabin passenger including special dietary requirements and wine pairing preferences.
naftiko: "0.5"
info:
label: "Premium Cabin Meal Preorder"
description: "Submits a meal preorder for a premium cabin passenger including special dietary requirements and wine pairing preferences."
tags:
- inflight-services
- catering
- customer-service
capability:
exposes:
- type: mcp
namespace: meal-preorder
port: 8080
tools:
- name: submit-meal-preorder
description: "Submit a premium cabin meal preorder for a passenger."
inputParameters:
- name: pnr
in: body
type: string
description: "Passenger name record."
- name: flight_number
in: body
type: string
description: "Flight number."
- name: meal_selection
in: body
type: string
description: "Selected meal option."
- name: dietary_restrictions
in: body
type: string
description: "Dietary restrictions if any."
call: "catering-api.submit-preorder"
with:
pnr: "{{pnr}}"
flight: "{{flight_number}}"
meal: "{{meal_selection}}"
dietary: "{{dietary_restrictions}}"
outputParameters:
- name: order_id
type: string
mapping: "$.orderId"
- name: confirmation
type: string
mapping: "$.confirmation"
consumes:
- type: http
namespace: catering-api
baseUri: "https://catering.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.catering_token"
resources:
- name: preorders
path: "/preorders/submit"
operations:
- name: submit-preorder
method: POST
When a ramp safety incident occurs, creates a ServiceNow safety report, notifies the station safety manager via Teams, triggers a Workday incident record for the involved employee, and logs an entry in the safety analytics system.
naftiko: "0.5"
info:
label: "Ramp Safety Incident Reporting Orchestrator"
description: "When a ramp safety incident occurs, creates a ServiceNow safety report, notifies the station safety manager via Teams, triggers a Workday incident record for the involved employee, and logs an entry in the safety analytics system."
tags:
- safety
- ground-ops
- servicenow
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ramp-safety
port: 8080
tools:
- name: report-ramp-incident
description: "Report and process a ramp safety incident through all required systems."
inputParameters:
- name: station
in: body
type: string
description: "Airport station code."
- name: incident_type
in: body
type: string
description: "Type of incident (e.g., FOD, ground damage, injury)."
- name: employee_id
in: body
type: string
description: "Involved employee ID."
- name: description
in: body
type: string
description: "Incident description."
steps:
- name: create-safety-report
type: call
call: "servicenow.create-incident"
with:
short_description: "Ramp safety incident at {{station}}: {{incident_type}}"
category: "safety"
priority: "1"
description: "{{description}}"
- name: notify-safety-manager
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{safety_channel_id}}"
text: "SAFETY ALERT at {{station}}: {{incident_type}} — {{description}} | ServiceNow: {{create-safety-report.number}}"
- name: log-employee-incident
type: call
call: "workday.create-safety-event"
with:
employee_id: "{{employee_id}}"
event_type: "{{incident_type}}"
reference: "{{create-safety-report.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://united.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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
- type: http
namespace: workday
baseUri: "https://wd5-services.united.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: safety-events
path: "/safety/events"
operations:
- name: create-safety-event
method: POST
When a DOT or FAA regulatory audit is announced, creates a ServiceNow compliance project with evidence collection tasks and notifies the legal and compliance teams via Microsoft Teams.
naftiko: "0.5"
info:
label: "Regulatory Compliance Audit Initiation"
description: "When a DOT or FAA regulatory audit is announced, creates a ServiceNow compliance project with evidence collection tasks and notifies the legal and compliance teams via Microsoft Teams."
tags:
- compliance
- regulatory
- servicenow
- microsoft-teams
- aviation
capability:
exposes:
- type: mcp
namespace: regulatory-compliance
port: 8080
tools:
- name: initiate-regulatory-audit
description: "Given an audit type, regulatory body, and submission deadline, create a ServiceNow compliance project and notify the legal and compliance teams via Teams."
inputParameters:
- name: audit_type
in: body
type: string
description: "Type of audit (e.g., FAA Safety Audit, DOT Consumer Protection, TSA Security)."
- name: regulatory_body
in: body
type: string
description: "Regulatory body conducting the audit (e.g., FAA, DOT, TSA)."
- name: submission_deadline
in: body
type: string
description: "Evidence submission deadline in YYYY-MM-DD format."
- name: compliance_channel_id
in: body
type: string
description: "Teams channel ID for the legal and compliance team."
steps:
- name: create-compliance-project
type: call
call: "servicenow-regulatory.create-task"
with:
short_description: "{{audit_type}} — {{regulatory_body}} — due {{submission_deadline}}"
category: "regulatory_compliance"
assignment_group: "Legal_Compliance"
due_date: "{{submission_deadline}}"
- name: notify-compliance-team
type: call
call: "msteams-regulatory.post-channel-message"
with:
channel_id: "{{compliance_channel_id}}"
text: "Regulatory audit initiated: {{audit_type}} | Authority: {{regulatory_body}} | Deadline: {{submission_deadline}} | Compliance task: {{create-compliance-project.number}}"
consumes:
- type: http
namespace: servicenow-regulatory
baseUri: "https://united.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
- type: http
namespace: msteams-regulatory
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Runs a revenue integrity check on a flight by comparing booked inventory against actual revenue, identifying discrepancies, and creating a Salesforce case for review and a Jira ticket for the revenue management team.
naftiko: "0.5"
info:
label: "Revenue Integrity Audit Orchestrator"
description: "Runs a revenue integrity check on a flight by comparing booked inventory against actual revenue, identifying discrepancies, and creating a Salesforce case for review and a Jira ticket for the revenue management team."
tags:
- revenue-management
- salesforce
- jira
- compliance
capability:
exposes:
- type: mcp
namespace: revenue-integrity
port: 8080
tools:
- name: audit-revenue-integrity
description: "Run a revenue integrity audit for a flight and escalate discrepancies."
inputParameters:
- name: flight_number
in: body
type: string
description: "Flight number to audit."
- name: flight_date
in: body
type: string
description: "Flight date."
steps:
- name: pull-booking-data
type: call
call: "revenue-api.get-flight-revenue"
with:
flight_number: "{{flight_number}}"
date: "{{flight_date}}"
- name: run-integrity-check
type: call
call: "revenue-api.check-integrity"
with:
flight_number: "{{flight_number}}"
date: "{{flight_date}}"
bookings: "{{pull-booking-data.bookings}}"
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "Revenue integrity discrepancy — {{flight_number}} on {{flight_date}}"
description: "Discrepancy amount: {{run-integrity-check.discrepancy_amount}}"
priority: "Medium"
- name: create-jira-ticket
type: call
call: "jira.create-issue"
with:
project: "REVMGMT"
summary: "Revenue integrity review: {{flight_number}} {{flight_date}}"
description: "SF Case: {{create-case.id}} | Discrepancy: {{run-integrity-check.discrepancy_amount}}"
consumes:
- type: http
namespace: revenue-api
baseUri: "https://analytics.united.com/api/v1/revenue"
authentication:
type: bearer
token: "$secrets.revenue_analytics_token"
resources:
- name: flight-revenue
path: "/flights/{{flight_number}}/revenue"
inputParameters:
- name: flight_number
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://united.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://united.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Generates a revenue passenger miles (RPM) report for a specified period, broken down by domestic, international, and regional operations.
naftiko: "0.5"
info:
label: "Revenue Passenger Miles Report"
description: "Generates a revenue passenger miles (RPM) report for a specified period, broken down by domestic, international, and regional operations."
tags:
- revenue-management
- analytics
- operations
capability:
exposes:
- type: mcp
namespace: rpm-analytics
port: 8080
tools:
- name: get-rpm-report
description: "Generate an RPM report for a given period."
inputParameters:
- name: start_date
in: body
type: string
description: "Start date."
- name: end_date
in: body
type: string
description: "End date."
call: "revenue-api.get-rpm"
with:
start: "{{start_date}}"
end: "{{end_date}}"
outputParameters:
- name: total_rpm
type: number
mapping: "$.totalRPM"
- name: domestic_rpm
type: number
mapping: "$.domesticRPM"
- name: international_rpm
type: number
mapping: "$.internationalRPM"
consumes:
- type: http
namespace: revenue-api
baseUri: "https://analytics.united.com/api/v1/revenue"
authentication:
type: bearer
token: "$secrets.revenue_analytics_token"
resources:
- name: rpm
path: "/metrics/rpm"
operations:
- name: get-rpm
method: POST
Pulls route-level revenue and cost data from the revenue management system to generate a profitability summary for a given origin-destination pair.
naftiko: "0.5"
info:
label: "Route Profitability Report"
description: "Pulls route-level revenue and cost data from the revenue management system to generate a profitability summary for a given origin-destination pair."
tags:
- revenue-management
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: revenue-analytics
port: 8080
tools:
- name: get-route-profitability
description: "Retrieve profitability metrics for a specific route including load factor, revenue per ASM, and operating margin."
inputParameters:
- name: origin
in: body
type: string
description: "Origin airport IATA code."
- name: destination
in: body
type: string
description: "Destination airport IATA code."
- name: period
in: body
type: string
description: "Reporting period (e.g., 2025-Q4)."
call: "revenue-db.query-route"
with:
origin: "{{origin}}"
destination: "{{destination}}"
period: "{{period}}"
outputParameters:
- name: load_factor
type: number
mapping: "$.loadFactor"
- name: revenue_per_asm
type: number
mapping: "$.revenuePerASM"
- name: operating_margin
type: number
mapping: "$.operatingMargin"
consumes:
- type: http
namespace: revenue-db
baseUri: "https://analytics.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.revenue_analytics_token"
resources:
- name: route-metrics
path: "/routes/profitability"
operations:
- name: query-route
method: POST
Submits a runway slot request for a flight at slot-controlled airports, checking availability and filing the request with the airport coordination authority.
naftiko: "0.5"
info:
label: "Runway Slot Request"
description: "Submits a runway slot request for a flight at slot-controlled airports, checking availability and filing the request with the airport coordination authority."
tags:
- flight-operations
- dispatch
- scheduling
capability:
exposes:
- type: mcp
namespace: slot-mgmt
port: 8080
tools:
- name: request-runway-slot
description: "Request a runway slot at a slot-controlled airport."
inputParameters:
- name: airport
in: body
type: string
description: "Airport IATA code."
- name: flight_number
in: body
type: string
description: "Flight number."
- name: requested_time
in: body
type: string
description: "Requested slot time in UTC."
- name: operation_type
in: body
type: string
description: "Operation type (arrival, departure)."
call: "slot-api.request-slot"
with:
airport: "{{airport}}"
flight: "{{flight_number}}"
time: "{{requested_time}}"
type: "{{operation_type}}"
outputParameters:
- name: slot_id
type: string
mapping: "$.slotId"
- name: granted_time
type: string
mapping: "$.grantedTime"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: slot-api
baseUri: "https://scheduling.united.com/api/v1/slots"
authentication:
type: bearer
token: "$secrets.scheduling_token"
resources:
- name: slots
path: "/request"
operations:
- name: request-slot
method: POST
Enriches a Salesforce MileagePlus member record with flight history and tier status from the loyalty system, and notifies the account manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Customer Loyalty Enrichment"
description: "Enriches a Salesforce MileagePlus member record with flight history and tier status from the loyalty system, and notifies the account manager via Microsoft Teams."
tags:
- sales
- crm
- salesforce
- loyalty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: loyalty-enrichment
port: 8080
tools:
- name: enrich-mileageplus-member
description: "Given a Salesforce contact ID and MileagePlus number, retrieve loyalty tier and flight history and update the Salesforce record with the enriched data."
inputParameters:
- name: salesforce_contact_id
in: body
type: string
description: "The Salesforce contact ID for the MileagePlus member."
- name: mileageplus_number
in: body
type: string
description: "The MileagePlus loyalty number."
- name: account_manager_upn
in: body
type: string
description: "UPN of the account manager to notify of enrichment."
steps:
- name: get-loyalty-data
type: call
call: "salesforce-loyalty.get-contact"
with:
contact_id: "{{salesforce_contact_id}}"
- name: update-contact
type: call
call: "salesforce-loyalty.update-contact"
with:
contact_id: "{{salesforce_contact_id}}"
loyalty_tier: "{{get-loyalty-data.tier}}"
lifetime_miles: "{{get-loyalty-data.lifetime_miles}}"
- name: notify-account-manager
type: call
call: "msteams-loyalty.send-message"
with:
recipient_upn: "{{account_manager_upn}}"
text: "MileagePlus enrichment complete: {{mileageplus_number}} | Tier: {{get-loyalty-data.tier}} | Lifetime miles: {{get-loyalty-data.lifetime_miles}} | Salesforce updated."
consumes:
- type: http
namespace: salesforce-loyalty
baseUri: "https://united.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: get-contact
method: GET
- name: update-contact
method: PATCH
- type: http
namespace: msteams-loyalty
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Processes pilot and crew mileage reimbursement claims submitted in SAP Concur, validates against union contract rates, and routes for payroll processing.
naftiko: "0.5"
info:
label: "SAP Concur Mileage Reimbursement Processing"
description: "Processes pilot and crew mileage reimbursement claims submitted in SAP Concur, validates against union contract rates, and routes for payroll processing."
tags:
- hr
- payroll
- sap-concur
- workday
capability:
exposes:
- type: mcp
namespace: crew-payroll
port: 8080
tools:
- name: process-mileage-reimbursement
description: "Given a Concur mileage expense report ID, retrieve the claim details, validate the mileage rate against union contract tables in Workday, and approve for payroll processing."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur mileage expense report ID."
- name: employee_id
in: body
type: string
description: "The Workday employee ID of the crew member submitting the claim."
steps:
- name: get-mileage-report
type: call
call: "concur-mileage.get-expense-report"
with:
reportId: "{{report_id}}"
- name: get-union-rates
type: call
call: "workday-union.get-compensation-data"
with:
worker_id: "{{employee_id}}"
- name: approve-for-payroll
type: call
call: "concur-mileage.update-expense-report"
with:
reportId: "{{report_id}}"
status: "APPROVED"
consumes:
- type: http
namespace: concur-mileage
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{reportId}}"
inputParameters:
- name: reportId
in: path
operations:
- name: get-expense-report
method: GET
- name: update-expense-report
method: PUT
- type: http
namespace: workday-union
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: compensation
path: "/workers/{{worker_id}}/compensation"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-compensation-data
method: GET
Retrieves a SAP S/4HANA purchase order by PO number and returns vendor, status, and line item details for procurement and finance verification.
naftiko: "0.5"
info:
label: "SAP Purchase Order Lookup"
description: "Retrieves a SAP S/4HANA purchase order by PO number and returns vendor, status, and line item details for procurement and finance verification."
tags:
- procurement
- sap
- finance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-purchase-order
description: "Look up a SAP purchase order by PO number. Returns header status, vendor name, total value, and currency. Use for procurement approvals and three-way match."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number (e.g., 4500012345)."
call: "sap.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: vendor
type: string
mapping: "$.d.Supplier.CompanyName"
- name: total_value
type: string
mapping: "$.d.TotalAmount"
- name: currency
type: string
mapping: "$.d.TransactionCurrency"
consumes:
- type: http
namespace: sap
baseUri: "https://united-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: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Retrieves the seat map and availability for a given flight, showing available, occupied, and blocked seats by cabin class.
naftiko: "0.5"
info:
label: "Seat Map Availability Lookup"
description: "Retrieves the seat map and availability for a given flight, showing available, occupied, and blocked seats by cabin class."
tags:
- customer-service
- flight-operations
- revenue-management
capability:
exposes:
- type: mcp
namespace: seat-map
port: 8080
tools:
- name: get-seat-map
description: "Get seat map 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"
- name: exit_row_available
type: boolean
mapping: "$.exitRowAvailable"
consumes:
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: seat-maps
path: "/flights/{{flight}}/seat-map"
inputParameters:
- name: flight
in: path
operations:
- name: get-seat-map
method: GET
Retrieves IT asset details from ServiceNow CMDB by asset tag or serial number, returning assignment, location, and warranty status.
naftiko: "0.5"
info:
label: "ServiceNow IT Asset Lookup"
description: "Retrieves IT asset details from ServiceNow CMDB by asset tag or serial number, returning assignment, location, and warranty status."
tags:
- it-operations
- servicenow
- asset-management
capability:
exposes:
- type: mcp
namespace: it-assets
port: 8080
tools:
- name: get-it-asset
description: "Look up an IT asset in ServiceNow CMDB."
inputParameters:
- name: asset_tag
in: body
type: string
description: "Asset tag or serial number."
call: "servicenow.get-asset"
with:
asset_tag: "{{asset_tag}}"
outputParameters:
- name: asset_name
type: string
mapping: "$.result.name"
- name: assigned_to
type: string
mapping: "$.result.assigned_to.display_value"
- name: location
type: string
mapping: "$.result.location.display_value"
- name: warranty_expiration
type: string
mapping: "$.result.warranty_expiration"
consumes:
- type: http
namespace: servicenow
baseUri: "https://united.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 a travel expense report is submitted in SAP Concur, validates it against travel policy and routes for manager approval via ServiceNow if thresholds are exceeded.
naftiko: "0.5"
info:
label: "Travel Expense Report Processing"
description: "When a travel expense report is submitted in SAP Concur, validates it against travel policy and routes for manager approval via ServiceNow if thresholds are exceeded."
tags:
- finance
- travel-expense
- sap-concur
- servicenow
capability:
exposes:
- type: mcp
namespace: expense-mgmt
port: 8080
tools:
- name: process-expense-report
description: "Given a Concur expense report ID, retrieve report details, check against United Airlines travel policy, and create a ServiceNow approval task for policy exceptions."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report ID."
- name: manager_email
in: body
type: string
description: "Email of the approving manager."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
reportId: "{{report_id}}"
- name: create-approval-task
type: call
call: "servicenow-expense.create-task"
with:
short_description: "Expense approval: Report {{report_id}} — ${{get-report.total_amount}}"
category: "expense_management"
assignment_group: "Finance_Approvals"
assigned_to: "{{manager_email}}"
consumes:
- type: http
namespace: concur
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{reportId}}"
inputParameters:
- name: reportId
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: servicenow-expense
baseUri: "https://united.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
Checks a passenger's TSA PreCheck eligibility status and Known Traveler Number validation for boarding pass issuance.
naftiko: "0.5"
info:
label: "TSA PreCheck Eligibility Lookup"
description: "Checks a passenger's TSA PreCheck eligibility status and Known Traveler Number validation for boarding pass issuance."
tags:
- customer-service
- security
- compliance
capability:
exposes:
- type: mcp
namespace: tsa-check
port: 8080
tools:
- name: check-precheck-eligibility
description: "Verify TSA PreCheck eligibility for a passenger."
inputParameters:
- name: pnr
in: body
type: string
description: "Passenger name record."
- name: known_traveler_number
in: body
type: string
description: "Known Traveler Number."
call: "security-api.verify-precheck"
with:
pnr: "{{pnr}}"
ktn: "{{known_traveler_number}}"
outputParameters:
- name: eligible
type: boolean
mapping: "$.precheckEligible"
- name: status
type: string
mapping: "$.verificationStatus"
consumes:
- type: http
namespace: security-api
baseUri: "https://security.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.security_api_token"
resources:
- name: precheck
path: "/tsa/precheck/verify"
operations:
- name: verify-precheck
method: POST
Retrieves the current status and location checkpoints for an unaccompanied minor passenger, including handoff confirmations and guardian contact details.
naftiko: "0.5"
info:
label: "Unaccompanied Minor Tracking Lookup"
description: "Retrieves the current status and location checkpoints for an unaccompanied minor passenger, including handoff confirmations and guardian contact details."
tags:
- customer-service
- safety
- tracking
capability:
exposes:
- type: mcp
namespace: umnr-tracking
port: 8080
tools:
- name: track-unaccompanied-minor
description: "Look up the tracking status of an unaccompanied minor by PNR."
inputParameters:
- name: pnr
in: body
type: string
description: "Passenger name record for the unaccompanied minor."
call: "umnr-api.get-status"
with:
pnr: "{{pnr}}"
outputParameters:
- name: current_checkpoint
type: string
mapping: "$.currentCheckpoint"
- name: handoff_status
type: string
mapping: "$.handoffStatus"
- name: guardian_contact
type: string
mapping: "$.guardianPhone"
- name: flight_number
type: string
mapping: "$.flightNumber"
consumes:
- type: http
namespace: umnr-api
baseUri: "https://pss.united.com/api/v2/umnr"
authentication:
type: bearer
token: "$secrets.pss_token"
resources:
- name: tracking
path: "/tracking/{{pnr}}"
inputParameters:
- name: pnr
in: path
operations:
- name: get-status
method: GET
Checks the current occupancy and capacity of a United Club lounge at a specific airport for customer service and access management.
naftiko: "0.5"
info:
label: "United Club Lounge Capacity Check"
description: "Checks the current occupancy and capacity of a United Club lounge at a specific airport for customer service and access management."
tags:
- customer-service
- lounge
- ground-ops
capability:
exposes:
- type: mcp
namespace: lounge-ops
port: 8080
tools:
- name: check-lounge-capacity
description: "Check current United Club lounge occupancy and availability."
inputParameters:
- name: station
in: body
type: string
description: "Airport IATA code."
- name: terminal
in: body
type: string
description: "Terminal identifier."
call: "lounge-api.get-capacity"
with:
station: "{{station}}"
terminal: "{{terminal}}"
outputParameters:
- name: current_occupancy
type: number
mapping: "$.currentOccupancy"
- name: max_capacity
type: number
mapping: "$.maxCapacity"
- name: available_seats
type: number
mapping: "$.availableSeats"
consumes:
- type: http
namespace: lounge-api
baseUri: "https://lounges.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.lounge_api_token"
resources:
- name: capacity
path: "/clubs/{{station}}/{{terminal}}/capacity"
inputParameters:
- name: station
in: path
- name: terminal
in: path
operations:
- name: get-capacity
method: GET
When a vendor invoice arrives in SAP, validates it against the purchase order, routes for approval in ServiceNow, and notifies the accounts payable team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Vendor Invoice Processing"
description: "When a vendor invoice arrives in SAP, validates it against the purchase order, routes for approval in ServiceNow, and notifies the accounts payable team via Microsoft Teams."
tags:
- finance
- accounts-payable
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-ap
port: 8080
tools:
- name: process-vendor-invoice
description: "Given a SAP invoice number and PO number, validate for three-way match, create a ServiceNow approval task, and notify the AP team via Teams."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The SAP vendor invoice number."
- name: po_number
in: body
type: string
description: "The associated purchase order number for three-way match validation."
- name: invoice_amount
in: body
type: number
description: "Invoice amount in USD."
steps:
- name: get-invoice
type: call
call: "sap-invoice.get-invoice"
with:
invoice_number: "{{invoice_number}}"
- name: create-approval-task
type: call
call: "servicenow-ap.create-task"
with:
short_description: "Invoice approval: {{invoice_number}} vs PO {{po_number}} — ${{invoice_amount}}"
category: "accounts_payable"
assignment_group: "AP_Team"
- name: notify-ap-team
type: call
call: "msteams-ap.send-message"
with:
recipient_upn: "ap-team@united.com"
text: "Invoice {{invoice_number}} pending approval. PO: {{po_number}}, Amount: ${{invoice_amount}}. Approval task: {{create-approval-task.number}}"
consumes:
- type: http
namespace: sap-invoice
baseUri: "https://united-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: invoices
path: "/A_SupplierInvoice('{{invoice_number}}')"
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-invoice
method: GET
- type: http
namespace: servicenow-ap
baseUri: "https://united.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
- type: http
namespace: msteams-ap
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Orchestrates special handling for VIP passengers by flagging the reservation, arranging meet-and-greet, coordinating lounge access, and notifying the station manager and crew.
naftiko: "0.5"
info:
label: "VIP Passenger Handling Orchestrator"
description: "Orchestrates special handling for VIP passengers by flagging the reservation, arranging meet-and-greet, coordinating lounge access, and notifying the station manager and crew."
tags:
- customer-service
- ground-ops
- loyalty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vip-handling
port: 8080
tools:
- name: arrange-vip-handling
description: "Set up special handling for a VIP passenger."
inputParameters:
- name: pnr
in: body
type: string
description: "Passenger name record."
- name: flight_number
in: body
type: string
description: "Flight number."
- name: station
in: body
type: string
description: "Departure station."
- name: vip_level
in: body
type: string
description: "VIP level (corporate, celebrity, government)."
steps:
- name: flag-reservation
type: call
call: "pss.add-ssr"
with:
pnr: "{{pnr}}"
ssr_code: "VIP"
text: "{{vip_level}} VIP handling requested"
- name: arrange-meet-greet
type: call
call: "ground-ops.create-meet-greet"
with:
station: "{{station}}"
flight_number: "{{flight_number}}"
pnr: "{{pnr}}"
- name: notify-station
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{station_mgr_channel}}"
text: "VIP handling ({{vip_level}}) for {{flight_number}} at {{station}} — Meet & greet: {{arrange-meet-greet.agent_name}} | PNR: {{pnr}}"
consumes:
- type: http
namespace: pss
baseUri: "https://pss.united.com/api/v2"
authentication:
type: bearer
token: "$secrets.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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.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: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When severe weather is forecast at a hub, queries the weather API, identifies affected flights, estimates delay impact, creates a ServiceNow incident, and notifies the operations control center via Teams.
naftiko: "0.5"
info:
label: "Weather Delay Impact Assessment Orchestrator"
description: "When severe weather is forecast at a hub, queries the weather API, identifies affected flights, estimates delay impact, creates a ServiceNow incident, and notifies the operations control center 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 the operational impact of severe weather at a hub station."
inputParameters:
- name: hub_station
in: body
type: string
description: "Hub airport IATA code."
- name: forecast_window
in: body
type: string
description: "Hours ahead to assess (e.g., 6, 12, 24)."
steps:
- name: get-weather-forecast
type: call
call: "weather-api.get-forecast"
with:
station: "{{hub_station}}"
hours: "{{forecast_window}}"
- name: get-affected-flights
type: call
call: "flight-api.search-departures"
with:
station: "{{hub_station}}"
window_hours: "{{forecast_window}}"
- name: create-weather-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Weather impact at {{hub_station}}: {{get-weather-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-weather-forecast.summary}} | {{get-affected-flights.count}} departures impacted | ServiceNow: {{create-weather-incident.number}}"
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: flight-api
baseUri: "https://api.united.com/v1/flights"
authentication:
type: bearer
token: "$secrets.united_api_token"
resources:
- name: departures
path: "/departures/search"
operations:
- name: search-departures
method: POST
- type: http
namespace: servicenow
baseUri: "https://united.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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Calculates aircraft weight and balance for a flight given passenger count, cargo load, and fuel uplift, returning center of gravity and trim settings.
naftiko: "0.5"
info:
label: "Weight and Balance Calculation"
description: "Calculates aircraft weight and balance for a flight given passenger count, cargo load, and fuel uplift, returning center of gravity and trim settings."
tags:
- dispatch
- flight-operations
- safety
capability:
exposes:
- type: mcp
namespace: wb-calc
port: 8080
tools:
- name: calculate-weight-balance
description: "Calculate weight and balance for pre-departure dispatch."
inputParameters:
- name: tail_number
in: body
type: string
description: "Aircraft tail number."
- name: passenger_count
in: body
type: number
description: "Total passenger count."
- name: cargo_weight_kg
in: body
type: number
description: "Total cargo and baggage weight in kg."
- name: fuel_load_kg
in: body
type: number
description: "Planned fuel load in kg."
call: "dispatch-api.calc-wb"
with:
tail: "{{tail_number}}"
pax: "{{passenger_count}}"
cargo: "{{cargo_weight_kg}}"
fuel: "{{fuel_load_kg}}"
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.united.com/api/v1"
authentication:
type: bearer
token: "$secrets.dispatch_token"
resources:
- name: weight-balance
path: "/weight-balance/calculate"
operations:
- name: calc-wb
method: POST
Retrieves scheduled versus actual labor hours from Workday for a given hub station and pay period, checks for union contract and FAA duty time compliance, and flags violations via Teams.
naftiko: "0.5"
info:
label: "Workforce Scheduling Labor Compliance Check"
description: "Retrieves scheduled versus actual labor hours from Workday for a given hub station and pay period, checks for union contract and FAA duty time compliance, and flags violations via Teams."
tags:
- hr
- labor-compliance
- workday
- microsoft-teams
- aviation
capability:
exposes:
- type: mcp
namespace: labor-compliance
port: 8080
tools:
- name: check-labor-compliance
description: "Given a hub station code and pay period, retrieve actual hours from Workday, check against union contract and FAA duty time limits, and post a compliance digest to the HR Teams channel."
inputParameters:
- name: hub_station
in: body
type: string
description: "Airport hub station code (e.g., ORD, IAH, EWR, DEN, SFO)."
- name: period_start
in: body
type: string
description: "Pay period start date in YYYY-MM-DD format."
- name: period_end
in: body
type: string
description: "Pay period end date in YYYY-MM-DD format."
- name: hr_channel_id
in: body
type: string
description: "Teams channel ID for the HR compliance team."
steps:
- name: get-hours-data
type: call
call: "workday-labor.get-time-details"
with:
location: "{{hub_station}}"
startDate: "{{period_start}}"
endDate: "{{period_end}}"
- name: post-compliance-digest
type: call
call: "msteams-labor.post-channel-message"
with:
channel_id: "{{hr_channel_id}}"
text: "Labor Compliance — {{hub_station}} ({{period_start}} to {{period_end}}): Scheduled hours: {{get-hours-data.scheduled_hours}} | Actual hours: {{get-hours-data.actual_hours}} | Overtime: {{get-hours-data.overtime_hours}} | FAA violations: {{get-hours-data.faa_violations}}"
consumes:
- type: http
namespace: workday-labor
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-details
path: "/workers/time-details"
inputParameters:
- name: location
in: query
- name: startDate
in: query
- name: endDate
in: query
operations:
- name: get-time-details
method: GET
- type: http
namespace: msteams-labor
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST