Union Pacific Capabilities
Naftiko 0.5 capability definitions for Union Pacific - 100 capabilities showing integration workflows and service orchestrations.
Retrieves ADP payroll summary data for a given pay period.
naftiko: "0.5"
info:
label: "ADP Payroll Summary Lookup"
description: "Retrieves ADP payroll summary data for a given pay period."
tags:
- hr
- payroll
- adp
capability:
exposes:
- type: mcp
namespace: payroll-ops
port: 8080
tools:
- name: get-payroll-summary
description: "Fetch ADP payroll summary for a pay period."
inputParameters:
- name: pay_period
in: body
type: string
description: "Pay period identifier."
call: "adp.get-payroll"
with:
pay_period: "{{pay_period}}"
outputParameters:
- name: gross_pay
type: string
mapping: "$.payrollSummary.grossPay"
- name: net_pay
type: string
mapping: "$.payrollSummary.netPay"
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com/hr/v2"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: payroll
path: "/payroll-summaries/{{pay_period}}"
inputParameters:
- name: pay_period
in: path
operations:
- name: get-payroll
method: GET
Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
naftiko: "0.5"
info:
label: "Annual Compliance Certification Orchestrator"
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
tags:
- compliance
- hr
- legal
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-annual-compliance-certification-orchestrator
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
naftiko: "0.5"
info:
label: "API Lifecycle Management Orchestrator"
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
tags:
- engineering
- api
- operations
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: run-api-lifecycle-management-orchestrator
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves Azure AD user profile by UPN.
naftiko: "0.5"
info:
label: "Azure Active Directory User Lookup"
description: "Retrieves Azure AD user profile by UPN."
tags:
- identity
- azure-active-directory
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: get-ad-user
description: "Fetch Azure AD user profile."
inputParameters:
- name: upn
in: body
type: string
description: "User principal name."
call: "azuread.get-user"
with:
upn: "{{upn}}"
outputParameters:
- name: display_name
type: string
mapping: "$.displayName"
- name: department
type: string
mapping: "$.department"
consumes:
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{upn}}"
inputParameters:
- name: upn
in: path
operations:
- name: get-user
method: GET
Retrieves the latest build status from Azure DevOps for a given pipeline.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status Lookup"
description: "Retrieves the latest build status from Azure DevOps for a given pipeline."
tags:
- devops
- ci-cd
- azure-devops
capability:
exposes:
- type: mcp
namespace: devops-builds
port: 8080
tools:
- name: get-build-status
description: "Fetch latest build status for an Azure DevOps pipeline."
inputParameters:
- name: project
in: body
type: string
description: "Azure DevOps project name."
- name: pipeline_id
in: body
type: string
description: "Pipeline definition ID."
call: "azuredevops.get-builds"
with:
project: "{{project}}"
definition_id: "{{pipeline_id}}"
outputParameters:
- name: build_number
type: string
mapping: "$.value[0].buildNumber"
- name: status
type: string
mapping: "$.value[0].status"
- name: result
type: string
mapping: "$.value[0].result"
consumes:
- type: http
namespace: azuredevops
baseUri: "https://dev.azure.com/unionpacific"
authentication:
type: basic
username: ""
password: "$secrets.azuredevops_pat"
resources:
- name: builds
path: "/{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0"
inputParameters:
- name: project
in: path
- name: definition_id
in: query
operations:
- name: get-builds
method: GET
Manages bridge and tunnel inspections by logging results in SAP, creating maintenance work orders for findings, storing photos in SharePoint, and notifying the structures team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Bridge and Tunnel Inspection Orchestrator"
description: "Manages bridge and tunnel inspections by logging results in SAP, creating maintenance work orders for findings, storing photos in SharePoint, and notifying the structures team via Microsoft Teams."
tags:
- safety
- maintenance
- infrastructure
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: structures-inspection
port: 8080
tools:
- name: process-structure-inspection
description: "Log bridge/tunnel inspection and create follow-up actions."
inputParameters:
- name: structure_id
in: body
type: string
description: "Bridge or tunnel identifier."
- name: inspection_type
in: body
type: string
description: "Inspection type (e.g., 'annual', 'special')."
- name: findings_count
in: body
type: number
description: "Number of findings."
- name: rating
in: body
type: string
description: "Overall condition rating (1-9)."
steps:
- name: log-inspection
type: call
call: "sap.create-inspection-record"
with:
structure: "{{structure_id}}"
type: "{{inspection_type}}"
findings: "{{findings_count}}"
rating: "{{rating}}"
- name: create-work-orders
type: call
call: "sap.create-maintenance-order"
with:
equipment: "{{structure_id}}"
description: "{{inspection_type}} inspection findings: {{findings_count}} items"
priority: "2"
- name: store-photos
type: call
call: "sharepoint.create-folder"
with:
site_id: "structures_inspections"
folder_path: "{{structure_id}}/{{inspection_type}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "structures-team"
text: "Inspection complete for {{structure_id}} ({{inspection_type}}): Rating {{rating}}/9, {{findings_count}} findings. WO: {{create-work-orders.order_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_MAINTORDER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inspections
path: "/A_InspectionRecord"
operations:
- name: create-inspection-record
method: POST
- name: maintenance-orders
path: "/MaintenanceOrder"
operations:
- name: create-maintenance-order
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: folders
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves network device status from Cisco DNA Center for a specified device, returning health score, uptime, and connectivity.
naftiko: "0.5"
info:
label: "Cisco Network Device Status Lookup"
description: "Retrieves network device status from Cisco DNA Center for a specified device, returning health score, uptime, and connectivity."
tags:
- infrastructure
- networking
- cisco
capability:
exposes:
- type: mcp
namespace: network-ops
port: 8080
tools:
- name: get-device-health
description: "Fetch Cisco DNA Center device health."
inputParameters:
- name: device_id
in: body
type: string
description: "Cisco device identifier."
call: "cisco.get-device-health"
with:
device_id: "{{device_id}}"
outputParameters:
- name: health_score
type: number
mapping: "$.response.overallHealth"
- name: uptime
type: string
mapping: "$.response.upTime"
consumes:
- type: http
namespace: cisco
baseUri: "https://up-dnac.up.com/dna/intent/api/v1"
authentication:
type: bearer
token: "$secrets.cisco_dnac_token"
resources:
- name: devices
path: "/device-health?deviceId={{device_id}}"
inputParameters:
- name: device_id
in: query
operations:
- name: get-device-health
method: GET
Retrieves DNS records for a specified Cloudflare zone.
naftiko: "0.5"
info:
label: "Cloudflare DNS Record Lookup"
description: "Retrieves DNS records for a specified Cloudflare zone."
tags:
- infrastructure
- dns
- cloudflare
capability:
exposes:
- type: mcp
namespace: dns-management
port: 8080
tools:
- name: get-dns-records
description: "Fetch DNS records from Cloudflare for a zone."
inputParameters:
- name: zone_id
in: body
type: string
description: "Cloudflare zone ID."
call: "cloudflare.list-dns-records"
with:
zone_id: "{{zone_id}}"
outputParameters:
- name: records
type: array
mapping: "$.result"
consumes:
- type: http
namespace: cloudflare
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: bearer
token: "$secrets.cloudflare_token"
resources:
- name: dns-records
path: "/zones/{{zone_id}}/dns_records"
inputParameters:
- name: zone_id
in: path
operations:
- name: list-dns-records
method: GET
Retrieves a Confluence wiki page.
naftiko: "0.5"
info:
label: "Confluence Page Viewer"
description: "Retrieves a Confluence wiki page."
tags:
- collaboration
- confluence
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-confluence
description: "Retrieves a Confluence wiki page."
inputParameters:
- name: entity_id
in: body
type: string
description: "The confluence page viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.union-pacific.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: confluence
path: "/confluence/page/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-confluence
method: GET
Validates crew scheduling against FRA Hours of Service rules in SAP, identifies compliance risks, creates corrective actions in ServiceNow, and alerts crew management via Microsoft Teams.
naftiko: "0.5"
info:
label: "Crew Scheduling and Compliance Orchestrator"
description: "Validates crew scheduling against FRA Hours of Service rules in SAP, identifies compliance risks, creates corrective actions in ServiceNow, and alerts crew management via Microsoft Teams."
tags:
- rail-ops
- scheduling
- compliance
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crew-compliance
port: 8080
tools:
- name: validate-crew-schedule
description: "Check crew schedules for HOS compliance and create corrective actions."
inputParameters:
- name: crew_id
in: body
type: string
description: "Crew assignment identifier."
- name: date
in: body
type: string
description: "Schedule date YYYY-MM-DD."
steps:
- name: get-schedule
type: call
call: "sap.get-crew-schedule"
with:
crew_id: "{{crew_id}}"
date: "{{date}}"
- name: check-compliance
type: call
call: "sap.validate-hos"
with:
hours_worked: "{{get-schedule.total_hours}}"
rest_hours: "{{get-schedule.rest_period}}"
- name: create-action
type: call
call: "servicenow.create-incident"
with:
short_description: "HOS compliance risk: Crew {{crew_id}} on {{date}}"
category: "regulatory_compliance"
priority: "1"
- name: alert-management
type: call
call: "msteams.send-message"
with:
channel_id: "crew-management"
text: "HOS ALERT: Crew {{crew_id}} on {{date}} - {{check-compliance.status}}. Hours: {{get-schedule.total_hours}}h. Action: {{create-action.number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_CREW_MANAGEMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: crew-schedules
path: "/A_CrewSchedule"
operations:
- name: get-crew-schedule
method: GET
- name: validate-hos
method: POST
- type: http
namespace: servicenow
baseUri: "https://unionpacific.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
naftiko: "0.5"
info:
label: "Cross-Functional Project Kickoff Orchestrator"
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
tags:
- project-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: run-cross-functional-project-kickoff-orchestrator
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
naftiko: "0.5"
info:
label: "Customer Data Privacy Request Handler"
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
tags:
- compliance
- privacy
- customer-service
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-customer-data-privacy-request-handler
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
naftiko: "0.5"
info:
label: "Customer Journey Mapping Orchestrator"
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
tags:
- customer-experience
- analytics
- product-management
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: run-customer-journey-mapping-orchestrator
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Generates a freight rate quote by pulling tariff data from SAP, calculating distance via Google Maps, and creating a quote in Salesforce with automatic email delivery via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Customer Rate Quote Orchestrator"
description: "Generates a freight rate quote by pulling tariff data from SAP, calculating distance via Google Maps, and creating a quote in Salesforce with automatic email delivery via Microsoft Outlook."
tags:
- sales
- customer-service
- sap
- google-maps
- salesforce
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: rate-quoting
port: 8080
tools:
- name: generate-rate-quote
description: "Calculate freight rate and deliver quote to customer."
inputParameters:
- name: origin
in: body
type: string
description: "Origin station code."
- name: destination
in: body
type: string
description: "Destination station code."
- name: commodity_code
in: body
type: string
description: "STCC commodity code."
- name: customer_email
in: body
type: string
description: "Customer contact email."
steps:
- name: get-tariff
type: call
call: "sap.get-tariff-rate"
with:
origin: "{{origin}}"
destination: "{{destination}}"
commodity: "{{commodity_code}}"
- name: calculate-distance
type: call
call: "gmaps.distance-matrix"
with:
origin: "{{origin}}"
destination: "{{destination}}"
- name: create-quote
type: call
call: "salesforce.create-quote"
with:
rate: "{{get-tariff.rate_per_car}}"
distance: "{{calculate-distance.distance_miles}}"
commodity: "{{commodity_code}}"
- name: email-quote
type: call
call: "outlook.send-mail"
with:
to: "{{customer_email}}"
subject: "Union Pacific Rate Quote {{create-quote.quote_number}}"
body: "Rate: ${{get-tariff.rate_per_car}}/car for {{origin}} to {{destination}} ({{calculate-distance.distance_miles}} miles)."
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_TARIFF_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: tariffs
path: "/A_TariffRate"
operations:
- name: get-tariff-rate
method: GET
- type: http
namespace: gmaps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: bearer
token: "$secrets.google_maps_key"
resources:
- name: distance
path: "/distancematrix/json"
operations:
- name: distance-matrix
method: GET
- type: http
namespace: salesforce
baseUri: "https://up.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: quotes
path: "/sobjects/Quote__c"
operations:
- name: create-quote
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST
Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
naftiko: "0.5"
info:
label: "Data Governance Review Orchestrator"
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
tags:
- data-governance
- compliance
- analytics
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: run-data-governance-review-orchestrator
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves the current status and details of a Datadog monitor by ID.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Monitor Lookup"
description: "Retrieves the current status and details of a Datadog monitor by ID."
tags:
- monitoring
- infrastructure
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-monitor-status
description: "Fetch a Datadog monitor status."
inputParameters:
- name: monitor_id
in: body
type: string
description: "Datadog monitor ID."
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
outputParameters:
- name: state
type: string
mapping: "$.overall_state"
- name: message
type: string
mapping: "$.message"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
Coordinates derailment emergency response by creating a critical ServiceNow incident, triggering SAP EHS notifications, alerting all relevant teams via Microsoft Teams, and generating an initial report in SharePoint.
naftiko: "0.5"
info:
label: "Derailment Response Orchestrator"
description: "Coordinates derailment emergency response by creating a critical ServiceNow incident, triggering SAP EHS notifications, alerting all relevant teams via Microsoft Teams, and generating an initial report in SharePoint."
tags:
- safety
- emergency-response
- servicenow
- sap
- microsoft-teams
- sharepoint
capability:
exposes:
- type: mcp
namespace: emergency-ops
port: 8080
tools:
- name: coordinate-derailment-response
description: "Orchestrate emergency response for a derailment event."
inputParameters:
- name: location
in: body
type: string
description: "Milepost or location identifier."
- name: train_id
in: body
type: string
description: "Train identifier."
- name: cars_affected
in: body
type: number
description: "Number of cars derailed."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "DERAILMENT: Train {{train_id}} at {{location}}"
category: "emergency"
priority: "1"
description: "{{cars_affected}} cars derailed at {{location}}."
- name: log-ehs
type: call
call: "sap.create-ehs-event"
with:
event_type: "derailment"
location: "{{location}}"
train_id: "{{train_id}}"
cars: "{{cars_affected}}"
- name: alert-teams
type: call
call: "msteams.send-message"
with:
channel_id: "emergency-response"
text: "EMERGENCY: Derailment of Train {{train_id}} at {{location}}. {{cars_affected}} cars affected. Incident: {{create-incident.number}}"
- name: create-report
type: call
call: "sharepoint.create-document"
with:
site_id: "emergency_reports"
folder_path: "Derailments/{{train_id}}_{{location}}"
content:
incident: "{{create-incident.number}}"
train: "{{train_id}}"
location: "{{location}}"
cars: "{{cars_affected}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://unionpacific.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: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_EHS_INCIDENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: ehs-events
path: "/A_EHSIncident"
operations:
- name: create-ehs-event
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-document
method: POST
Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
naftiko: "0.5"
info:
label: "Digital Transformation Progress Orchestrator"
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
tags:
- strategy
- analytics
- project-management
capability:
exposes:
- type: mcp
namespace: strategy
port: 8080
tools:
- name: run-digital-transformation-progress-orchestrator
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
naftiko: "0.5"
info:
label: "Disaster Recovery Test Orchestrator"
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
tags:
- infrastructure
- operations
- compliance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-disaster-recovery-test-orchestrator
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves active Dynatrace problems for Union Pacific operational systems.
naftiko: "0.5"
info:
label: "Dynatrace Problem Detection Lookup"
description: "Retrieves active Dynatrace problems for Union Pacific operational systems."
tags:
- monitoring
- observability
- dynatrace
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-active-problems
description: "Fetch active Dynatrace problems."
inputParameters:
- name: time_range
in: body
type: string
description: "Time range (e.g., 'last2hours')."
call: "dynatrace.get-problems"
with:
relativeTime: "{{time_range}}"
outputParameters:
- name: total_count
type: number
mapping: "$.totalCount"
- name: problems
type: array
mapping: "$.problems"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://up.live.dynatrace.com/api/v2"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: problems
path: "/problems"
operations:
- name: get-problems
method: GET
Processes inbound EDI 214 shipment status documents, maps them to SAP transportation orders, updates Salesforce shipment records, and sends status summaries to customer service via Microsoft Teams.
naftiko: "0.5"
info:
label: "EDI Shipment Document Processing Orchestrator"
description: "Processes inbound EDI 214 shipment status documents, maps them to SAP transportation orders, updates Salesforce shipment records, and sends status summaries to customer service via Microsoft Teams."
tags:
- logistics
- edi
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: edi-processing
port: 8080
tools:
- name: process-edi-214
description: "Parse EDI 214 status and update SAP and Salesforce records."
inputParameters:
- name: edi_transaction_id
in: body
type: string
description: "EDI transaction reference."
- name: shipment_ref
in: body
type: string
description: "Shipment reference number."
- name: status_code
in: body
type: string
description: "EDI status code."
steps:
- name: update-sap-order
type: call
call: "sap.update-transport-status"
with:
shipment_ref: "{{shipment_ref}}"
status: "{{status_code}}"
- name: update-salesforce
type: call
call: "salesforce.update-shipment"
with:
shipment_ref: "{{shipment_ref}}"
status: "{{status_code}}"
edi_ref: "{{edi_transaction_id}}"
- name: notify-cs
type: call
call: "msteams.send-message"
with:
channel_id: "customer-service"
text: "EDI 214 update for shipment {{shipment_ref}}: Status {{status_code}}. EDI ref: {{edi_transaction_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_TRANSPORTATION_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: orders
path: "/A_TransportationOrder"
operations:
- name: update-transport-status
method: PATCH
- type: http
namespace: salesforce
baseUri: "https://up.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: shipments
path: "/sobjects/Shipment__c/{{shipment_ref}}"
inputParameters:
- name: shipment_ref
in: path
operations:
- name: update-shipment
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
tags:
- hr
- identity
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-employee-offboarding-orchestrator
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Onboarding Pipeline"
description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Orchestrate onboarding across Workday, ServiceNow, SharePoint, and Teams."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "Workday worker ID."
- name: start_date
in: body
type: string
description: "Employee start date YYYY-MM-DD."
- name: department
in: body
type: string
description: "Department name."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-employee.full_name}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "hr_onboarding_site"
folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to Union Pacific, {{get-employee.first_name}}! Your onboarding ticket is {{open-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://unionpacific.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: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
naftiko: "0.5"
info:
label: "Executive Dashboard Refresh Orchestrator"
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
tags:
- analytics
- power-bi
- business
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-executive-dashboard-refresh-orchestrator
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
When a shipment is delivered, pulls delivery confirmation from SAP, generates an invoice in Oracle E-Business Suite, and emails it to the customer via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Freight Billing Orchestrator"
description: "When a shipment is delivered, pulls delivery confirmation from SAP, generates an invoice in Oracle E-Business Suite, and emails it to the customer via Microsoft Outlook."
tags:
- billing
- finance
- sap
- oracle-e-business-suite
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: freight-billing
port: 8080
tools:
- name: process-freight-invoice
description: "Generate and send a freight invoice upon delivery confirmation."
inputParameters:
- name: shipment_id
in: body
type: string
description: "SAP shipment document number."
steps:
- name: get-delivery
type: call
call: "sap.get-delivery-confirmation"
with:
shipment_id: "{{shipment_id}}"
- name: generate-invoice
type: call
call: "oracle-ebs.create-invoice"
with:
customer_id: "{{get-delivery.customer_id}}"
amount: "{{get-delivery.freight_charges}}"
reference: "{{shipment_id}}"
- name: email-invoice
type: call
call: "outlook.send-mail"
with:
to: "{{get-delivery.customer_email}}"
subject: "Union Pacific Invoice {{generate-invoice.invoice_number}}"
body: "Invoice for shipment {{shipment_id}}: ${{get-delivery.freight_charges}}."
attachment_url: "{{generate-invoice.pdf_url}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: deliveries
path: "/A_OutbDeliveryHeader('{{shipment_id}}')"
inputParameters:
- name: shipment_id
in: path
operations:
- name: get-delivery-confirmation
method: GET
- type: http
namespace: oracle-ebs
baseUri: "https://up-ebs.up.com/webservices/rest/ar"
authentication:
type: basic
username: "$secrets.oracle_ebs_user"
password: "$secrets.oracle_ebs_password"
resources:
- name: invoices
path: "/invoices"
operations:
- name: create-invoice
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST
Analyzes fuel consumption data from SAP against route efficiency in Oracle, identifies cost-saving opportunities, and publishes findings to a Tableau dashboard with alerts to operations leadership in Microsoft Teams.
naftiko: "0.5"
info:
label: "Fuel Cost Optimization Orchestrator"
description: "Analyzes fuel consumption data from SAP against route efficiency in Oracle, identifies cost-saving opportunities, and publishes findings to a Tableau dashboard with alerts to operations leadership in Microsoft Teams."
tags:
- rail-ops
- cost-optimization
- sap
- oracle
- tableau
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fuel-optimization
port: 8080
tools:
- name: analyze-fuel-efficiency
description: "Compare fuel consumption against route efficiency and report findings."
inputParameters:
- name: route_id
in: body
type: string
description: "Route identifier."
- name: period
in: body
type: string
description: "Analysis period (e.g., '2024-Q1')."
steps:
- name: get-fuel-data
type: call
call: "sap.get-fuel-consumption"
with:
route: "{{route_id}}"
period: "{{period}}"
- name: get-route-efficiency
type: call
call: "oracle.get-route-metrics"
with:
route_id: "{{route_id}}"
period: "{{period}}"
- name: refresh-dashboard
type: call
call: "tableau.refresh-extract"
with:
datasource_id: "fuel_efficiency"
- name: notify-ops
type: call
call: "msteams.send-message"
with:
channel_id: "ops-leadership"
text: "Fuel analysis for route {{route_id}} ({{period}}): Consumption {{get-fuel-data.total_gallons}} gal, Efficiency {{get-route-efficiency.mpg}} MPG. Dashboard updated."
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_FUEL_MGMT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: fuel
path: "/A_FuelConsumption"
operations:
- name: get-fuel-consumption
method: GET
- type: http
namespace: oracle
baseUri: "https://up-oracle.up.com/api/v1/routing"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: metrics
path: "/metrics"
operations:
- name: get-route-metrics
method: GET
- type: http
namespace: tableau
baseUri: "https://up-tableau.up.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/{{site_id}}/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: site_id
in: path
- name: datasource_id
in: path
operations:
- name: refresh-extract
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves fuel level for a locomotive.
naftiko: "0.5"
info:
label: "Fuel Tender Level"
description: "Retrieves fuel level for a locomotive."
tags:
- operations
- fleet-management
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: get-fuel
description: "Retrieves fuel level for a locomotive."
inputParameters:
- name: entity_id
in: body
type: string
description: "The fuel tender level identifier."
call: "operations-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: operations-api
baseUri: "https://api.union-pacific.com/operations/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: fuel
path: "/fuel/tender/level/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-fuel
method: GET
Searches for documents in Google Drive by name and returns file metadata.
naftiko: "0.5"
info:
label: "Google Drive Document Search"
description: "Searches for documents in Google Drive by name and returns file metadata."
tags:
- documents
- google-drive
capability:
exposes:
- type: mcp
namespace: drive-search
port: 8080
tools:
- name: search-drive-files
description: "Search Google Drive files by name."
inputParameters:
- name: query
in: body
type: string
description: "File name search query."
call: "gdrive.search-files"
with:
q: "name contains '{{query}}'"
outputParameters:
- name: files
type: array
mapping: "$.files"
consumes:
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
operations:
- name: search-files
method: GET
Retrieves a file from Google Drive.
naftiko: "0.5"
info:
label: "Google Drive File Viewer"
description: "Retrieves a file from Google Drive."
tags:
- collaboration
- google-drive
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-google
description: "Retrieves a file from Google Drive."
inputParameters:
- name: entity_id
in: body
type: string
description: "The google drive file viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.union-pacific.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: google
path: "/google/drive/file/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-google
method: GET
Appends daily rail operations metrics to a Google Sheets log.
naftiko: "0.5"
info:
label: "Google Sheets Operations Log"
description: "Appends daily rail operations metrics to a Google Sheets log."
tags:
- reporting
- google-sheets
capability:
exposes:
- type: mcp
namespace: ops-logging
port: 8080
tools:
- name: log-daily-metrics
description: "Append daily ops metrics to a Google Sheet."
inputParameters:
- name: date
in: body
type: string
description: "Date YYYY-MM-DD."
- name: trains_run
in: body
type: number
description: "Number of trains."
call: "gsheets.append-row"
with:
spreadsheet_id: "up_daily_ops"
row:
date: "{{date}}"
trains: "{{trains_run}}"
consumes:
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: rows
path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Checks the status of a grade crossing signal.
naftiko: "0.5"
info:
label: "Grade Crossing Status"
description: "Checks the status of a grade crossing signal."
tags:
- safety
- infrastructure
capability:
exposes:
- type: mcp
namespace: safety
port: 8080
tools:
- name: get-grade
description: "Checks the status of a grade crossing signal."
inputParameters:
- name: entity_id
in: body
type: string
description: "The grade crossing status identifier."
call: "safety-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: safety-api
baseUri: "https://api.union-pacific.com/safety/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: grade
path: "/grade/crossing/status/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-grade
method: GET
Forecasts grain shipment demand by pulling agricultural data from external APIs, matching with available rolling stock in SAP, and creating capacity plans in Salesforce with customer notifications.
naftiko: "0.5"
info:
label: "Grain Shipment Capacity Planning Orchestrator"
description: "Forecasts grain shipment demand by pulling agricultural data from external APIs, matching with available rolling stock in SAP, and creating capacity plans in Salesforce with customer notifications."
tags:
- logistics
- capacity-planning
- sap
- salesforce
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: capacity-planning
port: 8080
tools:
- name: plan-grain-capacity
description: "Forecast grain demand and match available rolling stock."
inputParameters:
- name: region
in: body
type: string
description: "Geographic region code."
- name: commodity
in: body
type: string
description: "Grain type (e.g., 'corn', 'wheat')."
- name: forecast_weeks
in: body
type: number
description: "Number of weeks to forecast."
steps:
- name: get-available-cars
type: call
call: "sap.get-available-rolling-stock"
with:
region: "{{region}}"
car_type: "hopper"
- name: create-plan
type: call
call: "salesforce.create-capacity-plan"
with:
region: "{{region}}"
commodity: "{{commodity}}"
available_cars: "{{get-available-cars.count}}"
forecast_weeks: "{{forecast_weeks}}"
- name: notify-customers
type: call
call: "outlook.send-mail"
with:
to: "grain-customers@up.com"
subject: "Capacity Update: {{commodity}} in {{region}}"
body: "{{get-available-cars.count}} cars available for {{commodity}} shipments in {{region}} over next {{forecast_weeks}} weeks."
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_FLEET_MGMT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: rolling-stock
path: "/A_RollingStock"
operations:
- name: get-available-rolling-stock
method: GET
- type: http
namespace: salesforce
baseUri: "https://up.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: capacity-plans
path: "/sobjects/Capacity_Plan__c"
operations:
- name: create-capacity-plan
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST
Validates hazardous material shipments against DOT regulations in SAP, creates compliance documentation in SharePoint, and notifies regulatory affairs via Microsoft Teams.
naftiko: "0.5"
info:
label: "Hazmat Shipment Compliance Orchestrator"
description: "Validates hazardous material shipments against DOT regulations in SAP, creates compliance documentation in SharePoint, and notifies regulatory affairs via Microsoft Teams."
tags:
- safety
- compliance
- hazmat
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hazmat-compliance
port: 8080
tools:
- name: validate-hazmat-shipment
description: "Validate hazmat shipment compliance and generate documentation."
inputParameters:
- name: shipment_id
in: body
type: string
description: "Hazmat shipment identifier."
steps:
- name: get-shipment
type: call
call: "sap.get-hazmat-details"
with:
shipment_id: "{{shipment_id}}"
- name: validate-compliance
type: call
call: "sap.validate-dot-regs"
with:
un_number: "{{get-shipment.un_number}}"
quantity: "{{get-shipment.quantity}}"
packaging: "{{get-shipment.packaging_type}}"
- name: create-docs
type: call
call: "sharepoint.create-document"
with:
site_id: "hazmat_compliance"
folder_path: "Shipments/{{shipment_id}}"
content:
shipment_id: "{{shipment_id}}"
compliance_status: "{{validate-compliance.status}}"
- name: notify-regulatory
type: call
call: "msteams.send-message"
with:
channel_id: "regulatory-affairs"
text: "Hazmat shipment {{shipment_id}} (UN{{get-shipment.un_number}}): {{validate-compliance.status}}. Docs: {{create-docs.url}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_HAZMAT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: hazmat
path: "/A_HazmatShipment('{{shipment_id}}')"
inputParameters:
- name: shipment_id
in: path
operations:
- name: get-hazmat-details
method: GET
- name: validation
path: "/A_DOTValidation"
operations:
- name: validate-dot-regs
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-document
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
naftiko: "0.5"
info:
label: "Infrastructure Capacity Planning Orchestrator"
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
tags:
- infrastructure
- planning
- finance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-infrastructure-capacity-planning-orchestrator
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Tracks intermodal containers by querying SAP for container status, Google Maps for current geolocation, and updates the customer in Salesforce with real-time positioning.
naftiko: "0.5"
info:
label: "Intermodal Container Tracking Orchestrator"
description: "Tracks intermodal containers by querying SAP for container status, Google Maps for current geolocation, and updates the customer in Salesforce with real-time positioning."
tags:
- logistics
- container-tracking
- sap
- google-maps
- salesforce
capability:
exposes:
- type: mcp
namespace: container-tracking
port: 8080
tools:
- name: track-container
description: "Track an intermodal container across SAP, Google Maps, and update Salesforce."
inputParameters:
- name: container_id
in: body
type: string
description: "Container identifier."
steps:
- name: get-container-status
type: call
call: "sap.get-container"
with:
container_id: "{{container_id}}"
- name: geocode-location
type: call
call: "gmaps.geocode"
with:
address: "{{get-container-status.current_yard}}"
- name: update-salesforce
type: call
call: "salesforce.update-shipment"
with:
shipment_id: "{{get-container-status.shipment_id}}"
latitude: "{{geocode-location.lat}}"
longitude: "{{geocode-location.lng}}"
status: "{{get-container-status.status}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_CONTAINER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: containers
path: "/A_Container('{{container_id}}')"
inputParameters:
- name: container_id
in: path
operations:
- name: get-container
method: GET
- type: http
namespace: gmaps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: bearer
token: "$secrets.google_maps_key"
resources:
- name: geocoding
path: "/geocode/json"
operations:
- name: geocode
method: GET
- type: http
namespace: salesforce
baseUri: "https://up.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: shipments
path: "/sobjects/Shipment__c/{{shipment_id}}"
inputParameters:
- name: shipment_id
in: path
operations:
- name: update-shipment
method: PATCH
Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
naftiko: "0.5"
info:
label: "IT Change Management Orchestrator"
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
tags:
- it
- servicenow
- operations
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: run-it-change-management-orchestrator
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed IT Change Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a Jira ticket by issue key.
naftiko: "0.5"
info:
label: "Jira Ticket Viewer"
description: "Retrieves a Jira ticket by issue key."
tags:
- engineering
- jira
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-jira
description: "Retrieves a Jira ticket by issue key."
inputParameters:
- name: entity_id
in: body
type: string
description: "The jira ticket viewer identifier."
call: "engineering-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: engineering-api
baseUri: "https://api.union-pacific.com/engineering/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: jira
path: "/jira/ticket/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-jira
method: GET
Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
naftiko: "0.5"
info:
label: "Knowledge Base Refresh Orchestrator"
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
tags:
- knowledge-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: knowledge-management
port: 8080
tools:
- name: run-knowledge-base-refresh-orchestrator
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Assigns locomotives to trains by checking SAP availability, validating horsepower, and notifying mechanical via Teams.
naftiko: "0.5"
info:
label: "Locomotive Assignment Orchestrator"
description: "Assigns locomotives to trains by checking SAP availability, validating horsepower, and notifying mechanical via Teams."
tags:
- rail-ops
- fleet-management
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: locomotive-assignment
port: 8080
tools:
- name: assign-locomotive
description: "Assign locomotive to train based on requirements."
inputParameters:
- name: train_id
in: body
type: string
description: "Train identifier."
- name: required_hp
in: body
type: number
description: "Required horsepower."
steps:
- name: find-available
type: call
call: "sap.get-available-locomotives"
with:
min_hp: "{{required_hp}}"
- name: create-assignment
type: call
call: "sap.create-locomotive-assignment"
with:
train_id: "{{train_id}}"
locomotive_id: "{{find-available.best_match_id}}"
- name: notify-mechanical
type: call
call: "msteams.send-message"
with:
channel_id: "mechanical-ops"
text: "Locomotive {{find-available.best_match_id}} assigned to Train {{train_id}}."
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_FLEET_MGMT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: locomotives
path: "/A_Locomotive"
operations:
- name: get-available-locomotives
method: GET
- name: create-locomotive-assignment
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls locomotive telemetry from IoT sensors via Azure IoT Hub, checks against SAP maintenance schedules, and creates proactive maintenance orders when thresholds are exceeded, notifying maintenance crews via Microsoft Teams.
naftiko: "0.5"
info:
label: "Locomotive Fleet Health Orchestrator"
description: "Pulls locomotive telemetry from IoT sensors via Azure IoT Hub, checks against SAP maintenance schedules, and creates proactive maintenance orders when thresholds are exceeded, notifying maintenance crews via Microsoft Teams."
tags:
- rail-ops
- maintenance
- azure-functions
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fleet-health
port: 8080
tools:
- name: check-locomotive-health
description: "Evaluate locomotive health telemetry and trigger proactive maintenance."
inputParameters:
- name: locomotive_id
in: body
type: string
description: "Locomotive unit identifier."
steps:
- name: get-telemetry
type: call
call: "azure-iot.get-device-twin"
with:
device_id: "{{locomotive_id}}"
- name: check-schedule
type: call
call: "sap.get-maintenance-order"
with:
equipment: "{{locomotive_id}}"
- name: create-work-order
type: call
call: "sap.create-maintenance-order"
with:
equipment: "{{locomotive_id}}"
description: "Proactive maintenance: telemetry threshold exceeded"
priority: "2"
- name: notify-crew
type: call
call: "msteams.send-message"
with:
channel_id: "maintenance-crews"
text: "Proactive maintenance needed for locomotive {{locomotive_id}}. Work order: {{create-work-order.order_number}}. Engine temp: {{get-telemetry.engine_temp}}."
consumes:
- type: http
namespace: azure-iot
baseUri: "https://up-iothub.azure-devices.net"
authentication:
type: bearer
token: "$secrets.azure_iot_token"
resources:
- name: device-twins
path: "/twins/{{device_id}}?api-version=2021-04-12"
inputParameters:
- name: device_id
in: path
operations:
- name: get-device-twin
method: GET
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_MAINTORDER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: maintenance-orders
path: "/MaintenanceOrder"
operations:
- name: get-maintenance-order
method: GET
- name: create-maintenance-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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
naftiko: "0.5"
info:
label: "Marketing Campaign Performance Orchestrator"
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
tags:
- marketing
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: run-marketing-campaign-performance-orchestrator
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Sends a formatted notification to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Notification"
description: "Sends a formatted notification to a Microsoft Teams channel."
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: team-notifications
port: 8080
tools:
- name: send-channel-message
description: "Post a message to a Microsoft Teams channel."
inputParameters:
- name: team_id
in: body
type: string
description: "Teams team ID."
- name: channel_id
in: body
type: string
description: "Channel ID."
- name: message
in: body
type: string
description: "Message text."
call: "msteams.post-message"
with:
team_id: "{{team_id}}"
channel_id: "{{channel_id}}"
text: "{{message}}"
consumes:
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Sends a message to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Message Sender"
description: "Sends a message to a Microsoft Teams channel."
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-microsoft
description: "Sends a message to a Microsoft Teams channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The microsoft teams message sender identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.union-pacific.com/communications/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: microsoft
path: "/microsoft/teams/message/sender/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-microsoft
method: GET
Retrieves APM metrics from New Relic for critical rail operations applications.
naftiko: "0.5"
info:
label: "New Relic Application Performance Lookup"
description: "Retrieves APM metrics from New Relic for critical rail operations applications."
tags:
- monitoring
- performance
- new-relic
capability:
exposes:
- type: mcp
namespace: apm-monitoring
port: 8080
tools:
- name: get-app-performance
description: "Fetch New Relic APM metrics."
inputParameters:
- name: app_id
in: body
type: string
description: "New Relic application ID."
call: "newrelic.get-application"
with:
app_id: "{{app_id}}"
outputParameters:
- name: response_time
type: number
mapping: "$.application.application_summary.response_time"
- name: throughput
type: number
mapping: "$.application.application_summary.throughput"
- name: error_rate
type: number
mapping: "$.application.application_summary.error_rate"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: bearer
token: "$secrets.newrelic_api_key"
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-application
method: GET
Retrieves asset details from Oracle E-Business Suite Fixed Assets module including asset number, description, book value, and location.
naftiko: "0.5"
info:
label: "Oracle EBS Asset Register Lookup"
description: "Retrieves asset details from Oracle E-Business Suite Fixed Assets module including asset number, description, book value, and location."
tags:
- finance
- assets
- oracle-e-business-suite
capability:
exposes:
- type: mcp
namespace: asset-register
port: 8080
tools:
- name: get-asset-details
description: "Fetch an asset record from Oracle EBS."
inputParameters:
- name: asset_number
in: body
type: string
description: "Oracle asset number."
call: "oracle-ebs.get-asset"
with:
asset_number: "{{asset_number}}"
outputParameters:
- name: description
type: string
mapping: "$.description"
- name: book_value
type: string
mapping: "$.current_cost"
- name: location
type: string
mapping: "$.location_id"
consumes:
- type: http
namespace: oracle-ebs
baseUri: "https://up-ebs.up.com/webservices/rest/fa"
authentication:
type: basic
username: "$secrets.oracle_ebs_user"
password: "$secrets.oracle_ebs_password"
resources:
- name: assets
path: "/assets/{{asset_number}}"
inputParameters:
- name: asset_number
in: path
operations:
- name: get-asset
method: GET
Retrieves PTC system telemetry from the Azure IoT Hub for a given locomotive, returning GPS position, speed, and brake status.
naftiko: "0.5"
info:
label: "Positive Train Control Telemetry Lookup"
description: "Retrieves PTC system telemetry from the Azure IoT Hub for a given locomotive, returning GPS position, speed, and brake status."
tags:
- rail-ops
- safety
- azure-functions
capability:
exposes:
- type: mcp
namespace: ptc-telemetry
port: 8080
tools:
- name: get-ptc-data
description: "Fetch PTC telemetry for a locomotive from Azure IoT Hub."
inputParameters:
- name: locomotive_id
in: body
type: string
description: "Locomotive unit ID."
call: "azure-iot.get-device-twin"
with:
device_id: "{{locomotive_id}}"
outputParameters:
- name: gps_position
type: string
mapping: "$.properties.reported.gps"
- name: speed_mph
type: number
mapping: "$.properties.reported.speed"
- name: brake_status
type: string
mapping: "$.properties.reported.brake_status"
consumes:
- type: http
namespace: azure-iot
baseUri: "https://up-iothub.azure-devices.net"
authentication:
type: bearer
token: "$secrets.azure_iot_token"
resources:
- name: device-twins
path: "/twins/{{device_id}}?api-version=2021-04-12"
inputParameters:
- name: device_id
in: path
operations:
- name: get-device-twin
method: GET
Triggers a dataset refresh in Power BI for operations dashboards.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresh"
description: "Triggers a dataset refresh in Power BI for operations dashboards."
tags:
- analytics
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: bi-ops
port: 8080
tools:
- name: refresh-dataset
description: "Trigger a Power BI dataset refresh."
inputParameters:
- name: workspace_id
in: body
type: string
description: "Power BI workspace GUID."
- name: dataset_id
in: body
type: string
description: "Power BI dataset GUID."
call: "powerbi.trigger-refresh"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refreshes
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Triggers a Power BI dataset refresh.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresher"
description: "Triggers a Power BI dataset refresh."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-power
description: "Triggers a Power BI dataset refresh."
inputParameters:
- name: entity_id
in: body
type: string
description: "The power bi dashboard refresher identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.union-pacific.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: power
path: "/power/bi/dashboard/refresher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-power
method: GET
Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
naftiko: "0.5"
info:
label: "Procurement Spend Analysis Orchestrator"
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
tags:
- procurement
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-procurement-spend-analysis-orchestrator
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
naftiko: "0.5"
info:
label: "Quarterly Business Review Orchestrator"
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
tags:
- analytics
- business
- sharepoint
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-quarterly-business-review-orchestrator
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves the current location of a rail car.
naftiko: "0.5"
info:
label: "Rail Car Location Tracker"
description: "Retrieves the current location of a rail car."
tags:
- logistics
- tracking
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: get-rail
description: "Retrieves the current location of a rail car."
inputParameters:
- name: entity_id
in: body
type: string
description: "The rail car location tracker identifier."
call: "logistics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: logistics-api
baseUri: "https://api.union-pacific.com/logistics/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: rail
path: "/rail/car/location/tracker/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-rail
method: GET
Pulls railcar utilization from SAP, compares against fleet targets in Oracle, and creates a report in SharePoint.
naftiko: "0.5"
info:
label: "Railcar Utilization Report Orchestrator"
description: "Pulls railcar utilization from SAP, compares against fleet targets in Oracle, and creates a report in SharePoint."
tags:
- rail-ops
- fleet-management
- sap
- oracle
- sharepoint
capability:
exposes:
- type: mcp
namespace: fleet-reporting
port: 8080
tools:
- name: generate-utilization-report
description: "Create weekly railcar utilization report."
inputParameters:
- name: week_ending
in: body
type: string
description: "Week ending date YYYY-MM-DD."
steps:
- name: get-utilization
type: call
call: "sap.get-fleet-utilization"
with:
week: "{{week_ending}}"
- name: get-targets
type: call
call: "oracle.get-fleet-targets"
with:
period: "{{week_ending}}"
- name: create-report
type: call
call: "sharepoint.create-document"
with:
site_id: "fleet_reports"
folder_path: "Weekly/{{week_ending}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_FLEET_MGMT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: fleet
path: "/A_FleetUtilization"
operations:
- name: get-fleet-utilization
method: GET
- type: http
namespace: oracle
baseUri: "https://up-oracle.up.com/api/v1/fleet"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: targets
path: "/targets"
operations:
- name: get-fleet-targets
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-document
method: POST
Orchestrates railroad workflow 1 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 1"
description: "Orchestrates railroad workflow 1 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-001
description: "Orchestrates railroad workflow 1 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 1 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates railroad workflow 2 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 2"
description: "Orchestrates railroad workflow 2 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-002
description: "Orchestrates railroad workflow 2 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 2 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves railroad operational data for workflow 3.
naftiko: "0.5"
info:
label: "Railroad Data Query 3"
description: "Retrieves railroad operational data for workflow 3."
tags:
- railroad
- operations
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: get-data-3
description: "Query railroad data for workflow 3."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "railroad-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: railroad-api
baseUri: "https://api.union-pacific.com/railroad/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-3
method: GET
Orchestrates railroad workflow 4 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 4"
description: "Orchestrates railroad workflow 4 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-004
description: "Orchestrates railroad workflow 4 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 4 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates railroad workflow 5 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 5"
description: "Orchestrates railroad workflow 5 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-005
description: "Orchestrates railroad workflow 5 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 5 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves railroad operational data for workflow 6.
naftiko: "0.5"
info:
label: "Railroad Data Query 6"
description: "Retrieves railroad operational data for workflow 6."
tags:
- railroad
- operations
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: get-data-6
description: "Query railroad data for workflow 6."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "railroad-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: railroad-api
baseUri: "https://api.union-pacific.com/railroad/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-6
method: GET
Orchestrates railroad workflow 7 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 7"
description: "Orchestrates railroad workflow 7 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-007
description: "Orchestrates railroad workflow 7 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 7 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates railroad workflow 8 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 8"
description: "Orchestrates railroad workflow 8 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-008
description: "Orchestrates railroad workflow 8 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 8 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves railroad operational data for workflow 9.
naftiko: "0.5"
info:
label: "Railroad Data Query 9"
description: "Retrieves railroad operational data for workflow 9."
tags:
- railroad
- operations
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: get-data-9
description: "Query railroad data for workflow 9."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "railroad-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: railroad-api
baseUri: "https://api.union-pacific.com/railroad/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-9
method: GET
Orchestrates railroad workflow 10 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 10"
description: "Orchestrates railroad workflow 10 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-010
description: "Orchestrates railroad workflow 10 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 10 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates railroad workflow 11 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 11"
description: "Orchestrates railroad workflow 11 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-011
description: "Orchestrates railroad workflow 11 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 11 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves railroad operational data for workflow 12.
naftiko: "0.5"
info:
label: "Railroad Data Query 12"
description: "Retrieves railroad operational data for workflow 12."
tags:
- railroad
- operations
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: get-data-12
description: "Query railroad data for workflow 12."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "railroad-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: railroad-api
baseUri: "https://api.union-pacific.com/railroad/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-12
method: GET
Orchestrates railroad workflow 13 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 13"
description: "Orchestrates railroad workflow 13 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-013
description: "Orchestrates railroad workflow 13 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 13 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates railroad workflow 14 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 14"
description: "Orchestrates railroad workflow 14 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-014
description: "Orchestrates railroad workflow 14 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 14 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves railroad operational data for workflow 15.
naftiko: "0.5"
info:
label: "Railroad Data Query 15"
description: "Retrieves railroad operational data for workflow 15."
tags:
- railroad
- operations
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: get-data-15
description: "Query railroad data for workflow 15."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "railroad-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: railroad-api
baseUri: "https://api.union-pacific.com/railroad/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-15
method: GET
Orchestrates railroad workflow 16 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Railroad Workflow 16"
description: "Orchestrates railroad workflow 16 by coordinating across systems, validating data, and sending notifications."
tags:
- railroad
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: railroad
port: 8080
tools:
- name: run-railroad-workflow-016
description: "Orchestrates railroad workflow 16 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Railroad Workflow 16 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Compiles FRA regulatory compliance data from SAP, generates a formatted report in SharePoint, and submits notification to the compliance team via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Regulatory Compliance Report Generator"
description: "Compiles FRA regulatory compliance data from SAP, generates a formatted report in SharePoint, and submits notification to the compliance team via Microsoft Outlook."
tags:
- compliance
- regulatory
- sap
- sharepoint
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: generate-compliance-report
description: "Generate FRA compliance report from SAP data and store in SharePoint."
inputParameters:
- name: report_type
in: body
type: string
description: "Report type (e.g., 'FRA_annual', 'STB_quarterly')."
- name: period
in: body
type: string
description: "Reporting period."
steps:
- name: get-compliance-data
type: call
call: "sap.get-compliance-records"
with:
report_type: "{{report_type}}"
period: "{{period}}"
- name: create-report
type: call
call: "sharepoint.create-document"
with:
site_id: "regulatory_compliance"
folder_path: "Reports/{{report_type}}/{{period}}"
content: "{{get-compliance-data.records}}"
- name: notify-compliance
type: call
call: "outlook.send-mail"
with:
to: "compliance-team@up.com"
subject: "{{report_type}} report for {{period}} ready"
body: "The compliance report is available at {{create-report.url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_COMPLIANCE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: compliance
path: "/A_ComplianceRecord"
operations:
- name: get-compliance-records
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-document
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST
When a safety incident is reported, creates a ServiceNow incident, logs the event in SAP EHS, notifies the safety team via Microsoft Teams, and files a report in SharePoint.
naftiko: "0.5"
info:
label: "Safety Incident Reporting Orchestrator"
description: "When a safety incident is reported, creates a ServiceNow incident, logs the event in SAP EHS, notifies the safety team via Microsoft Teams, and files a report in SharePoint."
tags:
- safety
- compliance
- servicenow
- sap
- microsoft-teams
- sharepoint
capability:
exposes:
- type: mcp
namespace: safety-reporting
port: 8080
tools:
- name: report-safety-incident
description: "Orchestrate safety incident documentation across ServiceNow, SAP EHS, Teams, and SharePoint."
inputParameters:
- name: location
in: body
type: string
description: "Location of the incident."
- name: description
in: body
type: string
description: "Incident description."
- name: severity
in: body
type: string
description: "Severity level (1-5)."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Safety incident at {{location}}"
category: "safety"
priority: "{{severity}}"
description: "{{description}}"
- name: log-ehs
type: call
call: "sap.create-ehs-event"
with:
location: "{{location}}"
description: "{{description}}"
severity: "{{severity}}"
- name: notify-safety
type: call
call: "msteams.send-message"
with:
channel_id: "safety-alerts"
text: "SAFETY ALERT at {{location}} (Severity: {{severity}}). Incident: {{create-incident.number}}. EHS: {{log-ehs.event_id}}"
- name: file-report
type: call
call: "sharepoint.create-document"
with:
site_id: "safety_reports"
folder_path: "Incidents/{{location}}"
content:
incident_number: "{{create-incident.number}}"
description: "{{description}}"
severity: "{{severity}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://unionpacific.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: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_EHS_INCIDENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: ehs-events
path: "/A_EHSIncident"
operations:
- name: create-ehs-event
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-document
method: POST
Retrieves a Salesforce account by account ID.
naftiko: "0.5"
info:
label: "Salesforce Account Viewer"
description: "Retrieves a Salesforce account by account ID."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-salesforce
description: "Retrieves a Salesforce account by account ID."
inputParameters:
- name: entity_id
in: body
type: string
description: "The salesforce account viewer identifier."
call: "sales-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: sales-api
baseUri: "https://api.union-pacific.com/sales/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: salesforce
path: "/salesforce/account/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-salesforce
method: GET
Retrieves a Salesforce service case by case number.
naftiko: "0.5"
info:
label: "Salesforce Case Lookup"
description: "Retrieves a Salesforce service case by case number."
tags:
- customer-service
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: get-case
description: "Look up a Salesforce case."
inputParameters:
- name: case_number
in: body
type: string
description: "Case number."
call: "salesforce.get-case"
with:
case_number: "{{case_number}}"
outputParameters:
- name: status
type: string
mapping: "$.Status"
- name: priority
type: string
mapping: "$.Priority"
consumes:
- type: http
namespace: salesforce
baseUri: "https://up.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case/{{case_number}}"
inputParameters:
- name: case_number
in: path
operations:
- name: get-case
method: GET
Retrieves shipment status from Salesforce for a customer account, returning tracking details, estimated arrival, and current location.
naftiko: "0.5"
info:
label: "Salesforce Customer Shipment Status"
description: "Retrieves shipment status from Salesforce for a customer account, returning tracking details, estimated arrival, and current location."
tags:
- customer-service
- shipment-tracking
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-shipments
port: 8080
tools:
- name: get-shipment-status
description: "Fetch shipment status for a customer account from Salesforce."
inputParameters:
- name: shipment_id
in: body
type: string
description: "Salesforce shipment record ID."
call: "salesforce.get-shipment"
with:
shipment_id: "{{shipment_id}}"
outputParameters:
- name: status
type: string
mapping: "$.Status__c"
- name: eta
type: string
mapping: "$.Estimated_Arrival__c"
- name: current_location
type: string
mapping: "$.Current_Location__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://up.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: shipments
path: "/sobjects/Shipment__c/{{shipment_id}}"
inputParameters:
- name: shipment_id
in: path
operations:
- name: get-shipment
method: GET
Retrieves a Salesforce opportunity by ID, returning stage, amount, close date, and account name.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Lookup"
description: "Retrieves a Salesforce opportunity by ID, returning stage, amount, close date, and account name."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales-ops
port: 8080
tools:
- name: get-opportunity
description: "Fetch a Salesforce opportunity by ID."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "Salesforce opportunity ID."
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
outputParameters:
- name: stage
type: string
mapping: "$.StageName"
- name: amount
type: string
mapping: "$.Amount"
- name: close_date
type: string
mapping: "$.CloseDate"
consumes:
- type: http
namespace: salesforce
baseUri: "https://up.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
Retrieves a SAP Concur expense report by ID, returning total amount, approval status, and expense entries.
naftiko: "0.5"
info:
label: "SAP Concur Travel Expense Lookup"
description: "Retrieves a SAP Concur expense report by ID, returning total amount, approval status, and expense entries."
tags:
- finance
- travel
- sap-concur
capability:
exposes:
- type: mcp
namespace: expense-management
port: 8080
tools:
- name: get-expense-report
description: "Fetch a SAP Concur expense report."
inputParameters:
- name: report_id
in: body
type: string
description: "Concur expense report ID."
call: "concur.get-report"
with:
report_id: "{{report_id}}"
outputParameters:
- name: total_amount
type: string
mapping: "$.Total"
- name: approval_status
type: string
mapping: "$.ApprovalStatusName"
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
Retrieves equipment maintenance history from SAP Plant Maintenance for a given functional location, returning last service date, next due date, and maintenance type.
naftiko: "0.5"
info:
label: "SAP Equipment Maintenance Record Lookup"
description: "Retrieves equipment maintenance history from SAP Plant Maintenance for a given functional location, returning last service date, next due date, and maintenance type."
tags:
- maintenance
- safety
- sap
capability:
exposes:
- type: mcp
namespace: asset-maintenance
port: 8080
tools:
- name: get-maintenance-record
description: "Fetch SAP PM maintenance records for an equipment ID."
inputParameters:
- name: equipment_id
in: body
type: string
description: "SAP equipment number."
call: "sap.get-maintenance-order"
with:
equipment: "{{equipment_id}}"
outputParameters:
- name: last_service_date
type: string
mapping: "$.d.LastServiceDate"
- name: next_due_date
type: string
mapping: "$.d.NextScheduledDate"
- name: maintenance_type
type: string
mapping: "$.d.MaintenanceActivityType"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_MAINTORDER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: maintenance-orders
path: "/MaintenanceOrder?$filter=Equipment eq '{{equipment}}'"
inputParameters:
- name: equipment
in: query
operations:
- name: get-maintenance-order
method: GET
Retrieves operational KPIs from SAP HANA for network dashboards.
naftiko: "0.5"
info:
label: "SAP HANA Operational Analytics"
description: "Retrieves operational KPIs from SAP HANA for network dashboards."
tags:
- analytics
- rail-ops
- sap-hana
capability:
exposes:
- type: mcp
namespace: operational-analytics
port: 8080
tools:
- name: get-network-kpis
description: "Fetch SAP HANA network KPIs."
inputParameters:
- name: metric_type
in: body
type: string
description: "Metric type."
- name: period
in: body
type: string
description: "Reporting period."
call: "sap-hana.get-kpi"
with:
metric: "{{metric_type}}"
period: "{{period}}"
outputParameters:
- name: value
type: number
mapping: "$.value"
consumes:
- type: http
namespace: sap-hana
baseUri: "https://up-hana.up.com/sap/bc/ina/service/v2"
authentication:
type: basic
username: "$secrets.sap_hana_user"
password: "$secrets.sap_hana_password"
resources:
- name: analytics
path: "/analytics/query"
operations:
- name: get-kpi
method: POST
Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date.
naftiko: "0.5"
info:
label: "SAP Purchase Order Status"
description: "Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date."
tags:
- procurement
- sap
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: get-purchase-order
description: "Retrieve a SAP purchase order by PO number."
inputParameters:
- name: po_number
in: body
type: string
description: "SAP purchase order number."
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"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.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
Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
naftiko: "0.5"
info:
label: "Security Audit Orchestrator"
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
tags:
- security
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: run-security-audit-orchestrator
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Security Audit Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Creates a new incident in ServiceNow.
naftiko: "0.5"
info:
label: "ServiceNow Incident Creator"
description: "Creates a new incident in ServiceNow."
tags:
- it
- servicenow
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: get-servicenow
description: "Creates a new incident in ServiceNow."
inputParameters:
- name: entity_id
in: body
type: string
description: "The servicenow incident creator identifier."
call: "it-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: it-api
baseUri: "https://api.union-pacific.com/it/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: servicenow
path: "/servicenow/incident/creator/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-servicenow
method: GET
Retrieves a ServiceNow incident by number, returning state, priority, assigned group, and resolution notes.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by number, returning state, priority, assigned group, and resolution notes."
tags:
- it-ops
- servicenow
capability:
exposes:
- type: mcp
namespace: it-service
port: 8080
tools:
- name: get-incident
description: "Fetch a ServiceNow incident by number."
inputParameters:
- name: incident_number
in: body
type: string
description: "ServiceNow incident number (e.g., INC0012345)."
call: "servicenow.get-incident"
with:
number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assigned_group
type: string
mapping: "$.result.assignment_group.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://unionpacific.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{number}}"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
Uploads a document to a specified SharePoint site and folder path.
naftiko: "0.5"
info:
label: "SharePoint Document Upload"
description: "Uploads a document to a specified SharePoint site and folder path."
tags:
- documents
- sharepoint
capability:
exposes:
- type: mcp
namespace: document-mgmt
port: 8080
tools:
- name: upload-document
description: "Upload a document to SharePoint."
inputParameters:
- name: site_id
in: body
type: string
description: "SharePoint site ID."
- name: folder_path
in: body
type: string
description: "Folder path."
- name: file_name
in: body
type: string
description: "File name."
call: "sharepoint.upload-file"
with:
site_id: "{{site_id}}"
folder_path: "{{folder_path}}"
file_name: "{{file_name}}"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
Sends a notification to a Slack channel.
naftiko: "0.5"
info:
label: "Slack Notification Publisher"
description: "Sends a notification to a Slack channel."
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-slack
description: "Sends a notification to a Slack channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The slack notification publisher identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.union-pacific.com/communications/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: slack
path: "/slack/notification/publisher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-slack
method: GET
Runs an analytics query against the Snowflake data warehouse.
naftiko: "0.5"
info:
label: "Snowflake Analytics Query"
description: "Runs an analytics query against the Snowflake data warehouse."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-snowflake
description: "Runs an analytics query against the Snowflake data warehouse."
inputParameters:
- name: entity_id
in: body
type: string
description: "The snowflake analytics query identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.union-pacific.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: snowflake
path: "/snowflake/analytics/query/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-snowflake
method: GET
Retrieves SolarWinds network node performance metrics.
naftiko: "0.5"
info:
label: "SolarWinds Network Performance Lookup"
description: "Retrieves SolarWinds network node performance metrics."
tags:
- infrastructure
- networking
- solarwinds
capability:
exposes:
- type: mcp
namespace: network-monitoring
port: 8080
tools:
- name: get-node-performance
description: "Fetch SolarWinds node performance."
inputParameters:
- name: node_id
in: body
type: string
description: "SolarWinds node ID."
call: "solarwinds.get-node"
with:
node_id: "{{node_id}}"
outputParameters:
- name: cpu_load
type: number
mapping: "$.CPULoad"
- name: response_time
type: number
mapping: "$.ResponseTime"
consumes:
- type: http
namespace: solarwinds
baseUri: "https://up-solarwinds.up.com:17778/SolarWinds/InformationService/v3/Json"
authentication:
type: basic
username: "$secrets.solarwinds_user"
password: "$secrets.solarwinds_password"
resources:
- name: nodes
path: "/Query"
operations:
- name: get-node
method: GET
Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
naftiko: "0.5"
info:
label: "Sustainability Metrics Collection Orchestrator"
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
tags:
- sustainability
- analytics
- compliance
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: run-sustainability-metrics-collection-orchestrator
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves metadata for a Tableau workbook view including view name and content URL.
naftiko: "0.5"
info:
label: "Tableau Dashboard Metadata Lookup"
description: "Retrieves metadata for a Tableau workbook view including view name and content URL."
tags:
- analytics
- reporting
- tableau
capability:
exposes:
- type: mcp
namespace: bi-dashboards
port: 8080
tools:
- name: get-tableau-view
description: "Fetch Tableau view metadata."
inputParameters:
- name: site_id
in: body
type: string
description: "Tableau site ID."
- name: view_id
in: body
type: string
description: "Tableau view ID."
call: "tableau.get-view"
with:
site_id: "{{site_id}}"
view_id: "{{view_id}}"
outputParameters:
- name: name
type: string
mapping: "$.view.name"
- name: content_url
type: string
mapping: "$.view.contentUrl"
consumes:
- type: http
namespace: tableau
baseUri: "https://up-tableau.up.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: views
path: "/sites/{{site_id}}/views/{{view_id}}"
inputParameters:
- name: site_id
in: path
- name: view_id
in: path
operations:
- name: get-view
method: GET
Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
naftiko: "0.5"
info:
label: "Third Party Risk Assessment Orchestrator"
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
tags:
- risk
- procurement
- compliance
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: run-third-party-risk-assessment-orchestrator
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
After a track inspection, logs findings in SAP, creates maintenance work orders for defects, updates the GIS system via Google Maps, and notifies the track maintenance team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Track Inspection Results Orchestrator"
description: "After a track inspection, logs findings in SAP, creates maintenance work orders for defects, updates the GIS system via Google Maps, and notifies the track maintenance team in Microsoft Teams."
tags:
- safety
- maintenance
- sap
- google-maps
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: track-inspection
port: 8080
tools:
- name: process-inspection
description: "Log track inspection results and create follow-up work orders."
inputParameters:
- name: inspection_id
in: body
type: string
description: "Inspection record identifier."
- name: segment_id
in: body
type: string
description: "Track segment identifier."
- name: defects_found
in: body
type: number
description: "Number of defects found."
steps:
- name: log-inspection
type: call
call: "sap.create-inspection-record"
with:
inspection_id: "{{inspection_id}}"
segment: "{{segment_id}}"
defects: "{{defects_found}}"
- name: create-work-orders
type: call
call: "sap.create-maintenance-order"
with:
equipment: "{{segment_id}}"
description: "Track defects from inspection {{inspection_id}}: {{defects_found}} defects"
priority: "2"
- name: update-gis
type: call
call: "gmaps.update-marker"
with:
segment: "{{segment_id}}"
status: "maintenance_needed"
defects: "{{defects_found}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "track-maintenance"
text: "Inspection {{inspection_id}} on segment {{segment_id}}: {{defects_found}} defects found. Work order: {{create-work-orders.order_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_MAINTORDER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inspections
path: "/A_InspectionRecord"
operations:
- name: create-inspection-record
method: POST
- name: maintenance-orders
path: "/MaintenanceOrder"
operations:
- name: create-maintenance-order
method: POST
- type: http
namespace: gmaps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: bearer
token: "$secrets.google_maps_key"
resources:
- name: markers
path: "/markers"
operations:
- name: update-marker
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the consist (car list) for a train.
naftiko: "0.5"
info:
label: "Train Consist Lookup"
description: "Retrieves the consist (car list) for a train."
tags:
- operations
- logistics
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: get-train
description: "Retrieves the consist (car list) for a train."
inputParameters:
- name: entity_id
in: body
type: string
description: "The train consist lookup identifier."
call: "operations-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: operations-api
baseUri: "https://api.union-pacific.com/operations/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: train
path: "/train/consist/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-train
method: GET
When a scheduling conflict is detected, retrieves the affected train orders from SAP, creates a ServiceNow incident, recalculates the route via Oracle, and notifies dispatchers in Microsoft Teams.
naftiko: "0.5"
info:
label: "Train Scheduling Conflict Orchestrator"
description: "When a scheduling conflict is detected, retrieves the affected train orders from SAP, creates a ServiceNow incident, recalculates the route via Oracle, and notifies dispatchers in Microsoft Teams."
tags:
- rail-ops
- scheduling
- sap
- servicenow
- oracle
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: train-scheduling
port: 8080
tools:
- name: resolve-scheduling-conflict
description: "Orchestrate resolution of a train scheduling conflict across SAP, ServiceNow, and Teams."
inputParameters:
- name: train_id
in: body
type: string
description: "The train identifier."
- name: conflict_segment
in: body
type: string
description: "The rail segment with the conflict."
steps:
- name: get-train-order
type: call
call: "sap.get-transport-order"
with:
train_id: "{{train_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Scheduling conflict: Train {{train_id}} on segment {{conflict_segment}}"
category: "rail_operations"
priority: "2"
- name: recalculate-route
type: call
call: "oracle.recalculate-route"
with:
train_id: "{{train_id}}"
blocked_segment: "{{conflict_segment}}"
- name: notify-dispatch
type: call
call: "msteams.send-message"
with:
channel_id: "dispatch-ops"
text: "Scheduling conflict resolved for Train {{train_id}}. New route: {{recalculate-route.new_route}}. Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_TRANSPORTATION_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: transport-orders
path: "/A_TransportationOrder('{{train_id}}')"
inputParameters:
- name: train_id
in: path
operations:
- name: get-transport-order
method: GET
- type: http
namespace: servicenow
baseUri: "https://unionpacific.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: oracle
baseUri: "https://up-oracle.up.com/api/v1/routing"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: routes
path: "/calculate"
operations:
- name: recalculate-route
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
naftiko: "0.5"
info:
label: "Vendor Contract Renewal Pipeline"
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
tags:
- procurement
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-vendor-contract-renewal-pipeline
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.union-pacific.com/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.union-pacific.com/v2"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Aggregates vendor delivery performance from SAP, cross-references with quality data in Oracle, logs the scorecard in Salesforce, and notifies procurement leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "Vendor Performance Scorecard Orchestrator"
description: "Aggregates vendor delivery performance from SAP, cross-references with quality data in Oracle, logs the scorecard in Salesforce, and notifies procurement leadership via Microsoft Teams."
tags:
- procurement
- vendor-management
- sap
- oracle
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vendor-performance
port: 8080
tools:
- name: generate-vendor-scorecard
description: "Create vendor performance scorecard from SAP and Oracle data."
inputParameters:
- name: vendor_id
in: body
type: string
description: "SAP vendor number."
- name: period
in: body
type: string
description: "Review period (e.g., '2024-Q1')."
steps:
- name: get-delivery-data
type: call
call: "sap.get-vendor-deliveries"
with:
vendor: "{{vendor_id}}"
period: "{{period}}"
- name: get-quality-data
type: call
call: "oracle.get-quality-metrics"
with:
vendor_id: "{{vendor_id}}"
period: "{{period}}"
- name: log-scorecard
type: call
call: "salesforce.create-scorecard"
with:
vendor_id: "{{vendor_id}}"
on_time_rate: "{{get-delivery-data.on_time_pct}}"
quality_score: "{{get-quality-data.score}}"
- name: notify-procurement
type: call
call: "msteams.send-message"
with:
channel_id: "procurement-leadership"
text: "Vendor {{vendor_id}} scorecard for {{period}}: On-time {{get-delivery-data.on_time_pct}}%, Quality {{get-quality-data.score}}/100."
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_VENDOR_EVALUATION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: deliveries
path: "/A_VendorEvaluation"
operations:
- name: get-vendor-deliveries
method: GET
- type: http
namespace: oracle
baseUri: "https://up-oracle.up.com/api/v1/quality"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: metrics
path: "/vendor-metrics"
operations:
- name: get-quality-metrics
method: GET
- type: http
namespace: salesforce
baseUri: "https://up.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: scorecards
path: "/sobjects/Vendor_Scorecard__c"
operations:
- name: create-scorecard
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a waybill document by number.
naftiko: "0.5"
info:
label: "Waybill Document Lookup"
description: "Retrieves a waybill document by number."
tags:
- logistics
- documentation
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: get-waybill
description: "Retrieves a waybill document by number."
inputParameters:
- name: entity_id
in: body
type: string
description: "The waybill document lookup identifier."
call: "logistics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: logistics-api
baseUri: "https://api.union-pacific.com/logistics/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: waybill
path: "/waybill/document/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-waybill
method: GET
Generates electronic waybills by pulling shipment data from SAP and storing in SharePoint.
naftiko: "0.5"
info:
label: "Waybill Document Orchestrator"
description: "Generates electronic waybills by pulling shipment data from SAP and storing in SharePoint."
tags:
- logistics
- documents
- sap
- sharepoint
capability:
exposes:
- type: mcp
namespace: waybill-ops
port: 8080
tools:
- name: generate-waybill
description: "Create an electronic waybill from SAP data."
inputParameters:
- name: shipment_id
in: body
type: string
description: "SAP shipment ID."
steps:
- name: get-shipment
type: call
call: "sap.get-shipment-details"
with:
shipment_id: "{{shipment_id}}"
- name: create-waybill
type: call
call: "sharepoint.create-document"
with:
site_id: "shipping_docs"
folder_path: "Waybills/{{shipment_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_TRANSPORTATION_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: shipments
path: "/A_TransportationOrder('{{shipment_id}}')"
inputParameters:
- name: shipment_id
in: path
operations:
- name: get-shipment-details
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-document
method: POST
Checks weather forecasts along rail corridors, identifies service disruption risks, creates advisory notifications in ServiceNow, and broadcasts alerts to operations teams via Microsoft Teams.
naftiko: "0.5"
info:
label: "Weather Impact Assessment Orchestrator"
description: "Checks weather forecasts along rail corridors, identifies service disruption risks, creates advisory notifications in ServiceNow, and broadcasts alerts to operations teams via Microsoft Teams."
tags:
- rail-ops
- weather
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: weather-ops
port: 8080
tools:
- name: assess-weather-impact
description: "Evaluate weather impact on rail corridors and create advisories."
inputParameters:
- name: corridor
in: body
type: string
description: "Rail corridor identifier."
- name: forecast_hours
in: body
type: number
description: "Forecast window in hours."
steps:
- name: create-advisory
type: call
call: "servicenow.create-incident"
with:
short_description: "Weather advisory: Corridor {{corridor}}"
category: "weather_operations"
priority: "3"
description: "Weather assessment for corridor {{corridor}} over next {{forecast_hours}} hours."
- name: alert-ops
type: call
call: "msteams.send-message"
with:
channel_id: "weather-operations"
text: "Weather advisory for corridor {{corridor}} ({{forecast_hours}}h forecast). Advisory: {{create-advisory.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://unionpacific.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves employee details from Workday by worker ID including name, title, department, and manager.
naftiko: "0.5"
info:
label: "Workday Employee Directory Lookup"
description: "Retrieves employee details from Workday by worker ID including name, title, department, and manager."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr-directory
port: 8080
tools:
- name: get-employee-details
description: "Fetch Workday employee profile."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.worker.name.formatted"
- name: title
type: string
mapping: "$.worker.position.title"
- name: department
type: string
mapping: "$.worker.organization.name"
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
Retrieves employee profile from Workday.
naftiko: "0.5"
info:
label: "Workday Employee Profile"
description: "Retrieves employee profile from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-workday
description: "Retrieves employee profile from Workday."
inputParameters:
- name: entity_id
in: body
type: string
description: "The workday employee profile identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.union-pacific.com/hr/v1"
authentication:
type: bearer
token: "$secrets.union_pacific_api_token"
resources:
- name: workday
path: "/workday/employee/profile/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-workday
method: GET
Collects yard throughput data from SAP, compares against SLA targets in Oracle, and publishes performance metrics to a Tableau dashboard with alerts for underperforming yards.
naftiko: "0.5"
info:
label: "Yard Operations Efficiency Orchestrator"
description: "Collects yard throughput data from SAP, compares against SLA targets in Oracle, and publishes performance metrics to a Tableau dashboard with alerts for underperforming yards."
tags:
- rail-ops
- performance
- sap
- oracle
- tableau
capability:
exposes:
- type: mcp
namespace: yard-operations
port: 8080
tools:
- name: analyze-yard-performance
description: "Aggregate yard performance data and update dashboards."
inputParameters:
- name: yard_id
in: body
type: string
description: "Yard identifier."
- name: date
in: body
type: string
description: "Date YYYY-MM-DD."
steps:
- name: get-throughput
type: call
call: "sap.get-yard-throughput"
with:
yard: "{{yard_id}}"
date: "{{date}}"
- name: get-sla-targets
type: call
call: "oracle.get-sla-targets"
with:
yard_id: "{{yard_id}}"
- name: update-dashboard
type: call
call: "tableau.refresh-extract"
with:
datasource_id: "yard_performance"
consumes:
- type: http
namespace: sap
baseUri: "https://up-sap.up.com/sap/opu/odata/sap/API_YARD_MGMT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: throughput
path: "/A_YardThroughput"
operations:
- name: get-yard-throughput
method: GET
- type: http
namespace: oracle
baseUri: "https://up-oracle.up.com/api/v1/sla"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: targets
path: "/targets"
operations:
- name: get-sla-targets
method: GET
- type: http
namespace: tableau
baseUri: "https://up-tableau.up.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/{{site_id}}/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: site_id
in: path
- name: datasource_id
in: path
operations:
- name: refresh-extract
method: POST
Creates a Zoom meeting and sends invitations via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Zoom Meeting Scheduler"
description: "Creates a Zoom meeting and sends invitations via Microsoft Outlook."
tags:
- communications
- meetings
- zoom
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: meeting-management
port: 8080
tools:
- name: schedule-zoom-meeting
description: "Create a Zoom meeting and email invitations."
inputParameters:
- name: topic
in: body
type: string
description: "Meeting topic."
- name: start_time
in: body
type: string
description: "ISO 8601 start time."
- name: duration
in: body
type: number
description: "Duration in minutes."
- name: attendees
in: body
type: string
description: "Comma-separated emails."
steps:
- name: create-meeting
type: call
call: "zoom.create-meeting"
with:
topic: "{{topic}}"
start_time: "{{start_time}}"
duration: "{{duration}}"
- name: send-invites
type: call
call: "outlook.send-mail"
with:
to: "{{attendees}}"
subject: "Zoom Meeting: {{topic}}"
body: "Join at {{create-meeting.join_url}} on {{start_time}}."
consumes:
- type: http
namespace: zoom
baseUri: "https://api.zoom.us/v2"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: meetings
path: "/users/me/meetings"
operations:
- name: create-meeting
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST