Waste Management Capabilities

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

Sort
Expand

Retrieves ADP payroll summary for a given pay period including gross pay, deductions, and net pay.

naftiko: "0.5"
info:
  label: "ADP Payroll Summary"
  description: "Retrieves ADP payroll summary for a given pay period including gross pay, deductions, and net pay."
  tags:
    - hr
    - adp
    - payroll
capability:
  exposes:
    - type: mcp
      namespace: payroll
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Fetch ADP payroll summary for a worker and pay period."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The ADP worker identifier."
            - name: pay_period
              in: body
              type: string
              description: "The pay period identifier."
          call: "adp.get-pay-statement"
          with:
            worker_id: "{{worker_id}}"
            pay_period: "{{pay_period}}"
          outputParameters:
            - name: gross_pay
              type: number
              mapping: "$.payStatement.grossPayAmount"
            - name: net_pay
              type: number
              mapping: "$.payStatement.netPayAmount"
            - name: deductions
              type: number
              mapping: "$.payStatement.totalDeductions"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com/hr/v2"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: pay-statements
          path: "/workers/{{worker_id}}/pay-statements"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-pay-statement
              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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 vehicle is approved for CNG conversion, creates a SAP maintenance order, schedules conversion with the vendor via ServiceNow, updates fleet records, and notifies the sustainability team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "CNG Fleet Conversion Orchestrator"
  description: "When a vehicle is approved for CNG conversion, creates a SAP maintenance order, schedules conversion with the vendor via ServiceNow, updates fleet records, and notifies the sustainability team in Microsoft Teams."
  tags:
    - fleet
    - sustainability
    - cng
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fleet-conversion
      port: 8080
      tools:
        - name: schedule-cng-conversion
          description: "Given a vehicle ID and conversion vendor, create SAP order, schedule with vendor, update fleet, and notify team."
          inputParameters:
            - name: vehicle_id
              in: body
              type: string
              description: "The fleet vehicle identifier."
            - name: vendor_id
              in: body
              type: string
              description: "The CNG conversion vendor ID."
            - name: target_date
              in: body
              type: string
              description: "Target conversion date in YYYY-MM-DD format."
          steps:
            - name: create-sap-order
              type: call
              call: "sap.create-maintenance-order"
              with:
                equipment_id: "{{vehicle_id}}"
                order_type: "CNG_CONVERSION"
                vendor: "{{vendor_id}}"
            - name: schedule-vendor
              type: call
              call: "servicenow.create-request"
              with:
                short_description: "CNG conversion: {{vehicle_id}}"
                category: "fleet_conversion"
                vendor: "{{vendor_id}}"
                target_date: "{{target_date}}"
            - name: update-fleet-record
              type: call
              call: "fleet.update-vehicle"
              with:
                vehicle_id: "{{vehicle_id}}"
                fuel_type_pending: "CNG"
                conversion_order: "{{create-sap-order.order_number}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "sustainability-fleet"
                text: "CNG conversion scheduled for {{vehicle_id}} on {{target_date}}. SAP order: {{create-sap-order.order_number}}. Vendor: {{vendor_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: maintenance-orders
          path: "/A_MaintenanceOrder"
          operations:
            - name: create-maintenance-order
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://wm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: fleet
      baseUri: "https://api.wm.com/fleet/v2"
      authentication:
        type: bearer
        token: "$secrets.fleet_api_token"
      resources:
        - name: vehicles
          path: "/vehicles/{{vehicle_id}}"
          inputParameters:
            - name: vehicle_id
              in: path
          operations:
            - name: update-vehicle
              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

When a commercial customer contract approaches renewal, retrieves contract details from Salesforce, generates a renewal proposal in Google Sheets, sends it via SendGrid, and creates a follow-up task in Salesforce.

naftiko: "0.5"
info:
  label: "Commercial Contract Renewal Pipeline"
  description: "When a commercial customer contract approaches renewal, retrieves contract details from Salesforce, generates a renewal proposal in Google Sheets, sends it via SendGrid, and creates a follow-up task in Salesforce."
  tags:
    - sales
    - contracts
    - salesforce
    - google-sheets
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: contract-renewal
      port: 8080
      tools:
        - name: initiate-contract-renewal
          description: "Given a Salesforce contract ID, generate renewal proposal, send to customer, and create follow-up."
          inputParameters:
            - name: contract_id
              in: body
              type: string
              description: "The Salesforce contract record ID."
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID."
          steps:
            - name: get-contract
              type: call
              call: "salesforce.get-contract"
              with:
                contract_id: "{{contract_id}}"
            - name: get-account
              type: call
              call: "salesforce.get-account"
              with:
                account_id: "{{account_id}}"
            - name: create-proposal
              type: call
              call: "gsheets.create-spreadsheet"
              with:
                title: "Renewal Proposal: {{get-account.name}} - {{get-contract.end_date}}"
            - name: send-proposal
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{get-account.contact_email}}"
                template_id: "contract_renewal_proposal"
                dynamic_data:
                  customer_name: "{{get-account.name}}"
                  contract_end: "{{get-contract.end_date}}"
                  proposal_url: "{{create-proposal.url}}"
            - name: create-task
              type: call
              call: "salesforce.create-task"
              with:
                subject: "Follow up on renewal: {{get-account.name}}"
                due_date_offset: "7"
                priority: "High"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://wm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contracts
          path: "/sobjects/Contract/{{contract_id}}"
          inputParameters:
            - name: contract_id
              in: path
          operations:
            - name: get-contract
              method: GET
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: spreadsheets
          path: "/spreadsheets"
          operations:
            - name: create-spreadsheet
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

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.waste-management.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

Retrieves a Confluence wiki page by ID, returning title, content, author, and space key.

naftiko: "0.5"
info:
  label: "Confluence Wiki Page Lookup"
  description: "Retrieves a Confluence wiki page by ID, returning title, content, author, and space key."
  tags:
    - collaboration
    - confluence
    - documentation
capability:
  exposes:
    - type: mcp
      namespace: wiki
      port: 8080
      tools:
        - name: get-wiki-page
          description: "Fetch a Confluence page by ID. Returns title, author, and space key."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "The Confluence page ID."
          call: "confluence.get-page"
          with:
            page_id: "{{page_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: space_key
              type: string
              mapping: "$.space.key"
            - name: author
              type: string
              mapping: "$.version.by.displayName"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://wm.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content/{{page_id}}?expand=space,version"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET

Tracks container placement, retrieval, and swap requests by querying the operations system, updating container inventory in SAP, and logging changes in ServiceNow.

naftiko: "0.5"
info:
  label: "Container Inventory Manager"
  description: "Tracks container placement, retrieval, and swap requests by querying the operations system, updating container inventory in SAP, and logging changes in ServiceNow."
  tags:
    - operations
    - containers
    - sap
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: container-ops
      port: 8080
      tools:
        - name: process-container-action
          description: "Given a customer ID, container type, and action, process the container change across operations, SAP, and ServiceNow."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The customer account identifier."
            - name: container_type
              in: body
              type: string
              description: "Container type (e.g., 2yd_front_load, 8yd_front_load, 30yd_rolloff)."
            - name: action
              in: body
              type: string
              description: "Action to perform (place, retrieve, swap)."
            - name: service_address
              in: body
              type: string
              description: "The service location address."
          steps:
            - name: update-inventory
              type: call
              call: "sap.update-equipment"
              with:
                customer_id: "{{customer_id}}"
                equipment_type: "{{container_type}}"
                action: "{{action}}"
                location: "{{service_address}}"
            - name: create-work-order
              type: call
              call: "servicenow.create-work-order"
              with:
                short_description: "Container {{action}}: {{container_type}} at {{service_address}}"
                category: "container_operations"
                customer: "{{customer_id}}"
            - name: schedule-dispatch
              type: call
              call: "dispatch.schedule-service"
              with:
                customer_id: "{{customer_id}}"
                service_type: "container_{{action}}"
                address: "{{service_address}}"
                container_type: "{{container_type}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_EQUIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: equipment
          path: "/A_Equipment"
          operations:
            - name: update-equipment
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://wm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: work-orders
          path: "/table/wm_order"
          operations:
            - name: create-work-order
              method: POST
    - type: http
      namespace: dispatch
      baseUri: "https://api.wm.com/dispatch/v2"
      authentication:
        type: bearer
        token: "$secrets.dispatch_api_token"
      resources:
        - name: services
          path: "/schedule"
          operations:
            - name: schedule-service
              method: POST

