Republic Services Capabilities

Naftiko 0.5 capability definitions for Republic Services - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Triggers an Alteryx workflow for data preparation and analytics processing.

naftiko: "0.5"
info:
  label: "Alteryx Workflow Execution"
  description: "Triggers an Alteryx workflow for data preparation and analytics processing."
  tags:
    - analytics
    - data-preparation
    - alteryx
capability:
  exposes:
    - type: mcp
      namespace: analytics-alteryx
      port: 8080
      tools:
        - name: run-workflow
          description: "Trigger an Alteryx workflow by app ID. Returns the job ID and status."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The Alteryx workflow app ID."
          call: "alteryx.run-job"
          with:
            app_id: "{{app_id}}"
  consumes:
    - type: http
      namespace: alteryx
      baseUri: "https://republicservices.alteryxcloud.com/api/v3"
      authentication:
        type: bearer
        token: "$secrets.alteryx_token"
      resources:
        - name: jobs
          path: "/workflows/{{app_id}}/jobs"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: run-job
              method: POST

Retrieves a user profile from Azure Active Directory by UPN, returning display name, job title, and department.

naftiko: "0.5"
info:
  label: "Azure Active Directory User Lookup"
  description: "Retrieves a user profile from Azure Active Directory by UPN, returning display name, job title, and department."
  tags:
    - identity
    - directory
    - azure-active-directory
capability:
  exposes:
    - type: mcp
      namespace: identity-aad
      port: 8080
      tools:
        - name: get-user
          description: "Look up an Azure AD user by UPN. Returns display name, job title, department, and group memberships."
          inputParameters:
            - name: user_upn
              in: body
              type: string
              description: "The user principal name (email)."
          call: "aad.get-user"
          with:
            upn: "{{user_upn}}"
  consumes:
    - type: http
      namespace: aad
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{upn}}"
          inputParameters:
            - name: upn
              in: path
          operations:
            - name: get-user
              method: GET

Retrieves the latest build status for a given Azure DevOps pipeline.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status"
  description: "Retrieves the latest build status for a given Azure DevOps pipeline."
  tags:
    - devops
    - ci-cd
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: devops-builds
      port: 8080
      tools:
        - name: get-build-status
          description: "Get the latest build status for an Azure DevOps pipeline. Returns result, duration, and source branch."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: pipeline_id
              in: body
              type: string
              description: "The pipeline definition ID."
          call: "azuredevops.get-builds"
          with:
            project: "{{project}}"
            pipeline_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/republicservices"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azure_devops_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: pipeline_id
              in: path
          operations:
            - name: get-builds
              method: GET

Searches Confluence for articles matching a query and returns page titles, excerpts, and links.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Search"
  description: "Searches Confluence for articles matching a query and returns page titles, excerpts, and links."
  tags:
    - knowledge-management
    - collaboration
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: search-articles
          description: "Search Confluence for knowledge base articles. Returns titles, excerpts, and URLs."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query."
          call: "confluence.search"
          with:
            cql: "text ~ '{{query}}'"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://republicservices.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search?cql={{cql}}"
          inputParameters:
            - name: cql
              in: path
          operations:
            - name: search
              method: GET

Orchestrates construction debris management pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Construction Debris Management Pipeline"
  description: "Orchestrates construction debris management pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - construction
    - republic-services
    - jira
    - workday
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: construction
      port: 8080
      tools:
        - name: construction-debris-management-pipeline
          description: "Orchestrates construction debris management pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "workday.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/construction"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/construction"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/construction"
          operations:
            - name: execute-3
              method: POST

Retrieves container rfid tag status data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Container Rfid Tag Status"
  description: "Retrieves container rfid tag status data from the Republic Services waste management and recycling systems."
  tags:
    - container
    - republic-services
    - status
capability:
  exposes:
    - type: mcp
      namespace: container
      port: 8080
      tools:
        - name: container-rfid-tag-status
          description: "Retrieves container rfid tag status data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.container-rfid-tag-status"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/container/rfid/tag/status/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: container-rfid-tag-status
              method: GET

Retrieves container service level lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Container Service Level Lookup"
  description: "Retrieves container service level lookup data from the Republic Services waste management and recycling systems."
  tags:
    - container
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: container
      port: 8080
      tools:
        - name: container-service-level-lookup
          description: "Retrieves container service level lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.container-service-level-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/container/service/level/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: container-service-level-lookup
              method: GET

When an overweight container is detected, logs the violation in SAP, creates a Salesforce case for the customer, notifies the route supervisor via Microsoft Teams, and records the event in Datadog.

naftiko: "0.5"
info:
  label: "Container Weight Compliance Orchestrator"
  description: "When an overweight container is detected, logs the violation in SAP, creates a Salesforce case for the customer, notifies the route supervisor via Microsoft Teams, and records the event in Datadog."
  tags:
    - compliance
    - fleet
    - sap
    - salesforce
    - microsoft-teams
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: compliance-weight
      port: 8080
      tools:
        - name: handle-overweight-container
          description: "Given container and weight data, log the violation, create customer case, notify supervisor, and record in Datadog."
          inputParameters:
            - name: container_id
              in: body
              type: string
              description: "The container barcode or ID."
            - name: measured_weight
              in: body
              type: number
              description: "The measured weight in pounds."
            - name: weight_limit
              in: body
              type: number
              description: "The weight limit in pounds."
            - name: account_number
              in: body
              type: string
              description: "The customer account number."
            - name: driver_id
              in: body
              type: string
              description: "The driver who detected the violation."
          steps:
            - name: get-billing
              type: call
              call: "billing-api.get-account"
              with:
                account_number: "{{account_number}}"
            - name: log-violation
              type: call
              call: "sap.create-quality-notification"
              with:
                notification_type: "weight_violation"
                description: "Container {{container_id}} overweight: {{measured_weight}} lbs (limit: {{weight_limit}} lbs). Customer: {{get-billing.customer_name}}."
                equipment: "{{container_id}}"
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Overweight container: {{container_id}} — {{get-billing.customer_name}}"
                description: "Container {{container_id}} weighed {{measured_weight}} lbs, exceeding limit of {{weight_limit}} lbs. Address: {{get-billing.service_address}}."
                type: "Compliance"
                priority: "Medium"
            - name: notify-supervisor
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "ops_{{get-billing.district}}"
                channel: "Compliance"
                text: "Overweight container {{container_id}} at {{get-billing.service_address}}: {{measured_weight}} lbs (limit {{weight_limit}}). Driver: {{driver_id}}. Case: {{create-case.case_number}}."
            - name: log-metric
              type: call
              call: "datadog.send-event"
              with:
                title: "Overweight container: {{container_id}}"
                text: "Weight: {{measured_weight}}, Limit: {{weight_limit}}, Customer: {{account_number}}"
                tags: "type:weight_violation,district:{{get-billing.district}}"
  consumes:
    - type: http
      namespace: billing-api
      baseUri: "https://billing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.billing_api_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://republicservices-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: notifications
          path: "/QualityNotifications"
          operations:
            - name: create-quality-notification
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republicservices.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}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST

Processes a rate change by updating the billing system, creating a Salesforce task for account manager notification, generating a customer letter via DocuSign, and logging in ServiceNow.

naftiko: "0.5"
info:
  label: "Customer Account Rate Change Orchestrator"
  description: "Processes a rate change by updating the billing system, creating a Salesforce task for account manager notification, generating a customer letter via DocuSign, and logging in ServiceNow."
  tags:
    - billing
    - customer-service
    - salesforce
    - docusign
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: billing-rate-change
      port: 8080
      tools:
        - name: process-rate-change
          description: "Given an account number and new rate, update billing, notify account manager, generate customer letter, and log in ServiceNow."
          inputParameters:
            - name: account_number
              in: body
              type: string
              description: "The customer billing account number."
            - name: new_rate
              in: body
              type: number
              description: "The new monthly rate amount."
            - name: effective_date
              in: body
              type: string
              description: "The rate change effective date in YYYY-MM-DD."
            - name: reason
              in: body
              type: string
              description: "The reason for the rate change."
          steps:
            - name: get-account
              type: call
              call: "billing-api.get-account"
              with:
                account_number: "{{account_number}}"
            - name: update-rate
              type: call
              call: "billing-api.update-rate"
              with:
                account_number: "{{account_number}}"
                new_rate: "{{new_rate}}"
                effective_date: "{{effective_date}}"
            - name: create-sf-task
              type: call
              call: "salesforce.create-task"
              with:
                subject: "Rate change: {{get-account.customer_name}} — effective {{effective_date}}"
                description: "Old rate: {{get-account.current_rate}}. New rate: {{new_rate}}. Reason: {{reason}}."
                priority: "Normal"
            - name: send-letter
              type: call
              call: "docusign.send-envelope"
              with:
                recipient_email: "{{get-account.contact_email}}"
                template_id: "rate_change_notification"
                data:
                  customer_name: "{{get-account.customer_name}}"
                  new_rate: "{{new_rate}}"
                  effective_date: "{{effective_date}}"
            - name: log-change
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Rate change: {{account_number}} — ${{new_rate}} effective {{effective_date}}"
                description: "Customer: {{get-account.customer_name}}. Previous rate: {{get-account.current_rate}}. Reason: {{reason}}."
                category: "billing_change"
  consumes:
    - type: http
      namespace: billing-api
      baseUri: "https://billing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.billing_api_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-account
              method: GET
            - name: update-rate
              method: PATCH
    - type: http
      namespace: salesforce
      baseUri: "https://republicservices.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: docusign
      baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/{{account_id}}"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: envelopes
          path: "/envelopes"
          operations:
            - name: send-envelope
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republicservices.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

