Stryker Capabilities

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

Sort
Expand

Retrieves payroll summary data from ADP for a given pay period.

naftiko: "0.5"
info:
  label: "ADP Payroll Summary Lookup"
  description: "Retrieves payroll summary data from ADP for a given pay period."
  tags:
    - hr
    - adp
    - payroll
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Look up ADP payroll summary by pay period."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "The pay period identifier."
          call: "adp.get-payroll"
          with:
            pay_period: "{{pay_period}}"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com/payroll/v1"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: payroll
          path: "/payrollSummaries/{{pay_period}}"
          inputParameters:
            - name: pay_period
              in: path
          operations:
            - name: get-payroll
              method: GET

Generates annual quality review by pulling metrics from Snowflake, defect data from the QMS, and distributing the report via SharePoint and Microsoft Teams.

naftiko: "0.5"
info:
  label: "Annual Quality Review Orchestrator"
  description: "Generates annual quality review by pulling metrics from Snowflake, defect data from the QMS, and distributing the report via SharePoint and Microsoft Teams."
  tags:
    - quality
    - snowflake
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality
      port: 8080
      tools:
        - name: run-annual-quality-review-orchestrator
          description: "Generates annual quality review by pulling metrics from Snowflake, defect data from the QMS, and distributing the report via SharePoint and Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Annual Quality Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves AutoCAD design files for a product from the engineering document management system.

naftiko: "0.5"
info:
  label: "AutoCAD Design File Retrieval"
  description: "Retrieves AutoCAD design files for a product from the engineering document management system."
  tags:
    - engineering
    - autocad
    - design
capability:
  exposes:
    - type: mcp
      namespace: engineering-docs
      port: 8080
      tools:
        - name: get-design-file
          description: "Retrieve an AutoCAD design file by product and revision."
          inputParameters:
            - name: product_number
              in: body
              type: string
              description: "The product part number."
            - name: revision
              in: body
              type: string
              description: "The design revision (e.g., Rev A, Rev B)."
          call: "edms-api.get-file"
          with:
            product: "{{product_number}}"
            rev: "{{revision}}"
  consumes:
    - type: http
      namespace: edms-api
      baseUri: "https://api.stryker.com/edms/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_edms_token"
      resources:
        - name: files
          path: "/designs/{{product}}/revisions/{{rev}}"
          inputParameters:
            - name: product
              in: path
            - name: rev
              in: path
          operations:
            - name: get-file
              method: GET

Retrieves user profile information from Azure Active Directory by email or UPN.

naftiko: "0.5"
info:
  label: "Azure AD User Lookup"
  description: "Retrieves user profile information from Azure Active Directory by email or UPN."
  tags:
    - identity
    - azure-ad
capability:
  exposes:
    - type: mcp
      namespace: identity
      port: 8080
      tools:
        - name: get-user-profile
          description: "Look up an Azure AD user by email address."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "The user email or UPN."
          call: "azure-ad.get-user"
          with:
            user_email: "{{user_email}}"
  consumes:
    - type: http
      namespace: azure-ad
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{user_email}}"
          inputParameters:
            - name: user_email
              in: path
          operations:
            - name: get-user
              method: GET

Checks the latest build status for a specified Azure DevOps pipeline.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status"
  description: "Checks the latest build status for a specified Azure DevOps pipeline."
  tags:
    - devops
    - azure-devops
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: get-build-status
          description: "Get the latest build status for an Azure DevOps pipeline."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: pipeline_id
              in: body
              type: string
              description: "The pipeline definition ID."
          call: "azdo.get-latest-build"
          with:
            project: "{{project_name}}"
            definition_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/stryker"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azdo_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: definition_id
              in: query
          operations:
            - name: get-latest-build
              method: GET

Retrieves or uploads engineering documents from Box cloud storage for the product development workflow.

naftiko: "0.5"
info:
  label: "Box Engineering Document Manager"
  description: "Retrieves or uploads engineering documents from Box cloud storage for the product development workflow."
  tags:
    - engineering
    - box
    - documents
capability:
  exposes:
    - type: mcp
      namespace: eng-docs
      port: 8080
      tools:
        - name: search-engineering-docs
          description: "Search for engineering documents in Box."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The search query."
          call: "box.search-files"
          with:
            query: "{{search_query}}"
  consumes:
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: search
          path: "/search?query={{query}}"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-files
              method: GET

Retrieves regulatory submission documents from Box by file ID.

naftiko: "0.5"
info:
  label: "Box Regulatory Document Viewer"
  description: "Retrieves regulatory submission documents from Box by file ID."
  tags:
    - regulatory
    - box
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: get-document
          description: "Retrieve a regulatory document from Box by file ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Box file ID."
          call: "box.get-file"
          with:
            file_id: "{{file_id}}"
  consumes:
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              method: GET

Creates a Corrective and Preventive Action record in the QMS, assigns it in Jira for tracking, and notifies the quality engineering team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "CAPA Management Orchestrator"
  description: "Creates a Corrective and Preventive Action record in the QMS, assigns it in Jira for tracking, and notifies the quality engineering team via Microsoft Teams."
  tags:
    - quality
    - capa
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: capa-mgmt
      port: 8080
      tools:
        - name: create-capa
          description: "Create a CAPA record, assign a Jira ticket, and notify the quality team."
          inputParameters:
            - name: quality_event_id
              in: body
              type: string
              description: "The QMS quality event ID triggering the CAPA."
            - name: capa_type
              in: body
              type: string
              description: "The CAPA type (corrective or preventive)."
            - name: description
              in: body
              type: string
              description: "Description of the corrective/preventive action needed."
            - name: assignee
              in: body
              type: string
              description: "The assigned quality engineer email."
          steps:
            - name: create-capa-record
              type: call
              call: "qms-api.create-capa"
              with:
                event_id: "{{quality_event_id}}"
                type: "{{capa_type}}"
                description: "{{description}}"
            - name: create-jira-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "CAPA"
                summary: "CAPA-{{create-capa-record.capa_number}}: {{description}}"
                description: "Quality Event: {{quality_event_id}}. Type: {{capa_type}}. {{description}}"
                issuetype: "Task"
                assignee: "{{assignee}}"
            - name: notify-team
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "quality_engineering"
                channel_id: "capas"
                text: "New CAPA created: {{create-capa-record.capa_number}} ({{capa_type}}). Jira: {{create-jira-ticket.key}}. Assigned to: {{assignee}}."
  consumes:
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: capas
          path: "/capas"
          operations:
            - name: create-capa
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://stryker.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Processes capital expenditure requests by validating budget in SAP, routing approvals through ServiceNow, and notifying finance via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Capital Expenditure Approval Pipeline"
  description: "Processes capital expenditure requests by validating budget in SAP, routing approvals through ServiceNow, and notifying finance via Microsoft Teams."
  tags:
    - finance
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: finance
      port: 8080
      tools:
        - name: run-capital-expenditure-approval-pipeline
          description: "Processes capital expenditure requests by validating budget in SAP, routing approvals through ServiceNow, and notifying finance via Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Capital Expenditure Approval Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages engineering change requests by collecting reviews from JIRA, updating design documents in SharePoint, and scheduling CCB meetings via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Change Control Board Orchestrator"
  description: "Manages engineering change requests by collecting reviews from JIRA, updating design documents in SharePoint, and scheduling CCB meetings via Microsoft Teams."
  tags:
    - engineering
    - jira
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: run-change-control-board-orchestrator
          description: "Manages engineering change requests by collecting reviews from JIRA, updating design documents in SharePoint, and scheduling CCB meetings via Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Change Control Board Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Generates clinical evidence packages by pulling study data, formatting for regulatory submission, and archiving in SharePoint.

naftiko: "0.5"
info:
  label: "Clinical Evidence Generation Orchestrator"
  description: "Generates clinical evidence packages by pulling study data, formatting for regulatory submission, and archiving in SharePoint."
  tags:
    - clinical
    - regulatory
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: clinical
      port: 8080
      tools:
        - name: run-clinical-evidence-generation-orchestrator
          description: "Generates clinical evidence packages by pulling study data, formatting for regulatory submission, and archiving in SharePoint."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Clinical Evidence Generation Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves clinical study data and endpoints from the clinical data management system for a specified study protocol.

naftiko: "0.5"
info:
  label: "Clinical Study Data Retrieval"
  description: "Retrieves clinical study data and endpoints from the clinical data management system for a specified study protocol."
  tags:
    - regulatory
    - clinical
    - research
capability:
  exposes:
    - type: mcp
      namespace: clinical-data
      port: 8080
      tools:
        - name: get-clinical-study-data
          description: "Retrieve clinical study data by protocol number."
          inputParameters:
            - name: protocol_number
              in: body
              type: string
              description: "The clinical study protocol number."
          call: "clinical-api.get-study"
          with:
            protocol: "{{protocol_number}}"
  consumes:
    - type: http
      namespace: clinical-api
      baseUri: "https://api.stryker.com/clinical/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_clinical_token"
      resources:
        - name: studies
          path: "/studies/{{protocol}}"
          inputParameters:
            - name: protocol
              in: path
          operations:
            - name: get-study
              method: GET

Purges the Cloudflare CDN cache for specified URL patterns on Stryker customer-facing websites.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Cache Manager"
  description: "Purges the Cloudflare CDN cache for specified URL patterns on Stryker customer-facing websites."
  tags:
    - infrastructure
    - cloudflare
    - cdn
capability:
  exposes:
    - type: mcp
      namespace: cdn-ops
      port: 8080
      tools:
        - name: purge-cdn-cache
          description: "Purge the Cloudflare CDN cache for specified URLs."
          inputParameters:
            - name: url_patterns
              in: body
              type: array
              description: "List of URL patterns to purge."
          call: "cloudflare.purge-cache"
          with:
            zone_id: "$secrets.cloudflare_zone_id"
            files: "{{url_patterns}}"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: cache
          path: "/zones/{{zone_id}}/purge_cache"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: purge-cache
              method: POST