Retrieves weight data for a waste container.

naftiko: "0.5"
info:
  label: "Container Weight Lookup"
  description: "Retrieves weight data for a waste container."
  tags:
    - operations
    - sustainability
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: get-container
          description: "Retrieves weight data for a waste container."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The container weight lookup identifier."
          call: "operations-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: operations-api
      baseUri: "https://api.waste-management.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: container
          path: "/container/weight/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-container
              method: GET

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 customer calls about billing, retrieves the account from Salesforce, pulls the latest invoice from SAP, and creates a ServiceNow case with the combined details.

naftiko: "0.5"
info:
  label: "Customer Billing Inquiry Handler"
  description: "When a customer calls about billing, retrieves the account from Salesforce, pulls the latest invoice from SAP, and creates a ServiceNow case with the combined details."
  tags:
    - billing
    - salesforce
    - sap
    - servicenow
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: customer-billing
      port: 8080
      tools:
        - name: handle-billing-inquiry
          description: "Given a customer account ID, retrieve account details, latest invoice, and create a service case."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce customer account ID."
            - name: inquiry_description
              in: body
              type: string
              description: "Description of the billing inquiry."
          steps:
            - name: get-account
              type: call
              call: "salesforce.get-account"
              with:
                account_id: "{{account_id}}"
            - name: get-invoice
              type: call
              call: "sap.get-latest-invoice"
              with:
                customer_number: "{{get-account.sap_customer_number}}"
            - name: create-case
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Billing inquiry: {{get-account.name}}"
                category: "billing"
                description: "Customer: {{get-account.name}}. Latest invoice: {{get-invoice.invoice_number}} for {{get-invoice.amount}} {{get-invoice.currency}}. Inquiry: {{inquiry_description}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://wm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: invoices
          path: "/A_BillingDocument?$filter=SoldToParty eq '{{customer_number}}'&$top=1&$orderby=BillingDocumentDate desc"
          inputParameters:
            - name: customer_number
              in: query
          operations:
            - name: get-latest-invoice
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://wm.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

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 customer submits a service request, creates a Salesforce case, schedules a pickup via the dispatch system, sends confirmation via SendGrid, and updates the customer portal.

naftiko: "0.5"
info:
  label: "Customer Service Request Pipeline"
  description: "When a customer submits a service request, creates a Salesforce case, schedules a pickup via the dispatch system, sends confirmation via SendGrid, and updates the customer portal."
  tags:
    - customer-service
    - salesforce
    - sendgrid
    - dispatch
capability:
  exposes:
    - type: mcp
      namespace: service-requests
      port: 8080
      tools:
        - name: process-service-request
          description: "Given a customer ID and request type, create a case, schedule pickup, and send confirmation."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Salesforce customer account ID."
            - name: request_type
              in: body
              type: string
              description: "Type of service request (extra_pickup, container_swap, missed_pickup)."
            - name: service_address
              in: body
              type: string
              description: "The service location address."
          steps:
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Service request: {{request_type}} for {{customer_id}}"
                priority: "Medium"
                type: "{{request_type}}"
            - name: schedule-pickup
              type: call
              call: "dispatch.schedule-service"
              with:
                customer_id: "{{customer_id}}"
                service_type: "{{request_type}}"
                address: "{{service_address}}"
            - name: send-confirmation
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{customer_id}}"
                template_id: "service_request_confirmation"
                dynamic_data:
                  request_type: "{{request_type}}"
                  scheduled_date: "{{schedule-pickup.date}}"
                  case_number: "{{create-case.id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://wm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: dispatch
      baseUri: "https://api.wm.com/dispatch/v2"
      authentication:
        type: bearer
        token: "$secrets.dispatch_api_token"
      resources:
        - name: services
          path: "/schedule"
          operations:
            - name: schedule-service
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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

Queries Datadog for fleet vehicle telemetry metrics including engine diagnostics, fuel efficiency, and idle time.

naftiko: "0.5"
info:
  label: "Datadog Fleet Telemetry Monitor"
  description: "Queries Datadog for fleet vehicle telemetry metrics including engine diagnostics, fuel efficiency, and idle time."
  tags:
    - monitoring
    - datadog
    - fleet
    - telemetry
capability:
  exposes:
    - type: mcp
      namespace: fleet-telemetry
      port: 8080
      tools:
        - name: get-fleet-telemetry
          description: "Fetch Datadog fleet telemetry metrics for a time window."
          inputParameters:
            - name: vehicle_id
              in: body
              type: string
              description: "The fleet vehicle identifier."
            - name: from_ts
              in: body
              type: integer
              description: "Start timestamp in epoch seconds."
            - name: to_ts
              in: body
              type: integer
              description: "End timestamp in epoch seconds."
          call: "datadog.query-metrics"
          with:
            query: "avg:fleet.fuel_efficiency{vehicle_id:{{vehicle_id}}}"
            from: "{{from_ts}}"
            to: "{{to_ts}}"
          outputParameters:
            - name: fuel_efficiency
              type: number
              mapping: "$.series[0].pointlist[-1][1]"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET

Retrieves a Datadog monitor status.

naftiko: "0.5"
info:
  label: "Datadog Monitor Viewer"
  description: "Retrieves a Datadog monitor status."
  tags:
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: monitoring
      port: 8080
      tools:
        - name: get-datadog
          description: "Retrieves a Datadog monitor status."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The datadog monitor viewer identifier."
          call: "monitoring-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: monitoring-api
      baseUri: "https://api.waste-management.com/monitoring/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: datadog
          path: "/datadog/monitor/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-datadog
              method: GET

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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

Checks remaining capacity at a disposal site.

naftiko: "0.5"
info:
  label: "Disposal Site Capacity"
  description: "Checks remaining capacity at a disposal site."
  tags:
    - operations
    - planning
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: get-disposal
          description: "Checks remaining capacity at a disposal site."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The disposal site capacity identifier."
          call: "operations-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: operations-api
      baseUri: "https://api.waste-management.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: disposal
          path: "/disposal/site/capacity/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-disposal
              method: GET

Aggregates driver behavior data from the telematics system, safety incidents from ServiceNow, and training records from the LMS, then generates a safety scorecard in Google Sheets and notifies managers.

naftiko: "0.5"
info:
  label: "Driver Safety Scorecard Builder"
  description: "Aggregates driver behavior data from the telematics system, safety incidents from ServiceNow, and training records from the LMS, then generates a safety scorecard in Google Sheets and notifies managers."
  tags:
    - safety
    - fleet
    - servicenow
    - google-sheets
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: driver-safety
      port: 8080
      tools:
        - name: build-safety-scorecard
          description: "Given a driver ID and period, aggregate safety data and generate a scorecard."
          inputParameters:
            - name: driver_id
              in: body
              type: string
              description: "The driver employee identifier."
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g., 2026-Q1)."
          steps:
            - name: get-telematics
              type: call
              call: "fleet.get-driver-events"
              with:
                driver_id: "{{driver_id}}"
                period: "{{period}}"
            - name: get-incidents
              type: call
              call: "servicenow.query-incidents"
              with:
                query: "driver_id={{driver_id}}^period={{period}}"
                category: "safety"
            - name: update-scorecard
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "driver_safety_scorecards"
                range: "Scorecards!A:F"
                values:
                  - "{{driver_id}}"
                  - "{{period}}"
                  - "{{get-telematics.hard_brakes}}"
                  - "{{get-telematics.speeding_events}}"
                  - "{{get-incidents.count}}"
                  - "{{get-telematics.safety_score}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "fleet-safety"
                text: "Safety scorecard updated for driver {{driver_id}} ({{period}}). Score: {{get-telematics.safety_score}}. Incidents: {{get-incidents.count}}"
  consumes:
    - type: http
      namespace: fleet
      baseUri: "https://api.wm.com/fleet/v2"
      authentication:
        type: bearer
        token: "$secrets.fleet_api_token"
      resources:
        - name: driver-events
          path: "/drivers/{{driver_id}}/events"
          inputParameters:
            - name: driver_id
              in: path
          operations:
            - name: get-driver-events
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://wm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: query-incidents
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              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