Orchestrates customer acquisition pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Acquisition Pipeline"
  description: "Orchestrates customer acquisition pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - republic-services
    - snowflake
    - slack
    - sap
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-acquisition-pipeline
          description: "Orchestrates customer acquisition pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sap.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Retrieves a customer billing account from the billing system, returning account balance, payment history, and service address.

naftiko: "0.5"
info:
  label: "Customer Billing Account Lookup"
  description: "Retrieves a customer billing account from the billing system, returning account balance, payment history, and service address."
  tags:
    - billing
    - customer-service
    - finance
capability:
  exposes:
    - type: mcp
      namespace: billing-accounts
      port: 8080
      tools:
        - name: get-billing-account
          description: "Look up a customer billing account. Returns balance, payment history, service address, and account status."
          inputParameters:
            - name: account_number
              in: body
              type: string
              description: "The customer billing account number."
          call: "billing-api.get-account"
          with:
            account_number: "{{account_number}}"
  consumes:
    - type: http
      namespace: billing-api
      baseUri: "https://billing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.billing_api_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-account
              method: GET

Orchestrates customer billing dispute pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Billing Dispute Pipeline"
  description: "Orchestrates customer billing dispute pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - republic-services
    - sap
    - teams
    - jira
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-billing-dispute-pipeline
          description: "Orchestrates customer billing dispute pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sap.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer contract renewal pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Contract Renewal Pipeline"
  description: "Orchestrates customer contract renewal pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - republic-services
    - teams
    - jira
    - workday
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-contract-renewal-pipeline
          description: "Orchestrates customer contract renewal pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "workday.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Retrieves customer contract terms lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Customer Contract Terms Lookup"
  description: "Retrieves customer contract terms lookup data from the Republic Services waste management and recycling systems."
  tags:
    - customer
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-contract-terms-lookup
          description: "Retrieves customer contract terms lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.customer-contract-terms-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/customer/contract/terms/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: customer-contract-terms-lookup
              method: GET

Orchestrates customer onboarding provisioning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Onboarding Provisioning Pipeline"
  description: "Orchestrates customer onboarding provisioning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - republic-services
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-onboarding-provisioning-pipeline
          description: "Orchestrates customer onboarding provisioning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer rate adjustment pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Rate Adjustment Pipeline"
  description: "Orchestrates customer rate adjustment pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - republic-services
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-rate-adjustment-pipeline
          description: "Orchestrates customer rate adjustment pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer retention pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Retention Pipeline"
  description: "Orchestrates customer retention pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - republic-services
    - datadog
    - republic
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-retention-pipeline
          description: "Orchestrates customer retention pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "republic.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Retrieves customer service agreement lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Customer Service Agreement Lookup"
  description: "Retrieves customer service agreement lookup data from the Republic Services waste management and recycling systems."
  tags:
    - customer
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-service-agreement-lookup
          description: "Retrieves customer service agreement lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.customer-service-agreement-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/customer/service/agreement/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: customer-service-agreement-lookup
              method: GET

Orchestrates customer service level monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Service Level Monitoring Pipeline"
  description: "Orchestrates customer service level monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - republic-services
    - republic
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-service-level-monitoring-pipeline
          description: "Orchestrates customer service level monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "republic.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

When a customer service request arrives in Salesforce, looks up billing data, creates a ServiceNow work order, and notifies the local operations team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Customer Service Request Orchestrator"
  description: "When a customer service request arrives in Salesforce, looks up billing data, creates a ServiceNow work order, and notifies the local operations team via Microsoft Teams."
  tags:
    - customer-service
    - salesforce
    - servicenow
    - microsoft-teams
    - billing
capability:
  exposes:
    - type: mcp
      namespace: customer-service-requests
      port: 8080
      tools:
        - name: process-service-request
          description: "Given a Salesforce case ID, look up billing, create ServiceNow work order, and notify local ops."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "The Salesforce case ID."
          steps:
            - name: get-case
              type: call
              call: "salesforce.get-case"
              with:
                case_id: "{{case_id}}"
            - name: get-billing
              type: call
              call: "billing-api.get-account"
              with:
                account_number: "{{get-case.account_number}}"
            - name: create-work-order
              type: call
              call: "servicenow.create-work-order"
              with:
                short_description: "Service request: {{get-case.subject}}"
                description: "Customer: {{get-billing.customer_name}}. Address: {{get-billing.service_address}}. Request: {{get-case.description}}."
                assigned_group: "Local_Ops_{{get-billing.district}}"
                priority: "{{get-case.priority}}"
            - name: notify-ops
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "ops_{{get-billing.district}}"
                channel: "Service-Requests"
                text: "New service request: {{get-case.subject}}. Customer: {{get-billing.customer_name}} at {{get-billing.service_address}}. Work order: {{create-work-order.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://republicservices.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET
    - type: http
      namespace: billing-api
      baseUri: "https://billing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.billing_api_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://republicservices.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: 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}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

Orchestrates customer sustainability reporting pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Sustainability Reporting Pipeline"
  description: "Orchestrates customer sustainability reporting pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - republic-services
    - slack
    - sap
    - teams
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-sustainability-reporting-pipeline
          description: "Orchestrates customer sustainability reporting pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sap.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Generates a daily fleet operations summary by pulling route completion data, vehicle status, and safety metrics, then posting to Microsoft Teams and refreshing Power BI.

naftiko: "0.5"
info:
  label: "Daily Fleet Operations Summary Orchestrator"
  description: "Generates a daily fleet operations summary by pulling route completion data, vehicle status, and safety metrics, then posting to Microsoft Teams and refreshing Power BI."
  tags:
    - fleet
    - operations
    - routing
    - datadog
    - microsoft-teams
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: fleet-daily-summary
      port: 8080
      tools:
        - name: generate-daily-summary
          description: "Generate a daily fleet operations summary, post to Teams, and refresh Power BI dashboards."
          inputParameters:
            - name: district
              in: body
              type: string
              description: "The operating district code."
            - name: report_date
              in: body
              type: string
              description: "The report date in YYYY-MM-DD format."
          steps:
            - name: get-route-completion
              type: call
              call: "routing-api.get-daily-summary"
              with:
                district: "{{district}}"
                date: "{{report_date}}"
            - name: get-fleet-status
              type: call
              call: "fleet-api.get-district-status"
              with:
                district: "{{district}}"
            - name: get-safety-metrics
              type: call
              call: "datadog.query-metrics"
              with:
                query: "sum:safety.incidents{district:{{district}}}.rollup(count, 86400)"
                from: "{{report_date}}T00:00:00Z"
                to: "{{report_date}}T23:59:59Z"
            - name: post-summary
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "ops_{{district}}"
                channel: "Daily-Summary"
                text: "Fleet Summary {{report_date}} — District {{district}}: Routes completed: {{get-route-completion.completed}}/{{get-route-completion.total}}. Vehicles active: {{get-fleet-status.active_count}}. Safety incidents: {{get-safety-metrics.value}}."
            - name: refresh-dashboard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                dataset_id: "$secrets.fleet_dashboard_dataset_id"
                group_id: "$secrets.fleet_dashboard_group_id"
  consumes:
    - type: http
      namespace: routing-api
      baseUri: "https://routing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.routing_api_token"
      resources:
        - name: daily-summary
          path: "/summary?district={{district}}&date={{date}}"
          inputParameters:
            - name: district
              in: path
            - name: date
              in: path
          operations:
            - name: get-daily-summary
              method: GET
    - type: http
      namespace: fleet-api
      baseUri: "https://fleet.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.fleet_api_token"
      resources:
        - name: district-status
          path: "/districts/{{district}}/status"
          inputParameters:
            - name: district
              in: path
          operations:
            - name: get-district-status
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: query
          path: "/query?query={{query}}&from={{from}}&to={{to}}"
          inputParameters:
            - name: query
              in: path
            - name: from
              in: path
            - name: to
              in: path
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              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

Queries Datadog for the health status of a monitored service, returning uptime and active alerts.

naftiko: "0.5"
info:
  label: "Datadog Service Health Check"
  description: "Queries Datadog for the health status of a monitored service, returning uptime and active alerts."
  tags:
    - monitoring
    - observability
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: ops-monitoring
      port: 8080
      tools:
        - name: get-service-health
          description: "Query Datadog for a service health summary. Returns active monitors and alert status."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The Datadog service name tag."
          call: "datadog.get-monitors"
          with:
            service_name: "{{service_name}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: monitors
          path: "/monitor?tag=service:{{service_name}}"
          inputParameters:
            - name: service_name
              in: path
          operations:
            - name: get-monitors
              method: GET

Retrieves the status of a DocuSign envelope for contract signing workflows.

naftiko: "0.5"
info:
  label: "DocuSign Contract Status"
  description: "Retrieves the status of a DocuSign envelope for contract signing workflows."
  tags:
    - legal
    - contracts
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: legal-docusign
      port: 8080
      tools:
        - name: get-envelope-status
          description: "Look up a DocuSign envelope by ID. Returns signer status and completion details."
          inputParameters:
            - name: envelope_id
              in: body
              type: string
              description: "The DocuSign envelope ID."
          call: "docusign.get-envelope"
          with:
            envelope_id: "{{envelope_id}}"
  consumes:
    - type: http
      namespace: docusign
      baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/{{account_id}}"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      inputParameters:
        - name: account_id
          in: path
          value: "$secrets.docusign_account_id"
      resources:
        - name: envelopes
          path: "/envelopes/{{envelope_id}}"
          inputParameters:
            - name: envelope_id
              in: path
          operations:
            - name: get-envelope
              method: GET

Retrieves driver license verification status data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Driver License Verification Status"
  description: "Retrieves driver license verification status data from the Republic Services waste management and recycling systems."
  tags:
    - driver
    - republic-services
    - status
capability:
  exposes:
    - type: mcp
      namespace: driver
      port: 8080
      tools:
        - name: driver-license-verification-status
          description: "Retrieves driver license verification status data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.driver-license-verification-status"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/driver/license/verification/status/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: driver-license-verification-status
              method: GET