Assigns compliance training by identifying required courses based on Workday role, enrolling in Pluralsight, and tracking completion via email.

naftiko: "0.5"
info:
  label: "Compliance Training Assignment Orchestrator"
  description: "Assigns compliance training by identifying required courses based on Workday role, enrolling in Pluralsight, and tracking completion via email."
  tags:
    - hr
    - workday
    - pluralsight
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: run-compliance-training-assignment-orchestrator
          description: "Assigns compliance training by identifying required courses based on Workday role, enrolling in Pluralsight, and tracking completion via email."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Compliance Training Assignment Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Searches the Confluence knowledge base for SOPs, work instructions, and quality documentation.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Search"
  description: "Searches the Confluence knowledge base for SOPs, work instructions, and quality documentation."
  tags:
    - knowledge-management
    - confluence
    - quality
capability:
  exposes:
    - type: mcp
      namespace: knowledge
      port: 8080
      tools:
        - name: search-confluence
          description: "Search Confluence for quality and manufacturing documentation."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query."
          call: "confluence.search"
          with:
            cql: "type=page AND text~\"{{query}}\""
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://stryker.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: query
          operations:
            - name: search
              method: GET

Routes vendor contracts through legal review by uploading to SharePoint, creating approval tasks in ServiceNow, and notifying via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Contract Review Orchestrator"
  description: "Routes vendor contracts through legal review by uploading to SharePoint, creating approval tasks in ServiceNow, and notifying via Microsoft Teams."
  tags:
    - legal
    - sharepoint
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-contract-review-orchestrator
          description: "Routes vendor contracts through legal review by uploading to SharePoint, creating approval tasks in ServiceNow, and notifying via Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Contract Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Processes customer complaints by creating Salesforce cases, triggering CAPA investigations in the QMS, and alerting quality teams via Slack.

naftiko: "0.5"
info:
  label: "Customer Complaint to CAPA Pipeline"
  description: "Processes customer complaints by creating Salesforce cases, triggering CAPA investigations in the QMS, and alerting quality teams via Slack."
  tags:
    - quality
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: quality
      port: 8080
      tools:
        - name: run-customer-complaint-to-capa-pipeline
          description: "Processes customer complaints by creating Salesforce cases, triggering CAPA investigations in the QMS, and alerting quality teams via Slack."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Complaint to CAPA Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Distributes customer satisfaction surveys via MailChimp after device delivery, collects responses, and updates Salesforce with satisfaction scores.

naftiko: "0.5"
info:
  label: "Customer Satisfaction Survey Pipeline"
  description: "Distributes customer satisfaction surveys via MailChimp after device delivery, collects responses, and updates Salesforce with satisfaction scores."
  tags:
    - customer-service
    - mailchimp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer-service
      port: 8080
      tools:
        - name: run-customer-satisfaction-survey-pipeline
          description: "Distributes customer satisfaction surveys via MailChimp after device delivery, collects responses, and updates Salesforce with satisfaction scores."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Satisfaction Survey Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves health status and active alerts from Datadog for Stryker manufacturing and IT systems.

naftiko: "0.5"
info:
  label: "Datadog Infrastructure Monitor"
  description: "Retrieves health status and active alerts from Datadog for Stryker manufacturing and IT systems."
  tags:
    - monitoring
    - datadog
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-system-health
          description: "Get health status and active alerts from Datadog."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The service name."
          call: "datadog.get-service-status"
          with:
            service: "{{service_name}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: services
          path: "/service_summary?service={{service}}"
          inputParameters:
            - name: service
              in: query
          operations:
            - name: get-service-status
              method: GET

Retrieves design control documents from SharePoint for a specific product development project.

naftiko: "0.5"
info:
  label: "Design Control Document Retrieval"
  description: "Retrieves design control documents from SharePoint for a specific product development project."
  tags:
    - regulatory
    - design-control
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: design-control
      port: 8080
      tools:
        - name: get-design-document
          description: "Retrieve a design control document from SharePoint."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "The product development project ID."
            - name: document_type
              in: body
              type: string
              description: "The document type (e.g., design_input, design_output, verification, validation)."
          call: "sharepoint.get-document"
          with:
            site_id: "design_control"
            file_path: "Projects/{{project_id}}/{{document_type}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: documents
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-document
              method: GET

Tracks the status and effectiveness of field safety corrective actions for medical devices.

naftiko: "0.5"
info:
  label: "Device Field Action Tracker"
  description: "Tracks the status and effectiveness of field safety corrective actions for medical devices."
  tags:
    - quality
    - field-actions
    - regulatory
capability:
  exposes:
    - type: mcp
      namespace: field-actions
      port: 8080
      tools:
        - name: get-field-action-status
          description: "Get the status of a field safety corrective action."
          inputParameters:
            - name: action_number
              in: body
              type: string
              description: "The field action reference number."
          call: "qms-api.get-field-action"
          with:
            number: "{{action_number}}"
  consumes:
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: field-actions
          path: "/field-actions/{{number}}"
          inputParameters:
            - name: number
              in: path
          operations:
            - name: get-field-action
              method: GET

Updates device labeling by pulling specifications from the product database, generating label artwork requests in JIRA, and notifying regulatory.

naftiko: "0.5"
info:
  label: "Device Labeling Update Pipeline"
  description: "Updates device labeling by pulling specifications from the product database, generating label artwork requests in JIRA, and notifying regulatory."
  tags:
    - regulatory
    - product-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: run-device-labeling-update-pipeline
          description: "Updates device labeling by pulling specifications from the product database, generating label artwork requests in JIRA, and notifying regulatory."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Device Labeling Update Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves the full traceability record for a medical device lot number, including manufacturing date, components, and distribution history.

naftiko: "0.5"
info:
  label: "Device Lot Traceability Lookup"
  description: "Retrieves the full traceability record for a medical device lot number, including manufacturing date, components, and distribution history."
  tags:
    - manufacturing
    - traceability
    - quality
capability:
  exposes:
    - type: mcp
      namespace: traceability
      port: 8080
      tools:
        - name: get-lot-traceability
          description: "Look up the full traceability record for a device lot number."
          inputParameters:
            - name: lot_number
              in: body
              type: string
              description: "The manufacturing lot number."
          call: "manufacturing-api.get-lot"
          with:
            lot: "{{lot_number}}"
  consumes:
    - type: http
      namespace: manufacturing-api
      baseUri: "https://api.stryker.com/manufacturing/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_manufacturing_token"
      resources:
        - name: lots
          path: "/lots/{{lot}}/traceability"
          inputParameters:
            - name: lot
              in: path
          operations:
            - name: get-lot
              method: GET

Registers a new medical device by creating entries in the UDI database, filing with the FDA GUDID system, and updating the product catalog.

naftiko: "0.5"
info:
  label: "Device Registration Pipeline"
  description: "Registers a new medical device by creating entries in the UDI database, filing with the FDA GUDID system, and updating the product catalog."
  tags:
    - regulatory
    - product-management
    - fda
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: run-device-registration-pipeline
          description: "Registers a new medical device by creating entries in the UDI database, filing with the FDA GUDID system, and updating the product catalog."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Device Registration Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves sterilization validation records for a manufacturing batch from the sterilization tracking system.

naftiko: "0.5"
info:
  label: "Device Sterilization Record Lookup"
  description: "Retrieves sterilization validation records for a manufacturing batch from the sterilization tracking system."
  tags:
    - manufacturing
    - sterilization
    - quality
capability:
  exposes:
    - type: mcp
      namespace: sterilization
      port: 8080
      tools:
        - name: get-sterilization-record
          description: "Look up sterilization records for a manufacturing batch."
          inputParameters:
            - name: batch_number
              in: body
              type: string
              description: "The sterilization batch number."
          call: "manufacturing-api.get-sterilization"
          with:
            batch: "{{batch_number}}"
  consumes:
    - type: http
      namespace: manufacturing-api
      baseUri: "https://api.stryker.com/manufacturing/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_manufacturing_token"
      resources:
        - name: sterilization
          path: "/sterilization/{{batch}}"
          inputParameters:
            - name: batch
              in: path
          operations:
            - name: get-sterilization
              method: GET

Looks up a Unique Device Identifier in the FDA GUDID database to retrieve device identification and labeling information.

naftiko: "0.5"
info:
  label: "Device UDI Registry Lookup"
  description: "Looks up a Unique Device Identifier in the FDA GUDID database to retrieve device identification and labeling information."
  tags:
    - regulatory
    - udi
    - medical-devices
capability:
  exposes:
    - type: mcp
      namespace: udi-registry
      port: 8080
      tools:
        - name: lookup-udi
          description: "Look up a device by its UDI in the FDA GUDID database."
          inputParameters:
            - name: udi
              in: body
              type: string
              description: "The Unique Device Identifier string."
          call: "gudid.get-device"
          with:
            udi: "{{udi}}"
  consumes:
    - type: http
      namespace: gudid
      baseUri: "https://accessgudid.nlm.nih.gov/api/v3"
      authentication:
        type: apiKey
        key: "$secrets.gudid_api_key"
      resources:
        - name: devices
          path: "/devices/lookup?udi={{udi}}"
          inputParameters:
            - name: udi
              in: query
          operations:
            - name: get-device
              method: GET

Tracks the shipment status of medical device orders from the distribution center to the customer.

naftiko: "0.5"
info:
  label: "Distribution Shipment Tracker"
  description: "Tracks the shipment status of medical device orders from the distribution center to the customer."
  tags:
    - distribution
    - logistics
    - shipping