When emission credits become available, retrieves credit balance from the sustainability system, creates a trade listing in the marketplace, records the transaction in SAP, and notifies the sustainability team in Slack.

naftiko: "0.5"
info:
  label: "Emission Credit Trading Workflow"
  description: "When emission credits become available, retrieves credit balance from the sustainability system, creates a trade listing in the marketplace, records the transaction in SAP, and notifies the sustainability team in Slack."
  tags:
    - sustainability
    - emissions
    - sap
    - slack
    - carbon-credits
capability:
  exposes:
    - type: mcp
      namespace: emissions-trading
      port: 8080
      tools:
        - name: list-emission-credits
          description: "Given a site ID and credit type, check balance, list for trade, record in SAP, and notify team."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The facility site identifier."
            - name: credit_type
              in: body
              type: string
              description: "Type of emission credit (carbon, methane, renewable)."
            - name: quantity
              in: body
              type: number
              description: "Number of credits to list."
          steps:
            - name: check-balance
              type: call
              call: "sustainability.get-credit-balance"
              with:
                site_id: "{{site_id}}"
                credit_type: "{{credit_type}}"
            - name: create-listing
              type: call
              call: "sustainability.create-trade-listing"
              with:
                site_id: "{{site_id}}"
                credit_type: "{{credit_type}}"
                quantity: "{{quantity}}"
            - name: record-in-sap
              type: call
              call: "sap.create-journal-entry"
              with:
                description: "Emission credit listing: {{quantity}} {{credit_type}} from {{site_id}}"
                amount: "{{create-listing.estimated_value}}"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "sustainability-trading"
                text: "Emission credits listed: {{quantity}} {{credit_type}} from site {{site_id}}. Estimated value: {{create-listing.estimated_value}}. Listing ID: {{create-listing.id}}"
  consumes:
    - type: http
      namespace: sustainability
      baseUri: "https://api.wm.com/sustainability/v1"
      authentication:
        type: bearer
        token: "$secrets.sustainability_api_token"
      resources:
        - name: credits
          path: "/credits/{{site_id}}"
          inputParameters:
            - name: site_id
              in: path
          operations:
            - name: get-credit-balance
              method: GET
        - name: trade-listings
          path: "/trade-listings"
          operations:
            - name: create-trade-listing
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_FINANCIALACCOUNTING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: journal-entries
          path: "/A_JournalEntry"
          operations:
            - name: create-journal-entry
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 folder, assigns safety training in the LMS, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, assigns safety training in the LMS, 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: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence across ServiceNow, SharePoint, and Microsoft Teams."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{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 Waste Management, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Documents: {{provision-folder.url}}"
  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://wm.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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 vehicle reaches a mileage threshold, creates a maintenance work order in ServiceNow, schedules an appointment in the fleet system, orders parts via SAP, and notifies the fleet manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Fleet Maintenance Scheduler"
  description: "When a vehicle reaches a mileage threshold, creates a maintenance work order in ServiceNow, schedules an appointment in the fleet system, orders parts via SAP, and notifies the fleet manager in Microsoft Teams."
  tags:
    - fleet
    - maintenance
    - servicenow
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fleet-maintenance
      port: 8080
      tools:
        - name: schedule-maintenance
          description: "Given a vehicle ID and maintenance type, create work order, schedule appointment, order parts, and notify manager."
          inputParameters:
            - name: vehicle_id
              in: body
              type: string
              description: "The fleet vehicle identifier."
            - name: maintenance_type
              in: body
              type: string
              description: "Type of maintenance (preventive, corrective, inspection)."
            - name: mileage
              in: body
              type: integer
              description: "Current vehicle mileage."
          steps:
            - name: create-work-order
              type: call
              call: "servicenow.create-work-order"
              with:
                short_description: "Fleet maintenance: {{vehicle_id}} - {{maintenance_type}}"
                category: "fleet_maintenance"
                description: "Vehicle {{vehicle_id}} at {{mileage}} miles. Maintenance type: {{maintenance_type}}"
            - name: schedule-appointment
              type: call
              call: "fleet.schedule-service"
              with:
                vehicle_id: "{{vehicle_id}}"
                service_type: "{{maintenance_type}}"
                work_order: "{{create-work-order.number}}"
            - name: order-parts
              type: call
              call: "sap.create-purchase-requisition"
              with:
                material_group: "fleet_parts"
                vehicle_id: "{{vehicle_id}}"
                maintenance_type: "{{maintenance_type}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "fleet-maintenance"
                text: "Maintenance scheduled for {{vehicle_id}} ({{maintenance_type}}) at {{mileage}} mi. Work order: {{create-work-order.number}}. Service date: {{schedule-appointment.date}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://wm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: work-orders
          path: "/table/wm_order"
          operations:
            - name: create-work-order
              method: POST
    - type: http
      namespace: fleet
      baseUri: "https://api.wm.com/fleet/v2"
      authentication:
        type: bearer
        token: "$secrets.fleet_api_token"
      resources:
        - name: service
          path: "/vehicles/{{vehicle_id}}/service"
          inputParameters:
            - name: vehicle_id
              in: path
          operations:
            - name: schedule-service
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: requisitions
          path: "/A_PurchaseRequisitionHeader"
          operations:
            - name: create-purchase-requisition
              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

Aggregates fleet fuel consumption data from the telematics system and Snowflake, calculates efficiency metrics, and updates the fleet management dashboard.

naftiko: "0.5"
info:
  label: "Fuel Consumption Tracker"
  description: "Aggregates fleet fuel consumption data from the telematics system and Snowflake, calculates efficiency metrics, and updates the fleet management dashboard."
  tags:
    - fleet
    - fuel
    - snowflake
    - sustainability
capability:
  exposes:
    - type: mcp
      namespace: fuel-management
      port: 8080
      tools:
        - name: get-fuel-report
          description: "Given a fleet zone and date range, aggregate fuel consumption and efficiency metrics."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The fleet service zone identifier."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          steps:
            - name: query-fuel-data
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT vehicle_id, SUM(gallons) as total_gallons, SUM(miles) as total_miles, SUM(miles)/SUM(gallons) as mpg FROM fleet.fuel_transactions WHERE zone_id = '{{zone_id}}' AND transaction_date BETWEEN '{{start_date}}' AND '{{end_date}}' GROUP BY vehicle_id"
                database: "WM_FLEET"
            - name: refresh-dashboard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                group_id: "fleet_workspace"
                dataset_id: "fuel_consumption"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://wm.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

Retrieves GitHub repository information.

naftiko: "0.5"
info:
  label: "GitHub Repo Viewer"
  description: "Retrieves GitHub repository information."
  tags:
    - engineering
    - github
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-github
          description: "Retrieves GitHub repository information."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The github repo viewer identifier."
          call: "engineering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: engineering-api
      baseUri: "https://api.waste-management.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: github
          path: "/github/repo/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-github
              method: GET

Retrieves GitHub repository statistics including star count, fork count, and open issues.

naftiko: "0.5"
info:
  label: "GitHub Repository Stats"
  description: "Retrieves GitHub repository statistics including star count, fork count, and open issues."
  tags:
    - engineering
    - github
    - devops