Orchestrates driver onboarding pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Driver Onboarding Pipeline"
  description: "Orchestrates driver onboarding pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - driver
    - republic-services
    - teams
    - jira
    - workday
capability:
  exposes:
    - type: mcp
      namespace: driver
      port: 8080
      tools:
        - name: driver-onboarding-pipeline
          description: "Orchestrates driver onboarding pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "workday.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/driver"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/driver"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/driver"
          operations:
            - name: execute-3
              method: POST

Orchestrates driver route efficiency pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Driver Route Efficiency Pipeline"
  description: "Orchestrates driver route efficiency pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - driver
    - republic-services
    - jira
    - workday
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: driver
      port: 8080
      tools:
        - name: driver-route-efficiency-pipeline
          description: "Orchestrates driver route efficiency pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "workday.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/driver"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/driver"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/driver"
          operations:
            - name: execute-3
              method: POST

Orchestrates driver safety coaching pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Driver Safety Coaching Pipeline"
  description: "Orchestrates driver safety coaching pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - driver
    - republic-services
    - workday
    - datadog
    - republic
capability:
  exposes:
    - type: mcp
      namespace: driver
      port: 8080
      tools:
        - name: driver-safety-coaching-pipeline
          description: "Orchestrates driver safety coaching pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "workday.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "republic.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/driver"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/driver"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/driver"
          operations:
            - name: execute-3
              method: POST

When a driver safety incident is reported, creates a ServiceNow incident, updates the driver record in Workday, notifies safety management via Microsoft Teams, and records in Datadog.