capability:
  exposes:
    - type: mcp
      namespace: distribution
      port: 8080
      tools:
        - name: track-shipment
          description: "Track the status of a medical device shipment by tracking number."
          inputParameters:
            - name: tracking_number
              in: body
              type: string
              description: "The shipment tracking number."
          call: "distribution-api.get-shipment"
          with:
            tracking: "{{tracking_number}}"
  consumes:
    - type: http
      namespace: distribution-api
      baseUri: "https://api.stryker.com/distribution/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_distribution_token"
      resources:
        - name: shipments
          path: "/shipments/{{tracking}}"
          inputParameters:
            - name: tracking
              in: path
          operations:
            - name: get-shipment
              method: GET

Queries Dynatrace for performance problems impacting manufacturing execution systems.

naftiko: "0.5"
info:
  label: "Dynatrace Manufacturing System Monitor"
  description: "Queries Dynatrace for performance problems impacting manufacturing execution systems."
  tags:
    - monitoring
    - dynatrace
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: mes-monitoring
      port: 8080
      tools:
        - name: get-mes-problems
          description: "Get active Dynatrace problems for manufacturing systems."
          inputParameters:
            - name: severity
              in: body
              type: string
              description: "Minimum severity level."
          call: "dynatrace.get-problems"
          with:
            severity: "{{severity}}"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://stryker.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: problems
          path: "/problems?problemSelector=status(\"OPEN\")&severityLevel={{severity}}"
          inputParameters:
            - name: severity
              in: query
          operations:
            - name: get-problems
              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: "Orchestrate the full onboarding sequence for a new Stryker employee."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID."
            - name: start_date
              in: body
              type: string
              description: "The start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Stryker, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://stryker.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

Processes employee transfers by updating Workday records, reassigning Azure AD group memberships, and notifying managers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Employee Transfer Orchestrator"
  description: "Processes employee transfers by updating Workday records, reassigning Azure AD group memberships, and notifying managers via Microsoft Teams."
  tags:
    - hr
    - workday
    - azure-ad
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: run-employee-transfer-orchestrator
          description: "Processes employee transfers by updating Workday records, reassigning Azure AD group memberships, and notifying managers via Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Employee Transfer Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages engineering releases by updating design files in Box, creating release notes in Confluence, and triggering manufacturing readiness reviews.

naftiko: "0.5"
info:
  label: "Engineering Release Pipeline"
  description: "Manages engineering releases by updating design files in Box, creating release notes in Confluence, and triggering manufacturing readiness reviews."
  tags:
    - engineering
    - box
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: run-engineering-release-pipeline
          description: "Manages engineering releases by updating design files in Box, creating release notes in Confluence, and triggering manufacturing readiness reviews."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Engineering Release Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves environmental monitoring data (temperature, humidity, particulate) for cleanroom manufacturing areas.

naftiko: "0.5"
info:
  label: "Environmental Monitoring Data"
  description: "Retrieves environmental monitoring data (temperature, humidity, particulate) for cleanroom manufacturing areas."
  tags:
    - manufacturing
    - environmental
    - quality
capability:
  exposes:
    - type: mcp
      namespace: environmental
      port: 8080
      tools:
        - name: get-cleanroom-data
          description: "Get environmental monitoring data for a cleanroom area."
          inputParameters:
            - name: room_id
              in: body
              type: string
              description: "The cleanroom identifier."
            - name: date_range
              in: body
              type: string
              description: "The date range (e.g., last_24h, last_7d)."
          call: "manufacturing-api.get-environmental"
          with:
            room: "{{room_id}}"
            range: "{{date_range}}"
  consumes:
    - type: http
      namespace: manufacturing-api
      baseUri: "https://api.stryker.com/manufacturing/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_manufacturing_token"
      resources:
        - name: environmental
          path: "/rooms/{{room}}/environmental?range={{range}}"
          inputParameters:
            - name: room
              in: path
            - name: range
              in: query
          operations:
            - name: get-environmental
              method: GET

Retrieves the calibration status and next due date for manufacturing and test equipment.

naftiko: "0.5"
info:
  label: "Equipment Calibration Status"
  description: "Retrieves the calibration status and next due date for manufacturing and test equipment."
  tags:
    - manufacturing
    - calibration
    - quality
capability:
  exposes:
    - type: mcp
      namespace: calibration
      port: 8080
      tools:
        - name: get-calibration-status
          description: "Check the calibration status of manufacturing equipment."
          inputParameters:
            - name: equipment_id
              in: body
              type: string
              description: "The equipment identifier."
          call: "manufacturing-api.get-calibration"
          with:
            id: "{{equipment_id}}"
  consumes:
    - type: http
      namespace: manufacturing-api
      baseUri: "https://api.stryker.com/manufacturing/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_manufacturing_token"
      resources:
        - name: calibration
          path: "/equipment/{{id}}/calibration"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-calibration
              method: GET

Generates ESG reports by pulling environmental data, social metrics from Workday, and governance data from ServiceNow, then publishing via SharePoint.

naftiko: "0.5"
info:
  label: "ESG Reporting Pipeline"
  description: "Generates ESG reports by pulling environmental data, social metrics from Workday, and governance data from ServiceNow, then publishing via SharePoint."
  tags:
    - sustainability
    - workday
    - servicenow
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: run-esg-reporting-pipeline
          description: "Generates ESG reports by pulling environmental data, social metrics from Workday, and governance data from ServiceNow, then publishing via SharePoint."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed ESG Reporting Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries the regulatory affairs system for the status of an FDA submission (510k, PMA, or De Novo) by submission number.

naftiko: "0.5"
info:
  label: "FDA Regulatory Submission Tracker"
  description: "Queries the regulatory affairs system for the status of an FDA submission (510k, PMA, or De Novo) by submission number."
  tags:
    - regulatory
    - fda
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: get-fda-submission-status
          description: "Look up the status of an FDA regulatory submission."
          inputParameters:
            - name: submission_number
              in: body
              type: string
              description: "The FDA submission number."
          call: "regulatory-api.get-submission"
          with:
            number: "{{submission_number}}"
  consumes:
    - type: http
      namespace: regulatory-api
      baseUri: "https://api.stryker.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_regulatory_token"
      resources:
        - name: submissions
          path: "/submissions/{{number}}"
          inputParameters:
            - name: number
              in: path
          operations:
            - name: get-submission
              method: GET

Dispatches field service engineers by matching skills from Workday, checking parts availability in SAP, and sending notifications via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Field Service Dispatch Orchestrator"
  description: "Dispatches field service engineers by matching skills from Workday, checking parts availability in SAP, and sending notifications via Microsoft Teams."
  tags:
    - operations
    - workday
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: run-field-service-dispatch-orchestrator
          description: "Dispatches field service engineers by matching skills from Workday, checking parts availability in SAP, and sending notifications via Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Field Service Dispatch Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves the latest commit status and CI check results for a GitHub repository.

naftiko: "0.5"
info:
  label: "GitHub Repository Status"
  description: "Retrieves the latest commit status and CI check results for a GitHub repository."
  tags:
    - engineering
    - github
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-repo-status
          description: "Look up the latest commit status for a GitHub repository."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The repository name in org/repo format."
          call: "github.get-status"
          with:
            repo_name: "{{repo_name}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: repos
          path: "/repos/{{repo_name}}/commits/main/status"
          inputParameters:
            - name: repo_name
              in: path
          operations:
            - name: get-status
              method: GET

Retrieves website traffic metrics from Google Analytics.

naftiko: "0.5"
info:
  label: "Google Analytics Traffic Report"
  description: "Retrieves website traffic metrics from Google Analytics."
  tags:
    - marketing
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: get-traffic-report
          description: "Look up Google Analytics traffic metrics."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "The Google Analytics property ID."
          call: "google-analytics.get-report"
          with:
            property_id: "{{property_id}}"
  consumes:
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: properties
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-report
              method: POST

Retrieves a file from Google Drive by file ID.

naftiko: "0.5"
info:
  label: "Google Drive File Retrieval"
  description: "Retrieves a file from Google Drive by file ID."
  tags:
    - collaboration
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-file
          description: "Retrieve a file from Google Drive by ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Google Drive file ID."
          call: "google-drive.get-file"
          with:
            file_id: "{{file_id}}"
  consumes:
    - type: http
      namespace: google-drive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              method: GET

Retrieves a contact record from HubSpot CRM by email address.

naftiko: "0.5"
info:
  label: "HubSpot Contact Lookup"
  description: "Retrieves a contact record from HubSpot CRM by email address."
  tags:
    - marketing
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: get-contact
          description: "Look up a HubSpot contact by email address."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "The contact email address."
          call: "hubspot.get-contact"
          with:
            email: "{{email}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/crm/v3/objects/contacts/{{email}}"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-contact
              method: GET

Tracks the registration status of implanted devices, linking patient implant records to product lot information.

naftiko: "0.5"
info:
  label: "Implant Registration Tracker"
  description: "Tracks the registration status of implanted devices, linking patient implant records to product lot information."
  tags:
    - medical-devices
    - implants
    - tracking
capability:
  exposes:
    - type: mcp
      namespace: implant-tracking
      port: 8080
      tools:
        - name: get-implant-registration
          description: "Track the registration status of an implanted device."
          inputParameters:
            - name: serial_number
              in: body
              type: string
              description: "The device serial number."
          call: "implant-api.get-registration"
          with:
            serial: "{{serial_number}}"
  consumes:
    - type: http
      namespace: implant-api
      baseUri: "https://api.stryker.com/implant-registry/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_implant_token"
      resources:
        - name: registrations
          path: "/registrations/{{serial}}"
          inputParameters:
            - name: serial
              in: path
          operations:
            - name: get-registration
              method: GET

Tracks implant surgery outcomes by pulling procedure data from hospital systems, matching to device registry, and updating outcomes in the clinical database.