capability:
  exposes:
    - type: mcp
      namespace: source-control
      port: 8080
      tools:
        - name: get-repo-stats
          description: "Fetch GitHub repository statistics for a given org and repo name."
          inputParameters:
            - name: org
              in: body
              type: string
              description: "The GitHub organization name."
            - name: repo
              in: body
              type: string
              description: "The repository name."
          call: "github.get-repo"
          with:
            org: "{{org}}"
            repo: "{{repo}}"
          outputParameters:
            - name: stars
              type: integer
              mapping: "$.stargazers_count"
            - name: forks
              type: integer
              mapping: "$.forks_count"
            - name: open_issues
              type: integer
              mapping: "$.open_issues_count"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: repos
          path: "/repos/{{org}}/{{repo}}"
          inputParameters:
            - name: org
              in: path
            - name: repo
              in: path
          operations:
            - name: get-repo
              method: GET

Retrieves a document from Google Drive by file ID, returning metadata including name, owner, last modified date, and sharing permissions.

naftiko: "0.5"
info:
  label: "Google Drive Document Retrieval"
  description: "Retrieves a document from Google Drive by file ID, returning metadata including name, owner, last modified date, and sharing permissions."
  tags:
    - collaboration
    - google-drive
    - documents
capability:
  exposes:
    - type: mcp
      namespace: document-mgmt
      port: 8080
      tools:
        - name: get-drive-file
          description: "Fetch a Google Drive file's metadata by file ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Google Drive file identifier."
          call: "gdrive.get-file"
          with:
            file_id: "{{file_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: owner
              type: string
              mapping: "$.owners[0].displayName"
            - name: modified_time
              type: string
              mapping: "$.modifiedTime"
  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/{{file_id}}?fields=name,owners,modifiedTime"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              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.waste-management.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

Geocodes a service address using Google Maps API and returns latitude, longitude, and formatted address.

naftiko: "0.5"
info:
  label: "Google Maps Geocode Address"
  description: "Geocodes a service address using Google Maps API and returns latitude, longitude, and formatted address."
  tags:
    - routing
    - google-maps
    - geocoding
capability:
  exposes:
    - type: mcp
      namespace: geocoding
      port: 8080
      tools:
        - name: geocode-address
          description: "Geocode a street address using Google Maps. Returns coordinates and formatted address."
          inputParameters:
            - name: address
              in: body
              type: string
              description: "The street address to geocode."
          call: "gmaps.geocode"
          with:
            address: "{{address}}"
          outputParameters:
            - name: latitude
              type: number
              mapping: "$.results[0].geometry.location.lat"
            - name: longitude
              type: number
              mapping: "$.results[0].geometry.location.lng"
            - name: formatted_address
              type: string
              mapping: "$.results[0].formatted_address"
  consumes:
    - type: http
      namespace: gmaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: apiKey
        key: "$secrets.google_maps_api_key"
      resources:
        - name: geocode
          path: "/geocode/json?address={{address}}"
          inputParameters:
            - name: address
              in: query
          operations:
            - name: geocode
              method: GET

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 sprint status from Jira for a given project board.

naftiko: "0.5"
info:
  label: "Jira Sprint Status"
  description: "Retrieves the current sprint status from Jira for a given project board."
  tags:
    - engineering
    - jira
    - agile
capability:
  exposes:
    - type: mcp
      namespace: project-mgmt
      port: 8080
      tools:
        - name: get-sprint-status
          description: "Fetch active sprint details from Jira for a given board ID."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board identifier."
          call: "jira.get-active-sprint"
          with:
            board_id: "{{board_id}}"
          outputParameters:
            - name: sprint_name
              type: string
              mapping: "$.values[0].name"
            - name: start_date
              type: string
              mapping: "$.values[0].startDate"
            - name: end_date
              type: string
              mapping: "$.values[0].endDate"
            - name: state
              type: string
              mapping: "$.values[0].state"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://wm.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint?state=active"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-active-sprint
              method: GET

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.waste-management.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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

Checks landfill capacity levels via the operations API, updates the capacity tracking spreadsheet in Google Sheets, and sends alerts to Slack when capacity exceeds thresholds.

naftiko: "0.5"
info:
  label: "Landfill Capacity Monitor"
  description: "Checks landfill capacity levels via the operations API, updates the capacity tracking spreadsheet in Google Sheets, and sends alerts to Slack when capacity exceeds thresholds."
  tags:
    - operations
    - sustainability
    - google-sheets
    - slack
    - landfill
capability:
  exposes:
    - type: mcp
      namespace: landfill-ops
      port: 8080
      tools:
        - name: check-landfill-capacity
          description: "Given a landfill site ID, check capacity, update tracker, and alert if threshold exceeded."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The landfill site identifier."
            - name: alert_threshold
              in: body
              type: number
              description: "Capacity percentage threshold for alerts (e.g., 85)."
          steps:
            - name: get-capacity
              type: call
              call: "operations.get-site-capacity"
              with:
                site_id: "{{site_id}}"
            - name: update-tracker
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "landfill_capacity_tracker"
                range: "Capacity!A:D"
                values:
                  - "{{site_id}}"
                  - "{{get-capacity.current_tons}}"
                  - "{{get-capacity.max_tons}}"
                  - "{{get-capacity.utilization_pct}}"
            - name: alert-if-high
              type: call
              call: "slack.post-message"
              with:
                channel: "landfill-ops"
                text: "Landfill {{site_id}} capacity: {{get-capacity.utilization_pct}}% ({{get-capacity.current_tons}}/{{get-capacity.max_tons}} tons). Threshold: {{alert_threshold}}%"
  consumes:
    - type: http
      namespace: operations
      baseUri: "https://api.wm.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.operations_api_token"
      resources:
        - name: sites
          path: "/sites/{{site_id}}/capacity"
          inputParameters:
            - name: site_id
              in: path
          operations:
            - name: get-site-capacity
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 message to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a formatted notification message to a Microsoft Teams channel."
  tags:
    - collaboration
    - microsoft-teams
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: teams-messaging
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Send a notification message to a Microsoft Teams channel."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Microsoft Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The notification message text."
          call: "msteams.send-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: send-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.waste-management.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

Queries New Relic for infrastructure health metrics for Waste Management's fleet management and customer portal applications.

naftiko: "0.5"
info:
  label: "New Relic Infrastructure Health"
  description: "Queries New Relic for infrastructure health metrics for Waste Management's fleet management and customer portal applications."
  tags:
    - monitoring
    - new-relic
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-app-health
          description: "Fetch New Relic application health metrics including response time, throughput, and error rate."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The 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: apiKey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-application
              method: GET

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.waste-management.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: power
          path: "/power/bi/dashboard/refresher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-power
              method: GET

Triggers a Power BI dataset refresh for a given workspace and dataset, used to update operational and financial dashboards.

naftiko: "0.5"
info:
  label: "Power BI Report Refresh"
  description: "Triggers a Power BI dataset refresh for a given workspace and dataset, used to update operational and financial dashboards."
  tags:
    - analytics
    - power-bi
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-reporting
      port: 8080
      tools:
        - name: refresh-dataset
          description: "Trigger a Power BI dataset refresh for a workspace and dataset ID."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Power BI workspace (group) ID."
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID to refresh."
          call: "powerbi.trigger-refresh"
          with:
            group_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: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 contamination rate for recycling streams.

naftiko: "0.5"
info:
  label: "Recycling Contamination Rate"
  description: "Retrieves contamination rate for recycling streams."
  tags:
    - sustainability
    - quality
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: get-recycling
          description: "Retrieves contamination rate for recycling streams."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The recycling contamination rate identifier."
          call: "sustainability-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: sustainability-api
      baseUri: "https://api.waste-management.com/sustainability/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: recycling
          path: "/recycling/contamination/rate/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-recycling
              method: GET

Queries Snowflake for recycling rate data by material type and region for a given period.