naftiko: "0.5"
info:
  label: "Driver Safety Incident Orchestrator"
  description: "When a driver safety incident is reported, creates a ServiceNow incident, updates the driver record in Workday, notifies safety management via Microsoft Teams, and records in Datadog."
  tags:
    - safety
    - fleet
    - servicenow
    - workday
    - microsoft-teams
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: safety-incidents
      port: 8080
      tools:
        - name: report-safety-incident
          description: "Given driver ID and incident details, create ServiceNow incident, update Workday, notify safety team, and log in Datadog."
          inputParameters:
            - name: driver_id
              in: body
              type: string
              description: "The driver employee ID."
            - name: incident_type
              in: body
              type: string
              description: "Type of safety incident (collision, near-miss, injury)."
            - name: location
              in: body
              type: string
              description: "Location of the incident."
            - name: description
              in: body
              type: string
              description: "Description of the incident."
          steps:
            - name: get-driver
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{driver_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Safety incident: {{incident_type}} — Driver {{get-driver.full_name}}"
                priority: "2"
                category: "safety"
                assigned_group: "Safety_Management"
                description: "Driver: {{get-driver.full_name}}. Type: {{incident_type}}. Location: {{location}}. Details: {{description}}."
            - name: notify-safety
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "safety_team"
                channel: "Incidents"
                text: "SAFETY INCIDENT: {{incident_type}} by {{get-driver.full_name}} at {{location}}. Incident: {{create-incident.number}}. Details: {{description}}."
            - name: log-event
              type: call
              call: "datadog.send-event"
              with:
                title: "Safety incident: {{incident_type}}"
                text: "Driver: {{driver_id}}, Location: {{location}}, Type: {{incident_type}}"
                alert_type: "warning"
                tags: "type:safety,incident:{{incident_type}}"
  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://republicservices.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST

Queries Dynatrace for host performance metrics including CPU, memory, and disk utilization.

naftiko: "0.5"
info:
  label: "Dynatrace Infrastructure Monitoring"
  description: "Queries Dynatrace for host performance metrics including CPU, memory, and disk utilization."
  tags:
    - monitoring
    - infrastructure
    - dynatrace
capability:
  exposes:
    - type: mcp
      namespace: ops-dynatrace
      port: 8080
      tools:
        - name: get-host-metrics
          description: "Query Dynatrace for host performance. Returns CPU, memory, and disk utilization."
          inputParameters:
            - name: host_id
              in: body
              type: string
              description: "The Dynatrace host entity ID."
          call: "dynatrace.get-host-metrics"
          with:
            host_id: "{{host_id}}"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://republicservices.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: metrics
          path: "/metrics/query?metricSelector=builtin:host.cpu.usage,builtin:host.mem.usage&entitySelector=entityId({{host_id}})"
          inputParameters:
            - name: host_id
              in: path
          operations:
            - name: get-host-metrics
              method: GET

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, 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, 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: workday_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: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - 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 Republic Services, {{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://republicservices.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

Orchestrates environmental compliance monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Environmental Compliance Monitoring Pipeline"
  description: "Orchestrates environmental compliance monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - environmental
    - republic-services
    - jira
    - workday
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: environmental
      port: 8080
      tools:
        - name: environmental-compliance-monitoring-pipeline
          description: "Orchestrates environmental compliance monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "workday.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/environmental"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/environmental"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/environmental"
          operations:
            - name: execute-3
              method: POST

Generates an environmental compliance report by pulling monitoring data, cross-referencing with SAP maintenance records, creating a Confluence report, and notifying the compliance team.

naftiko: "0.5"
info:
  label: "Environmental Compliance Report Orchestrator"
  description: "Generates an environmental compliance report by pulling monitoring data, cross-referencing with SAP maintenance records, creating a Confluence report, and notifying the compliance team."
  tags:
    - compliance
    - environmental
    - sap
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: compliance-environmental
      port: 8080
      tools:
        - name: generate-compliance-report
          description: "Given a site ID and reporting period, pull environmental data, cross-reference SAP, create Confluence report, and notify compliance."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The facility site identifier."
            - name: reporting_period
              in: body
              type: string
              description: "The reporting period (e.g. 2026-Q1)."
          steps:
            - name: get-monitoring-data
              type: call
              call: "env-api.get-monitoring-report"
              with:
                site_id: "{{site_id}}"
                period: "{{reporting_period}}"
            - name: get-maintenance-records
              type: call
              call: "sap.get-maintenance-history"
              with:
                site: "{{site_id}}"
                period: "{{reporting_period}}"
            - name: create-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ENV_COMPLIANCE"
                title: "Environmental Compliance: {{site_id}} — {{reporting_period}}"
                body: "Emissions: {{get-monitoring-data.emissions_summary}}. Maintenance items: {{get-maintenance-records.count}}. Status: {{get-monitoring-data.compliance_status}}."
            - name: notify-compliance
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "compliance_team"
                channel: "Environmental"
                text: "Environmental compliance report ready: {{site_id}} for {{reporting_period}}. Status: {{get-monitoring-data.compliance_status}}. Report: {{create-report.url}}."
  consumes:
    - type: http
      namespace: env-api
      baseUri: "https://environmental.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.env_api_token"
      resources:
        - name: monitoring
          path: "/sites/{{site_id}}/monitoring?period={{period}}"
          inputParameters:
            - name: site_id
              in: path
            - name: period
              in: path
          operations:
            - name: get-monitoring-report
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://republicservices-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: maintenance-history
          path: "/MaintenanceOrder?$filter=FunctionalLocation eq '{{site}}' and CreationDate ge '{{period}}'"
          inputParameters:
            - name: site
              in: path
            - name: period
              in: path
          operations:
            - name: get-maintenance-history
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://republicservices.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              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}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

Orchestrates environmental incident response pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Environmental Incident Response Pipeline"
  description: "Orchestrates environmental incident response pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - environmental
    - republic-services
    - sap
    - teams
    - jira
capability:
  exposes:
    - type: mcp
      namespace: environmental
      port: 8080
      tools:
        - name: environmental-incident-response-pipeline
          description: "Orchestrates environmental incident response pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sap.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/environmental"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/environmental"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/environmental"
          operations:
            - name: execute-3
              method: POST

Retrieves environmental monitoring well data data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Environmental Monitoring Well Data"
  description: "Retrieves environmental monitoring well data data from the Republic Services waste management and recycling systems."
  tags:
    - environmental
    - republic-services
    - data
capability:
  exposes:
    - type: mcp
      namespace: environmental
      port: 8080
      tools:
        - name: environmental-monitoring-well-data
          description: "Retrieves environmental monitoring well data data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.environmental-monitoring-well-data"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/environmental/monitoring/well/data/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: environmental-monitoring-well-data
              method: GET

Orchestrates environmental remediation tracking pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Environmental Remediation Tracking Pipeline"
  description: "Orchestrates environmental remediation tracking pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - environmental
    - republic-services
    - teams
    - jira
    - workday
capability:
  exposes:
    - type: mcp
      namespace: environmental
      port: 8080
      tools:
        - name: environmental-remediation-tracking-pipeline
          description: "Orchestrates environmental remediation tracking pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "workday.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/environmental"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/environmental"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/environmental"
          operations:
            - name: execute-3
              method: POST

Retrieves submitted expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review.

naftiko: "0.5"
info:
  label: "Expense Report Processing"
  description: "Retrieves submitted expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review."
  tags:
    - finance
    - expense
    - sap-concur
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: finance-expense
      port: 8080
      tools:
        - name: review-expense-report
          description: "Given a Concur expense report ID and employee ID, fetch report details, validate cost center, and flag violations."
          inputParameters:
            - name: expense_report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID of the submitter."
          steps:
            - name: get-expense-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{expense_report_id}}"
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: open-review-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Expense review: {{get-expense-report.report_name}} — {{get-employee.full_name}}"
                description: "Total: {{get-expense-report.total_amount}}. Cost center: {{get-employee.cost_center}}."
                assigned_group: "Finance_Audit"
                category: "expense_review"
  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: 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://republicservices.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

Retrieves Facebook Ads campaign insights including reach, impressions, and spend.

naftiko: "0.5"
info:
  label: "Facebook Ads Campaign Report"
  description: "Retrieves Facebook Ads campaign insights including reach, impressions, and spend."
  tags:
    - marketing
    - advertising
    - facebook-ads
capability:
  exposes:
    - type: mcp
      namespace: marketing-facebook
      port: 8080
      tools:
        - name: get-fb-campaign-insights
          description: "Retrieve Facebook Ads campaign insights by campaign ID. Returns reach, impressions, and spend."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Facebook Ads campaign ID."
            - name: date_preset
              in: body
              type: string
              description: "Date preset (e.g. last_7d, last_30d)."
          call: "fbads.get-insights"
          with:
            campaign_id: "{{campaign_id}}"
            date_preset: "{{date_preset}}"
  consumes:
    - type: http
      namespace: fbads
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_access_token"
      resources:
        - name: insights
          path: "/{{campaign_id}}/insights?date_preset={{date_preset}}"
          inputParameters:
            - name: campaign_id
              in: path
            - name: date_preset
              in: path
          operations:
            - name: get-insights
              method: GET

Orchestrates fleet accident response pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Fleet Accident Response Pipeline"
  description: "Orchestrates fleet accident response pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - fleet
    - republic-services
    - sap
    - teams
    - jira
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-accident-response-pipeline
          description: "Orchestrates fleet accident response pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sap.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/fleet"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/fleet"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://republic.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/fleet"
          operations:
            - name: execute-3
              method: POST

When a vehicle breaks down, creates a ServiceNow P1 incident, reassigns the route via the routing system, notifies dispatch via Microsoft Teams, and logs a Datadog event.

naftiko: "0.5"
info:
  label: "Fleet Breakdown Orchestrator"
  description: "When a vehicle breaks down, creates a ServiceNow P1 incident, reassigns the route via the routing system, notifies dispatch via Microsoft Teams, and logs a Datadog event."
  tags:
    - fleet
    - maintenance
    - servicenow
    - microsoft-teams
    - datadog
    - routing
capability:
  exposes:
    - type: mcp
      namespace: fleet-breakdown
      port: 8080
      tools:
        - name: handle-breakdown
          description: "Given a vehicle unit and driver ID, create ServiceNow incident, reassign route, notify dispatch, and log in Datadog."
          inputParameters:
            - name: vehicle_unit
              in: body
              type: string
              description: "The fleet vehicle unit number."
            - name: driver_id
              in: body
              type: string
              description: "The driver employee ID."
            - name: location
              in: body
              type: string
              description: "GPS coordinates of the breakdown location."
            - name: issue_description
              in: body
              type: string
              description: "Description of the vehicle issue."
          steps:
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Vehicle breakdown: Unit {{vehicle_unit}} at {{location}}"
                priority: "1"
                category: "fleet_maintenance"
                assigned_group: "Fleet_Maintenance"
                description: "Driver: {{driver_id}}. Issue: {{issue_description}}. Location: {{location}}."
            - name: reassign-route
              type: call
              call: "routing-api.reassign-route"
              with:
                driver_id: "{{driver_id}}"
                reason: "vehicle_breakdown"
                vehicle_unit: "{{vehicle_unit}}"
            - name: notify-dispatch
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "dispatch_ops"
                channel: "Fleet-Alerts"
                text: "BREAKDOWN: Unit {{vehicle_unit}}, driver {{driver_id}} at {{location}}. Issue: {{issue_description}}. Incident: {{create-incident.number}}. Route reassigned to: {{reassign-route.new_driver_id}}."
            - name: log-event
              type: call
              call: "datadog.send-event"
              with:
                title: "Fleet breakdown: Unit {{vehicle_unit}}"
                text: "Driver: {{driver_id}}, Location: {{location}}, Issue: {{issue_description}}"
                alert_type: "error"
                tags: "fleet:{{vehicle_unit}},type:breakdown"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://republicservices.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: routing-api
      baseUri: "https://routing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.routing_api_token"
      resources:
        - name: reassignments
          path: "/routes/reassign"
          operations:
            - name: reassign-route
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST

Orchestrates fleet compliance audit pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Fleet Compliance Audit Pipeline"
  description: "Orchestrates fleet compliance audit pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - fleet
    - republic-services
    - datadog
    - republic
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-compliance-audit-pipeline
          description: "Orchestrates fleet compliance audit pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "republic.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/fleet"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/fleet"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/fleet"
          operations:
            - name: execute-3
              method: POST

Orchestrates fleet electrification planning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Fleet Electrification Planning Pipeline"
  description: "Orchestrates fleet electrification planning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - fleet
    - republic-services
    - workday
    - datadog
    - republic
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-electrification-planning-pipeline
          description: "Orchestrates fleet electrification planning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "workday.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "republic.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/fleet"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/fleet"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/fleet"
          operations:
            - name: execute-3
              method: POST

Retrieves fleet fuel consumption report data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Fleet Fuel Consumption Report"
  description: "Retrieves fleet fuel consumption report data from the Republic Services waste management and recycling systems."
  tags:
    - fleet
    - republic-services
    - report
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-fuel-consumption-report
          description: "Retrieves fleet fuel consumption report data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.fleet-fuel-consumption-report"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/fleet/fuel/consumption/report/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: fleet-fuel-consumption-report
              method: GET

Orchestrates fleet fuel optimization pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Fleet Fuel Optimization Pipeline"
  description: "Orchestrates fleet fuel optimization pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - fleet
    - republic-services
    - snowflake
    - slack
    - sap
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-fuel-optimization-pipeline
          description: "Orchestrates fleet fuel optimization pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sap.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/fleet"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/fleet"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/fleet"
          operations:
            - name: execute-3
              method: POST

Retrieves fleet gps tracking lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Fleet Gps Tracking Lookup"
  description: "Retrieves fleet gps tracking lookup data from the Republic Services waste management and recycling systems."
  tags:
    - fleet
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-gps-tracking-lookup
          description: "Retrieves fleet gps tracking lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.fleet-gps-tracking-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/fleet/gps/tracking/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: fleet-gps-tracking-lookup
              method: GET

Orchestrates fleet insurance claims pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Fleet Insurance Claims Pipeline"
  description: "Orchestrates fleet insurance claims pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - fleet
    - republic-services
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-insurance-claims-pipeline
          description: "Orchestrates fleet insurance claims pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/fleet"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/fleet"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/fleet"
          operations:
            - name: execute-3
              method: POST

Retrieves the maintenance schedule for a fleet vehicle from SAP, returning upcoming service items, mileage thresholds, and last service date.

naftiko: "0.5"
info:
  label: "Fleet Maintenance Schedule Lookup"
  description: "Retrieves the maintenance schedule for a fleet vehicle from SAP, returning upcoming service items, mileage thresholds, and last service date."
  tags:
    - fleet
    - maintenance
    - sap
capability:
  exposes:
    - type: mcp
      namespace: fleet-maintenance
      port: 8080
      tools:
        - name: get-maintenance-schedule
          description: "Look up a vehicle maintenance schedule in SAP by equipment number. Returns upcoming service items and due dates."
          inputParameters:
            - name: equipment_number
              in: body
              type: string
              description: "The SAP equipment number for the vehicle."
          call: "sap.get-maintenance-plan"
          with:
            equipment: "{{equipment_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://republicservices-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: maintenance-plans
          path: "/MaintenancePlan?$filter=Equipment eq '{{equipment}}'"
          inputParameters:
            - name: equipment
              in: path
          operations:
            - name: get-maintenance-plan
              method: GET

Orchestrates fleet preventive maintenance scheduler across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Fleet Preventive Maintenance Scheduler"
  description: "Orchestrates fleet preventive maintenance scheduler across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - fleet
    - republic-services
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-preventive-maintenance-scheduler
          description: "Orchestrates fleet preventive maintenance scheduler across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/fleet"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/fleet"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/fleet"
          operations:
            - name: execute-3
              method: POST

Orchestrates fleet telematics analytics pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Fleet Telematics Analytics Pipeline"
  description: "Orchestrates fleet telematics analytics pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - fleet
    - republic-services
    - slack
    - sap
    - teams
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-telematics-analytics-pipeline
          description: "Orchestrates fleet telematics analytics pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sap.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/fleet"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/fleet"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/fleet"
          operations:
            - name: execute-3
              method: POST

Orchestrates fleet vehicle replacement pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Fleet Vehicle Replacement Pipeline"
  description: "Orchestrates fleet vehicle replacement pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - fleet
    - republic-services
    - republic
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: fleet
      port: 8080
      tools:
        - name: fleet-vehicle-replacement-pipeline
          description: "Orchestrates fleet vehicle replacement pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "republic.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/fleet"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/fleet"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/fleet"
          operations:
            - name: execute-3
              method: POST

Retrieves real-time vehicle telematics data from the fleet management system including location, speed, fuel level, and engine status.

naftiko: "0.5"
info:
  label: "Fleet Vehicle Telematics Lookup"
  description: "Retrieves real-time vehicle telematics data from the fleet management system including location, speed, fuel level, and engine status."
  tags:
    - fleet
    - telematics
    - operations
capability:
  exposes:
    - type: mcp
      namespace: fleet-telematics
      port: 8080
      tools:
        - name: get-vehicle-status
          description: "Query vehicle telematics by unit number. Returns GPS location, speed, fuel level, and engine status."
          inputParameters:
            - name: vehicle_unit
              in: body
              type: string
              description: "The fleet vehicle unit number."
          call: "fleet-api.get-vehicle"
          with:
            unit_number: "{{vehicle_unit}}"
  consumes:
    - type: http
      namespace: fleet-api
      baseUri: "https://fleet.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.fleet_api_token"
      resources:
        - name: vehicles
          path: "/vehicles/{{unit_number}}/telematics"
          inputParameters:
            - name: unit_number
              in: path
          operations:
            - name: get-vehicle
              method: GET

Retrieves Google Ads campaign performance data for digital marketing analysis.

naftiko: "0.5"
info:
  label: "Google Ads Campaign Report"
  description: "Retrieves Google Ads campaign performance data for digital marketing analysis."
  tags:
    - marketing
    - advertising
    - google-ads
capability:
  exposes:
    - type: mcp
      namespace: marketing-ads
      port: 8080
      tools:
        - name: get-ads-performance
          description: "Retrieve Google Ads campaign performance. Returns impressions, clicks, cost, and conversions."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Google Ads customer ID."
            - 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."
          call: "googleads.search-stream"
          with:
            customer_id: "{{customer_id}}"
            query: "SELECT campaign.name, metrics.impressions, metrics.clicks, metrics.cost_micros FROM campaign WHERE segments.date BETWEEN '{{start_date}}' AND '{{end_date}}'"
  consumes:
    - type: http
      namespace: googleads
      baseUri: "https://googleads.googleapis.com/v15"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: search
          path: "/customers/{{customer_id}}/googleAds:searchStream"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: search-stream
              method: POST

Uploads a file to a specified Google Drive folder and returns the file ID and shareable link.

naftiko: "0.5"
info:
  label: "Google Drive File Upload"
  description: "Uploads a file to a specified Google Drive folder and returns the file ID and shareable link."
  tags:
    - collaboration
    - storage
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: storage-gdrive
      port: 8080
      tools:
        - name: upload-file
          description: "Upload a file to a Google Drive folder. Returns file ID and shareable link."
          inputParameters:
            - name: folder_id
              in: body
              type: string
              description: "The Google Drive folder ID."
            - name: file_name
              in: body
              type: string
              description: "The name for the uploaded file."
          call: "gdrive.upload-file"
          with:
            folder_id: "{{folder_id}}"
            name: "{{file_name}}"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/upload/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files?uploadType=multipart"
          operations:
            - name: upload-file
              method: POST

Geocodes an address via Google Maps API, returning latitude, longitude, and formatted address.

naftiko: "0.5"
info:
  label: "Google Maps Geocoding"
  description: "Geocodes an address via Google Maps API, returning latitude, longitude, and formatted address."
  tags:
    - routing
    - geolocation
    - google-maps
capability:
  exposes:
    - type: mcp
      namespace: geo-maps
      port: 8080
      tools:
        - name: geocode-address
          description: "Geocode an address via Google Maps. Returns latitude, longitude, and formatted address."
          inputParameters:
            - name: address
              in: body
              type: string
              description: "The address to geocode."
          call: "googlemaps.geocode"
          with:
            address: "{{address}}"
  consumes:
    - type: http
      namespace: googlemaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: apiKey
        key: "$secrets.google_maps_key"
      resources:
        - name: geocode
          path: "/geocode/json?address={{address}}"
          inputParameters:
            - name: address
              in: path
          operations:
            - name: geocode
              method: GET

Retrieves hauling route details lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Hauling Route Details Lookup"
  description: "Retrieves hauling route details lookup data from the Republic Services waste management and recycling systems."
  tags:
    - hauling
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: hauling
      port: 8080
      tools:
        - name: hauling-route-details-lookup
          description: "Retrieves hauling route details lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.hauling-route-details-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/hauling/route/details/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: hauling-route-details-lookup
              method: GET

Retrieves invoice payment status from the billing system for a customer account.

naftiko: "0.5"
info:
  label: "Invoice Payment Status"
  description: "Retrieves invoice payment status from the billing system for a customer account."
  tags:
    - billing
    - finance
    - accounts-receivable
capability:
  exposes:
    - type: mcp
      namespace: billing-invoices
      port: 8080
      tools:
        - name: get-invoice-status
          description: "Look up an invoice by number. Returns amount, due date, payment status, and payment date."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The invoice number."
          call: "billing-api.get-invoice"
          with:
            invoice_number: "{{invoice_number}}"
  consumes:
    - type: http
      namespace: billing-api
      baseUri: "https://billing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.billing_api_token"
      resources:
        - name: invoices
          path: "/invoices/{{invoice_number}}"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-invoice
              method: GET

When an employee leaves in Workday, deactivates their Azure AD account, closes ServiceNow tickets, and logs the offboarding in Microsoft Teams.

naftiko: "0.5"
info:
  label: "IT Asset Offboarding Orchestrator"
  description: "When an employee leaves in Workday, deactivates their Azure AD account, closes ServiceNow tickets, and logs the offboarding in Microsoft Teams."
  tags:
    - hr
    - offboarding
    - workday
    - azure-active-directory
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-offboarding
      port: 8080
      tools:
        - name: offboard-employee
          description: "Given a Workday employee ID, deactivate Azure AD, close ServiceNow tickets, and notify via Teams."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID of the departing employee."
            - name: last_day
              in: body
              type: string
              description: "The employee's last working day in YYYY-MM-DD format."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: disable-ad-account
              type: call
              call: "aad.disable-user"
              with:
                upn: "{{get-employee.work_email}}"
            - name: close-tickets
              type: call
              call: "servicenow.close-user-tickets"
              with:
                caller_id: "{{get-employee.work_email}}"
                close_notes: "Employee offboarding: {{get-employee.full_name}} last day {{last_day}}"
            - name: notify-hr
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "hr-team@republicservices.com"
                text: "Offboarding complete for {{get-employee.full_name}} ({{employee_id}}). AD disabled, tickets closed. Last day: {{last_day}}."
  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: aad
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{upn}}"
          inputParameters:
            - name: upn
              in: path
          operations:
            - name: disable-user
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://republicservices.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=caller_id={{caller_id}}^state!=7"
          inputParameters:
            - name: caller_id
              in: path
          operations:
            - name: close-user-tickets
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Checks landfill capacity data from the environmental monitoring system, updates SAP asset records, generates a Tableau report, and alerts operations if capacity thresholds are exceeded.

naftiko: "0.5"
info:
  label: "Landfill Capacity Monitoring Orchestrator"
  description: "Checks landfill capacity data from the environmental monitoring system, updates SAP asset records, generates a Tableau report, and alerts operations if capacity thresholds are exceeded."
  tags:
    - operations
    - environmental
    - sap
    - tableau
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: ops-landfill
      port: 8080
      tools:
        - name: check-landfill-capacity
          description: "Given a landfill site ID, check capacity, update SAP records, refresh Tableau, and alert if thresholds exceeded."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The landfill site identifier."
          steps:
            - name: get-capacity
              type: call
              call: "env-api.get-site-capacity"
              with:
                site_id: "{{site_id}}"
            - name: update-sap-asset
              type: call
              call: "sap.update-asset"
              with:
                asset_id: "{{site_id}}"
                remaining_capacity: "{{get-capacity.remaining_cubic_yards}}"
                utilization_pct: "{{get-capacity.utilization_percentage}}"
            - name: refresh-report
              type: call
              call: "tableau.refresh-workbook"
              with:
                workbook_id: "landfill_capacity_dashboard"
                site_id: "$secrets.tableau_site_id"
            - name: alert-if-critical
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "landfill_ops"
                channel: "Capacity-Alerts"
                text: "Landfill {{site_id}} capacity update: {{get-capacity.utilization_percentage}}% utilized. Remaining: {{get-capacity.remaining_cubic_yards}} cu yds. Est. closure: {{get-capacity.estimated_closure_date}}."
  consumes:
    - type: http
      namespace: env-api
      baseUri: "https://environmental.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.env_api_token"
      resources:
        - name: site-capacity
          path: "/sites/{{site_id}}/capacity"
          inputParameters:
            - name: site_id
              in: path
          operations:
            - name: get-site-capacity
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://republicservices-s4.sap.com/sap/opu/odata/sap/API_FIXEDASSET"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: assets
          path: "/A_FixedAsset('{{asset_id}}')"
          inputParameters:
            - name: asset_id
              in: path
          operations:
            - name: update-asset
              method: PATCH
    - type: http
      namespace: tableau
      baseUri: "https://republicservices.online.tableau.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/{{site_id}}/workbooks/{{workbook_id}}/refresh"
          inputParameters:
            - name: site_id
              in: path
            - name: workbook_id
              in: path
          operations:
            - name: refresh-workbook
              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}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