naftiko: "0.5"
info:
  label: "Implant Surgery Outcome Tracker"
  description: "Tracks implant surgery outcomes by pulling procedure data from hospital systems, matching to device registry, and updating outcomes in the clinical database."
  tags:
    - clinical
    - product-management
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: clinical
      port: 8080
      tools:
        - name: run-implant-surgery-outcome-tracker
          description: "Tracks implant surgery outcomes by pulling procedure data from hospital systems, matching to device registry, and updating outcomes in the clinical database."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Implant Surgery Outcome Tracker for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages IT incident response by creating ServiceNow incidents, pulling monitoring data from Datadog, and escalating when severity is critical.

naftiko: "0.5"
info:
  label: "Incident Response Orchestrator"
  description: "Manages IT incident response by creating ServiceNow incidents, pulling monitoring data from Datadog, and escalating when severity is critical."
  tags:
    - it
    - servicenow
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: run-incident-response-orchestrator
          description: "Manages IT incident response by creating ServiceNow incidents, pulling monitoring data from Datadog, and escalating when severity is critical."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Incident Response Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Records the results of an incoming goods inspection in the QMS and updates the SAP goods receipt.

naftiko: "0.5"
info:
  label: "Incoming Goods Inspection Recorder"
  description: "Records the results of an incoming goods inspection in the QMS and updates the SAP goods receipt."
  tags:
    - quality
    - inspection
    - sap
capability:
  exposes:
    - type: mcp
      namespace: incoming-inspection
      port: 8080
      tools:
        - name: record-inspection-result
          description: "Record an incoming goods inspection result and update SAP."
          inputParameters:
            - name: delivery_number
              in: body
              type: string
              description: "The SAP delivery number."
            - name: inspection_result
              in: body
              type: string
              description: "The inspection result (pass, fail, conditional)."
            - name: notes
              in: body
              type: string
              description: "Inspection notes."
          steps:
            - name: record-in-qms
              type: call
              call: "qms-api.create-inspection-result"
              with:
                delivery: "{{delivery_number}}"
                result: "{{inspection_result}}"
                notes: "{{notes}}"
            - name: update-sap
              type: call
              call: "sap.update-goods-receipt"
              with:
                delivery: "{{delivery_number}}"
                quality_status: "{{inspection_result}}"
  consumes:
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: inspections
          path: "/inspections"
          operations:
            - name: create-inspection-result
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_INBOUND_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/A_InboundDelivery('{{delivery}}')"
          inputParameters:
            - name: delivery
              in: path
          operations:
            - name: update-goods-receipt
              method: PATCH

Retrieves current inventory levels for a material at a specified plant from SAP.

naftiko: "0.5"
info:
  label: "Inventory Level Checker"
  description: "Retrieves current inventory levels for a material at a specified plant from SAP."
  tags:
    - manufacturing
    - inventory
    - sap
capability:
  exposes:
    - type: mcp
      namespace: inventory
      port: 8080
      tools:
        - name: get-inventory-level
          description: "Check the current inventory level for a material at a plant."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: plant_code
              in: body
              type: string
              description: "The SAP plant code."
          call: "sap.get-stock"
          with:
            material: "{{material_number}}"
            plant: "{{plant_code}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: stock
          path: "/A_MatlStkInAcctMod?$filter=Material eq '{{material}}' and Plant eq '{{plant}}'"
          inputParameters:
            - name: material
              in: query
            - name: plant
              in: query
          operations:
            - name: get-stock
              method: GET

Monitors inventory levels in SAP and generates purchase requisitions when stock falls below reorder points, notifying procurement via email.

naftiko: "0.5"
info:
  label: "Inventory Reorder Orchestrator"
  description: "Monitors inventory levels in SAP and generates purchase requisitions when stock falls below reorder points, notifying procurement via email."
  tags:
    - supply-chain
    - sap
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: supply-chain
      port: 8080
      tools:
        - name: run-inventory-reorder-orchestrator
          description: "Monitors inventory levels in SAP and generates purchase requisitions when stock falls below reorder points, notifying procurement via email."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Inventory Reorder Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Provisions IT assets for new employees by creating Azure AD accounts, assigning Microsoft 365 licenses, and logging equipment in ServiceNow.

naftiko: "0.5"
info:
  label: "IT Asset Provisioning Orchestrator"
  description: "Provisions IT assets for new employees by creating Azure AD accounts, assigning Microsoft 365 licenses, and logging equipment in ServiceNow."
  tags:
    - it
    - azure-ad
    - servicenow
    - microsoft-365
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: run-it-asset-provisioning-orchestrator
          description: "Provisions IT assets for new employees by creating Azure AD accounts, assigning Microsoft 365 licenses, and logging equipment in ServiceNow."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed IT Asset Provisioning Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves detailed issue information from Jira including status, assignee, and comments.

naftiko: "0.5"
info:
  label: "Jira Issue Detail Viewer"
  description: "Retrieves detailed issue information from Jira including status, assignee, and comments."
  tags:
    - engineering
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-issue-detail
          description: "Look up a Jira issue by issue key."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://stryker.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET

Retrieves the current sprint issues from a Jira project board.

naftiko: "0.5"
info:
  label: "Jira Sprint Board Viewer"
  description: "Retrieves the current sprint issues from a Jira project board."
  tags:
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: project-mgmt
      port: 8080
      tools:
        - name: get-sprint-issues
          description: "Get all issues in the current sprint for a Jira project."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The Jira project key."
          call: "jira.search-issues"
          with:
            jql: "project={{project_key}} AND sprint in openSprints()"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://stryker.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search?jql={{jql}}"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET

Retrieves approved job requisitions from Workday and publishes them to LinkedIn Jobs.

naftiko: "0.5"
info:
  label: "LinkedIn Talent Pipeline Publisher"
  description: "Retrieves approved job requisitions from Workday and publishes them to LinkedIn Jobs."
  tags:
    - hr
    - recruiting
    - workday
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: recruiting
      port: 8080
      tools:
        - name: publish-job-to-linkedin
          description: "Pull a job requisition from Workday and publish it to LinkedIn."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday requisition ID."
          steps:
            - name: get-requisition
              type: call
              call: "workday.get-requisition"
              with:
                req_id: "{{requisition_id}}"
            - name: post-to-linkedin
              type: call
              call: "linkedin.create-job-post"
              with:
                title: "{{get-requisition.title}}"
                description: "{{get-requisition.description}}"
                location: "{{get-requisition.location}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/requisitions/{{req_id}}"
          inputParameters:
            - name: req_id
              in: path
          operations:
            - name: get-requisition
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-posts
          path: "/simpleJobPostings"
          operations:
            - name: create-job-post
              method: POST

Handles manufacturing deviations by creating records in the QMS, quarantining affected lots in SAP, and notifying quality via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Manufacturing Deviation Handler"
  description: "Handles manufacturing deviations by creating records in the QMS, quarantining affected lots in SAP, and notifying quality via Microsoft Teams."
  tags:
    - manufacturing
    - quality
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: manufacturing
      port: 8080
      tools:
        - name: run-manufacturing-deviation-handler
          description: "Handles manufacturing deviations by creating records in the QMS, quarantining affected lots in SAP, and notifying quality via Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Manufacturing Deviation Handler for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Calculates Overall Equipment Effectiveness (OEE) for a manufacturing line by pulling data from the MES and posting results to the operations Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Manufacturing Line Efficiency Dashboard"
  description: "Calculates Overall Equipment Effectiveness (OEE) for a manufacturing line by pulling data from the MES and posting results to the operations Microsoft Teams channel."
  tags:
    - manufacturing
    - analytics
    - microsoft-teams
    - oee
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-analytics
      port: 8080
      tools:
        - name: calculate-oee
          description: "Calculate OEE for a manufacturing line and post results to the ops channel."
          inputParameters:
            - name: line_id
              in: body
              type: string
              description: "The manufacturing line identifier."
            - name: shift_date
              in: body
              type: string
              description: "The shift date in YYYY-MM-DD format."
            - name: shift
              in: body
              type: string
              description: "The shift (day, evening, night)."
          steps:
            - name: get-production-data
              type: call
              call: "manufacturing-api.get-line-metrics"
              with:
                line: "{{line_id}}"
                date: "{{shift_date}}"
                shift: "{{shift}}"
            - name: post-results
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "manufacturing_ops"
                channel_id: "oee_reports"
                text: "OEE for Line {{line_id}} ({{shift}} shift, {{shift_date}}): Availability: {{get-production-data.availability}}%, Performance: {{get-production-data.performance}}%, Quality: {{get-production-data.quality}}%, OEE: {{get-production-data.oee}}%."
  consumes:
    - type: http
      namespace: manufacturing-api
      baseUri: "https://api.stryker.com/manufacturing/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_manufacturing_token"
      resources:
        - name: line-metrics
          path: "/lines/{{line}}/metrics?date={{date}}&shift={{shift}}"
          inputParameters:
            - name: line
              in: path
            - name: date
              in: query
            - name: shift
              in: query
          operations:
            - name: get-line-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_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves the current status of a manufacturing work order from SAP, including completion percentage, planned vs. actual quantities, and target dates.

naftiko: "0.5"
info:
  label: "Manufacturing Work Order Status"
  description: "Retrieves the current status of a manufacturing work order from SAP, including completion percentage, planned vs. actual quantities, and target dates."
  tags:
    - manufacturing
    - sap
    - production
capability:
  exposes:
    - type: mcp
      namespace: manufacturing
      port: 8080
      tools:
        - name: get-work-order-status
          description: "Look up a manufacturing work order status in SAP."
          inputParameters:
            - name: work_order_number
              in: body
              type: string
              description: "The SAP production order number."
          call: "sap.get-production-order"
          with:
            order_number: "{{work_order_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: production-orders
          path: "/A_ProductionOrder('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-production-order
              method: GET