naftiko: "0.5"
info:
  label: "Recycling Rate Report"
  description: "Queries Snowflake for recycling rate data by material type and region for a given period."
  tags:
    - sustainability
    - recycling
    - snowflake
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: recycling-analytics
      port: 8080
      tools:
        - name: get-recycling-rates
          description: "Fetch recycling rates by material type and region for a given period from Snowflake."
          inputParameters:
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g., 2026-Q1)."
            - name: region
              in: body
              type: string
              description: "Geographic region code."
          call: "snowflake.execute-query"
          with:
            statement: "SELECT material_type, SUM(tons_recycled)/SUM(tons_collected)*100 as recycling_rate FROM operations.recycling WHERE period = '{{period}}' AND region = '{{region}}' GROUP BY material_type ORDER BY recycling_rate DESC"
            database: "WM_OPERATIONS"
          outputParameters:
            - name: results
              type: array
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://wm.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

When a regulatory filing deadline approaches, gathers environmental data from Snowflake, generates the compliance report, uploads to SharePoint, creates a ServiceNow task for review, and notifies the compliance team in Slack.

naftiko: "0.5"
info:
  label: "Regulatory Compliance Filing Orchestrator"
  description: "When a regulatory filing deadline approaches, gathers environmental data from Snowflake, generates the compliance report, uploads to SharePoint, creates a ServiceNow task for review, and notifies the compliance team in Slack."
  tags:
    - compliance
    - regulatory
    - snowflake
    - sharepoint
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: regulatory-compliance
      port: 8080
      tools:
        - name: prepare-compliance-filing
          description: "Given a filing type and period, gather data, generate report, upload docs, create review task, and notify team."
          inputParameters:
            - name: filing_type
              in: body
              type: string
              description: "Type of regulatory filing (EPA_annual, state_emissions, landfill_monitoring)."
            - name: period
              in: body
              type: string
              description: "Filing period (e.g., 2025)."
            - name: site_id
              in: body
              type: string
              description: "The facility or site identifier."
          steps:
            - name: gather-data
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT * FROM compliance.{{filing_type}}_data WHERE period = '{{period}}' AND site_id = '{{site_id}}'"
                database: "WM_COMPLIANCE"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "compliance_filings"
                folder_path: "{{filing_type}}/{{period}}/{{site_id}}"
                file_name: "{{filing_type}}_{{site_id}}_{{period}}.pdf"
            - name: create-review-task
              type: call
              call: "servicenow.create-request"
              with:
                short_description: "Review {{filing_type}} filing for site {{site_id}} - {{period}}"
                category: "regulatory_compliance"
                priority: "High"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "compliance-filings"
                text: "{{filing_type}} report prepared for site {{site_id}} ({{period}}). Document: {{upload-report.url}}. Review task: {{create-review-task.number}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://wm.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: 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
    - type: http
      namespace: servicenow
      baseUri: "https://wm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a residential customer signs up for service, creates the account in Salesforce, sets up billing in SAP, assigns to a route in the dispatch system, and sends a welcome email via SendGrid.

naftiko: "0.5"
info:
  label: "Residential Service Scheduling Pipeline"
  description: "When a residential customer signs up for service, creates the account in Salesforce, sets up billing in SAP, assigns to a route in the dispatch system, and sends a welcome email via SendGrid."
  tags:
    - customer-service
    - salesforce
    - sap
    - sendgrid
    - onboarding
capability:
  exposes:
    - type: mcp
      namespace: residential-service
      port: 8080
      tools:
        - name: onboard-residential-customer
          description: "Given customer details, create account, set up billing, assign route, and send welcome email."
          inputParameters:
            - name: customer_name
              in: body
              type: string
              description: "The customer full name."
            - name: service_address
              in: body
              type: string
              description: "The service location address."
            - name: service_type
              in: body
              type: string
              description: "Type of residential service (trash, recycling, yard_waste, all)."
            - name: email
              in: body
              type: string
              description: "Customer email address."
          steps:
            - name: create-account
              type: call
              call: "salesforce.create-account"
              with:
                name: "{{customer_name}}"
                type: "Residential"
                billing_address: "{{service_address}}"
            - name: setup-billing
              type: call
              call: "sap.create-customer"
              with:
                name: "{{customer_name}}"
                address: "{{service_address}}"
                service_type: "{{service_type}}"
            - name: assign-route
              type: call
              call: "dispatch.assign-address"
              with:
                address: "{{service_address}}"
                service_type: "{{service_type}}"
                customer_id: "{{create-account.id}}"
            - name: send-welcome
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{email}}"
                template_id: "residential_welcome"
                dynamic_data:
                  customer_name: "{{customer_name}}"
                  service_type: "{{service_type}}"
                  pickup_day: "{{assign-route.pickup_day}}"
                  account_id: "{{create-account.id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://wm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: customers
          path: "/A_BusinessPartner"
          operations:
            - name: create-customer
              method: POST
    - type: http
      namespace: dispatch
      baseUri: "https://api.wm.com/dispatch/v2"
      authentication:
        type: bearer
        token: "$secrets.dispatch_api_token"
      resources:
        - name: assignments
          path: "/route-assignments"
          operations:
            - name: assign-address
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Retrieves collection schedule for a service route.

naftiko: "0.5"
info:
  label: "Route Collection Schedule"
  description: "Retrieves collection schedule for a service route."
  tags:
    - operations
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: get-route
          description: "Retrieves collection schedule for a service route."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The route collection schedule identifier."
          call: "operations-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: operations-api
      baseUri: "https://api.waste-management.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: route
          path: "/route/collection/schedule/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-route
              method: GET

Retrieves fleet vehicle locations from the GPS tracking system, runs route optimization via Google Maps, updates the dispatch schedule in ServiceNow, and notifies drivers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Route Optimization Orchestrator"
  description: "Retrieves fleet vehicle locations from the GPS tracking system, runs route optimization via Google Maps, updates the dispatch schedule in ServiceNow, and notifies drivers via Microsoft Teams."
  tags:
    - fleet
    - routing
    - google-maps
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fleet-routing
      port: 8080
      tools:
        - name: optimize-routes
          description: "Given a service zone and date, retrieve vehicle positions, optimize routes, update dispatch, and notify drivers."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The service zone identifier."
            - name: service_date
              in: body
              type: string
              description: "The service date in YYYY-MM-DD format."
            - name: vehicle_count
              in: body
              type: integer
              description: "Number of available vehicles in the zone."
          steps:
            - name: get-stops
              type: call
              call: "dispatch.get-service-stops"
              with:
                zone_id: "{{zone_id}}"
                date: "{{service_date}}"
            - name: optimize
              type: call
              call: "gmaps.optimize-routes"
              with:
                origins: "{{get-stops.depot_address}}"
                waypoints: "{{get-stops.stop_addresses}}"
                vehicle_count: "{{vehicle_count}}"
            - name: update-dispatch
              type: call
              call: "servicenow.update-schedule"
              with:
                zone_id: "{{zone_id}}"
                date: "{{service_date}}"
                routes: "{{optimize.optimized_routes}}"
            - name: notify-drivers
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "fleet-dispatch-{{zone_id}}"
                text: "Routes optimized for {{service_date}} in zone {{zone_id}}. {{vehicle_count}} vehicles, {{get-stops.total_stops}} stops. Check ServiceNow for updated schedules."
  consumes:
    - type: http
      namespace: dispatch
      baseUri: "https://api.wm.com/dispatch/v2"
      authentication:
        type: bearer
        token: "$secrets.dispatch_api_token"
      resources:
        - name: service-stops
          path: "/zones/{{zone_id}}/stops"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-service-stops
              method: GET
    - type: http
      namespace: gmaps
      baseUri: "https://routes.googleapis.com/distanceMatrix/v2"
      authentication:
        type: apiKey
        key: "$secrets.google_maps_api_key"
      resources:
        - name: routes
          path: ":computeRouteMatrix"
          operations:
            - name: optimize-routes
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://wm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: schedules
          path: "/table/dispatch_schedule"
          operations:
            - name: update-schedule
              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