Orchestrates landfill capacity monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Landfill Capacity Monitoring Pipeline"
  description: "Orchestrates landfill capacity monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - landfill
    - republic-services
    - snowflake
    - slack
    - sap
capability:
  exposes:
    - type: mcp
      namespace: landfill
      port: 8080
      tools:
        - name: landfill-capacity-monitoring-pipeline
          description: "Orchestrates landfill capacity monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sap.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/landfill"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/landfill"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/landfill"
          operations:
            - name: execute-3
              method: POST

Orchestrates landfill closure planning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Landfill Closure Planning Pipeline"
  description: "Orchestrates landfill closure planning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - landfill
    - republic-services
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: landfill
      port: 8080
      tools:
        - name: landfill-closure-planning-pipeline
          description: "Orchestrates landfill closure planning pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/landfill"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/landfill"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/landfill"
          operations:
            - name: execute-3
              method: POST

Retrieves landfill gas collection metrics data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Landfill Gas Collection Metrics"
  description: "Retrieves landfill gas collection metrics data from the Republic Services waste management and recycling systems."
  tags:
    - landfill
    - republic-services
    - metrics
capability:
  exposes:
    - type: mcp
      namespace: landfill
      port: 8080
      tools:
        - name: landfill-gas-collection-metrics
          description: "Retrieves landfill gas collection metrics data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.landfill-gas-collection-metrics"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/landfill/gas/collection/metrics/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: landfill-gas-collection-metrics
              method: GET