Creates a Medical Device Report for an adverse event by gathering device and incident details, submitting to the regulatory system, and notifying the FDA liaison team.

naftiko: "0.5"
info:
  label: "MDR Adverse Event Report Orchestrator"
  description: "Creates a Medical Device Report for an adverse event by gathering device and incident details, submitting to the regulatory system, and notifying the FDA liaison team."
  tags:
    - regulatory
    - mdr
    - quality
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: mdr-reporting
      port: 8080
      tools:
        - name: submit-mdr
          description: "Create and submit an MDR adverse event report."
          inputParameters:
            - name: quality_event_id
              in: body
              type: string
              description: "The QMS quality event ID."
            - name: event_type
              in: body
              type: string
              description: "The adverse event type (death, serious_injury, malfunction)."
          steps:
            - name: get-event
              type: call
              call: "qms-api.get-event"
              with:
                id: "{{quality_event_id}}"
            - name: submit-report
              type: call
              call: "regulatory-api.submit-mdr"
              with:
                event_id: "{{quality_event_id}}"
                event_type: "{{event_type}}"
                product_code: "{{get-event.product_code}}"
                description: "{{get-event.description}}"
            - name: notify-fda-liaison
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "regulatory_affairs"
                channel_id: "mdr_reports"
                text: "MDR submitted: {{submit-report.mdr_number}}. Event: {{event_type}}. Product: {{get-event.product_name}}. Quality Event: {{quality_event_id}}."
  consumes:
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: events
          path: "/events/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-event
              method: GET
    - type: http
      namespace: regulatory-api
      baseUri: "https://api.stryker.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_regulatory_token"
      resources:
        - name: mdr
          path: "/mdr/submit"
          operations:
            - name: submit-mdr
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Sends an email message via Microsoft Outlook Graph API.

naftiko: "0.5"
info:
  label: "Microsoft Outlook Email Sender"
  description: "Sends an email message via Microsoft Outlook Graph API."
  tags:
    - communications
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: send-email
          description: "Send an email via Microsoft Outlook."
          inputParameters:
            - name: recipient
              in: body
              type: string
              description: "The recipient email address."
          call: "outlook.send-email"
          with:
            recipient: "{{recipient}}"
  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-email
              method: POST

Triggers a Microsoft Power Automate flow for automated quality and manufacturing workflows.

naftiko: "0.5"
info:
  label: "Microsoft Power Automate Workflow Trigger"
  description: "Triggers a Microsoft Power Automate flow for automated quality and manufacturing workflows."
  tags:
    - automation
    - microsoft-power-automate
    - quality
capability:
  exposes:
    - type: mcp
      namespace: automation
      port: 8080
      tools:
        - name: trigger-quality-flow
          description: "Trigger a Power Automate flow for quality management automation."
          inputParameters:
            - name: flow_id
              in: body
              type: string
              description: "The Power Automate flow ID."
            - name: flow_inputs
              in: body
              type: object
              description: "The input parameters for the flow."
          call: "power-automate.trigger-flow"
          with:
            flow_id: "{{flow_id}}"
            inputs: "{{flow_inputs}}"
  consumes:
    - type: http
      namespace: power-automate
      baseUri: "https://api.flow.microsoft.com/providers/Microsoft.ProcessSimple"
      authentication:
        type: bearer
        token: "$secrets.power_automate_token"
      resources:
        - name: flows
          path: "/environments/Default/flows/{{flow_id}}/triggers/manual/run"
          inputParameters:
            - name: flow_id
              in: path
          operations:
            - name: trigger-flow
              method: POST

Sends a quality alert to a specified Microsoft Teams channel for urgent quality notifications.

naftiko: "0.5"
info:
  label: "Microsoft Teams Quality Alert"
  description: "Sends a quality alert to a specified Microsoft Teams channel for urgent quality notifications."
  tags:
    - quality
    - microsoft-teams
    - alerts
capability:
  exposes:
    - type: mcp
      namespace: quality-alerts
      port: 8080
      tools:
        - name: send-quality-alert
          description: "Send a quality alert to the quality assurance Teams channel."
          inputParameters:
            - name: alert_title
              in: body
              type: string
              description: "The alert title."
            - name: alert_message
              in: body
              type: string
              description: "The alert body text."
            - name: severity
              in: body
              type: string
              description: "The alert severity (critical, major, minor)."
          call: "msteams.send-channel-message"
          with:
            team_id: "quality_assurance"
            channel_id: "alerts"
            text: "[{{severity}}] {{alert_title}}: {{alert_message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves application performance metrics from New Relic for Stryker digital health applications.

naftiko: "0.5"
info:
  label: "New Relic Application Performance"
  description: "Retrieves application performance metrics from New Relic for Stryker digital health applications."
  tags:
    - monitoring
    - new-relic
    - performance
capability:
  exposes:
    - type: mcp
      namespace: apm
      port: 8080
      tools:
        - name: get-app-performance
          description: "Get performance metrics for a Stryker application from New Relic."
          inputParameters:
            - name: app_name
              in: body
              type: string
              description: "The application name in New Relic."
          call: "newrelic.get-app-summary"
          with:
            app: "{{app_name}}"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications.json?filter[name]={{app}}"
          inputParameters:
            - name: app
              in: query
          operations:
            - name: get-app-summary
              method: GET

Creates a non-conformance report in the QMS, links it to the SAP production order, creates a Jira investigation task, and notifies quality engineers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Non-Conformance Report Orchestrator"
  description: "Creates a non-conformance report in the QMS, links it to the SAP production order, creates a Jira investigation task, and notifies quality engineers via Microsoft Teams."
  tags:
    - quality
    - non-conformance
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: ncr-mgmt
      port: 8080
      tools:
        - name: create-ncr
          description: "Create a non-conformance report with cross-system tracking."
          inputParameters:
            - name: production_order
              in: body
              type: string
              description: "The SAP production order number."
            - name: defect_type
              in: body
              type: string
              description: "The type of non-conformance."
            - name: description
              in: body
              type: string
              description: "Description of the non-conformance."
            - name: severity
              in: body
              type: string
              description: "The severity level (critical, major, minor)."
          steps:
            - name: get-order
              type: call
              call: "sap.get-production-order"
              with:
                order_number: "{{production_order}}"
            - name: create-ncr-record
              type: call
              call: "qms-api.create-ncr"
              with:
                production_order: "{{production_order}}"
                product: "{{get-order.material_number}}"
                defect_type: "{{defect_type}}"
                description: "{{description}}"
                severity: "{{severity}}"
            - name: create-investigation
              type: call
              call: "jira.create-issue"
              with:
                project: "NCR"
                summary: "NCR-{{create-ncr-record.ncr_number}}: {{defect_type}} on {{get-order.material_number}}"
                description: "Production Order: {{production_order}}. Severity: {{severity}}. {{description}}"
                issuetype: "Bug"
            - name: notify-team
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "quality_engineering"
                channel_id: "ncrs"
                text: "NCR {{create-ncr-record.ncr_number}}: {{defect_type}} ({{severity}}) on {{get-order.material_description}}. Jira: {{create-investigation.key}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: production-orders
          path: "/A_ProductionOrder('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-production-order
              method: GET
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: ncrs
          path: "/non-conformances"
          operations:
            - name: create-ncr
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://stryker.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves cloud infrastructure cost summary from Oracle Cloud for a given time period.

naftiko: "0.5"
info:
  label: "Oracle Cloud Cost Lookup"
  description: "Retrieves cloud infrastructure cost summary from Oracle Cloud for a given time period."
  tags:
    - finance
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: finance
      port: 8080
      tools:
        - name: get-cloud-cost
          description: "Look up Oracle Cloud infrastructure costs for a date range."
          inputParameters:
            - 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: "oracle-cloud.get-cost"
          with:
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
  consumes:
    - type: http
      namespace: oracle-cloud
      baseUri: "https://usageapi.us-ashburn-1.oci.oraclecloud.com/20200107"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: usage
          path: "/usage"
          operations:
            - name: get-cost
              method: POST

Monitors post-market device performance by aggregating complaint data from Salesforce and adverse event reports, generating trend reports.

naftiko: "0.5"
info:
  label: "Post-Market Surveillance Pipeline"
  description: "Monitors post-market device performance by aggregating complaint data from Salesforce and adverse event reports, generating trend reports."
  tags:
    - regulatory
    - salesforce
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: run-post-market-surveillance-pipeline
          description: "Monitors post-market device performance by aggregating complaint data from Salesforce and adverse event reports, generating trend reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Post-Market Surveillance Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Triggers a dataset refresh in Power BI for the specified dataset.

naftiko: "0.5"
info:
  label: "Power BI Report Refresh"
  description: "Triggers a dataset refresh in Power BI for the specified dataset."
  tags:
    - analytics
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: refresh-dataset
          description: "Trigger a Power BI dataset refresh."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "power-bi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