When a safety incident occurs, creates a ServiceNow incident, logs the event in Salesforce for the customer account, notifies the safety team in Microsoft Teams, and uploads documentation to SharePoint.

naftiko: "0.5"
info:
  label: "Safety Incident Reporting Pipeline"
  description: "When a safety incident occurs, creates a ServiceNow incident, logs the event in Salesforce for the customer account, notifies the safety team in Microsoft Teams, and uploads documentation to SharePoint."
  tags:
    - safety
    - servicenow
    - salesforce
    - microsoft-teams
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: safety-reporting
      port: 8080
      tools:
        - name: report-safety-incident
          description: "Given incident details, create ServiceNow ticket, log in Salesforce, notify safety team, and upload docs."
          inputParameters:
            - name: incident_type
              in: body
              type: string
              description: "Type of safety incident (vehicle_accident, injury, spill, near_miss)."
            - name: location
              in: body
              type: string
              description: "Location of the incident."
            - name: vehicle_id
              in: body
              type: string
              description: "The fleet vehicle ID involved, if applicable."
            - name: description
              in: body
              type: string
              description: "Detailed description of the incident."
          steps:
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Safety incident: {{incident_type}} at {{location}}"
                priority: "1"
                category: "safety"
                description: "{{description}}. Vehicle: {{vehicle_id}}"
            - name: log-in-salesforce
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Safety incident: {{incident_type}}"
                priority: "High"
                description: "Location: {{location}}. Vehicle: {{vehicle_id}}. ServiceNow: {{create-incident.number}}"
            - name: notify-safety-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "safety-alerts"
                text: "SAFETY ALERT: {{incident_type}} at {{location}}. Vehicle: {{vehicle_id}}. ServiceNow: {{create-incident.number}}. Immediate review required."
            - name: upload-docs
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "safety_incidents"
                folder_path: "Incidents/{{create-incident.number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://wm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://wm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: msteams
      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: 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

Retrieves a Salesforce customer account by ID and returns name, service address, contract type, and account status.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Retrieves a Salesforce customer account by ID and returns name, service address, contract type, and account status."
  tags:
    - crm
    - salesforce
    - customer
capability:
  exposes:
    - type: mcp
      namespace: crm
      port: 8080
      tools:
        - name: get-customer-account
          description: "Look up a Salesforce customer account by ID. Returns name, address, contract type, and status."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: service_address
              type: string
              mapping: "$.BillingAddress"
            - name: contract_type
              type: string
              mapping: "$.Contract_Type__c"
            - name: status
              type: string
              mapping: "$.Account_Status__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://wm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

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.waste-management.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

When an expense report is submitted in SAP Concur, validates the report, creates a matching entry in SAP S/4HANA, and notifies the finance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Sync"
  description: "When an expense report is submitted in SAP Concur, validates the report, creates a matching entry in SAP S/4HANA, and notifies the finance team via Microsoft Teams."
  tags:
    - finance
    - sap-concur
    - sap-s4hana
    - microsoft-teams
    - expense
capability:
  exposes:
    - type: mcp
      namespace: expense-management
      port: 8080
      tools:
        - name: sync-expense-report
          description: "Given a Concur expense report ID, validate it, post to SAP S/4HANA, and notify finance."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report identifier."
          steps:
            - name: get-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{report_id}}"
            - name: post-to-sap
              type: call
              call: "sap.create-expense-entry"
              with:
                amount: "{{get-report.total_amount}}"
                currency: "{{get-report.currency_code}}"
                cost_center: "{{get-report.cost_center}}"
            - name: notify-finance
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "finance-expenses"
                text: "Expense report {{report_id}} for {{get-report.total_amount}} {{get-report.currency_code}} posted to SAP. Document: {{post-to-sap.document_number}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-expense-report
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_FINANCIALACCOUNTING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: journal-entries
          path: "/A_JournalEntry"
          operations:
            - name: create-expense-entry
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: 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 SAP billing document by invoice number and returns amount, date, customer, and payment status.

naftiko: "0.5"
info:
  label: "SAP Invoice Lookup"
  description: "Retrieves a SAP billing document by invoice number and returns amount, date, customer, and payment status."
  tags:
    - billing
    - sap
    - finance
capability:
  exposes:
    - type: mcp
      namespace: billing
      port: 8080
      tools:
        - name: get-invoice
          description: "Look up a SAP billing document by invoice number. Returns amount, date, customer, and payment status."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The SAP billing document number."
          call: "sap.get-billing-doc"
          with:
            invoice_number: "{{invoice_number}}"
          outputParameters:
            - name: amount
              type: number
              mapping: "$.d.TotalNetAmount"
            - name: currency
              type: string
              mapping: "$.d.TransactionCurrency"
            - name: billing_date
              type: string
              mapping: "$.d.BillingDocumentDate"
            - name: customer
              type: string
              mapping: "$.d.SoldToParty"
            - name: payment_status
              type: string
              mapping: "$.d.OverallBillingStatus"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: billing-documents
          path: "/A_BillingDocument('{{invoice_number}}')"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-billing-doc
              method: GET

Looks up a SAP S/4HANA 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 S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date."
  tags:
    - procurement
    - sap
    - sap-s4hana
    - purchase-order
capability:
  exposes:
    - type: mcp
      namespace: erp-procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP S/4HANA purchase order by PO number. Returns status, vendor, total value, and delivery date."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number (10-digit)."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
            - name: delivery_date
              type: string
              mapping: "$.d.DeliveryDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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.waste-management.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 and returns status, priority, assigned group, and resolution notes.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number and returns status, priority, assigned group, and resolution notes."
  tags:
    - it-ops
    - servicenow
    - incident
capability:
  exposes:
    - type: mcp
      namespace: it-service
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number. Returns status, priority, assigned group, and description."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The 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"
            - name: description
              type: string
              mapping: "$.result.short_description"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://wm.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

Retrieves a document from SharePoint.

naftiko: "0.5"
info:
  label: "SharePoint Document Viewer"
  description: "Retrieves a document from SharePoint."
  tags:
    - collaboration
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-sharepoint
          description: "Retrieves a document from SharePoint."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The sharepoint document viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.waste-management.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: sharepoint
          path: "/sharepoint/document/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-sharepoint
              method: GET

Posts a formatted message to a specified Slack channel, used for notifications and alerts across Waste Management teams.

naftiko: "0.5"
info:
  label: "Slack Channel Message Post"
  description: "Posts a formatted message to a specified Slack channel, used for notifications and alerts across Waste Management teams."
  tags:
    - collaboration
    - slack
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: messaging
      port: 8080
      tools:
        - name: post-slack-message
          description: "Post a message to a Slack channel."
          inputParameters:
            - name: channel
              in: body
              type: string
              description: "The Slack channel name or ID."
            - name: text
              in: body
              type: string
              description: "The message text to post."
          call: "slack.post-message"
          with:
            channel: "{{channel}}"
            text: "{{text}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

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.waste-management.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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.waste-management.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              method: GET

Executes a Splunk search query against operational logs and returns matching events for fleet and facility operations.

naftiko: "0.5"
info:
  label: "Splunk Operational Log Search"
  description: "Executes a Splunk search query against operational logs and returns matching events for fleet and facility operations."
  tags:
    - monitoring
    - splunk
    - logging
    - operations
capability:
  exposes:
    - type: mcp
      namespace: ops-logs
      port: 8080
      tools:
        - name: search-ops-logs
          description: "Run a Splunk search query against operational logs for a given time range."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The Splunk search query (SPL)."
            - name: earliest_time
              in: body
              type: string
              description: "Earliest time (e.g., -24h)."
            - name: latest_time
              in: body
              type: string
              description: "Latest time (e.g., now)."
          call: "splunk.create-search"
          with:
            search: "{{search_query}}"
            earliest_time: "{{earliest_time}}"
            latest_time: "{{latest_time}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://wm-splunk.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search-jobs
          path: "/search/jobs"
          operations:
            - name: create-search
              method: POST

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 recycling rates from the operations database, landfill diversion data from Snowflake, and carbon emissions from the sustainability API, then populates a Power BI dataset for executive reporting.