Orchestrates landfill gas to energy monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Landfill Gas To Energy Monitoring Pipeline"
  description: "Orchestrates landfill gas to energy monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - landfill
    - republic-services
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: landfill
      port: 8080
      tools:
        - name: landfill-gas-to-energy-monitoring-pipeline
          description: "Orchestrates landfill gas to energy monitoring pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/landfill"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/landfill"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/landfill"
          operations:
            - name: execute-3
              method: POST

Orchestrates landfill leachate treatment pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Landfill Leachate Treatment Pipeline"
  description: "Orchestrates landfill leachate treatment pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - landfill
    - republic-services
    - republic
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: landfill
      port: 8080
      tools:
        - name: landfill-leachate-treatment-pipeline
          description: "Orchestrates landfill leachate treatment pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "republic.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/landfill"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/landfill"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/landfill"
          operations:
            - name: execute-3
              method: POST

Retrieves landfill permit status lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Landfill Permit Status Lookup"
  description: "Retrieves landfill permit status lookup data from the Republic Services waste management and recycling systems."
  tags:
    - landfill
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: landfill
      port: 8080
      tools:
        - name: landfill-permit-status-lookup
          description: "Retrieves landfill permit status lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.landfill-permit-status-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/landfill/permit/status/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: landfill-permit-status-lookup
              method: GET

Retrieves a Microsoft Dynamics 365 opportunity record, returning stage, estimated value, and close date.

naftiko: "0.5"
info:
  label: "Microsoft Dynamics CRM Opportunity Lookup"
  description: "Retrieves a Microsoft Dynamics 365 opportunity record, returning stage, estimated value, and close date."
  tags:
    - sales
    - crm
    - microsoft-dynamics
capability:
  exposes:
    - type: mcp
      namespace: sales-dynamics
      port: 8080
      tools:
        - name: get-opportunity
          description: "Look up a Dynamics 365 opportunity by ID. Returns stage, estimated value, close date, and owner."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Dynamics 365 opportunity ID."
          call: "dynamics.get-opportunity"
          with:
            opportunity_id: "{{opportunity_id}}"
  consumes:
    - type: http
      namespace: dynamics
      baseUri: "https://republicservices.crm.dynamics.com/api/data/v9.2"
      authentication:
        type: bearer
        token: "$secrets.dynamics_token"
      resources:
        - name: opportunities
          path: "/opportunities({{opportunity_id}})"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET

Sends an email notification via Microsoft Graph to a specified recipient.

naftiko: "0.5"
info:
  label: "Microsoft Outlook Email Notification"
  description: "Sends an email notification via Microsoft Graph to a specified recipient."
  tags:
    - communications
    - email
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: comms-email
      port: 8080
      tools:
        - name: send-email
          description: "Send an email via Microsoft Graph. Specify recipient, subject, and body."
          inputParameters:
            - name: to_email
              in: body
              type: string
              description: "The recipient email address."
            - name: subject
              in: body
              type: string
              description: "The email subject."
            - name: body
              in: body
              type: string
              description: "The email body content."
          call: "outlook.send-mail"
          with:
            to: "{{to_email}}"
            subject: "{{subject}}"
            body: "{{body}}"
  consumes:
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Sends a message to a Microsoft Teams channel, used by workflows for dispatch and operations alerts.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a message to a Microsoft Teams channel, used by workflows for dispatch and operations alerts."
  tags:
    - collaboration
    - messaging
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: comms-teams
      port: 8080
      tools:
        - name: send-channel-message
          description: "Send a message to a Microsoft Teams channel by team and channel ID."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Microsoft Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "The channel ID within the team."
            - name: message
              in: body
              type: string
              description: "The message content."
          call: "msteams.post-channel-message"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
            text: "{{message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

When a missed pickup is reported, looks up the route data, creates a Salesforce case, dispatches a recovery truck via the routing system, and notifies the customer.

naftiko: "0.5"
info:
  label: "Missed Pickup Resolution Orchestrator"
  description: "When a missed pickup is reported, looks up the route data, creates a Salesforce case, dispatches a recovery truck via the routing system, and notifies the customer."
  tags:
    - customer-service
    - routing
    - salesforce
    - microsoft-teams
    - operations
capability:
  exposes:
    - type: mcp
      namespace: customer-missed-pickup
      port: 8080
      tools:
        - name: resolve-missed-pickup
          description: "Given a customer account number and service date, create a case, dispatch recovery, and notify the customer."
          inputParameters:
            - name: account_number
              in: body
              type: string
              description: "The customer billing account number."
            - name: service_date
              in: body
              type: string
              description: "The missed service date in YYYY-MM-DD format."
            - name: service_type
              in: body
              type: string
              description: "Type of service missed (trash, recycling, bulk)."
          steps:
            - name: get-billing
              type: call
              call: "billing-api.get-account"
              with:
                account_number: "{{account_number}}"
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Missed {{service_type}} pickup: {{account_number}}"
                description: "Customer: {{get-billing.customer_name}}. Address: {{get-billing.service_address}}. Service date: {{service_date}}."
                type: "Missed Pickup"
                priority: "High"
            - name: dispatch-recovery
              type: call
              call: "routing-api.create-recovery-stop"
              with:
                address: "{{get-billing.service_address}}"
                service_type: "{{service_type}}"
                district: "{{get-billing.district}}"
            - name: notify-dispatch
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "ops_{{get-billing.district}}"
                channel: "Missed-Pickups"
                text: "Missed {{service_type}} pickup: {{get-billing.customer_name}} at {{get-billing.service_address}}. Case: {{create-case.case_number}}. Recovery assigned to: {{dispatch-recovery.driver_id}}."
  consumes:
    - type: http
      namespace: billing-api
      baseUri: "https://billing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.billing_api_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://republicservices.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: routing-api
      baseUri: "https://routing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.routing_api_token"
      resources:
        - name: recovery-stops
          path: "/recovery-stops"
          operations:
            - name: create-recovery-stop
              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}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

Orchestrates municipal contract compliance pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Municipal Contract Compliance Pipeline"
  description: "Orchestrates municipal contract compliance pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - municipal
    - republic-services
    - slack
    - sap
    - teams
capability:
  exposes:
    - type: mcp
      namespace: municipal
      port: 8080
      tools:
        - name: municipal-contract-compliance-pipeline
          description: "Orchestrates municipal contract compliance pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sap.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/municipal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/municipal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/municipal"
          operations:
            - name: execute-3
              method: POST

When a new customer is signed in Salesforce, creates the billing account, schedules the first pickup via routing, provisions a customer portal account, and sends a welcome notification.

naftiko: "0.5"
info:
  label: "New Customer Onboarding Orchestrator"
  description: "When a new customer is signed in Salesforce, creates the billing account, schedules the first pickup via routing, provisions a customer portal account, and sends a welcome notification."
  tags:
    - customer-service
    - onboarding
    - salesforce
    - billing
    - routing
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: customer-onboarding
      port: 8080
      tools:
        - name: onboard-customer
          description: "Given a Salesforce opportunity ID, create billing account, schedule first pickup, and send welcome notification."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-billing-account
              type: call
              call: "billing-api.create-account"
              with:
                customer_name: "{{get-opportunity.account_name}}"
                service_address: "{{get-opportunity.service_address}}"
                service_type: "{{get-opportunity.service_type}}"
                rate_code: "{{get-opportunity.rate_code}}"
            - name: schedule-first-pickup
              type: call
              call: "routing-api.schedule-stop"
              with:
                address: "{{get-opportunity.service_address}}"
                service_type: "{{get-opportunity.service_type}}"
                district: "{{get-opportunity.district}}"
            - name: notify-sales
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-opportunity.owner_email}}"
                text: "Customer onboarded: {{get-opportunity.account_name}}. Billing account: {{create-billing-account.account_number}}. First pickup: {{schedule-first-pickup.scheduled_date}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://republicservices.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: billing-api
      baseUri: "https://billing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.billing_api_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: routing-api
      baseUri: "https://routing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.routing_api_token"
      resources:
        - name: stops
          path: "/stops"
          operations:
            - name: schedule-stop
              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

Queries New Relic for application performance metrics including response time, throughput, and error rate.

naftiko: "0.5"
info:
  label: "New Relic Application Performance"
  description: "Queries New Relic for application performance metrics including response time, throughput, and error rate."
  tags:
    - monitoring
    - apm
    - new-relic
capability:
  exposes:
    - type: mcp
      namespace: ops-apm
      port: 8080
      tools:
        - name: get-app-performance
          description: "Query New Relic for application performance. Returns response time, throughput, and error rate."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The New Relic application ID."
          call: "newrelic.get-app-metrics"
          with:
            app_id: "{{app_id}}"
  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}}/metrics/data.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app-metrics
              method: GET

Queries Oracle Essbase for financial planning data including budget vs. actuals and variance analysis.

naftiko: "0.5"
info:
  label: "Oracle Essbase Financial Query"
  description: "Queries Oracle Essbase for financial planning data including budget vs. actuals and variance analysis."
  tags:
    - finance
    - planning
    - oracle-essbase
capability:
  exposes:
    - type: mcp
      namespace: finance-essbase
      port: 8080
      tools:
        - name: query-financials
          description: "Query Oracle Essbase for budget vs. actuals data. Returns planned, actual, and variance amounts."
          inputParameters:
            - name: cube
              in: body
              type: string
              description: "The Essbase cube name."
            - name: dimension_filter
              in: body
              type: string
              description: "The dimension member filter (e.g. cost center, period)."
          call: "essbase.run-mdx"
          with:
            cube: "{{cube}}"
            query: "{{dimension_filter}}"
  consumes:
    - type: http
      namespace: essbase
      baseUri: "https://republicservices-essbase.oracle.com/essbase/rest/v1"
      authentication:
        type: basic
        username: "$secrets.essbase_user"
        password: "$secrets.essbase_password"
      resources:
        - name: queries
          path: "/applications/{{cube}}/databases/{{cube}}/mdx"
          inputParameters:
            - name: cube
              in: path
          operations:
            - name: run-mdx
              method: POST