When a product complaint is received in Salesforce, creates a quality event in the QMS, opens a ServiceNow ticket for investigation, and notifies the quality team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Product Complaint Intake Orchestrator"
  description: "When a product complaint is received in Salesforce, creates a quality event in the QMS, opens a ServiceNow ticket for investigation, and notifies the quality team via Microsoft Teams."
  tags:
    - quality
    - complaints
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: complaint-intake
      port: 8080
      tools:
        - name: process-product-complaint
          description: "Process a product complaint from Salesforce intake through QMS event creation, investigation ticket, and team notification."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "The Salesforce case ID for the complaint."
          steps:
            - name: get-case
              type: call
              call: "salesforce.get-case"
              with:
                case_id: "{{case_id}}"
            - name: create-quality-event
              type: call
              call: "qms-api.create-event"
              with:
                product_code: "{{get-case.product_code}}"
                complaint_type: "{{get-case.complaint_type}}"
                description: "{{get-case.description}}"
                reporter: "{{get-case.contact_name}}"
            - name: open-investigation
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Product complaint: {{get-case.product_name}} - {{get-case.complaint_type}}"
                category: "quality_investigation"
                priority: "{{get-case.severity}}"
                description: "QMS Event: {{create-quality-event.event_number}}. Product: {{get-case.product_name}}. Lot: {{get-case.lot_number}}. Description: {{get-case.description}}"
            - name: notify-team
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "quality_assurance"
                channel_id: "complaints"
                text: "New complaint: {{get-case.product_name}} ({{get-case.complaint_type}}). QMS: {{create-quality-event.event_number}}. Investigation: {{open-investigation.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://stryker.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: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://stryker.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Validates product launch readiness by checking regulatory approval status, verifying inventory in SAP, and confirming sales training completion.

naftiko: "0.5"
info:
  label: "Product Launch Readiness Orchestrator"
  description: "Validates product launch readiness by checking regulatory approval status, verifying inventory in SAP, and confirming sales training completion."
  tags:
    - product-management
    - regulatory
    - sap
    - pluralsight
capability:
  exposes:
    - type: mcp
      namespace: product-management
      port: 8080
      tools:
        - name: run-product-launch-readiness-orchestrator
          description: "Validates product launch readiness by checking regulatory approval status, verifying inventory in SAP, and confirming sales training completion."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Product Launch Readiness Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Processes a product recall by updating the QMS, generating an MDR report, notifying affected hospitals via MailChimp, and alerting the regulatory team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Product Recall Notification Orchestrator"
  description: "Processes a product recall by updating the QMS, generating an MDR report, notifying affected hospitals via MailChimp, and alerting the regulatory team via Microsoft Teams."
  tags:
    - quality
    - recalls
    - regulatory
    - mailchimp
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: recalls
      port: 8080
      tools:
        - name: process-recall
          description: "Execute a product recall notification workflow across QMS, email, and team alerts."
          inputParameters:
            - name: product_code
              in: body
              type: string
              description: "The product code being recalled."
            - name: lot_numbers
              in: body
              type: array
              description: "List of affected lot numbers."
            - name: recall_reason
              in: body
              type: string
              description: "The reason for the recall."
            - name: recall_class
              in: body
              type: string
              description: "The recall classification (Class I, II, or III)."
          steps:
            - name: create-recall-event
              type: call
              call: "qms-api.create-recall"
              with:
                product_code: "{{product_code}}"
                lots: "{{lot_numbers}}"
                reason: "{{recall_reason}}"
                class: "{{recall_class}}"
            - name: get-affected-customers
              type: call
              call: "distribution-api.get-customers-by-lots"
              with:
                lots: "{{lot_numbers}}"
            - name: send-notifications
              type: call
              call: "mailchimp.send-bulk-transactional"
              with:
                template_name: "product_recall_notice"
                recipients: "{{get-affected-customers.contact_emails}}"
                merge_vars:
                  product_name: "{{create-recall-event.product_name}}"
                  recall_class: "{{recall_class}}"
                  reason: "{{recall_reason}}"
            - name: alert-regulatory
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "regulatory_affairs"
                channel_id: "recalls"
                text: "RECALL: {{create-recall-event.product_name}} ({{recall_class}}). {{get-affected-customers.count}} facilities affected. Recall #: {{create-recall-event.recall_number}}."
  consumes:
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: recalls
          path: "/recalls"
          operations:
            - name: create-recall
              method: POST
    - type: http
      namespace: distribution-api
      baseUri: "https://api.stryker.com/distribution/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_distribution_token"
      resources:
        - name: customers
          path: "/customers/by-lots"
          operations:
            - name: get-customers-by-lots
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-bulk-transactional
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves the upcoming internal quality audit schedule from the QMS.

naftiko: "0.5"
info:
  label: "Quality Audit Schedule Viewer"
  description: "Retrieves the upcoming internal quality audit schedule from the QMS."
  tags:
    - quality
    - audits
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: audit-schedule
      port: 8080
      tools:
        - name: get-audit-schedule
          description: "Get the upcoming quality audit schedule for a facility or product line."
          inputParameters:
            - name: facility_code
              in: body
              type: string
              description: "The facility code."
            - name: date_range
              in: body
              type: string
              description: "The date range (e.g., next_30_days, next_quarter)."
          call: "qms-api.get-audits"
          with:
            facility: "{{facility_code}}"
            range: "{{date_range}}"
  consumes:
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: audits
          path: "/audits?facility={{facility}}&range={{range}}"
          inputParameters:
            - name: facility
              in: query
            - name: range
              in: query
          operations:
            - name: get-audits
              method: GET

When a regulatory change is identified, assesses impacted products by querying the product registry, creates assessment tasks in Jira, and documents the impact in Confluence.

naftiko: "0.5"
info:
  label: "Regulatory Change Impact Assessment Orchestrator"
  description: "When a regulatory change is identified, assesses impacted products by querying the product registry, creates assessment tasks in Jira, and documents the impact in Confluence."
  tags:
    - regulatory
    - compliance
    - jira
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: regulatory-change
      port: 8080
      tools:
        - name: assess-regulatory-change
          description: "Assess the impact of a regulatory change on Stryker products and create tracking tasks."
          inputParameters:
            - name: regulation_id
              in: body
              type: string
              description: "The regulation identifier or reference."
            - name: change_description
              in: body
              type: string
              description: "Description of the regulatory change."
            - name: affected_classifications
              in: body
              type: array
              description: "List of affected device classifications."
          steps:
            - name: find-affected-products
              type: call
              call: "regulatory-api.search-products"
              with:
                classifications: "{{affected_classifications}}"
            - name: create-assessment-epic
              type: call
              call: "jira.create-issue"
              with:
                project: "REGCHANGE"
                summary: "Regulatory Change: {{regulation_id}}"
                description: "{{change_description}}. Affected products: {{find-affected-products.count}}."
                issuetype: "Epic"
            - name: document-impact
              type: call
              call: "confluence.create-page"
              with:
                space_key: "REGULATORY"
                title: "Impact Assessment: {{regulation_id}}"
                body: "Regulation: {{regulation_id}}\nChange: {{change_description}}\nAffected Products: {{find-affected-products.product_names}}\nJira Epic: {{create-assessment-epic.key}}"
  consumes:
    - type: http
      namespace: regulatory-api
      baseUri: "https://api.stryker.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_regulatory_token"
      resources:
        - name: products
          path: "/products/search"
          operations:
            - name: search-products
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://stryker.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://stryker.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

Retrieves usage and diagnostic logs for a Mako robotic surgery system by system serial number.

naftiko: "0.5"
info:
  label: "Robotic Surgery System Log Retrieval"
  description: "Retrieves usage and diagnostic logs for a Mako robotic surgery system by system serial number."
  tags:
    - medical-devices
    - robotics
    - diagnostics
capability:
  exposes:
    - type: mcp
      namespace: mako-diagnostics
      port: 8080
      tools:
        - name: get-mako-logs
          description: "Retrieve usage and diagnostic logs for a Mako system."
          inputParameters:
            - name: system_serial
              in: body
              type: string
              description: "The Mako system serial number."
            - name: log_type
              in: body
              type: string
              description: "The log type (usage, diagnostic, error)."
          call: "device-api.get-logs"
          with:
            serial: "{{system_serial}}"
            type: "{{log_type}}"
  consumes:
    - type: http
      namespace: device-api
      baseUri: "https://api.stryker.com/connected-devices/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_device_api_token"
      resources:
        - name: logs
          path: "/systems/{{serial}}/logs?type={{type}}"
          inputParameters:
            - name: serial
              in: path
            - name: type
              in: query
          operations:
            - name: get-logs
              method: GET

Searches for a hospital or healthcare facility account in Salesforce CRM.

naftiko: "0.5"
info:
  label: "Salesforce Hospital Account Lookup"
  description: "Searches for a hospital or healthcare facility account in Salesforce CRM."
  tags:
    - sales
    - salesforce
    - healthcare
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: search-hospital-account
          description: "Search for a hospital account in Salesforce by name."
          inputParameters:
            - name: hospital_name
              in: body
              type: string
              description: "The hospital or facility name."
          call: "salesforce.search-accounts"
          with:
            query: "{{hospital_name}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://stryker.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/search?q={{query}}"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-accounts
              method: GET

Retrieves the current sales opportunity pipeline from Salesforce for a specified product line or region.

naftiko: "0.5"
info:
  label: "Salesforce Sales Opportunity Pipeline"
  description: "Retrieves the current sales opportunity pipeline from Salesforce for a specified product line or region."
  tags:
    - sales
    - salesforce
    - pipeline
capability:
  exposes:
    - type: mcp
      namespace: sales-pipeline
      port: 8080
      tools:
        - name: get-opportunity-pipeline
          description: "Get the sales opportunity pipeline from Salesforce."
          inputParameters:
            - name: product_line
              in: body
              type: string
              description: "The product line (e.g., MedSurg, Neurotechnology, Orthopaedics)."
          call: "salesforce.query-opportunities"
          with:
            product_line: "{{product_line}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://stryker.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/query?q=SELECT+Name,Amount,StageName+FROM+Opportunity+WHERE+Product_Line__c='{{product_line}}'"
          inputParameters:
            - name: product_line
              in: query
          operations:
            - name: query-opportunities
              method: GET

Retrieves a travel expense report from SAP Concur by report ID.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Lookup"
  description: "Retrieves a travel expense report from SAP Concur by report ID."
  tags:
    - finance
    - sap-concur
    - expenses
