Stryker Capabilities
Naftiko 0.5 capability definitions for Stryker - 100 capabilities showing integration workflows and service orchestrations.
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