Triggers a dataset refresh in Power BI for fleet and operations dashboards.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresh"
  description: "Triggers a dataset refresh in Power BI for fleet and operations dashboards."
  tags:
    - analytics
    - reporting
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: bi-reporting
      port: 8080
      tools:
        - name: refresh-dataset
          description: "Trigger a Power BI dataset refresh by dataset ID and return refresh status."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
            - name: group_id
              in: body
              type: string
              description: "The Power BI workspace (group) ID."
          call: "powerbi.trigger-refresh"
          with:
            dataset_id: "{{dataset_id}}"
            group_id: "{{group_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

Triggers a Qlik Sense application reload for updated analytics data.

naftiko: "0.5"
info:
  label: "Qlik Sense App Reload"
  description: "Triggers a Qlik Sense application reload for updated analytics data."
  tags:
    - analytics
    - reporting
    - qlik
capability:
  exposes:
    - type: mcp
      namespace: analytics-qlik
      port: 8080
      tools:
        - name: reload-app
          description: "Trigger a Qlik Sense app reload by app ID. Returns the reload task status."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The Qlik Sense app ID."
          call: "qlik.reload-app"
          with:
            app_id: "{{app_id}}"
  consumes:
    - type: http
      namespace: qlik
      baseUri: "https://republicservices.us.qlikcloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlik_token"
      resources:
        - name: reloads
          path: "/reloads"
          operations:
            - name: reload-app
              method: POST

Retrieves recycling commodity market lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Recycling Commodity Market Lookup"
  description: "Retrieves recycling commodity market lookup data from the Republic Services waste management and recycling systems."
  tags:
    - recycling
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: recycling
      port: 8080
      tools:
        - name: recycling-commodity-market-lookup
          description: "Retrieves recycling commodity market lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.recycling-commodity-market-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/recycling/commodity/market/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: recycling-commodity-market-lookup
              method: GET

When recycling contamination is detected at a facility, logs the event in SAP, creates a Salesforce case for the customer, generates a Datadog metric, and notifies the recycling team.

naftiko: "0.5"
info:
  label: "Recycling Contamination Alert Orchestrator"
  description: "When recycling contamination is detected at a facility, logs the event in SAP, creates a Salesforce case for the customer, generates a Datadog metric, and notifies the recycling team."
  tags:
    - operations
    - recycling
    - sap
    - salesforce
    - datadog
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: ops-recycling
      port: 8080
      tools:
        - name: report-contamination
          description: "Given facility ID and contamination details, log in SAP, create customer case, record metrics, and alert recycling team."
          inputParameters:
            - name: facility_id
              in: body
              type: string
              description: "The recycling facility ID."
            - name: account_number
              in: body
              type: string
              description: "The customer account number."
            - name: contamination_type
              in: body
              type: string
              description: "Type of contamination detected."
            - name: severity
              in: body
              type: string
              description: "Severity level (low, medium, high)."
          steps:
            - name: get-billing
              type: call
              call: "billing-api.get-account"
              with:
                account_number: "{{account_number}}"
            - name: log-sap-event
              type: call
              call: "sap.create-quality-notification"
              with:
                notification_type: "contamination"
                description: "Recycling contamination at {{facility_id}}: {{contamination_type}} ({{severity}}). Customer: {{get-billing.customer_name}}."
                plant: "{{facility_id}}"
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Recycling contamination: {{get-billing.customer_name}}"
                description: "Contamination type: {{contamination_type}}. Severity: {{severity}}. Facility: {{facility_id}}."
                type: "Contamination"
                priority: "{{severity}}"
            - name: record-metric
              type: call
              call: "datadog.send-event"
              with:
                title: "Recycling contamination at {{facility_id}}"
                text: "Customer: {{account_number}}, Type: {{contamination_type}}, Severity: {{severity}}"
                tags: "facility:{{facility_id}},type:contamination,severity:{{severity}}"
            - name: notify-team
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "recycling_ops"
                channel: "Contamination"
                text: "Contamination alert at {{facility_id}}: {{contamination_type}} ({{severity}}). Customer: {{get-billing.customer_name}}. Case: {{create-case.case_number}}."
  consumes:
    - type: http
      namespace: billing-api
      baseUri: "https://billing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.billing_api_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://republicservices-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: notifications
          path: "/QualityNotifications"
          operations:
            - name: create-quality-notification
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republicservices.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: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-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}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

Orchestrates recycling contamination remediation pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Recycling Contamination Remediation Pipeline"
  description: "Orchestrates recycling contamination remediation pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - recycling
    - republic-services
    - slack
    - sap
    - teams
capability:
  exposes:
    - type: mcp
      namespace: recycling
      port: 8080
      tools:
        - name: recycling-contamination-remediation-pipeline
          description: "Orchestrates recycling contamination remediation pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sap.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/recycling"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/recycling"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/recycling"
          operations:
            - name: execute-3
              method: POST

Orchestrates recycling education campaign pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Recycling Education Campaign Pipeline"
  description: "Orchestrates recycling education campaign pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - recycling
    - republic-services
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: recycling
      port: 8080
      tools:
        - name: recycling-education-campaign-pipeline
          description: "Orchestrates recycling education campaign pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/recycling"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/recycling"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/recycling"
          operations:
            - name: execute-3
              method: POST

Orchestrates recycling market opportunity pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Recycling Market Opportunity Pipeline"
  description: "Orchestrates recycling market opportunity pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - recycling
    - republic-services
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: recycling
      port: 8080
      tools:
        - name: recycling-market-opportunity-pipeline
          description: "Orchestrates recycling market opportunity pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/recycling"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/recycling"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/recycling"
          operations:
            - name: execute-3
              method: POST

Retrieves recycling material pricing lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Recycling Material Pricing Lookup"
  description: "Retrieves recycling material pricing lookup data from the Republic Services waste management and recycling systems."
  tags:
    - recycling
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: recycling
      port: 8080
      tools:
        - name: recycling-material-pricing-lookup
          description: "Retrieves recycling material pricing lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.recycling-material-pricing-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/recycling/material/pricing/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: recycling-material-pricing-lookup
              method: GET

Orchestrates recycling sorting quality pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Recycling Sorting Quality Pipeline"
  description: "Orchestrates recycling sorting quality pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - recycling
    - republic-services
    - snowflake
    - slack
    - sap
capability:
  exposes:
    - type: mcp
      namespace: recycling
      port: 8080
      tools:
        - name: recycling-sorting-quality-pipeline
          description: "Orchestrates recycling sorting quality pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sap.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://republic.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/recycling"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/recycling"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://republic-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/api/recycling"
          operations:
            - name: execute-3
              method: POST

Orchestrates route optimization rebalancing pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Route Optimization Rebalancing Pipeline"
  description: "Orchestrates route optimization rebalancing pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - route
    - republic-services
    - republic
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: route
      port: 8080
      tools:
        - name: route-optimization-rebalancing-pipeline
          description: "Orchestrates route optimization rebalancing pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "republic.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/route"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/route"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://republic.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/route"
          operations:
            - name: execute-3
              method: POST

Retrieves the current route plan for a driver, including stops, estimated arrival times, and completion percentage.

naftiko: "0.5"
info:
  label: "Route Optimization Status"
  description: "Retrieves the current route plan for a driver, including stops, estimated arrival times, and completion percentage."
  tags:
    - fleet
    - routing
    - operations
capability:
  exposes:
    - type: mcp
      namespace: fleet-routing
      port: 8080
      tools:
        - name: get-route-plan
          description: "Query the route optimization system for a driver's current route. Returns stops, ETAs, and completion status."
          inputParameters:
            - name: driver_id
              in: body
              type: string
              description: "The driver employee ID."
            - name: route_date
              in: body
              type: string
              description: "The route date in YYYY-MM-DD format."
          call: "routing-api.get-route"
          with:
            driver_id: "{{driver_id}}"
            date: "{{route_date}}"
  consumes:
    - type: http
      namespace: routing-api
      baseUri: "https://routing.republicservices.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.routing_api_token"
      resources:
        - name: routes
          path: "/routes?driver={{driver_id}}&date={{date}}"
          inputParameters:
            - name: driver_id
              in: path
            - name: date
              in: path
          operations:
            - name: get-route
              method: GET

Retrieves a Salesforce account record by ID, returning company name, industry, annual revenue, and assigned owner.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Retrieves a Salesforce account record by ID, returning company name, industry, annual revenue, and assigned owner."
  tags:
    - sales
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales-crm
      port: 8080
      tools:
        - name: get-account
          description: "Look up a Salesforce account by ID. Returns name, industry, revenue, and owner."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account record ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://republicservices.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 lead record by ID, returning contact info, lead source, status, and assigned owner.

naftiko: "0.5"
info:
  label: "Salesforce Lead Lookup"
  description: "Retrieves a Salesforce lead record by ID, returning contact info, lead source, status, and assigned owner."
  tags:
    - sales
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales-leads
      port: 8080
      tools:
        - name: get-lead
          description: "Look up a Salesforce lead by ID. Returns name, email, company, lead source, and status."
          inputParameters:
            - name: lead_id
              in: body
              type: string
              description: "The Salesforce lead record ID."
          call: "salesforce.get-lead"
          with:
            lead_id: "{{lead_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://republicservices.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: get-lead
              method: GET

Retrieves a travel booking from SAP Concur by trip ID, returning itinerary and estimated cost.

naftiko: "0.5"
info:
  label: "SAP Concur Travel Booking Lookup"
  description: "Retrieves a travel booking from SAP Concur by trip ID, returning itinerary and estimated cost."
  tags:
    - travel
    - expense
    - sap-concur