capability:
  exposes:
    - type: mcp
      namespace: expenses
      port: 8080
      tools:
        - name: get-expense-report
          description: "Look up a travel expense report in SAP Concur."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
          call: "concur.get-report"
          with:
            id: "{{report_id}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-report
              method: GET

Retrieves cost center details from SAP by cost center ID.

naftiko: "0.5"
info:
  label: "SAP Cost Center Lookup"
  description: "Retrieves cost center details from SAP by cost center ID."
  tags:
    - finance
    - sap
capability:
  exposes:
    - type: mcp
      namespace: finance
      port: 8080
      tools:
        - name: get-cost-center
          description: "Look up a SAP cost center by ID."
          inputParameters:
            - name: cost_center_id
              in: body
              type: string
              description: "The SAP cost center ID."
          call: "sap.get-cost-center"
          with:
            cost_center_id: "{{cost_center_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_COSTCENTER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: cost-centers
          path: "/A_CostCenter('{{cost_center_id}}')"
          inputParameters:
            - name: cost_center_id
              in: path
          operations:
            - name: get-cost-center
              method: GET

Looks up a goods receipt document in SAP by material document number.

naftiko: "0.5"
info:
  label: "SAP Goods Receipt Lookup"
  description: "Looks up a goods receipt document in SAP by material document number."
  tags:
    - procurement
    - sap
    - warehouse
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-goods-receipt
          description: "Look up a SAP goods receipt by material document number."
          inputParameters:
            - name: doc_number
              in: body
              type: string
              description: "The SAP material document number."
          call: "sap.get-goods-receipt"
          with:
            doc_number: "{{doc_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: material-documents
          path: "/A_MaterialDocumentHeader('{{doc_number}}')"
          inputParameters:
            - name: doc_number
              in: path
          operations:
            - name: get-goods-receipt
              method: GET

Retrieves material master data from SAP for a specified material number, including description, unit of measure, and classification.

naftiko: "0.5"
info:
  label: "SAP Material Master Lookup"
  description: "Retrieves material master data from SAP for a specified material number, including description, unit of measure, and classification."
  tags:
    - manufacturing
    - sap
    - materials
capability:
  exposes:
    - type: mcp
      namespace: materials
      port: 8080
      tools:
        - name: get-material-master
          description: "Look up SAP material master data by material number."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
          call: "sap.get-material"
          with:
            material: "{{material_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.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}}')"
          inputParameters:
            - name: material
              in: path
          operations:
            - name: get-material
              method: GET

Retrieves a plant maintenance order from SAP by order number.

naftiko: "0.5"
info:
  label: "SAP Plant Maintenance Order"
  description: "Retrieves a plant maintenance order from SAP by order number."
  tags:
    - manufacturing
    - sap
capability:
  exposes:
    - type: mcp
      namespace: manufacturing
      port: 8080
      tools:
        - name: get-maintenance-order
          description: "Look up a SAP plant maintenance order."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "The SAP maintenance order number."
          call: "sap.get-maintenance-order"
          with:
            order_number: "{{order_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_MAINTORDER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: maintenance-orders
          path: "/MaintenanceOrder('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-maintenance-order
              method: GET

Retrieves the status and details of a production order from SAP.

naftiko: "0.5"
info:
  label: "SAP Production Order Status"
  description: "Retrieves the status and details of a production order from SAP."
  tags:
    - manufacturing
    - sap
capability:
  exposes:
    - type: mcp
      namespace: manufacturing
      port: 8080
      tools:
        - name: get-production-order
          description: "Look up a SAP production order by order number."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "The SAP production order number."
          call: "sap.get-production-order"
          with:
            order_number: "{{order_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_PRODUCTION_ORDERS"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: production-orders
          path: "/A_ProductionOrder('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-production-order
              method: GET

Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, and total value.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, and total value."
  tags:
    - procurement
    - sap
    - finance
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP purchase order by PO number."
          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://sap.stryker.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 vendor master data from SAP by vendor number.

naftiko: "0.5"
info:
  label: "SAP Vendor Master Lookup"
  description: "Retrieves vendor master data from SAP by vendor number."
  tags:
    - procurement
    - sap
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-vendor
          description: "Look up a SAP vendor by vendor number."
          inputParameters:
            - name: vendor_number
              in: body
              type: string
              description: "The SAP vendor number."
          call: "sap.get-vendor"
          with:
            vendor_number: "{{vendor_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vendors
          path: "/A_Supplier('{{vendor_number}}')"
          inputParameters:
            - name: vendor_number
              in: path
          operations:
            - name: get-vendor
              method: GET

Retrieves the current status of a ServiceNow incident by number.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Status"
  description: "Retrieves the current status of a ServiceNow incident by number."
  tags:
    - it-support
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-support
      port: 8080
      tools:
        - name: get-incident-status
          description: "Look up a ServiceNow incident by number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://stryker.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{number}}"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves Standard Operating Procedure documents from the SharePoint quality document library.

naftiko: "0.5"
info:
  label: "SharePoint SOP Document Retrieval"
  description: "Retrieves Standard Operating Procedure documents from the SharePoint quality document library."
  tags:
    - quality
    - sharepoint
    - documents
capability:
  exposes:
    - type: mcp
      namespace: sop-library
      port: 8080
      tools:
        - name: get-sop-document
          description: "Retrieve an SOP document from SharePoint."
          inputParameters:
            - name: sop_number
              in: body
              type: string
              description: "The SOP document number."
          call: "sharepoint.get-document"
          with:
            site_id: "quality_docs"
            file_path: "SOPs/{{sop_number}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: documents
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-document
              method: GET

Sends a message to a specified Slack channel.

naftiko: "0.5"
info:
  label: "Slack Channel Message Sender"
  description: "Sends a message to a specified Slack channel."
  tags:
    - communications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: send-slack-message
          description: "Send a message to a Slack channel."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "The Slack channel ID."
          call: "slack.post-message"
          with:
            channel_id: "{{channel_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Runs a quality metrics query in Snowflake to retrieve product defect rates and trends.

naftiko: "0.5"
info:
  label: "Snowflake Quality Metrics Query"
  description: "Runs a quality metrics query in Snowflake to retrieve product defect rates and trends."
  tags:
    - quality
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: quality
      port: 8080
      tools:
        - name: query-quality-metrics
          description: "Run a quality metrics query in Snowflake."
          inputParameters:
            - name: product_line
              in: body
              type: string
              description: "The product line to query metrics for."
          call: "snowflake.run-query"
          with:
            product_line: "{{product_line}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://stryker.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries SolarWinds for the health status of network devices at Stryker manufacturing facilities.

naftiko: "0.5"
info:
  label: "SolarWinds Network Monitor"
  description: "Queries SolarWinds for the health status of network devices at Stryker manufacturing facilities."
  tags:
    - infrastructure
    - solarwinds
    - network
capability:
  exposes:
    - type: mcp
      namespace: network-health
      port: 8080
      tools:
        - name: get-facility-network-health
          description: "Get network device health from SolarWinds for a manufacturing facility."
          inputParameters:
            - name: facility_code
              in: body
              type: string
              description: "The facility code."
          call: "solarwinds.get-node-status"
          with:
            group: "{{facility_code}}"
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://solarwinds.stryker.com/SolarWinds/InformationService/v3/Json"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: nodes
          path: "/Query?query=SELECT+NodeName,Status+FROM+Orion.Nodes+WHERE+GroupName='{{group}}'"
          inputParameters:
            - name: group
              in: query
          operations:
            - name: get-node-status
              method: GET

Searches Splunk for security events matching a given query within a time range.

naftiko: "0.5"
info:
  label: "Splunk Security Event Search"
  description: "Searches Splunk for security events matching a given query within a time range."
  tags:
    - security
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: search-security-events
          description: "Search Splunk for security events by query string."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The Splunk search query."
          call: "splunk.search-events"
          with:
            search_query: "{{search_query}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.stryker.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: search-events
              method: POST

Generates a supplier audit report by pulling audit findings from the QMS, supplier performance from SAP, and publishing the report to SharePoint.

naftiko: "0.5"
info:
  label: "Supplier Audit Report Generator"
  description: "Generates a supplier audit report by pulling audit findings from the QMS, supplier performance from SAP, and publishing the report to SharePoint."
  tags:
    - quality
    - suppliers
    - sap
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: supplier-audit
      port: 8080
      tools:
        - name: generate-supplier-audit-report
          description: "Generate a comprehensive supplier audit report and publish to SharePoint."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The supplier identifier."
            - name: audit_id
              in: body
              type: string
              description: "The audit identifier."
          steps:
            - name: get-audit-findings
              type: call
              call: "qms-api.get-audit-findings"
              with:
                audit: "{{audit_id}}"
            - name: get-supplier-data
              type: call
              call: "sap.get-supplier"
              with:
                supplier: "{{supplier_id}}"
            - name: publish-report
              type: call
              call: "sharepoint.update-file"
              with:
                site_id: "supplier_quality"
                file_path: "AuditReports/{{supplier_id}}_{{audit_id}}.json"
                content:
                  supplier: "{{get-supplier-data}}"
                  findings: "{{get-audit-findings}}"
  consumes:
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: audit-findings
          path: "/audits/{{audit}}/findings"
          inputParameters:
            - name: audit
              in: path
          operations:
            - name: get-audit-findings
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: suppliers
          path: "/A_Supplier('{{supplier}}')"
          inputParameters:
            - name: supplier
              in: path
          operations:
            - name: get-supplier
              method: GET
    - 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}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: update-file
              method: PUT

Initiates supplier corrective actions by creating findings in the QMS, notifying vendors via email, and tracking response deadlines in ServiceNow.