naftiko: "0.5"
info:
  label: "Sustainability Metrics Dashboard Builder"
  description: "Aggregates recycling rates from the operations database, landfill diversion data from Snowflake, and carbon emissions from the sustainability API, then populates a Power BI dataset for executive reporting."
  tags:
    - sustainability
    - snowflake
    - power-bi
    - reporting
    - recycling
capability:
  exposes:
    - type: mcp
      namespace: sustainability-reporting
      port: 8080
      tools:
        - name: build-sustainability-dashboard
          description: "Given a reporting period and region, aggregate sustainability metrics and push to Power BI."
          inputParameters:
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g., 2026-Q1)."
            - name: region
              in: body
              type: string
              description: "Geographic region code."
          steps:
            - name: get-recycling-rates
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT region, material_type, SUM(tons_recycled) as recycled, SUM(tons_collected) as collected FROM operations.recycling WHERE period = '{{period}}' AND region = '{{region}}' GROUP BY region, material_type"
                database: "WM_OPERATIONS"
            - name: get-emissions
              type: call
              call: "sustainability.get-emissions"
              with:
                period: "{{period}}"
                region: "{{region}}"
            - name: refresh-dashboard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                group_id: "sustainability_workspace"
                dataset_id: "sustainability_metrics"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://wm.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: sustainability
      baseUri: "https://api.wm.com/sustainability/v1"
      authentication:
        type: bearer
        token: "$secrets.sustainability_api_token"
      resources:
        - name: emissions
          path: "/emissions"
          operations:
            - name: get-emissions
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 GPS location and status of a fleet vehicle by vehicle ID from the fleet management system.

naftiko: "0.5"
info:
  label: "Vehicle GPS Location Lookup"
  description: "Retrieves the current GPS location and status of a fleet vehicle by vehicle ID from the fleet management system."
  tags:
    - fleet
    - gps
    - tracking
capability:
  exposes:
    - type: mcp
      namespace: fleet-tracking
      port: 8080
      tools:
        - name: get-vehicle-location
          description: "Look up a fleet vehicle's current GPS coordinates, speed, and status."
          inputParameters:
            - name: vehicle_id
              in: body
              type: string
              description: "The fleet vehicle identifier."
          call: "fleet.get-vehicle-position"
          with:
            vehicle_id: "{{vehicle_id}}"
          outputParameters:
            - name: latitude
              type: number
              mapping: "$.position.latitude"
            - name: longitude
              type: number
              mapping: "$.position.longitude"
            - name: speed_mph
              type: number
              mapping: "$.position.speed"
            - name: status
              type: string
              mapping: "$.vehicle.status"
  consumes:
    - type: http
      namespace: fleet
      baseUri: "https://api.wm.com/fleet/v2"
      authentication:
        type: bearer
        token: "$secrets.fleet_api_token"
      resources:
        - name: vehicles
          path: "/vehicles/{{vehicle_id}}/position"
          inputParameters:
            - name: vehicle_id
              in: path
          operations:
            - name: get-vehicle-position
              method: GET

Retrieves maintenance history for a fleet vehicle.

naftiko: "0.5"
info:
  label: "Vehicle Maintenance History"
  description: "Retrieves maintenance history for a fleet vehicle."
  tags:
    - fleet-management
    - operations
capability:
  exposes:
    - type: mcp
      namespace: fleet-management
      port: 8080
      tools:
        - name: get-vehicle
          description: "Retrieves maintenance history for a fleet vehicle."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The vehicle maintenance history identifier."
          call: "fleet-management-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: fleet-management-api
      baseUri: "https://api.waste-management.com/fleet-management/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: vehicle
          path: "/vehicle/maintenance/history/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-vehicle
              method: GET

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.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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

Initiates a waste characterization study by creating a project in Salesforce, scheduling sampling via the operations API, setting up data collection in Google Sheets, and notifying the environmental team in Slack.

naftiko: "0.5"
info:
  label: "Waste Characterization Study Orchestrator"
  description: "Initiates a waste characterization study by creating a project in Salesforce, scheduling sampling via the operations API, setting up data collection in Google Sheets, and notifying the environmental team in Slack."
  tags:
    - sustainability
    - waste-characterization
    - salesforce
    - google-sheets
    - slack
capability:
  exposes:
    - type: mcp
      namespace: waste-studies
      port: 8080
      tools:
        - name: initiate-waste-study
          description: "Given a site ID and study parameters, create project, schedule sampling, set up data collection, and notify team."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The facility or landfill site identifier."
            - name: study_type
              in: body
              type: string
              description: "Type of waste characterization study."
            - name: start_date
              in: body
              type: string
              description: "Study start date in YYYY-MM-DD format."
          steps:
            - name: create-project
              type: call
              call: "salesforce.create-opportunity"
              with:
                name: "Waste Study: {{site_id}} - {{study_type}}"
                stage: "Planning"
                close_date: "{{start_date}}"
            - name: schedule-sampling
              type: call
              call: "operations.schedule-sampling"
              with:
                site_id: "{{site_id}}"
                study_type: "{{study_type}}"
                start_date: "{{start_date}}"
            - name: create-data-sheet
              type: call
              call: "gsheets.create-spreadsheet"
              with:
                title: "Waste Characterization: {{site_id}} - {{study_type}} - {{start_date}}"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "environmental-studies"
                text: "Waste characterization study initiated for site {{site_id}} ({{study_type}}). Start: {{start_date}}. Salesforce: {{create-project.id}}. Data sheet: {{create-data-sheet.url}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://wm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity"
          operations:
            - name: create-opportunity
              method: POST
    - type: http
      namespace: operations
      baseUri: "https://api.wm.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.operations_api_token"
      resources:
        - name: sampling
          path: "/sites/{{site_id}}/sampling"
          inputParameters:
            - name: site_id
              in: path
          operations:
            - name: schedule-sampling
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: spreadsheets
          path: "/spreadsheets"
          operations:
            - name: create-spreadsheet
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates waste mgmt workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 1"
  description: "Orchestrates waste mgmt workflow 1 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-001
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 1 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 2"
  description: "Orchestrates waste mgmt workflow 2 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-002
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 2 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt operational data for workflow 3.

naftiko: "0.5"
info:
  label: "Waste Mgmt Data Query 3"
  description: "Retrieves waste mgmt operational data for workflow 3."
  tags:
    - waste
    - operations
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: get-data-3
          description: "Query waste mgmt data for workflow 3."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "waste-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: waste-api
      baseUri: "https://api.waste-management.com/waste-mgmt/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-3
              method: GET

Orchestrates waste mgmt workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 4"
  description: "Orchestrates waste mgmt workflow 4 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-004
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 4 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 5"
  description: "Orchestrates waste mgmt workflow 5 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-005
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 5 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt operational data for workflow 6.

naftiko: "0.5"
info:
  label: "Waste Mgmt Data Query 6"
  description: "Retrieves waste mgmt operational data for workflow 6."
  tags:
    - waste
    - operations
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: get-data-6
          description: "Query waste mgmt data for workflow 6."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "waste-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: waste-api
      baseUri: "https://api.waste-management.com/waste-mgmt/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-6
              method: GET

Orchestrates waste mgmt workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 7"
  description: "Orchestrates waste mgmt workflow 7 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-007
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 7 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 8"
  description: "Orchestrates waste mgmt workflow 8 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-008
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 8 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt operational data for workflow 9.

naftiko: "0.5"
info:
  label: "Waste Mgmt Data Query 9"
  description: "Retrieves waste mgmt operational data for workflow 9."
  tags:
    - waste
    - operations
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: get-data-9
          description: "Query waste mgmt data for workflow 9."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "waste-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: waste-api
      baseUri: "https://api.waste-management.com/waste-mgmt/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-9
              method: GET

