Union Pacific Capabilities

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

Sort
Expand

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