naftiko: "0.5"
info:
  label: "Supplier Corrective Action Pipeline"
  description: "Initiates supplier corrective actions by creating findings in the QMS, notifying vendors via email, and tracking response deadlines in ServiceNow."
  tags:
    - quality
    - supplier-management
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: quality
      port: 8080
      tools:
        - name: run-supplier-corrective-action-pipeline
          description: "Initiates supplier corrective actions by creating findings in the QMS, notifying vendors via email, and tracking response deadlines in ServiceNow."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Supplier Corrective Action Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Generates quarterly supplier reviews by aggregating delivery data from SAP, quality data from the QMS, and distributing scorecards via email.

naftiko: "0.5"
info:
  label: "Supplier Performance Review Orchestrator"
  description: "Generates quarterly supplier reviews by aggregating delivery data from SAP, quality data from the QMS, and distributing scorecards via email."
  tags:
    - procurement
    - sap
    - quality
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-supplier-performance-review-orchestrator
          description: "Generates quarterly supplier reviews by aggregating delivery data from SAP, quality data from the QMS, and distributing scorecards via email."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Supplier Performance Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a supplier's quality performance scorecard including defect rates, on-time delivery, and audit results from the supplier quality system.

naftiko: "0.5"
info:
  label: "Supplier Quality Scorecard"
  description: "Retrieves a supplier's quality performance scorecard including defect rates, on-time delivery, and audit results from the supplier quality system."
  tags:
    - quality
    - suppliers
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: supplier-quality
      port: 8080
      tools:
        - name: get-supplier-scorecard
          description: "Get a supplier's quality performance scorecard."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The supplier identifier."
          call: "supplier-api.get-scorecard"
          with:
            id: "{{supplier_id}}"
  consumes:
    - type: http
      namespace: supplier-api
      baseUri: "https://api.stryker.com/supplier-quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_supplier_quality_token"
      resources:
        - name: scorecards
          path: "/suppliers/{{id}}/scorecard"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-scorecard
              method: GET

Schedules surgical cases by verifying instrument set availability, confirming surgeon preferences, and notifying the logistics team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Surgical Case Scheduling Pipeline"
  description: "Schedules surgical cases by verifying instrument set availability, confirming surgeon preferences, and notifying the logistics team via Microsoft Teams."
  tags:
    - operations
    - logistics
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: run-surgical-case-scheduling-pipeline
          description: "Schedules surgical cases by verifying instrument set availability, confirming surgeon preferences, and notifying the logistics team via Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Surgical Case Scheduling Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves the bill of materials for a surgical instrument set, showing all components and their quantities.

naftiko: "0.5"
info:
  label: "Surgical Instrument Set Configuration"
  description: "Retrieves the bill of materials for a surgical instrument set, showing all components and their quantities."
  tags:
    - manufacturing
    - sap
    - product-configuration
capability:
  exposes:
    - type: mcp
      namespace: product-config
      port: 8080
      tools:
        - name: get-instrument-set-bom
          description: "Get the bill of materials for a surgical instrument set."
          inputParameters:
            - name: set_material
              in: body
              type: string
              description: "The material number for the instrument set."
          call: "sap.get-bom"
          with:
            material: "{{set_material}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.stryker.com/sap/opu/odata/sap/API_BILL_OF_MATERIAL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: bom
          path: "/MaterialBOM?$filter=Material eq '{{material}}'"
          inputParameters:
            - name: material
              in: query
          operations:
            - name: get-bom
              method: GET

Retrieves quality metrics visualizations from Tableau dashboards for management review.

naftiko: "0.5"
info:
  label: "Tableau Quality Dashboard Lookup"
  description: "Retrieves quality metrics visualizations from Tableau dashboards for management review."
  tags:
    - analytics
    - tableau
    - quality
capability:
  exposes:
    - type: mcp
      namespace: quality-dashboards
      port: 8080
      tools:
        - name: get-quality-dashboard
          description: "Get quality metrics data from a Tableau dashboard."
          inputParameters:
            - name: workbook_name
              in: body
              type: string
              description: "The Tableau workbook name."
            - name: view_name
              in: body
              type: string
              description: "The view (dashboard) name within the workbook."
          call: "tableau.get-view-data"
          with:
            workbook: "{{workbook_name}}"
            view: "{{view_name}}"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://tableau.stryker.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: views
          path: "/sites/{{site_id}}/workbooks/{{workbook}}/views/{{view}}/data"
          inputParameters:
            - name: workbook
              in: path
            - name: view
              in: path
          operations:
            - name: get-view-data
              method: GET

Executes a SQL query against the Teradata data warehouse.

naftiko: "0.5"
info:
  label: "Teradata Warehouse Query"
  description: "Executes a SQL query against the Teradata data warehouse."
  tags:
    - analytics
    - teradata
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-warehouse-query
          description: "Execute a query against Teradata."
          inputParameters:
            - name: query_text
              in: body
              type: string
              description: "The SQL query to execute."
          call: "teradata.run-query"
          with:
            query_text: "{{query_text}}"
  consumes:
    - type: http
      namespace: teradata
      baseUri: "https://teradata.stryker.com/api/query/v1"
      authentication:
        type: bearer
        token: "$secrets.teradata_token"
      resources:
        - name: queries
          path: "/execute"
          operations:
            - name: run-query
              method: POST

Audits training records by cross-referencing Workday employee data with Pluralsight completion records and generating gap reports in Power BI.

naftiko: "0.5"
info:
  label: "Training Record Audit Orchestrator"
  description: "Audits training records by cross-referencing Workday employee data with Pluralsight completion records and generating gap reports in Power BI."
  tags:
    - hr
    - workday
    - pluralsight
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: run-training-record-audit-orchestrator
          description: "Audits training records by cross-referencing Workday employee data with Pluralsight completion records and generating gap reports in Power BI."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Training Record Audit Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves the execution status of a validation protocol (IQ/OQ/PQ) from the validation management system.

naftiko: "0.5"
info:
  label: "Validation Protocol Status"
  description: "Retrieves the execution status of a validation protocol (IQ/OQ/PQ) from the validation management system."
  tags:
    - quality
    - validation
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: validation
      port: 8080
      tools:
        - name: get-validation-status
          description: "Get the execution status of a validation protocol."
          inputParameters:
            - name: protocol_number
              in: body
              type: string
              description: "The validation protocol number."
          call: "qms-api.get-validation"
          with:
            protocol: "{{protocol_number}}"
  consumes:
    - type: http
      namespace: qms-api
      baseUri: "https://api.stryker.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_qms_token"
      resources:
        - name: validations
          path: "/validations/{{protocol}}"
          inputParameters:
            - name: protocol
              in: path
          operations:
            - name: get-validation
              method: GET

Orchestrates new vendor onboarding by creating vendor records in SAP, setting up quality agreements in the QMS, and notifying procurement via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Vendor Onboarding Orchestrator"
  description: "Orchestrates new vendor onboarding by creating vendor records in SAP, setting up quality agreements in the QMS, and notifying procurement via Microsoft Teams."
  tags:
    - procurement
    - sap
    - quality
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-vendor-onboarding-orchestrator
          description: "Orchestrates new vendor onboarding by creating vendor records in SAP, setting up quality agreements in the QMS, and notifying procurement via Microsoft Teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Vendor Onboarding Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Executes warehouse cycle counts by pulling expected inventory from SAP, recording actual counts, and generating variance reports in Power BI.

naftiko: "0.5"
info:
  label: "Warehouse Cycle Count Pipeline"
  description: "Executes warehouse cycle counts by pulling expected inventory from SAP, recording actual counts, and generating variance reports in Power BI."
  tags:
    - warehouse
    - sap
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: warehouse
      port: 8080
      tools:
        - name: run-warehouse-cycle-count-pipeline
          description: "Executes warehouse cycle counts by pulling expected inventory from SAP, recording actual counts, and generating variance reports in Power BI."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Warehouse Cycle Count Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.stryker.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.stryker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.stryker_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves compensation details for an employee from Workday.

naftiko: "0.5"
info:
  label: "Workday Compensation Lookup"
  description: "Retrieves compensation details for an employee from Workday."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-compensation
          description: "Look up employee compensation in Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-compensation"
          with:
            worker_id: "{{worker_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/service/stryker/Compensation/v40.1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}/compensationPlans"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-compensation
              method: GET

Retrieves employee information from Workday by employee ID.

naftiko: "0.5"
info:
  label: "Workday Employee Lookup"
  description: "Retrieves employee information from Workday by employee ID."
  tags:
    - hr
    - workday
    - directory
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-employee
          description: "Look up a Stryker employee in Workday by ID."
          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

Retrieves job requisition details from Workday by requisition ID.

naftiko: "0.5"
info:
  label: "Workday Job Requisition Viewer"
  description: "Retrieves job requisition details from Workday by requisition ID."
  tags:
    - hr
    - workday
    - recruiting
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-job-requisition
          description: "Look up a Workday job requisition by ID."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday job requisition ID."
          call: "workday.get-requisition"
          with:
            requisition_id: "{{requisition_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/service/stryker/Recruiting/v40.1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/jobRequisitions/{{requisition_id}}"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-requisition
              method: GET

Retrieves a support ticket from Zendesk by ticket ID.

naftiko: "0.5"
info:
  label: "Zendesk Support Ticket Lookup"
  description: "Retrieves a support ticket from Zendesk by ticket ID."
  tags:
    - customer-service
    - zendesk
capability:
  exposes:
    - type: mcp
      namespace: customer-service
      port: 8080
      tools:
        - name: get-ticket
          description: "Look up a Zendesk support ticket by ID."
          inputParameters:
            - name: ticket_id
              in: body
              type: string
              description: "The Zendesk ticket ID."
          call: "zendesk.get-ticket"
          with:
            ticket_id: "{{ticket_id}}"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://stryker.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-ticket
              method: GET