Orchestrates waste mgmt workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 10"
  description: "Orchestrates waste mgmt workflow 10 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-010
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 10 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 11"
  description: "Orchestrates waste mgmt workflow 11 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-011
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 11 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt operational data for workflow 12.

naftiko: "0.5"
info:
  label: "Waste Mgmt Data Query 12"
  description: "Retrieves waste mgmt operational data for workflow 12."
  tags:
    - waste
    - operations
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: get-data-12
          description: "Query waste mgmt data for workflow 12."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "waste-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: waste-api
      baseUri: "https://api.waste-management.com/waste-mgmt/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-12
              method: GET

Orchestrates waste mgmt workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 13"
  description: "Orchestrates waste mgmt workflow 13 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-013
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 13 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 14"
  description: "Orchestrates waste mgmt workflow 14 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-014
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 14 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt operational data for workflow 15.

naftiko: "0.5"
info:
  label: "Waste Mgmt Data Query 15"
  description: "Retrieves waste mgmt operational data for workflow 15."
  tags:
    - waste
    - operations
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: get-data-15
          description: "Query waste mgmt data for workflow 15."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "waste-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: waste-api
      baseUri: "https://api.waste-management.com/waste-mgmt/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-15
              method: GET

Orchestrates waste mgmt workflow 16 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 16"
  description: "Orchestrates waste mgmt workflow 16 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-016
          description: "Orchestrates waste mgmt 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 Waste Mgmt Workflow 16 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt workflow 17 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 17"
  description: "Orchestrates waste mgmt workflow 17 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-017
          description: "Orchestrates waste mgmt workflow 17 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 Waste Mgmt Workflow 17 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt operational data for workflow 18.

naftiko: "0.5"
info:
  label: "Waste Mgmt Data Query 18"
  description: "Retrieves waste mgmt operational data for workflow 18."
  tags:
    - waste
    - operations
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: get-data-18
          description: "Query waste mgmt data for workflow 18."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "waste-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: waste-api
      baseUri: "https://api.waste-management.com/waste-mgmt/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-18
              method: GET

Orchestrates waste mgmt workflow 19 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 19"
  description: "Orchestrates waste mgmt workflow 19 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-019
          description: "Orchestrates waste mgmt workflow 19 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 Waste Mgmt Workflow 19 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt workflow 20 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 20"
  description: "Orchestrates waste mgmt workflow 20 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-020
          description: "Orchestrates waste mgmt workflow 20 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 Waste Mgmt Workflow 20 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt operational data for workflow 21.

naftiko: "0.5"
info:
  label: "Waste Mgmt Data Query 21"
  description: "Retrieves waste mgmt operational data for workflow 21."
  tags:
    - waste
    - operations
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: get-data-21
          description: "Query waste mgmt data for workflow 21."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "waste-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: waste-api
      baseUri: "https://api.waste-management.com/waste-mgmt/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-21
              method: GET

Orchestrates waste mgmt workflow 22 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 22"
  description: "Orchestrates waste mgmt workflow 22 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-022
          description: "Orchestrates waste mgmt workflow 22 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 Waste Mgmt Workflow 22 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 waste mgmt workflow 23 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Waste Mgmt Workflow 23"
  description: "Orchestrates waste mgmt workflow 23 by coordinating across systems, validating data, and sending notifications."
  tags:
    - waste
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: run-waste-mgmt-workflow-023
          description: "Orchestrates waste mgmt workflow 23 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 Waste Mgmt Workflow 23 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.waste-management.com/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.waste-management.com/v2"
      authentication:
        type: bearer
        token: "$secrets.waste_management_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 truck crosses a landfill scale, processes the weight ticket, updates the customer billing record in SAP, logs the transaction in Snowflake, and sends a receipt via SendGrid.

naftiko: "0.5"
info:
  label: "Weight Ticket Processing Pipeline"
  description: "When a truck crosses a landfill scale, processes the weight ticket, updates the customer billing record in SAP, logs the transaction in Snowflake, and sends a receipt via SendGrid."
  tags:
    - billing
    - operations
    - sap
    - snowflake
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: weight-tickets
      port: 8080
      tools:
        - name: process-weight-ticket
          description: "Given scale data, process the weight ticket, update billing, log transaction, and send receipt."
          inputParameters:
            - name: ticket_number
              in: body
              type: string
              description: "The weight ticket number."
            - name: vehicle_id
              in: body
              type: string
              description: "The fleet vehicle identifier."
            - name: gross_weight
              in: body
              type: number
              description: "Gross weight in tons."
            - name: tare_weight
              in: body
              type: number
              description: "Tare weight in tons."
            - name: customer_id
              in: body
              type: string
              description: "The customer account identifier."
          steps:
            - name: create-billing-entry
              type: call
              call: "sap.create-billing-entry"
              with:
                customer_id: "{{customer_id}}"
                net_weight: "{{gross_weight - tare_weight}}"
                ticket_number: "{{ticket_number}}"
                vehicle_id: "{{vehicle_id}}"
            - name: log-transaction
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "INSERT INTO operations.weight_tickets (ticket_number, vehicle_id, customer_id, gross_weight, tare_weight, net_weight, created_at) VALUES ('{{ticket_number}}', '{{vehicle_id}}', '{{customer_id}}', {{gross_weight}}, {{tare_weight}}, {{gross_weight}} - {{tare_weight}}, CURRENT_TIMESTAMP())"
                database: "WM_OPERATIONS"
            - name: send-receipt
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{customer_id}}"
                template_id: "weight_ticket_receipt"
                dynamic_data:
                  ticket_number: "{{ticket_number}}"
                  net_weight: "{{gross_weight - tare_weight}}"
                  billing_ref: "{{create-billing-entry.document_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://wm-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: billing
          path: "/A_BillingDocument"
          operations:
            - name: create-billing-entry
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://wm.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Retrieves employee details from Workday including name, department, manager, and contact information.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Retrieves employee details from Workday including name, department, manager, and contact information."
  tags:
    - hr
    - workday
    - employee
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up a Workday employee by worker ID. Returns name, department, manager, and email."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.name.full"
            - name: department
              type: string
              mapping: "$.worker.organization.name"
            - name: manager
              type: string
              mapping: "$.worker.manager.name.full"
            - name: email
              type: string
              mapping: "$.worker.contact.email"
  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.waste-management.com/hr/v1"
      authentication:
        type: bearer
        token: "$secrets.waste_management_api_token"
      resources:
        - name: workday
          path: "/workday/employee/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-workday
              method: GET

Creates a Zoom meeting for a given host, sends calendar invites via Microsoft Outlook, and posts the meeting link in a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates a Zoom meeting for a given host, sends calendar invites via Microsoft Outlook, and posts the meeting link in a Microsoft Teams channel."
  tags:
    - collaboration
    - zoom
    - microsoft-outlook
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: meeting-mgmt
      port: 8080
      tools:
        - name: schedule-meeting
          description: "Given a host email, topic, and time, create a Zoom meeting, send Outlook invites, and post to Teams."
          inputParameters:
            - name: host_email
              in: body
              type: string
              description: "The Zoom host email address."
            - name: topic
              in: body
              type: string
              description: "The meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Meeting start time in ISO 8601 format."
            - name: duration_minutes
              in: body
              type: integer
              description: "Meeting duration in minutes."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                host_email: "{{host_email}}"
                topic: "{{topic}}"
                start_time: "{{start_time}}"
                duration: "{{duration_minutes}}"
            - name: send-invite
              type: call
              call: "outlook.create-event"
              with:
                subject: "{{topic}}"
                start: "{{start_time}}"
                body: "Join Zoom: {{create-meeting.join_url}}"
            - name: post-to-teams
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "general"
                text: "Meeting scheduled: {{topic}} at {{start_time}}. Zoom: {{create-meeting.join_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/{{host_email}}/meetings"
          inputParameters:
            - name: host_email
              in: path
          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: events
          path: "/me/events"
          operations:
            - name: create-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