capability:
  exposes:
    - type: mcp
      namespace: travel-concur
      port: 8080
      tools:
        - name: get-travel-booking
          description: "Look up a SAP Concur travel booking by trip ID. Returns itinerary, approval status, and cost estimate."
          inputParameters:
            - name: trip_id
              in: body
              type: string
              description: "The SAP Concur trip ID."
          call: "concur.get-trip"
          with:
            trip_id: "{{trip_id}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: trips
          path: "/travel/trips/{{trip_id}}"
          inputParameters:
            - name: trip_id
              in: path
          operations:
            - name: get-trip
              method: GET

Queries SAP HANA for fleet performance analytics including fuel consumption, route efficiency, and maintenance cost metrics.

naftiko: "0.5"
info:
  label: "SAP HANA Fleet Analytics Query"
  description: "Queries SAP HANA for fleet performance analytics including fuel consumption, route efficiency, and maintenance cost metrics."
  tags:
    - fleet
    - analytics
    - sap-hana
capability:
  exposes:
    - type: mcp
      namespace: fleet-analytics
      port: 8080
      tools:
        - name: get-fleet-metrics
          description: "Query SAP HANA for fleet performance metrics. Returns fuel consumption, route efficiency, and maintenance costs."
          inputParameters:
            - name: district
              in: body
              type: string
              description: "The operating district code."
            - name: period
              in: body
              type: string
              description: "The reporting period (YYYY-MM)."
          call: "saphana.query-fleet-metrics"
          with:
            district: "{{district}}"
            period: "{{period}}"
  consumes:
    - type: http
      namespace: saphana
      baseUri: "https://republicservices-hana.sap.com/sap/opu/odata/sap/FLEET_ANALYTICS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: fleet-metrics
          path: "/FleetMetrics?$filter=District eq '{{district}}' and Period eq '{{period}}'"
          inputParameters:
            - name: district
              in: path
            - name: period
              in: path
          operations:
            - name: query-fleet-metrics
              method: GET

Retrieves a material master record from SAP S/4HANA by material number.

naftiko: "0.5"
info:
  label: "SAP Material Master Lookup"
  description: "Retrieves a material master record from SAP S/4HANA by material number."
  tags:
    - erp
    - master-data
    - sap
capability:
  exposes:
    - type: mcp
      namespace: erp-materials
      port: 8080
      tools:
        - name: get-material
          description: "Look up a SAP material master by number. Returns description, UoM, and material group."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
          call: "sap.get-material"
          with:
            material_number: "{{material_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://republicservices-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Product('{{material_number}}')"
          inputParameters:
            - name: material_number
              in: path
          operations:
            - name: get-material
              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 S/4HANA 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
    - erp
    - sap
    - sap-s4hana
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."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://republicservices-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Retrieves a ServiceNow incident by number, returning priority, state, assigned group, and description for IT support.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Status"
  description: "Retrieves a ServiceNow incident by number, returning priority, state, assigned group, and description for IT support."
  tags:
    - it-support
    - itsm
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: itsm
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number. Returns priority, state, assigned group, and short description."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g. INC0012345)."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://republicservices.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={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: path
          operations:
            - name: get-incident
              method: GET

Retrieves document metadata and download URL from a SharePoint site by file path.

naftiko: "0.5"
info:
  label: "SharePoint Document Retrieval"
  description: "Retrieves document metadata and download URL from a SharePoint site by file path."
  tags:
    - collaboration
    - documents
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: docs-sharepoint
      port: 8080
      tools:
        - name: get-document
          description: "Retrieve a SharePoint document by site ID and file path. Returns metadata and download URL."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The SharePoint site ID."
            - name: file_path
              in: body
              type: string
              description: "The file path within the document library."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            file_path: "{{file_path}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET

Executes a SQL query against Snowflake and returns the result set for analytics and reporting workflows.

naftiko: "0.5"
info:
  label: "Snowflake Data Warehouse Query"
  description: "Executes a SQL query against Snowflake and returns the result set for analytics and reporting workflows."
  tags:
    - analytics
    - data-warehouse
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: data-snowflake
      port: 8080
      tools:
        - name: run-query
          description: "Execute a SQL query against Snowflake. Returns the result set."
          inputParameters:
            - name: warehouse
              in: body
              type: string
              description: "The Snowflake warehouse to use."
            - name: database
              in: body
              type: string
              description: "The Snowflake database name."
            - name: query
              in: body
              type: string
              description: "The SQL query to execute."
          call: "snowflake.execute-statement"
          with:
            warehouse: "{{warehouse}}"
            database: "{{database}}"
            statement: "{{query}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://republicservices.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST

Triggers a Tableau workbook extract refresh and returns the refresh job status.

naftiko: "0.5"
info:
  label: "Tableau Workbook Refresh"
  description: "Triggers a Tableau workbook extract refresh and returns the refresh job status."
  tags:
    - analytics
    - reporting
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: analytics-tableau
      port: 8080
      tools:
        - name: refresh-workbook
          description: "Trigger a Tableau workbook extract refresh by workbook ID. Returns refresh job status."
          inputParameters:
            - name: workbook_id
              in: body
              type: string
              description: "The Tableau workbook ID."
            - name: site_id
              in: body
              type: string
              description: "The Tableau site ID."
          call: "tableau.refresh-workbook"
          with:
            workbook_id: "{{workbook_id}}"
            site_id: "{{site_id}}"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://republicservices.online.tableau.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/{{site_id}}/workbooks/{{workbook_id}}/refresh"
          inputParameters:
            - name: site_id
              in: path
            - name: workbook_id
              in: path
          operations:
            - name: refresh-workbook
              method: POST

Retrieves transfer station throughput lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Transfer Station Throughput Lookup"
  description: "Retrieves transfer station throughput lookup data from the Republic Services waste management and recycling systems."
  tags:
    - transfer
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: transfer
      port: 8080
      tools:
        - name: transfer-station-throughput-lookup
          description: "Retrieves transfer station throughput lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.transfer-station-throughput-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/transfer/station/throughput/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: transfer-station-throughput-lookup
              method: GET

Retrieves VMware vCenter virtual machine status including power state, CPU, memory, and storage utilization.

naftiko: "0.5"
info:
  label: "VMware Infrastructure Status"
  description: "Retrieves VMware vCenter virtual machine status including power state, CPU, memory, and storage utilization."
  tags:
    - infrastructure
    - virtualization
    - vmware
capability:
  exposes:
    - type: mcp
      namespace: infra-vmware
      port: 8080
      tools:
        - name: get-vm-status
          description: "Query VMware vCenter for VM status. Returns power state, CPU, memory, and storage usage."
          inputParameters:
            - name: vm_id
              in: body
              type: string
              description: "The vCenter virtual machine ID."
          call: "vmware.get-vm"
          with:
            vm_id: "{{vm_id}}"
  consumes:
    - type: http
      namespace: vmware
      baseUri: "https://vcenter.republicservices.com/rest/vcenter"
      authentication:
        type: bearer
        token: "$secrets.vmware_session_token"
      resources:
        - name: vms
          path: "/vm/{{vm_id}}"
          inputParameters:
            - name: vm_id
              in: path
          operations:
            - name: get-vm
              method: GET

Retrieves waste diversion rate lookup data from the Republic Services waste management and recycling systems.

naftiko: "0.5"
info:
  label: "Waste Diversion Rate Lookup"
  description: "Retrieves waste diversion rate lookup data from the Republic Services waste management and recycling systems."
  tags:
    - waste
    - republic-services
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: waste-diversion-rate-lookup
          description: "Retrieves waste diversion rate lookup data from the Republic Services waste management and recycling systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "republic.waste-diversion-rate-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: resource
          path: "/waste/diversion/rate/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: waste-diversion-rate-lookup
              method: GET

Orchestrates waste stream analysis pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Waste Stream Analysis Pipeline"
  description: "Orchestrates waste stream analysis pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - waste
    - republic-services
    - datadog
    - republic
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: waste-stream-analysis-pipeline
          description: "Orchestrates waste stream analysis pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "republic.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/waste"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/waste"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://republic.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/waste"
          operations:
            - name: execute-3
              method: POST

Orchestrates waste volume forecasting pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Waste Volume Forecasting Pipeline"
  description: "Orchestrates waste volume forecasting pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
  tags:
    - waste
    - republic-services
    - workday
    - datadog
    - republic
capability:
  exposes:
    - type: mcp
      namespace: waste
      port: 8080
      tools:
        - name: waste-volume-forecasting-pipeline
          description: "Orchestrates waste volume forecasting pipeline across waste management and recycling systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "workday.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "republic.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/republic/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/api/waste"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/waste"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: republic
      baseUri: "https://api.republicservices.com/v2"
      authentication:
        type: bearer
        token: "$secrets.republic_api_token"
      resources:
        - name: republic-resource
          path: "/api/waste"
          operations:
            - name: execute-3
              method: POST

Looks up an employee in Workday by ID, returning name, department, title, and manager.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Looks up an employee in Workday by ID, returning name, department, title, and manager."
  tags:
    - hr
    - directory
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up a Workday employee by ID. Returns name, department, title, manager, and work email."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{employee_id}}"
  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

Creates a Zoom meeting and returns the join URL and meeting ID.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates a Zoom meeting and returns the join URL and meeting ID."
  tags:
    - collaboration
    - meetings
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: comms-zoom
      port: 8080
      tools:
        - name: create-meeting
          description: "Create a Zoom meeting. Returns meeting ID and join URL."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "The meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Start time in ISO 8601 format."
            - name: duration
              in: body
              type: number
              description: "Duration in minutes."
          call: "zoom.create-meeting"
          with:
            topic: "{{topic}}"
            start_time: "{{start_time}}"
            duration: "{{duration}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/me/meetings"
          operations:
            - name: create-meeting
              method: POST