Nike Capabilities
Naftiko 0.5 capability definitions for Nike - 100 capabilities showing integration workflows and service orchestrations.
Pulls Nike.com traffic metrics from Adobe Analytics into Snowflake, refreshes Power BI dashboards, and distributes daily digests via Microsoft Teams.
naftiko: "0.5"
info:
label: "Adobe Analytics Nike.com Traffic Digest"
description: "Pulls Nike.com traffic metrics from Adobe Analytics into Snowflake, refreshes Power BI dashboards, and distributes daily digests via Microsoft Teams."
tags:
- analytics
- adobe-analytics
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: adobe_analytics_nike
port: 8080
tools:
- name: adobe-analytics
description: "Given an execution date, run the adobe analytics nike.com traffic digest process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.ADOBE_ANALYTICS_NIKE_COM_TRAFFIC_DIGEST LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.ADOBE_ANALYTICS_NIKE_COM_TRAFF_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_adobe_analytics_nike_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls weekly product campaign performance metrics from Adobe Analytics and posts a digest to the digital marketing team's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Adobe Analytics Product Campaign Digest"
description: "Pulls weekly product campaign performance metrics from Adobe Analytics and posts a digest to the digital marketing team's Microsoft Teams channel."
tags:
- marketing
- analytics
- adobe-analytics
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: digest-campaign-analytics
description: "Given an Adobe Analytics report suite ID and date range, fetch product campaign performance metrics and post a summary to the digital marketing Teams channel. Use for weekly campaign reviews."
inputParameters:
- name: report_suite_id
in: body
type: string
description: "The Adobe Analytics report suite ID."
- name: date_from
in: body
type: string
description: "Report start date in YYYY-MM-DD format."
- name: date_to
in: body
type: string
description: "Report end date in YYYY-MM-DD format."
steps:
- name: get-metrics
type: call
call: "adobe-analytics.get-report"
with:
report_suite_id: "{{report_suite_id}}"
date_from: "{{date_from}}"
date_to: "{{date_to}}"
- name: post-digest
type: call
call: "msteams-mkt.post-message"
with:
channel_id: "$secrets.digital_mkt_channel_id"
text: "Campaign Analytics ({{date_from}}–{{date_to}}): Visits={{get-metrics.visits}}, Conversions={{get-metrics.conversions}}, Revenue={{get-metrics.revenue}}"
consumes:
- type: http
namespace: adobe-analytics
baseUri: "https://analytics.adobe.io/api/{{report_suite_id}}"
authentication:
type: bearer
token: "$secrets.adobe_analytics_token"
resources:
- name: reports
path: "/reports"
inputParameters:
- name: report_suite_id
in: path
- name: date_from
in: query
- name: date_to
in: query
operations:
- name: get-report
method: POST
- type: http
namespace: msteams-mkt
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: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves product catalog entries from Airtable.
naftiko: "0.5"
info:
label: "Airtable Product Catalog Lookup"
description: "Retrieves product catalog entries from Airtable."
tags:
- product-management
- airtable
- catalog
capability:
exposes:
- type: mcp
namespace: product-catalog
port: 8080
tools:
- name: get-record
description: "Given an Airtable base and record ID, retrieve catalog entry. Use for product lookups."
inputParameters:
- name: base_id
in: body
type: string
description: "The Airtable base ID."
- name: record_id
in: body
type: string
description: "The record ID."
call: "airtable.get-record"
with:
base_id: "{{base_id}}"
record_id: "{{record_id}}"
outputParameters:
- name: product_name
type: string
mapping: "$.fields.Name"
- name: sku
type: string
mapping: "$.fields.SKU"
consumes:
- type: http
namespace: airtable
baseUri: "https://api.airtable.com/v0"
authentication:
type: bearer
token: "$secrets.airtable_token"
resources:
- name: records
path: "/{{base_id}}/Products/{{record_id}}"
inputParameters:
- name: base_id
in: path
- name: record_id
in: path
operations:
- name: get-record
method: GET
Tracks product sample status from Airtable, logs updates in Snowflake, creates Jira tasks for overdue samples, and notifies the product development team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Airtable Sample Tracking Workflow"
description: "Tracks product sample status from Airtable, logs updates in Snowflake, creates Jira tasks for overdue samples, and notifies the product development team via Microsoft Teams."
tags:
- product-development
- airtable
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: airtable_sample_trac
port: 8080
tools:
- name: airtable-sample
description: "Given an execution date, run the airtable sample tracking workflow process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.AIRTABLE_SAMPLE_TRACKING_WORKFLOW LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.AIRTABLE_SAMPLE_TRACKING_WORKF_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Airtable Sample Tracking Workflow - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_airtable_sample_trac_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates product descriptions using the Anthropic API, stores in Snowflake, creates Jira review tasks, and notifies the content team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Anthropic Product Content Generator"
description: "Generates product descriptions using the Anthropic API, stores in Snowflake, creates Jira review tasks, and notifies the content team via Microsoft Teams."
tags:
- ai
- anthropic
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: anthropic_product_co
port: 8080
tools:
- name: anthropic-product
description: "Given an execution date, run the anthropic product content generator process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.ANTHROPIC_PRODUCT_CONTENT_GENERATOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.ANTHROPIC_PRODUCT_CONTENT_GENE_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Anthropic Product Content Generator - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_anthropic_product_co_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Submits product attributes to Anthropic Claude to generate SEO-optimized product descriptions, then updates the product record in Salesforce with the generated content.
naftiko: "0.5"
info:
label: "Anthropic Product Description Generator"
description: "Submits product attributes to Anthropic Claude to generate SEO-optimized product descriptions, then updates the product record in Salesforce with the generated content."
tags:
- ai
- content
- anthropic
- salesforce
- e-commerce
capability:
exposes:
- type: mcp
namespace: ai-content
port: 8080
tools:
- name: generate-product-description
description: "Given a product ID, category, and key attributes, generate an SEO-optimized product description using Anthropic Claude and update the Salesforce product record. Use for bulk product catalog updates or new product launches."
inputParameters:
- name: product_id
in: body
type: string
description: "The Salesforce product ID to update."
- name: product_name
in: body
type: string
description: "The product name."
- name: attributes
in: body
type: string
description: "Comma-separated product attributes (e.g., color, material, technology)."
- name: category
in: body
type: string
description: "Product category (e.g., Running Shoes, Training Apparel)."
steps:
- name: generate-description
type: call
call: "anthropic.create-message"
with:
model: "claude-3-5-sonnet-20241022"
content: "Write a compelling 2-3 sentence SEO-optimized product description for a {{category}} named {{product_name}} with these attributes: {{attributes}}."
- name: update-product
type: call
call: "salesforce-product.update-product"
with:
product_id: "{{product_id}}"
description: "{{generate-description.text}}"
consumes:
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: salesforce-product
baseUri: "https://nike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: products
path: "/sobjects/Product2/{{product_id}}"
inputParameters:
- name: product_id
in: path
operations:
- name: update-product
method: PATCH
When an Apache Airflow DAG fails, logs error details in Snowflake, creates a ServiceNow incident, and alerts the data engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Apache Airflow DAG Failure Handler"
description: "When an Apache Airflow DAG fails, logs error details in Snowflake, creates a ServiceNow incident, and alerts the data engineering team via Microsoft Teams."
tags:
- data-engineering
- apache-airflow
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: apache_airflow_dag_f
port: 8080
tools:
- name: apache-airflow
description: "Given an execution date, run the apache airflow dag failure handler process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.APACHE_AIRFLOW_DAG_FAILURE_HANDLER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.APACHE_AIRFLOW_DAG_FAILURE_HAN_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "data-engineering"
short_description: "Apache Airflow DAG Failure Handler processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_apache_airflow_dag_f_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors athlete endorsement contract milestones in Snowflake, flags upcoming renewals, creates Jira tasks, and notifies the sports marketing team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Athlete Endorsement Contract Tracker"
description: "Monitors athlete endorsement contract milestones in Snowflake, flags upcoming renewals, creates Jira tasks, and notifies the sports marketing team via Microsoft Teams."
tags:
- marketing
- contracts
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athlete_endorsement_
port: 8080
tools:
- name: athlete-endorsement
description: "Given an execution date, run the athlete endorsement contract tracker process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.ATHLETE_ENDORSEMENT_CONTRACT_TRACKER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.ATHLETE_ENDORSEMENT_CONTRACT_T_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Athlete Endorsement Contract Tracker - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_athlete_endorsement__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When AWS Cost Explorer detects a spending anomaly, creates a Jira FinOps review ticket and posts an alert to the cloud cost Microsoft Teams channel.
naftiko: "0.5"
info:
label: "AWS Cloud Cost Anomaly Alert"
description: "When AWS Cost Explorer detects a spending anomaly, creates a Jira FinOps review ticket and posts an alert to the cloud cost Microsoft Teams channel."
tags:
- cloud
- finops
- aws
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given an AWS service name, anomaly ID, and estimated excess cost, create a Jira cost-review task and notify the FinOps Teams channel. Invoke when AWS Cost Anomaly Detection fires."
inputParameters:
- name: anomaly_id
in: body
type: string
description: "The AWS Cost Explorer anomaly detection ID."
- name: service_name
in: body
type: string
description: "The AWS service name experiencing the anomaly."
- name: excess_cost_usd
in: body
type: number
description: "The estimated excess spend in USD."
steps:
- name: create-review-ticket
type: call
call: "jira-finops.create-issue"
with:
project_key: "FINOPS"
issuetype: "Task"
summary: "AWS cost anomaly: {{service_name}} — ${{excess_cost_usd}}"
description: "Anomaly ID: {{anomaly_id}}\nEstimated excess: ${{excess_cost_usd}}"
- name: alert-finops
type: call
call: "msteams-finops.post-message"
with:
channel_id: "$secrets.finops_channel_id"
text: "Cost Anomaly: {{service_name}} | ${{excess_cost_usd}} excess | Jira: {{create-review-ticket.key}}"
consumes:
- type: http
namespace: jira-finops
baseUri: "https://nike.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-finops
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: channel_id
in: path
operations:
- name: post-message
method: POST
Monitors AWS Lambda function errors in Snowflake, creates ServiceNow incidents for recurring failures, and alerts the cloud engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "AWS Lambda Function Error Handler"
description: "Monitors AWS Lambda function errors in Snowflake, creates ServiceNow incidents for recurring failures, and alerts the cloud engineering team via Microsoft Teams."
tags:
- cloud
- amazon-web-services
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aws_lambda_function_
port: 8080
tools:
- name: aws-lambda
description: "Given an execution date, run the aws lambda function error handler process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.AWS_LAMBDA_FUNCTION_ERROR_HANDLER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.AWS_LAMBDA_FUNCTION_ERROR_HAND_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "cloud"
short_description: "AWS Lambda Function Error Handler processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_aws_lambda_function__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Axway API gateway traffic patterns in Snowflake, flags anomalies, creates ServiceNow incidents, and alerts the API platform team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Axway API Gateway Traffic Monitor"
description: "Monitors Axway API gateway traffic patterns in Snowflake, flags anomalies, creates ServiceNow incidents, and alerts the API platform team via Microsoft Teams."
tags:
- api-management
- axway
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: axway_api_gateway_tr
port: 8080
tools:
- name: axway-api
description: "Given an execution date, run the axway api gateway traffic monitor process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.AXWAY_API_GATEWAY_TRAFFIC_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.AXWAY_API_GATEWAY_TRAFFIC_MONI_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "api-management"
short_description: "Axway API Gateway Traffic Monitor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_axway_api_gateway_tr_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Azure Data Factory pipelines in Snowflake, logs execution metrics, creates ServiceNow incidents for failures, and alerts the data team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Azure Data Factory Pipeline Monitor"
description: "Monitors Azure Data Factory pipelines in Snowflake, logs execution metrics, creates ServiceNow incidents for failures, and alerts the data team via Microsoft Teams."
tags:
- data-engineering
- azure-data-factory
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_data_factory_p
port: 8080
tools:
- name: azure-data
description: "Given an execution date, run the azure data factory pipeline monitor process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.AZURE_DATA_FACTORY_PIPELINE_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.AZURE_DATA_FACTORY_PIPELINE_MO_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "data-engineering"
short_description: "Azure Data Factory Pipeline Monitor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_azure_data_factory_p_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks the health status of a specified Azure resource.
naftiko: "0.5"
info:
label: "Azure Resource Health Check"
description: "Checks the health status of a specified Azure resource."
tags:
- cloud
- microsoft-azure
- infrastructure
capability:
exposes:
- type: mcp
namespace: cloud
port: 8080
tools:
- name: get-resource-health
description: "Given an Azure resource ID, check availability. Use for infrastructure monitoring."
inputParameters:
- name: resource_id
in: body
type: string
description: "The Azure resource ID."
call: "azure.get-resource-health"
with:
resource_id: "{{resource_id}}"
outputParameters:
- name: availability_state
type: string
mapping: "$.properties.availabilityState"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: resource-health
path: "/{{resource_id}}/providers/Microsoft.ResourceHealth/availabilityStatuses/current"
inputParameters:
- name: resource_id
in: path
operations:
- name: get-resource-health
method: GET
Retrieves a Canva design by ID, returning title, status, and last edit time.
naftiko: "0.5"
info:
label: "Canva Design Asset Lookup"
description: "Retrieves a Canva design by ID, returning title, status, and last edit time."
tags:
- design
- canva
- creative
capability:
exposes:
- type: mcp
namespace: creative
port: 8080
tools:
- name: get-design
description: "Given a Canva design ID, retrieve details. Use for creative asset management."
inputParameters:
- name: design_id
in: body
type: string
description: "The Canva design ID."
call: "canva.get-design"
with:
design_id: "{{design_id}}"
outputParameters:
- name: title
type: string
mapping: "$.design.title"
- name: status
type: string
mapping: "$.design.status"
consumes:
- type: http
namespace: canva
baseUri: "https://api.canva.com/rest/v1"
authentication:
type: bearer
token: "$secrets.canva_token"
resources:
- name: designs
path: "/designs/{{design_id}}"
inputParameters:
- name: design_id
in: path
operations:
- name: get-design
method: GET
Retrieves a Confluence page by ID.
naftiko: "0.5"
info:
label: "Confluence Page Lookup"
description: "Retrieves a Confluence page by ID."
tags:
- documentation
- confluence
- knowledge-management
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: get-page
description: "Given a Confluence page ID, retrieve details. Use for documentation reviews."
inputParameters:
- name: page_id
in: body
type: string
description: "The Confluence page ID."
call: "confluence.get-page"
with:
page_id: "{{page_id}}"
outputParameters:
- name: title
type: string
mapping: "$.title"
consumes:
- type: http
namespace: confluence
baseUri: "https://nike.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content/{{page_id}}"
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
Routes Coupa procurement requests based on category rules in Snowflake, creates Jira approval tasks, and notifies the procurement team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Coupa Procurement Request Router"
description: "Routes Coupa procurement requests based on category rules in Snowflake, creates Jira approval tasks, and notifies the procurement team via Microsoft Teams."
tags:
- procurement
- coupa
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: coupa_procurement_re
port: 8080
tools:
- name: coupa-procurement
description: "Given an execution date, run the coupa procurement request router process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.COUPA_PROCUREMENT_REQUEST_ROUTER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.COUPA_PROCUREMENT_REQUEST_ROUT_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Coupa Procurement Request Router - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_coupa_procurement_re_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs product recommendation models in Databricks, stores predictions in Snowflake, and notifies the data science team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Databricks Product Recommendation Pipeline"
description: "Runs product recommendation models in Databricks, stores predictions in Snowflake, and notifies the data science team via Microsoft Teams."
tags:
- data-science
- databricks
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: databricks_product_r
port: 8080
tools:
- name: databricks-product
description: "Given an execution date, run the databricks product recommendation pipeline process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.DATABRICKS_PRODUCT_RECOMMENDATION_PIPELI LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.DATABRICKS_PRODUCT_RECOMMENDAT_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_databricks_product_r_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Datadog for service health status.
naftiko: "0.5"
info:
label: "Datadog Service Health Check"
description: "Queries Datadog for service health status."
tags:
- monitoring
- datadog
- observability
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-service-health
description: "Given a Datadog service name, retrieve health status. Use for operational checks."
inputParameters:
- name: service_name
in: body
type: string
description: "The Datadog service name."
call: "datadog.get-service-health"
with:
service_name: "{{service_name}}"
outputParameters:
- name: status
type: string
mapping: "$.data.attributes.status"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: services
path: "/service_level_objectives?query={{service_name}}"
inputParameters:
- name: service_name
in: query
operations:
- name: get-service-health
method: GET
Fetches SLO compliance metrics from Datadog and posts a weekly service health report to the technology leadership Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Datadog SLO Compliance Weekly Report"
description: "Fetches SLO compliance metrics from Datadog and posts a weekly service health report to the technology leadership Microsoft Teams channel."
tags:
- observability
- slo
- datadog
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: publish-slo-report
description: "Query Datadog for all SLO statuses and post a weekly compliance report to the technology leadership Teams channel. Use for weekly engineering reviews and executive technology briefings."
steps:
- name: get-slos
type: call
call: "datadog-slo.list-slos"
- name: post-report
type: call
call: "msteams-slo.post-message"
with:
channel_id: "$secrets.tech_leadership_channel_id"
text: "Weekly SLO Report: {{get-slos.count}} SLOs monitored. See Datadog for full compliance details."
consumes:
- type: http
namespace: datadog-slo
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: slos
path: "/slo"
operations:
- name: list-slos
method: GET
- type: http
namespace: msteams-slo
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: channel_id
in: path
operations:
- name: post-message
method: POST
Scans Docker container images for vulnerabilities via Snowflake data, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Docker Container Vulnerability Scanner"
description: "Scans Docker container images for vulnerabilities via Snowflake data, creates Jira remediation tickets, and alerts the security team via Microsoft Teams."
tags:
- security
- docker
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: docker_container_vul
port: 8080
tools:
- name: docker-container
description: "Given an execution date, run the docker container vulnerability scanner process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.DOCKER_CONTAINER_VULNERABILITY_SCANNER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.DOCKER_CONTAINER_VULNERABILITY_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Docker Container Vulnerability Scanner - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_docker_container_vul_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks DocuSign contract execution status, logs in Snowflake, creates Jira follow-up tasks for unsigned contracts, and notifies the legal team via Microsoft Teams.
naftiko: "0.5"
info:
label: "DocuSign Contract Execution Tracker"
description: "Tracks DocuSign contract execution status, logs in Snowflake, creates Jira follow-up tasks for unsigned contracts, and notifies the legal team via Microsoft Teams."
tags:
- legal
- docusign
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: docusign_contract_ex
port: 8080
tools:
- name: docusign-contract
description: "Given an execution date, run the docusign contract execution tracker process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.DOCUSIGN_CONTRACT_EXECUTION_TRACKER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.DOCUSIGN_CONTRACT_EXECUTION_TR_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "DocuSign Contract Execution Tracker - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_docusign_contract_ex_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a user session from DynamoDB for the Nike digital platform.
naftiko: "0.5"
info:
label: "DynamoDB Session Lookup"
description: "Retrieves a user session from DynamoDB for the Nike digital platform."
tags:
- data
- dynamodb
- e-commerce
capability:
exposes:
- type: mcp
namespace: session-mgmt
port: 8080
tools:
- name: get-session
description: "Given a session ID, retrieve session data from DynamoDB. Use for customer experience investigations."
inputParameters:
- name: session_id
in: body
type: string
description: "The session ID."
call: "dynamodb.get-item"
with:
session_id: "{{session_id}}"
outputParameters:
- name: user_id
type: string
mapping: "$.Item.user_id.S"
- name: platform
type: string
mapping: "$.Item.platform.S"
consumes:
- type: http
namespace: dynamodb
baseUri: "https://dynamodb.us-east-1.amazonaws.com"
authentication:
type: apikey
key: "X-Amz-Security-Token"
value: "$secrets.aws_session_token"
placement: header
resources:
- name: items
path: "/"
operations:
- name: get-item
method: POST
Monitors nike.com checkout conversion rates in Snowflake, flags drops below threshold, creates ServiceNow incidents, and alerts the digital commerce team via Microsoft Teams.
naftiko: "0.5"
info:
label: "E-Commerce Checkout Conversion Monitor"
description: "Monitors nike.com checkout conversion rates in Snowflake, flags drops below threshold, creates ServiceNow incidents, and alerts the digital commerce team via Microsoft Teams."
tags:
- e-commerce
- analytics
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ecommerce_checkout_c
port: 8080
tools:
- name: ecommerce-checkout
description: "Given an execution date, run the e-commerce checkout conversion monitor process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.ECOMMERCE_CHECKOUT_CONVERSION_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.ECOMMERCE_CHECKOUT_CONVERSION__RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "e-commerce"
short_description: "E-Commerce Checkout Conversion Monitor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_ecommerce_checkout_c_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a termination is confirmed in Workday, deactivates Okta access, disables the Microsoft 365 account, closes open ServiceNow tickets, and notifies the manager via Teams.
naftiko: "0.5"
info:
label: "Employee Offboarding and Access Revocation"
description: "When a termination is confirmed in Workday, deactivates Okta access, disables the Microsoft 365 account, closes open ServiceNow tickets, and notifies the manager via Teams."
tags:
- hr
- offboarding
- workday
- okta
- microsoft-365
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday employee ID, deactivate their Okta account, disable Microsoft 365 access, and notify the manager in Teams. Invoke when HR confirms a termination in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the departing employee."
- name: termination_date
in: body
type: string
description: "The employee's last day in YYYY-MM-DD format."
steps:
- name: get-employee
type: call
call: "workday-off.get-worker"
with:
worker_id: "{{employee_id}}"
- name: deactivate-okta
type: call
call: "okta-off.deactivate-user"
with:
login: "{{get-employee.work_email}}"
- name: disable-m365
type: call
call: "msgraph-off.disable-user"
with:
user_upn: "{{get-employee.work_email}}"
- name: notify-manager
type: call
call: "msteams-off.send-message"
with:
recipient_upn: "{{get-employee.manager_email}}"
text: "Offboarding complete for {{get-employee.full_name}} (last day: {{termination_date}}). All system access has been revoked."
consumes:
- type: http
namespace: workday-off
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/nike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta-off
baseUri: "https://nike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-lifecycle
path: "/users/{{login}}/lifecycle/deactivate"
inputParameters:
- name: login
in: path
operations:
- name: deactivate-user
method: POST
- type: http
namespace: msgraph-off
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_upn}}"
inputParameters:
- name: user_upn
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: msteams-off
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Validates Figma design files against Nike brand guidelines in Snowflake, flags non-compliant assets, creates Jira remediation tasks, and notifies the brand team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Figma Brand Asset Compliance Checker"
description: "Validates Figma design files against Nike brand guidelines in Snowflake, flags non-compliant assets, creates Jira remediation tasks, and notifies the brand team via Microsoft Teams."
tags:
- design
- figma
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: figma_brand_asset_co
port: 8080
tools:
- name: figma-brand
description: "Given an execution date, run the figma brand asset compliance checker process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.FIGMA_BRAND_ASSET_COMPLIANCE_CHECKER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.FIGMA_BRAND_ASSET_COMPLIANCE_C_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Figma Brand Asset Compliance Checker - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_figma_brand_asset_co_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves metadata for a Figma design file.
naftiko: "0.5"
info:
label: "Figma Design File Lookup"
description: "Retrieves metadata for a Figma design file."
tags:
- design
- figma
- creative
capability:
exposes:
- type: mcp
namespace: design
port: 8080
tools:
- name: get-design-file
description: "Given a Figma file key, retrieve metadata. Use for design review workflows."
inputParameters:
- name: file_key
in: body
type: string
description: "The Figma file key."
call: "figma.get-file"
with:
file_key: "{{file_key}}"
outputParameters:
- name: name
type: string
mapping: "$.name"
- name: last_modified
type: string
mapping: "$.lastModified"
consumes:
- type: http
namespace: figma
baseUri: "https://api.figma.com/v1"
authentication:
type: bearer
token: "$secrets.figma_token"
resources:
- name: files
path: "/files/{{file_key}}"
inputParameters:
- name: file_key
in: path
operations:
- name: get-file
method: GET
On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a Datadog deployment event, and alerts the engineering team in Microsoft Teams.
naftiko: "0.5"
info:
label: "GitHub CI/CD Pipeline Failure Response"
description: "On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a Datadog deployment event, and alerts the engineering team in Microsoft Teams."
tags:
- devops
- ci-cd
- github
- jira
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-ci
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a GitHub Actions run ID, repository, branch, failing job, and commit SHA, open a Jira bug, create a Datadog deployment event, and alert the engineering Teams channel. Invoke on any protected-branch workflow failure."
inputParameters:
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
- name: repository
in: body
type: string
description: "The GitHub repository in owner/repo format."
- name: branch
in: body
type: string
description: "The branch that failed."
- name: job_name
in: body
type: string
description: "The failed job name."
- name: commit_sha
in: body
type: string
description: "The commit SHA that triggered the run."
steps:
- name: create-bug
type: call
call: "jira.create-issue"
with:
project_key: "TECH"
issuetype: "Bug"
summary: "[CI Failure] {{repository}} / {{branch}} — {{job_name}}"
- name: create-dd-event
type: call
call: "datadog-ci.create-event"
with:
title: "CI Failure: {{repository}} {{branch}}"
alert_type: "error"
tags: "repo:{{repository}},branch:{{branch}}"
- name: alert-engineering
type: call
call: "msteams-ci.post-message"
with:
channel_id: "$secrets.engineering_channel_id"
text: "Build Failure: {{repository}} | Branch: {{branch}} | Job: {{job_name}} | Jira: {{create-bug.key}}"
consumes:
- type: http
namespace: jira
baseUri: "https://nike.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: datadog-ci
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: msteams-ci
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: channel_id
in: path
operations:
- name: post-message
method: POST
Tracks GitHub Copilot usage and adoption metrics in Snowflake, computes productivity gains, and distributes reports to engineering leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "GitHub Copilot Adoption Tracker"
description: "Tracks GitHub Copilot usage and adoption metrics in Snowflake, computes productivity gains, and distributes reports to engineering leadership via Microsoft Teams."
tags:
- devops
- github-copilot
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_copilot_adopt
port: 8080
tools:
- name: github-copilot
description: "Given an execution date, run the github copilot adoption tracker process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.GITHUB_COPILOT_ADOPTION_TRACKER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.GITHUB_COPILOT_ADOPTION_TRACKE_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_github_copilot_adopt_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes GitHub Dependabot alerts, logs in Snowflake, creates Jira remediation tickets, and notifies the security engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "GitHub Dependabot Alert Triage"
description: "Processes GitHub Dependabot alerts, logs in Snowflake, creates Jira remediation tickets, and notifies the security engineering team via Microsoft Teams."
tags:
- security
- github
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_dependabot_al
port: 8080
tools:
- name: github-dependabot
description: "Given an execution date, run the github dependabot alert triage process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.GITHUB_DEPENDABOT_ALERT_TRIAGE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.GITHUB_DEPENDABOT_ALERT_TRIAGE_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "GitHub Dependabot Alert Triage - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_github_dependabot_al_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves metadata for a GitHub repository.
naftiko: "0.5"
info:
label: "GitHub Repository Info Lookup"
description: "Retrieves metadata for a GitHub repository."
tags:
- devops
- github
- source-control
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-repo-info
description: "Given org and repo name, retrieve metadata. Use for developer onboarding."
inputParameters:
- name: org
in: body
type: string
description: "The GitHub organization."
- name: repo
in: body
type: string
description: "The repository name."
call: "github.get-repo"
with:
org: "{{org}}"
repo: "{{repo}}"
outputParameters:
- name: full_name
type: string
mapping: "$.full_name"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{org}}/{{repo}}"
inputParameters:
- name: org
in: path
- name: repo
in: path
operations:
- name: get-repo
method: GET
Audits Google Tag Manager tags on Nike.com for compliance, logs in Snowflake, and notifies the web analytics team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Google Tag Manager Nike.com Audit"
description: "Audits Google Tag Manager tags on Nike.com for compliance, logs in Snowflake, and notifies the web analytics team via Microsoft Teams."
tags:
- analytics
- google-tag-manager
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: google_tag_manager_n
port: 8080
tools:
- name: google-tag
description: "Given an execution date, run the google tag manager nike.com audit process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.GOOGLE_TAG_MANAGER_NIKE_COM_AUDIT LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.GOOGLE_TAG_MANAGER_NIKE_COM_AU_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_google_tag_manager_n_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Jira issue by key.
naftiko: "0.5"
info:
label: "Jira Issue Lookup"
description: "Retrieves a Jira issue by key."
tags:
- project-management
- jira
- issue-tracking
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: get-issue
description: "Given a Jira issue key, retrieve details. Use for status updates."
inputParameters:
- name: issue_key
in: body
type: string
description: "The Jira issue key."
call: "jira.get-issue"
with:
issue_key: "{{issue_key}}"
outputParameters:
- name: summary
type: string
mapping: "$.fields.summary"
- name: status
type: string
mapping: "$.fields.status.name"
consumes:
- type: http
namespace: jira
baseUri: "https://nike.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
Fetches the active sprint from Jira for a given project, summarizes open, in-progress, and done issues, and posts the report to the engineering team's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Jira Sprint Status Report"
description: "Fetches the active sprint from Jira for a given project, summarizes open, in-progress, and done issues, and posts the report to the engineering team's Microsoft Teams channel."
tags:
- devops
- agile
- jira
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sprint-reporting
port: 8080
tools:
- name: get-sprint-status
description: "Given a Jira project key, fetch the active sprint and summarize issues by status, then post to the engineering Teams channel. Use for daily standups or weekly sprint reviews."
inputParameters:
- name: project_key
in: body
type: string
description: "The Jira project key (e.g., TECH, PLATFORM)."
steps:
- name: get-active-sprint
type: call
call: "jira-sprint.get-active-sprint"
with:
project_key: "{{project_key}}"
- name: search-sprint-issues
type: call
call: "jira-sprint.search-issues"
with:
sprint_id: "{{get-active-sprint.sprint_id}}"
- name: post-report
type: call
call: "msteams-sprint.post-message"
with:
channel_id: "$secrets.engineering_channel_id"
text: "Sprint {{get-active-sprint.sprint_name}}: {{search-sprint-issues.todo_count}} To Do, {{search-sprint-issues.inprogress_count}} In Progress, {{search-sprint-issues.done_count}} Done."
consumes:
- type: http
namespace: jira-sprint
baseUri: "https://nike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: sprints
path: "/project/{{project_key}}/sprints"
inputParameters:
- name: project_key
in: path
operations:
- name: get-active-sprint
method: GET
- name: issues
path: "/search"
operations:
- name: search-issues
method: POST
- type: http
namespace: msteams-sprint
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: channel_id
in: path
operations:
- name: post-message
method: POST
Computes Kubernetes cluster cost allocation from Snowflake metrics, generates chargeback reports, creates Jira budget tasks, and notifies the platform team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Kubernetes Cluster Cost Allocation Reporter"
description: "Computes Kubernetes cluster cost allocation from Snowflake metrics, generates chargeback reports, creates Jira budget tasks, and notifies the platform team via Microsoft Teams."
tags:
- infrastructure
- kubernetes
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: kubernetes_cluster_c
port: 8080
tools:
- name: kubernetes-cluster
description: "Given an execution date, run the kubernetes cluster cost allocation reporter process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.KUBERNETES_CLUSTER_COST_ALLOCATION_REPOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.KUBERNETES_CLUSTER_COST_ALLOCA_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Kubernetes Cluster Cost Allocation Reporter - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_kubernetes_cluster_c_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Launches a new Marketo email campaign for a product line, updates the associated Salesforce campaign record with launch details, and posts confirmation to the marketing Teams channel.
naftiko: "0.5"
info:
label: "Marketo Campaign Launch Orchestrator"
description: "Launches a new Marketo email campaign for a product line, updates the associated Salesforce campaign record with launch details, and posts confirmation to the marketing Teams channel."
tags:
- marketing
- marketo
- salesforce
- campaign-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: campaign-ops
port: 8080
tools:
- name: launch-marketo-campaign
description: "Given a Marketo program ID, Salesforce campaign ID, and launch datetime, activate the Marketo program, update the Salesforce campaign to Active, and notify the marketing team in Teams. Use for product launch and promotional email campaigns."
inputParameters:
- name: marketo_program_id
in: body
type: string
description: "The Marketo program ID to activate."
- name: salesforce_campaign_id
in: body
type: string
description: "The Salesforce campaign ID to sync launch status."
- name: launch_datetime
in: body
type: string
description: "The scheduled launch datetime in ISO 8601 format."
steps:
- name: activate-program
type: call
call: "marketo.activate-program"
with:
program_id: "{{marketo_program_id}}"
- name: update-sf-campaign
type: call
call: "salesforce-camp.update-campaign"
with:
campaign_id: "{{salesforce_campaign_id}}"
status: "Active"
start_date: "{{launch_datetime}}"
- name: notify-marketing
type: call
call: "msteams-camp.post-message"
with:
channel_id: "$secrets.marketing_channel_id"
text: "Campaign launched: Marketo program {{marketo_program_id}} activated for {{launch_datetime}}. Salesforce campaign {{salesforce_campaign_id}} updated."
consumes:
- type: http
namespace: marketo
baseUri: "https://nike.mktorest.com/rest/v1"
authentication:
type: bearer
token: "$secrets.marketo_token"
resources:
- name: programs
path: "/programs/{{program_id}}/approve.json"
inputParameters:
- name: program_id
in: path
operations:
- name: activate-program
method: POST
- type: http
namespace: salesforce-camp
baseUri: "https://nike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: campaigns
path: "/sobjects/Campaign/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
- type: http
namespace: msteams-camp
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: channel_id
in: path
operations:
- name: post-message
method: POST
Syncs Marketo campaign performance metrics to Snowflake, computes engagement scores, and distributes insights to the marketing team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Marketo Campaign Performance Sync"
description: "Syncs Marketo campaign performance metrics to Snowflake, computes engagement scores, and distributes insights to the marketing team via Microsoft Teams."
tags:
- marketing
- marketo
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketo_campaign_per
port: 8080
tools:
- name: marketo-campaign
description: "Given an execution date, run the marketo campaign performance sync process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.MARKETO_CAMPAIGN_PERFORMANCE_SYNC LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.MARKETO_CAMPAIGN_PERFORMANCE_S_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_marketo_campaign_per_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes Microsoft Sentinel security alerts, logs in Snowflake, creates ServiceNow incidents, and alerts the SOC team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Microsoft Sentinel Security Alert Handler"
description: "Processes Microsoft Sentinel security alerts, logs in Snowflake, creates ServiceNow incidents, and alerts the SOC team via Microsoft Teams."
tags:
- security
- microsoft-sentinel
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: microsoft_sentinel_s
port: 8080
tools:
- name: microsoft-sentinel
description: "Given an execution date, run the microsoft sentinel security alert handler process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.MICROSOFT_SENTINEL_SECURITY_ALERT_HANDLE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.MICROSOFT_SENTINEL_SECURITY_AL_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "security"
short_description: "Microsoft Sentinel Security Alert Handler processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_microsoft_sentinel_s_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Sends a message to a specified Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Message Sender"
description: "Sends a message to a specified Microsoft Teams channel."
tags:
- collaboration
- microsoft-teams
- messaging
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: send-channel-message
description: "Given team ID, channel ID, and message, post to the channel. Use for notifications."
inputParameters:
- name: team_id
in: body
type: string
description: "The Teams team ID."
- name: channel_id
in: body
type: string
description: "The channel ID."
- name: message_text
in: body
type: string
description: "The message body."
call: "msteams.send-channel-message"
with:
team_id: "{{team_id}}"
channel_id: "{{channel_id}}"
text: "{{message_text}}"
outputParameters:
- name: message_id
type: string
mapping: "$.id"
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
Monitors MuleSoft API integration health in Snowflake, creates ServiceNow incidents for failing integrations, and alerts the integration team via Microsoft Teams.
naftiko: "0.5"
info:
label: "MuleSoft Integration Health Monitor"
description: "Monitors MuleSoft API integration health in Snowflake, creates ServiceNow incidents for failing integrations, and alerts the integration team via Microsoft Teams."
tags:
- integration
- mulesoft
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mulesoft_integration
port: 8080
tools:
- name: mulesoft-integration
description: "Given an execution date, run the mulesoft integration health monitor process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.MULESOFT_INTEGRATION_HEALTH_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.MULESOFT_INTEGRATION_HEALTH_MO_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "integration"
short_description: "MuleSoft Integration Health Monitor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_mulesoft_integration_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes Nike app user engagement metrics in Snowflake, identifies churn risks, and distributes insights to the digital team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Nike App User Engagement Analyzer"
description: "Analyzes Nike app user engagement metrics in Snowflake, identifies churn risks, and distributes insights to the digital team via Microsoft Teams."
tags:
- analytics
- mobile
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nike_app_user_engage
port: 8080
tools:
- name: nike-app
description: "Given an execution date, run the nike app user engagement analyzer process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.NIKE_APP_USER_ENGAGEMENT_ANALYZER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.NIKE_APP_USER_ENGAGEMENT_ANALY_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_nike_app_user_engage_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Nike Direct inventory levels in Snowflake, triggers replenishment orders in SAP when below thresholds, and notifies the planning team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Nike Direct Inventory Replenishment Trigger"
description: "Monitors Nike Direct inventory levels in Snowflake, triggers replenishment orders in SAP when below thresholds, and notifies the planning team via Microsoft Teams."
tags:
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nike_direct_inventor
port: 8080
tools:
- name: nike-direct
description: "Given an execution date, run the nike direct inventory replenishment trigger process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.NIKE_DIRECT_INVENTORY_REPLENISHMENT_TRIG LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.NIKE_DIRECT_INVENTORY_REPLENIS_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_nike_direct_inventor_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Syncs product roadmap items from Notion to Jira epics, logs in Snowflake, and notifies the product management team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Notion Product Roadmap Sync"
description: "Syncs product roadmap items from Notion to Jira epics, logs in Snowflake, and notifies the product management team via Microsoft Teams."
tags:
- product-management
- notion
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: notion_product_roadm
port: 8080
tools:
- name: notion-product
description: "Given an execution date, run the notion product roadmap sync process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.NOTION_PRODUCT_ROADMAP_SYNC LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.NOTION_PRODUCT_ROADMAP_SYNC_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Notion Product Roadmap Sync - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_notion_product_roadm_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Lists all active Okta users assigned to a specified application group and cross-references with Workday to identify stale or orphaned accounts for quarterly access reviews.
naftiko: "0.5"
info:
label: "Okta Access Review and Compliance Audit"
description: "Lists all active Okta users assigned to a specified application group and cross-references with Workday to identify stale or orphaned accounts for quarterly access reviews."
tags:
- identity
- security
- okta
- workday
- access-review
- compliance
capability:
exposes:
- type: mcp
namespace: identity-review
port: 8080
tools:
- name: run-access-review
description: "Given an Okta group ID and app name, list all group members and compare against active Workday workers to identify orphaned accounts. Generates a compliance report for quarterly reviews."
inputParameters:
- name: group_id
in: body
type: string
description: "The Okta group ID to audit."
- name: app_name
in: body
type: string
description: "Application name for audit context."
steps:
- name: get-group-members
type: call
call: "okta-audit.get-group-members"
with:
group_id: "{{group_id}}"
- name: get-active-workers
type: call
call: "workday-audit.list-workers"
consumes:
- type: http
namespace: okta-audit
baseUri: "https://nike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: group-members
path: "/groups/{{group_id}}/users"
inputParameters:
- name: group_id
in: path
operations:
- name: get-group-members
method: GET
- type: http
namespace: workday-audit
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: active-workers
path: "/nike/workers"
operations:
- name: list-workers
method: GET
Looks up an Okta user by login email.
naftiko: "0.5"
info:
label: "Okta User Lookup"
description: "Looks up an Okta user by login email."
tags:
- identity
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user
description: "Given an Okta user login, retrieve profile details. Use for identity verification."
inputParameters:
- name: user_login
in: body
type: string
description: "The Okta user login email."
call: "okta.get-user"
with:
user_login: "{{user_login}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: okta
baseUri: "https://nike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users/{{user_login}}"
inputParameters:
- name: user_login
in: path
operations:
- name: get-user
method: GET
Monitors Ollama-powered internal AI assistant usage and performance in Snowflake, tracks adoption trends, and distributes reports to IT leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "Ollama Internal AI Assistant Monitor"
description: "Monitors Ollama-powered internal AI assistant usage and performance in Snowflake, tracks adoption trends, and distributes reports to IT leadership via Microsoft Teams."
tags:
- ai
- ollama
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ollama_internal_ai_a
port: 8080
tools:
- name: ollama-internal
description: "Given an execution date, run the ollama internal ai assistant monitor process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.OLLAMA_INTERNAL_AI_ASSISTANT_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.OLLAMA_INTERNAL_AI_ASSISTANT_M_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_ollama_internal_ai_a_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
During open enrollment, pulls active employees from Workday and syncs benefit elections to ADP, then confirms enrollment via a Teams notification to each employee.
naftiko: "0.5"
info:
label: "Open Enrollment Benefits Sync"
description: "During open enrollment, pulls active employees from Workday and syncs benefit elections to ADP, then confirms enrollment via a Teams notification to each employee."
tags:
- hr
- benefits
- open-enrollment
- workday
- adp
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-benefits
port: 8080
tools:
- name: sync-benefit-elections
description: "Given an employee ID and benefit plan selection, sync the election from Workday to ADP and send a Teams confirmation. Use during open enrollment or qualifying life events."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the enrolling employee."
- name: benefit_plan_id
in: body
type: string
description: "The ADP benefit plan ID the employee selected."
steps:
- name: get-employee
type: call
call: "workday-ben.get-worker"
with:
worker_id: "{{employee_id}}"
- name: submit-election
type: call
call: "adp.update-benefit-election"
with:
associate_oid: "{{get-employee.adp_oid}}"
plan_id: "{{benefit_plan_id}}"
- name: confirm-enrollment
type: call
call: "msteams-ben.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Your benefit election for plan {{benefit_plan_id}} has been successfully submitted."
consumes:
- type: http
namespace: workday-ben
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/nike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: adp
baseUri: "https://api.adp.com"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: benefit-elections
path: "/benefits/v2/workers/{{associate_oid}}/benefit-elections"
inputParameters:
- name: associate_oid
in: path
operations:
- name: update-benefit-election
method: POST
- type: http
namespace: msteams-ben
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Analyzes Paradox recruiting chatbot engagement metrics in Snowflake, identifies conversion bottlenecks, and notifies the talent acquisition team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Paradox Recruiting Chatbot Analytics"
description: "Analyzes Paradox recruiting chatbot engagement metrics in Snowflake, identifies conversion bottlenecks, and notifies the talent acquisition team via Microsoft Teams."
tags:
- hr
- recruiting
- paradox
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: paradox_recruiting_c
port: 8080
tools:
- name: paradox-recruiting
description: "Given an execution date, run the paradox recruiting chatbot analytics process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.PARADOX_RECRUITING_CHATBOT_ANALYTICS LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.PARADOX_RECRUITING_CHATBOT_ANA_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_paradox_recruiting_c_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks the last refresh status for a Power BI dataset.
naftiko: "0.5"
info:
label: "Power BI Dataset Refresh Status"
description: "Checks the last refresh status for a Power BI dataset."
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-refresh-status
description: "Given a Power BI dataset ID, check refresh status. Use for dashboard monitoring."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID."
call: "powerbi.get-refresh"
with:
dataset_id: "{{dataset_id}}"
outputParameters:
- name: status
type: string
mapping: "$.value[0].status"
consumes:
- type: http
namespace: powerbi
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: get-refresh
method: GET
Triggers a Power BI dataset refresh after the Snowflake sales data load completes and notifies the sales analytics team in Teams upon success or failure.
naftiko: "0.5"
info:
label: "Power BI Sales Dashboard Refresh"
description: "Triggers a Power BI dataset refresh after the Snowflake sales data load completes and notifies the sales analytics team in Teams upon success or failure."
tags:
- data
- analytics
- power-bi
- snowflake
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-sales-dashboard
description: "Given a Power BI workspace ID and dataset ID, trigger a dataset refresh and post the status to the sales analytics Teams channel. Use after Snowflake sales data loads complete."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace ID."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID to refresh."
steps:
- name: refresh-dataset
type: call
call: "powerbi.trigger-refresh"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-team
type: call
call: "msteams-bi.post-message"
with:
channel_id: "$secrets.sales_analytics_channel_id"
text: "Power BI dataset {{dataset_id}} refresh triggered."
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: dataset-refreshes
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams-bi
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: channel_id
in: path
operations:
- name: post-message
method: POST
When a Figma design is approved, creates Jira development stories, links design assets, and notifies the engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Product Design to Development Handoff"
description: "When a Figma design is approved, creates Jira development stories, links design assets, and notifies the engineering team via Microsoft Teams."
tags:
- design
- figma
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product_design_to_de
port: 8080
tools:
- name: product-design
description: "Given an execution date, run the product design to development handoff process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.PRODUCT_DESIGN_TO_DEVELOPMENT_HANDOFF LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.PRODUCT_DESIGN_TO_DEVELOPMENT__RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Product Design to Development Handoff - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_product_design_to_de_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes retail store traffic data in Snowflake, computes conversion rates, and distributes insights to store operations via Microsoft Teams.
naftiko: "0.5"
info:
label: "Retail Store Traffic Analytics Pipeline"
description: "Analyzes retail store traffic data in Snowflake, computes conversion rates, and distributes insights to store operations via Microsoft Teams."
tags:
- retail
- analytics
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail_store_traffic
port: 8080
tools:
- name: retail-store
description: "Given an execution date, run the retail store traffic analytics pipeline process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.RETAIL_STORE_TRAFFIC_ANALYTICS_PIPELINE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.RETAIL_STORE_TRAFFIC_ANALYTICS_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_retail_store_traffic_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Initiates SailPoint access review campaigns, logs certification status in Snowflake, creates ServiceNow follow-up tasks, and notifies the IAM team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SailPoint Access Review Campaign"
description: "Initiates SailPoint access review campaigns, logs certification status in Snowflake, creates ServiceNow follow-up tasks, and notifies the IAM team via Microsoft Teams."
tags:
- security
- sailpoint
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sailpoint_access_rev
port: 8080
tools:
- name: sailpoint-access
description: "Given an execution date, run the sailpoint access review campaign process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAILPOINT_ACCESS_REVIEW_CAMPAIGN LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAILPOINT_ACCESS_REVIEW_CAMPAI_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "security"
short_description: "SailPoint Access Review Campaign processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sailpoint_access_rev_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Salesforce opportunity is marked Closed-Won, creates a SAP sales order, provisions a customer account in ServiceNow, and sends a welcome email from Salesforce Marketing Cloud.
naftiko: "0.5"
info:
label: "Salesforce Customer Onboarding Orchestrator"
description: "When a Salesforce opportunity is marked Closed-Won, creates a SAP sales order, provisions a customer account in ServiceNow, and sends a welcome email from Salesforce Marketing Cloud."
tags:
- sales
- crm
- customer-onboarding
- salesforce
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: onboard-new-customer
description: "Given a Salesforce opportunity ID, create a SAP sales order, open a ServiceNow customer account record, and trigger a welcome email via Salesforce Marketing Cloud. Invoke when a B2B opportunity moves to Closed-Won."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID (18-character)."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-sap-order
type: call
call: "sap-sales.create-sales-order"
with:
customer_id: "{{get-opportunity.account_sap_id}}"
amount: "{{get-opportunity.amount}}"
- name: create-snow-account
type: call
call: "servicenow-acct.create-record"
with:
account_name: "{{get-opportunity.account_name}}"
sap_order_id: "{{create-sap-order.order_id}}"
- name: send-welcome-email
type: call
call: "sfmc.trigger-email"
with:
email: "{{get-opportunity.contact_email}}"
template_id: "welcome_customer"
account_name: "{{get-opportunity.account_name}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://nike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: sap-sales
baseUri: "https://nike-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-orders
path: "/A_SalesOrder"
operations:
- name: create-sales-order
method: POST
- type: http
namespace: servicenow-acct
baseUri: "https://nike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: accounts
path: "/table/customer_account"
operations:
- name: create-record
method: POST
- type: http
namespace: sfmc
baseUri: "https://api.salesforce.com/marketing/v1"
authentication:
type: bearer
token: "$secrets.sfmc_token"
resources:
- name: email-triggers
path: "/messaging/v1/email/messages"
operations:
- name: trigger-email
method: POST
When a new lead is created in Salesforce, enriches it with company firmographics from ZoomInfo and updates the lead record with employee count, revenue, and industry data.
naftiko: "0.5"
info:
label: "Salesforce Lead Enrichment via ZoomInfo"
description: "When a new lead is created in Salesforce, enriches it with company firmographics from ZoomInfo and updates the lead record with employee count, revenue, and industry data."
tags:
- sales
- crm
- lead-management
- salesforce
- zoominfo
capability:
exposes:
- type: mcp
namespace: crm-enrichment
port: 8080
tools:
- name: enrich-salesforce-lead
description: "Given a Salesforce lead ID, fetch firmographic data from ZoomInfo and update the lead with company size, industry, and revenue. Use when a new lead is created or when lead data is incomplete."
inputParameters:
- name: lead_id
in: body
type: string
description: "The Salesforce lead ID to enrich."
steps:
- name: get-lead
type: call
call: "salesforce-lead.get-lead"
with:
lead_id: "{{lead_id}}"
- name: enrich-data
type: call
call: "zoominfo.search-company"
with:
company_name: "{{get-lead.company}}"
email: "{{get-lead.email}}"
- name: update-lead
type: call
call: "salesforce-lead-update.update-lead"
with:
lead_id: "{{lead_id}}"
employees: "{{enrich-data.employee_count}}"
annual_revenue: "{{enrich-data.revenue}}"
industry: "{{enrich-data.industry}}"
consumes:
- type: http
namespace: salesforce-lead
baseUri: "https://nike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com/search"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: company-search
path: "/company"
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce-lead-update
baseUri: "https://nike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
Retrieves a Salesforce retail account by ID.
naftiko: "0.5"
info:
label: "Salesforce Retail Account Lookup"
description: "Retrieves a Salesforce retail account by ID."
tags:
- sales
- salesforce
- retail
capability:
exposes:
- type: mcp
namespace: retail-sales
port: 8080
tools:
- name: get-retail-account
description: "Given a Salesforce account ID, retrieve retail account details. Use for account reviews."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID."
call: "salesforce.get-account"
with:
account_id: "{{account_id}}"
outputParameters:
- name: name
type: string
mapping: "$.Name"
- name: tier
type: string
mapping: "$.Account_Tier__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://nike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
Aggregates Salesforce wholesale pipeline data in Snowflake, refreshes Power BI dashboards, and distributes weekly digests to sales leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Wholesale Pipeline Digest"
description: "Aggregates Salesforce wholesale pipeline data in Snowflake, refreshes Power BI dashboards, and distributes weekly digests to sales leadership via Microsoft Teams."
tags:
- sales
- salesforce
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_wholesale
port: 8080
tools:
- name: salesforce-wholesale
description: "Given an execution date, run the salesforce wholesale pipeline digest process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SALESFORCE_WHOLESALE_PIPELINE_DIGEST LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SALESFORCE_WHOLESALE_PIPELINE__RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_salesforce_wholesale_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Enriches Salesforce leads with ZoomInfo data, stores enriched profiles in Snowflake, and notifies the sales team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce ZoomInfo Lead Enrichment"
description: "Enriches Salesforce leads with ZoomInfo data, stores enriched profiles in Snowflake, and notifies the sales team via Microsoft Teams."
tags:
- sales
- salesforce
- zoominfo
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_zoominfo_
port: 8080
tools:
- name: salesforce-zoominfo
description: "Given an execution date, run the salesforce zoominfo lead enrichment process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SALESFORCE_ZOOMINFO_LEAD_ENRICHMENT LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SALESFORCE_ZOOMINFO_LEAD_ENRIC_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_salesforce_zoominfo__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Onboards new footwear suppliers in SAP Ariba, creates ServiceNow vendor setup requests, logs in Snowflake, and notifies the procurement team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Ariba Footwear Supplier Onboarding"
description: "Onboards new footwear suppliers in SAP Ariba, creates ServiceNow vendor setup requests, logs in Snowflake, and notifies the procurement team via Microsoft Teams."
tags:
- procurement
- sap
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_ariba_footwear_s
port: 8080
tools:
- name: sap-ariba
description: "Given an execution date, run the sap ariba footwear supplier onboarding process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAP_ARIBA_FOOTWEAR_SUPPLIER_ONBOARDING LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_ARIBA_FOOTWEAR_SUPPLIER_ON_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "procurement"
short_description: "SAP Ariba Footwear Supplier Onboarding processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_ariba_footwear_s_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new procurement request is submitted in SAP Ariba, validates the budget in SAP S/4HANA, routes to the appropriate approver, and notifies them via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Ariba Procurement Request Routing"
description: "When a new procurement request is submitted in SAP Ariba, validates the budget in SAP S/4HANA, routes to the appropriate approver, and notifies them via Microsoft Teams."
tags:
- procurement
- finance
- sap-ariba
- sap
- approval
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: route-procurement-request
description: "Given an Ariba requisition ID and cost center, validate available budget in SAP S/4HANA and route the request to the cost center manager for approval via Teams. Use for automated procurement approval routing."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The SAP Ariba purchase requisition ID."
- name: cost_center
in: body
type: string
description: "The SAP cost center code for budget validation."
- name: amount
in: body
type: number
description: "The requisition total amount in USD."
steps:
- name: get-requisition
type: call
call: "ariba.get-requisition"
with:
req_id: "{{requisition_id}}"
- name: check-budget
type: call
call: "sap-budget.get-cost-center-budget"
with:
cost_center: "{{cost_center}}"
- name: notify-approver
type: call
call: "msteams-proc.send-message"
with:
recipient_upn: "{{get-requisition.requester_email}}"
text: "Procurement request {{requisition_id}} for ${{amount}} submitted. Budget available: {{check-budget.available}}. Pending approval."
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/purchase-requisitions/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: requisitions
path: "/requisitions/{{req_id}}"
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: sap-budget
baseUri: "https://nike-s4.sap.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}}')"
inputParameters:
- name: cost_center
in: path
operations:
- name: get-cost-center-budget
method: GET
- type: http
namespace: msteams-proc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Reviews SAP Concur travel expenses for athlete-related travel compliance, logs in Snowflake, creates ServiceNow exceptions, and notifies the finance team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Concur Athlete Travel Compliance"
description: "Reviews SAP Concur travel expenses for athlete-related travel compliance, logs in Snowflake, creates ServiceNow exceptions, and notifies the finance team via Microsoft Teams."
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_concur_athlete_t
port: 8080
tools:
- name: sap-concur
description: "Given an execution date, run the sap concur athlete travel compliance process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAP_CONCUR_ATHLETE_TRAVEL_COMPLIANCE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_CONCUR_ATHLETE_TRAVEL_COMP_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "finance"
short_description: "SAP Concur Athlete Travel Compliance processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_concur_athlete_t_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a high-value expense report is submitted in SAP Concur, validates the claim against SAP cost center budgets and routes to the finance manager via Teams for approval.
naftiko: "0.5"
info:
label: "SAP Concur Expense Approval Escalation"
description: "When a high-value expense report is submitted in SAP Concur, validates the claim against SAP cost center budgets and routes to the finance manager via Teams for approval."
tags:
- finance
- expense-management
- sap-concur
- sap
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: finance-expenses
port: 8080
tools:
- name: escalate-expense-report
description: "Given a Concur expense report ID and total, validate remaining budget in SAP and notify the finance manager in Teams with the report details and approval link. Use when expense reports exceed policy thresholds."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report ID."
- name: total_amount
in: body
type: number
description: "The total expense amount in USD."
- name: cost_center
in: body
type: string
description: "The SAP cost center to validate budget against."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
- name: check-budget
type: call
call: "sap-exp.get-cost-center-balance"
with:
cost_center: "{{cost_center}}"
- name: notify-manager
type: call
call: "msteams-exp.send-message"
with:
recipient_upn: "{{get-report.manager_email}}"
text: "Expense report {{report_id}} for ${{total_amount}} requires approval. Budget remaining: {{check-budget.available}}."
consumes:
- type: http
namespace: concur
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: sap-exp
baseUri: "https://nike-s4.sap.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}}')"
inputParameters:
- name: cost_center
in: path
operations:
- name: get-cost-center-balance
method: GET
- type: http
namespace: msteams-exp
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Retrieves cost center details from SAP.
naftiko: "0.5"
info:
label: "SAP Cost Center Lookup"
description: "Retrieves cost center details from SAP."
tags:
- finance
- sap
- cost-management
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-cost-center
description: "Given a SAP cost center ID, retrieve details. Use for financial reporting."
inputParameters:
- name: cost_center
in: body
type: string
description: "The SAP cost center ID."
call: "sap.get-cost-center"
with:
cost_center: "{{cost_center}}"
outputParameters:
- name: description
type: string
mapping: "$.d.CostCenterDescription"
consumes:
- type: http
namespace: sap
baseUri: "https://nike-s4.sap.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}}')"
inputParameters:
- name: cost_center
in: path
operations:
- name: get-cost-center
method: GET
Calculates import duty estimates from SAP trade data in Snowflake, flags discrepancies, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Customs Import Duty Calculator"
description: "Calculates import duty estimates from SAP trade data in Snowflake, flags discrepancies, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams."
tags:
- compliance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_customs_import_d
port: 8080
tools:
- name: sap-customs
description: "Given an execution date, run the sap customs import duty calculator process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAP_CUSTOMS_IMPORT_DUTY_CALCULATOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_CUSTOMS_IMPORT_DUTY_CALCUL_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "compliance"
short_description: "SAP Customs Import Duty Calculator processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_customs_import_d_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors inventory aging data from SAP in Snowflake, flags slow-moving SKUs, creates Jira markdown action items, and notifies the merchandise planning team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Inventory Aging Alert"
description: "Monitors inventory aging data from SAP in Snowflake, flags slow-moving SKUs, creates Jira markdown action items, and notifies the merchandise planning team via Microsoft Teams."
tags:
- supply-chain
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_inventory_aging_
port: 8080
tools:
- name: sap-inventory
description: "Given an execution date, run the sap inventory aging alert process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAP_INVENTORY_AGING_ALERT LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_INVENTORY_AGING_ALERT_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "SAP Inventory Aging Alert - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_inventory_aging__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves material master data from SAP by material number.
naftiko: "0.5"
info:
label: "SAP Material Master Lookup"
description: "Retrieves material master data from SAP by material number."
tags:
- supply-chain
- sap
- product-data
capability:
exposes:
- type: mcp
namespace: product-data
port: 8080
tools:
- name: get-material
description: "Given a SAP material number, retrieve material master data. Use for product inquiries."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number."
call: "sap.get-material"
with:
material_number: "{{material_number}}"
outputParameters:
- name: description
type: string
mapping: "$.d.MaterialDescription"
- name: material_group
type: string
mapping: "$.d.MaterialGroup"
consumes:
- type: http
namespace: sap
baseUri: "https://nike-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: materials
path: "/A_Product('{{material_number}}')"
inputParameters:
- name: material_number
in: path
operations:
- name: get-material
method: GET
Validates SAP period-close readiness in Snowflake, flags open items, creates ServiceNow tasks, and notifies the accounting team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Period Close Checklist Automation"
description: "Validates SAP period-close readiness in Snowflake, flags open items, creates ServiceNow tasks, and notifies the accounting team via Microsoft Teams."
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_period_close_che
port: 8080
tools:
- name: sap-period
description: "Given an execution date, run the sap period close checklist automation process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAP_PERIOD_CLOSE_CHECKLIST_AUTOMATION LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_PERIOD_CLOSE_CHECKLIST_AUT_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "finance"
short_description: "SAP Period Close Checklist Automation processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_period_close_che_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
At the end of each financial period, queries SAP S/4HANA for open journal entries and unposted items, then creates a ServiceNow period-close task for the accounting team.
naftiko: "0.5"
info:
label: "SAP Period-End Close Checklist"
description: "At the end of each financial period, queries SAP S/4HANA for open journal entries and unposted items, then creates a ServiceNow period-close task for the accounting team."
tags:
- finance
- period-close
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: run-period-close-checklist
description: "Given a fiscal period and year, query SAP for open items and unposted journals, then create a ServiceNow checklist task. Use at month-end or quarter-end to support the accounting close process."
inputParameters:
- name: fiscal_period
in: body
type: string
description: "The fiscal period number (e.g., '006' for June)."
- name: fiscal_year
in: body
type: string
description: "The fiscal year (e.g., '2026')."
steps:
- name: get-open-items
type: call
call: "sap-close.get-open-journal-entries"
with:
period: "{{fiscal_period}}"
year: "{{fiscal_year}}"
- name: create-checklist
type: call
call: "servicenow-close.create-task"
with:
short_description: "Period close checklist FY{{fiscal_year}}/P{{fiscal_period}}"
description: "Open items: {{get-open-items.count}}. Please resolve before period close."
consumes:
- type: http
namespace: sap-close
baseUri: "https://nike-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: journal-entries
path: "/A_JournalEntryItem"
inputParameters:
- name: period
in: query
- name: year
in: query
operations:
- name: get-open-journal-entries
method: GET
- type: http
namespace: servicenow-close
baseUri: "https://nike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
Processes RMA requests in SAP, validates return eligibility in Snowflake, creates ServiceNow cases, and notifies the returns team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Return Merchandise Authorization Processor"
description: "Processes RMA requests in SAP, validates return eligibility in Snowflake, creates ServiceNow cases, and notifies the returns team via Microsoft Teams."
tags:
- logistics
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_return_merchandi
port: 8080
tools:
- name: sap-return
description: "Given an execution date, run the sap return merchandise authorization processor process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAP_RETURN_MERCHANDISE_AUTHORIZATION_PRO LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_RETURN_MERCHANDISE_AUTHORI_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "logistics"
short_description: "SAP Return Merchandise Authorization Processor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_return_merchandi_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery schedule for procurement and finance teams.
naftiko: "0.5"
info:
label: "SAP S/4HANA Purchase Order Lookup"
description: "Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery schedule for procurement and finance teams."
tags:
- finance
- procurement
- sap
- purchase-order
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-purchase-order
description: "Look up a SAP purchase order by PO number. Returns header status, vendor, total value, currency, and delivery schedule. Use for invoice matching, supplier queries, and spend reporting."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number (e.g., 4500012345)."
call: "sap.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: vendor
type: string
mapping: "$.d.Supplier.CompanyName"
- name: total_value
type: string
mapping: "$.d.TotalAmount"
- name: currency
type: string
mapping: "$.d.TransactionCurrency"
consumes:
- type: http
namespace: sap
baseUri: "https://nike-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Retrieves a SAP sales order by number, returning customer, delivery status, and value.
naftiko: "0.5"
info:
label: "SAP Sales Order Lookup"
description: "Retrieves a SAP sales order by number, returning customer, delivery status, and value."
tags:
- sales
- sap
- order-management
capability:
exposes:
- type: mcp
namespace: order-management
port: 8080
tools:
- name: get-sales-order
description: "Given a SAP sales order number, retrieve order details. Use for order inquiries."
inputParameters:
- name: order_number
in: body
type: string
description: "The SAP sales order number."
call: "sap.get-sales-order"
with:
order_number: "{{order_number}}"
outputParameters:
- name: customer
type: string
mapping: "$.d.SoldToParty"
- name: net_value
type: string
mapping: "$.d.TotalNetAmount"
consumes:
- type: http
namespace: sap
baseUri: "https://nike-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-orders
path: "/A_SalesOrder('{{order_number}}')"
inputParameters:
- name: order_number
in: path
operations:
- name: get-sales-order
method: GET
Generates seasonal product allocation plans from SAP data in Snowflake, creates Jira distribution tasks, and notifies the merchandising team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Seasonal Allocation Planner"
description: "Generates seasonal product allocation plans from SAP data in Snowflake, creates Jira distribution tasks, and notifies the merchandising team via Microsoft Teams."
tags:
- supply-chain
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_seasonal_allocat
port: 8080
tools:
- name: sap-seasonal
description: "Given an execution date, run the sap seasonal allocation planner process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAP_SEASONAL_ALLOCATION_PLANNER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_SEASONAL_ALLOCATION_PLANNE_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "SAP Seasonal Allocation Planner - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_seasonal_allocat_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates sustainability metrics from SAP in Snowflake, refreshes Power BI ESG dashboards, and distributes to the sustainability team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Sustainability Reporting Pipeline"
description: "Aggregates sustainability metrics from SAP in Snowflake, refreshes Power BI ESG dashboards, and distributes to the sustainability team via Microsoft Teams."
tags:
- sustainability
- sap
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_sustainability_r
port: 8080
tools:
- name: sap-sustainability
description: "Given an execution date, run the sap sustainability reporting pipeline process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SAP_SUSTAINABILITY_REPORTING_PIPELINE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_SUSTAINABILITY_REPORTING_P_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_sustainability_r_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves vendor master data from SAP.
naftiko: "0.5"
info:
label: "SAP Vendor Master Lookup"
description: "Retrieves vendor master data from SAP."
tags:
- procurement
- sap
- vendor-management
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-vendor
description: "Given a SAP vendor number, retrieve master data. Use for supplier verification."
inputParameters:
- name: vendor_number
in: body
type: string
description: "The SAP vendor number."
call: "sap.get-vendor"
with:
vendor_number: "{{vendor_number}}"
outputParameters:
- name: vendor_name
type: string
mapping: "$.d.SupplierName"
consumes:
- type: http
namespace: sap
baseUri: "https://nike-s4.sap.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
When a change request is submitted in ServiceNow, notifies approvers in Microsoft Teams and awaits a response before proceeding with the deployment window.
naftiko: "0.5"
info:
label: "ServiceNow Change Request Workflow"
description: "When a change request is submitted in ServiceNow, notifies approvers in Microsoft Teams and awaits a response before proceeding with the deployment window."
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: itsm-change
port: 8080
tools:
- name: submit-change-request
description: "Given a change description, risk level, and planned start datetime, create a ServiceNow change request and notify the CAB approvers in Teams. Use before any production deployment or infrastructure change."
inputParameters:
- name: change_description
in: body
type: string
description: "Human-readable description of the proposed change."
- name: risk
in: body
type: string
description: "Risk level: low, medium, or high."
- name: planned_start
in: body
type: string
description: "Planned start datetime in ISO 8601 format."
steps:
- name: create-change
type: call
call: "servicenow-chg.create-change"
with:
short_description: "{{change_description}}"
risk: "{{risk}}"
start_date: "{{planned_start}}"
- name: notify-cab
type: call
call: "msteams-chg.post-message"
with:
channel_id: "$secrets.cab_channel_id"
text: "Change Request {{create-change.number}} submitted. Risk: {{risk}}. Planned: {{planned_start}}. Description: {{change_description}}"
consumes:
- type: http
namespace: servicenow-chg
baseUri: "https://nike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: msteams-chg
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: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves a ServiceNow incident status by number.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status Lookup"
description: "Retrieves a ServiceNow incident status by number."
tags:
- itsm
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident-status
description: "Given a ServiceNow incident number, retrieve its current state. Use for status checks."
inputParameters:
- name: incident_number
in: body
type: string
description: "The incident number."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
consumes:
- type: http
namespace: servicenow
baseUri: "https://nike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: query
operations:
- name: get-incident
method: GET
When a P1 incident is created in ServiceNow, triggers PagerDuty on-call escalation, creates a Datadog event, and posts a war-room notification to the IT ops Teams channel.
naftiko: "0.5"
info:
label: "ServiceNow IT Incident P1 Escalation"
description: "When a P1 incident is created in ServiceNow, triggers PagerDuty on-call escalation, creates a Datadog event, and posts a war-room notification to the IT ops Teams channel."
tags:
- itsm
- incident-response
- servicenow
- pagerduty
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: escalate-p1-incident
description: "Given a ServiceNow incident number and description, trigger PagerDuty, create a Datadog event marker, and notify the IT ops Teams channel. Invoke immediately on P1 incident creation."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
- name: short_description
in: body
type: string
description: "Brief description of the incident."
steps:
- name: page-oncall
type: call
call: "pagerduty.trigger-incident"
with:
title: "P1: {{short_description}}"
severity: "critical"
incident_key: "{{incident_number}}"
- name: create-dd-event
type: call
call: "datadog.create-event"
with:
title: "P1 Incident: {{incident_number}}"
alert_type: "error"
text: "{{short_description}}"
- name: notify-ops
type: call
call: "msteams-ops.post-message"
with:
channel_id: "$secrets.it_ops_channel_id"
text: "P1 Incident {{incident_number}}: {{short_description}} | PagerDuty: {{page-oncall.incident_url}}"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: trigger-incident
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: msteams-ops
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: channel_id
in: path
operations:
- name: post-message
method: POST
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:
- collaboration
- slack
- messaging
capability:
exposes:
- type: mcp
namespace: slack
port: 8080
tools:
- name: send-message
description: "Given a Slack channel ID and message, post to the channel. Use for notifications."
inputParameters:
- name: channel_id
in: body
type: string
description: "The Slack channel ID."
- name: message_text
in: body
type: string
description: "The message body."
call: "slack.post-message"
with:
channel: "{{channel_id}}"
text: "{{message_text}}"
outputParameters:
- name: ts
type: string
mapping: "$.ts"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Collects product feedback from Slack channels, creates Jira feature requests, logs in Snowflake, and notifies the product management team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Slack to Jira Product Feedback Pipeline"
description: "Collects product feedback from Slack channels, creates Jira feature requests, logs in Snowflake, and notifies the product management team via Microsoft Teams."
tags:
- product-management
- slack
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: slack_to_jira_produc
port: 8080
tools:
- name: slack-to
description: "Given an execution date, run the slack to jira product feedback pipeline process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SLACK_TO_JIRA_PRODUCT_FEEDBACK_PIPELINE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SLACK_TO_JIRA_PRODUCT_FEEDBACK_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Slack to Jira Product Feedback Pipeline - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_slack_to_jira_produc_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates pre-launch demand signals from Nike.com and SNKRS app in Snowflake, adjusts inventory allocation, and notifies the merchandising team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Sneaker Launch Demand Signal Processor"
description: "Aggregates pre-launch demand signals from Nike.com and SNKRS app in Snowflake, adjusts inventory allocation, and notifies the merchandising team via Microsoft Teams."
tags:
- retail
- e-commerce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sneaker_launch_deman
port: 8080
tools:
- name: sneaker-launch
description: "Given an execution date, run the sneaker launch demand signal processor process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SNEAKER_LAUNCH_DEMAND_SIGNAL_PROCESSOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SNEAKER_LAUNCH_DEMAND_SIGNAL_P_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sneaker_launch_deman_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors SNKRS app launch metrics in Snowflake during product drops, flags performance issues, creates ServiceNow incidents, and alerts the digital platform team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SNKRS App Release Monitoring Chain"
description: "Monitors SNKRS app launch metrics in Snowflake during product drops, flags performance issues, creates ServiceNow incidents, and alerts the digital platform team via Microsoft Teams."
tags:
- e-commerce
- mobile
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: snkrs_app_release_mo
port: 8080
tools:
- name: snkrs-app
description: "Given an execution date, run the snkrs app release monitoring chain process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SNKRS_APP_RELEASE_MONITORING_CHAIN LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SNKRS_APP_RELEASE_MONITORING_C_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "e-commerce"
short_description: "SNKRS App Release Monitoring Chain processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_snkrs_app_release_mo_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Polls Snowflake task history for failed or stalled e-commerce data pipeline tasks and opens a Jira incident if failures are detected, notifying the data engineering team in Teams.
naftiko: "0.5"
info:
label: "Snowflake E-Commerce Data Pipeline Monitor"
description: "Polls Snowflake task history for failed or stalled e-commerce data pipeline tasks and opens a Jira incident if failures are detected, notifying the data engineering team in Teams."
tags:
- data
- e-commerce
- snowflake
- jira
- monitoring
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-pipeline-ops
port: 8080
tools:
- name: monitor-ecommerce-pipelines
description: "Query Snowflake task history for e-commerce pipeline failures and open a Jira incident if failures are found. Post a health summary to the data engineering Teams channel. Use for automated e-commerce data platform monitoring."
inputParameters:
- name: lookback_hours
in: body
type: integer
description: "Number of hours to look back for failed pipeline tasks."
steps:
- name: query-failures
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT COUNT(*) as count FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY()) WHERE state='FAILED' AND scheduled_time > DATEADD(hour, -{{lookback_hours}}, CURRENT_TIMESTAMP())"
- name: create-incident
type: call
call: "jira-data.create-issue"
with:
project_key: "DATA"
issuetype: "Bug"
summary: "E-commerce pipeline failures in last {{lookback_hours}}h"
- name: notify-data-team
type: call
call: "msteams-data.post-message"
with:
channel_id: "$secrets.data_eng_channel_id"
text: "Pipeline Monitor: {{query-failures.count}} failures in last {{lookback_hours}}h. Jira: {{create-incident.key}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira-data
baseUri: "https://nike.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-data
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: channel_id
in: path
operations:
- name: post-message
method: POST
Executes a read-only SQL query against the Nike Snowflake data warehouse.
naftiko: "0.5"
info:
label: "Snowflake Query Executor"
description: "Executes a read-only SQL query against the Nike Snowflake data warehouse."
tags:
- data
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: execute-query
description: "Given a SQL statement, execute it against Snowflake. Use for analytics."
inputParameters:
- name: sql_statement
in: body
type: string
description: "The SQL query to execute."
call: "snowflake.execute-statement"
with:
statement: "{{sql_statement}}"
outputParameters:
- name: row_count
type: integer
mapping: "$.data.rowCount"
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
Executes a Splunk search query.
naftiko: "0.5"
info:
label: "Splunk Log Search"
description: "Executes a Splunk search query."
tags:
- security
- splunk
- logging
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: search-logs
description: "Given a Splunk query and time range, execute the search. Use for investigations."
inputParameters:
- name: search_query
in: body
type: string
description: "The Splunk SPL query."
- name: earliest_time
in: body
type: string
description: "Search start time."
call: "splunk.create-search"
with:
search: "{{search_query}}"
earliest_time: "{{earliest_time}}"
outputParameters:
- name: result_count
type: integer
mapping: "$.entry.content.resultCount"
consumes:
- type: http
namespace: splunk
baseUri: "https://nike-splunk.example.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: searches
path: "/search/jobs"
operations:
- name: create-search
method: POST
Tracks sustainable material sourcing metrics in Snowflake, computes Move to Zero progress, creates Jira tasks, and notifies the sustainability team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Sustainable Materials Sourcing Tracker"
description: "Tracks sustainable material sourcing metrics in Snowflake, computes Move to Zero progress, creates Jira tasks, and notifies the sustainability team via Microsoft Teams."
tags:
- sustainability
- sourcing
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainable_material
port: 8080
tools:
- name: sustainable-materials
description: "Given an execution date, run the sustainable materials sourcing tracker process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.SUSTAINABLE_MATERIALS_SOURCING_TRACKER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SUSTAINABLE_MATERIALS_SOURCING_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Sustainable Materials Sourcing Tracker - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sustainable_material_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes warehouse pick-pack-ship metrics in Snowflake, identifies bottlenecks, creates ServiceNow optimization requests, and notifies the logistics team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Warehouse Pick Pack Ship Optimizer"
description: "Analyzes warehouse pick-pack-ship metrics in Snowflake, identifies bottlenecks, creates ServiceNow optimization requests, and notifies the logistics team via Microsoft Teams."
tags:
- logistics
- warehouse
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse_pick_pack_
port: 8080
tools:
- name: warehouse-pick
description: "Given an execution date, run the warehouse pick pack ship optimizer process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.WAREHOUSE_PICK_PACK_SHIP_OPTIMIZER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WAREHOUSE_PICK_PACK_SHIP_OPTIM_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "logistics"
short_description: "Warehouse Pick Pack Ship Optimizer processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_warehouse_pick_pack__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Identifies employees who haven't completed benefits enrollment, logs in Snowflake, and sends reminders via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Benefits Open Enrollment Reminder"
description: "Identifies employees who haven't completed benefits enrollment, logs in Snowflake, and sends reminders via Microsoft Teams."
tags:
- hr
- benefits
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_benefits_ope
port: 8080
tools:
- name: workday-benefits
description: "Given an execution date, run the workday benefits open enrollment reminder process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.WORKDAY_BENEFITS_OPEN_ENROLLMENT_REMINDE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_BENEFITS_OPEN_ENROLLME_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_benefits_ope_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Returns active Nike headcount grouped by cost center and department from Workday for workforce planning and finance allocation reviews.
naftiko: "0.5"
info:
label: "Workday Headcount by Cost Center"
description: "Returns active Nike headcount grouped by cost center and department from Workday for workforce planning and finance allocation reviews."
tags:
- hr
- workforce-planning
- reporting
- workday
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Returns all active Nike employees grouped by cost center and department from Workday. Use for headcount planning, budget allocation, and executive workforce reviews."
call: "workday-hc.list-workers"
outputParameters:
- name: workers
type: array
mapping: "$.data[*]"
consumes:
- type: http
namespace: workday-hc
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/nike/workers"
operations:
- name: list-workers
method: GET
Compares Workday headcount against plan in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Headcount vs Plan Tracker"
description: "Compares Workday headcount against plan in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams."
tags:
- hr
- workforce-planning
- workday
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_headcount_vs
port: 8080
tools:
- name: workday-headcount
description: "Given an execution date, run the workday headcount vs plan tracker process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.WORKDAY_HEADCOUNT_VS_PLAN_TRACKER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_HEADCOUNT_VS_PLAN_TRAC_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_headcount_vs_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Workday integration fails, logs the error in Snowflake, creates a ServiceNow incident, and alerts the HRIS team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Integration Failure Handler"
description: "When a Workday integration fails, logs the error in Snowflake, creates a ServiceNow incident, and alerts the HRIS team via Microsoft Teams."
tags:
- hr
- workday
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_integration_
port: 8080
tools:
- name: workday-integration
description: "Given an execution date, run the workday integration failure handler process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.WORKDAY_INTEGRATION_FAILURE_HANDLER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_INTEGRATION_FAILURE_HA_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "hr"
short_description: "Workday Integration Failure Handler processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_integration__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Routes new Workday job requisitions through approval chains in Snowflake, creates Jira tracking tasks, and notifies approvers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Job Requisition Approval Chain"
description: "Routes new Workday job requisitions through approval chains in Snowflake, creates Jira tracking tasks, and notifies approvers via Microsoft Teams."
tags:
- hr
- recruiting
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_job_requisit
port: 8080
tools:
- name: workday-job
description: "Given an execution date, run the workday job requisition approval chain process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.WORKDAY_JOB_REQUISITION_APPROVAL_CHAIN LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_JOB_REQUISITION_APPROV_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Workday Job Requisition Approval Chain - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_job_requisit_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a job requisition is approved in Workday, automatically publishes the role to LinkedIn and sends a notification to the talent acquisition team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Job Requisition to LinkedIn Posting"
description: "When a job requisition is approved in Workday, automatically publishes the role to LinkedIn and sends a notification to the talent acquisition team in Microsoft Teams."
tags:
- hr
- recruiting
- workday
- linkedin
- microsoft-teams
- talent-acquisition
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: publish-job-posting
description: "Given a Workday requisition ID, fetch job details and publish the position to LinkedIn, then notify the TA team in Teams. Use when a new job requisition is approved in Workday."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday job requisition ID."
steps:
- name: get-requisition
type: call
call: "workday-rec.get-job-requisition"
with:
req_id: "{{requisition_id}}"
- name: post-linkedin
type: call
call: "linkedin.create-job-posting"
with:
title: "{{get-requisition.job_title}}"
description: "{{get-requisition.description}}"
location: "{{get-requisition.location}}"
company_urn: "$secrets.nike_linkedin_org_urn"
- name: notify-ta
type: call
call: "msteams-ta.post-message"
with:
channel_id: "$secrets.ta_channel_id"
text: "Job posted: {{get-requisition.job_title}} | LinkedIn: {{post-linkedin.job_url}}"
consumes:
- type: http
namespace: workday-rec
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: job-requisitions
path: "/nike/jobRequisitions/{{req_id}}"
inputParameters:
- name: req_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: job-postings
path: "/jobPostings"
operations:
- name: create-job-posting
method: POST
- type: http
namespace: msteams-ta
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: channel_id
in: path
operations:
- name: post-message
method: POST
When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, assigns Okta application groups, and sends a Teams welcome message.
naftiko: "0.5"
info:
label: "Workday New Hire Onboarding Orchestrator"
description: "When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, assigns Okta application groups, and sends a Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-365
- okta
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence: open a ServiceNow ticket, provision Microsoft 365, assign Okta groups, and send a Teams welcome. Invoke when a new hire is created in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "The employee's first day in YYYY-MM-DD format."
- name: job_family
in: body
type: string
description: "The job family or function (e.g., Engineering, Retail, Marketing) to determine Okta group assignment."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: open-snow-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-employee.full_name}}"
category: "hr_onboarding"
assigned_to: "IT_Onboarding"
- name: provision-m365
type: call
call: "msgraph.create-user"
with:
display_name: "{{get-employee.full_name}}"
mail_nickname: "{{get-employee.user_principal_name}}"
department: "{{get-employee.department}}"
- name: assign-okta-groups
type: call
call: "okta.assign-user-to-group"
with:
login: "{{get-employee.work_email}}"
job_family: "{{job_family}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to Nike, {{get-employee.first_name}}! Your onboarding ticket: {{open-snow-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: "/nike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://nike.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: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: okta
baseUri: "https://nike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-groups
path: "/users"
operations:
- name: assign-user-to-group
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Reconciles Workday payroll data against financial records in Snowflake, flags discrepancies, creates ServiceNow cases, and notifies the payroll team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Payroll Reconciliation Workflow"
description: "Reconciles Workday payroll data against financial records in Snowflake, flags discrepancies, creates ServiceNow cases, and notifies the payroll team via Microsoft Teams."
tags:
- hr
- payroll
- workday
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_payroll_reco
port: 8080
tools:
- name: workday-payroll
description: "Given an execution date, run the workday payroll reconciliation workflow process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.WORKDAY_PAYROLL_RECONCILIATION_WORKFLOW LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_PAYROLL_RECONCILIATION_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "hr"
short_description: "Workday Payroll Reconciliation Workflow processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_payroll_reco_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
At the start of a performance review cycle, fetches eligible employees from Workday and creates individual performance review tasks in ServiceNow for each manager.
naftiko: "0.5"
info:
label: "Workday Performance Review Campaign Launch"
description: "At the start of a performance review cycle, fetches eligible employees from Workday and creates individual performance review tasks in ServiceNow for each manager."
tags:
- hr
- performance-management
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: launch-performance-reviews
description: "Given a review cycle name and department, fetch eligible employees from Workday and create review tasks in ServiceNow for each manager. Use to kick off annual or mid-year performance cycles."
inputParameters:
- name: review_cycle
in: body
type: string
description: "Performance review cycle name (e.g., 2026-Annual)."
- name: department
in: body
type: string
description: "Department to scope the review launch."
steps:
- name: get-eligible-employees
type: call
call: "workday-perf.get-workers-by-department"
with:
department: "{{department}}"
- name: create-review-tasks
type: call
call: "servicenow-perf.create-task"
with:
short_description: "Performance reviews {{review_cycle}}: {{department}}"
category: "hr_performance_review"
consumes:
- type: http
namespace: workday-perf
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers-by-department
path: "/nike/workers"
inputParameters:
- name: department
in: query
operations:
- name: get-workers-by-department
method: GET
- type: http
namespace: servicenow-perf
baseUri: "https://nike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
Launches Workday performance review cycles, tracks completion in Snowflake, creates Jira tasks for lagging teams, and notifies HR via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Performance Review Cycle Launcher"
description: "Launches Workday performance review cycles, tracks completion in Snowflake, creates Jira tasks for lagging teams, and notifies HR via Microsoft Teams."
tags:
- hr
- performance
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_performance_
port: 8080
tools:
- name: workday-performance
description: "Given an execution date, run the workday performance review cycle launcher process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.WORKDAY_PERFORMANCE_REVIEW_CYCLE_LAUNCHE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_PERFORMANCE_REVIEW_CYC_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "NKOPS"
issue_type: "Task"
summary: "Workday Performance Review Cycle Launcher - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_performance__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates retail store staffing forecasts from Workday data in Snowflake, compares to demand projections, and notifies store operations via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Retail Staffing Forecast"
description: "Generates retail store staffing forecasts from Workday data in Snowflake, compares to demand projections, and notifies store operations via Microsoft Teams."
tags:
- hr
- retail
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_retail_staff
port: 8080
tools:
- name: workday-retail
description: "Given an execution date, run the workday retail staffing forecast process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.WORKDAY_RETAIL_STAFFING_FORECAST LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_RETAIL_STAFFING_FORECA_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_retail_staff_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an employee changes roles or departments in Workday, updates their Okta group memberships for the new access profile and creates a ServiceNow change record.
naftiko: "0.5"
info:
label: "Workday Role Change Access Sync"
description: "When an employee changes roles or departments in Workday, updates their Okta group memberships for the new access profile and creates a ServiceNow change record."
tags:
- hr
- identity
- role-change
- workday
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-identity
port: 8080
tools:
- name: sync-role-change-access
description: "Given a Workday employee ID and new role details, update Okta group memberships to align with the new access profile and log a ServiceNow change record. Invoke when an employee changes position or department in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the employee whose role changed."
- name: new_role
in: body
type: string
description: "The new job title."
- name: new_department
in: body
type: string
description: "The new department."
steps:
- name: get-employee
type: call
call: "workday-role.get-worker"
with:
worker_id: "{{employee_id}}"
- name: update-okta-groups
type: call
call: "okta-role.update-user-groups"
with:
login: "{{get-employee.work_email}}"
department: "{{new_department}}"
- name: log-change
type: call
call: "servicenow-role.create-change"
with:
short_description: "Role change: {{get-employee.full_name}} → {{new_role}} in {{new_department}}"
category: "hr_role_change"
consumes:
- type: http
namespace: workday-role
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/nike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta-role
baseUri: "https://nike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-groups
path: "/users/{{login}}/groups"
inputParameters:
- name: login
in: path
operations:
- name: update-user-groups
method: PUT
- type: http
namespace: servicenow-role
baseUri: "https://nike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
Looks up a Workday worker profile by employee ID.
naftiko: "0.5"
info:
label: "Workday Worker Profile Lookup"
description: "Looks up a Workday worker profile by employee ID."
tags:
- hr
- workday
- employee-data
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-worker-profile
description: "Given a Workday employee ID, retrieve the worker profile. Use for HR inquiries."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.worker.fullName"
- name: job_title
type: string
mapping: "$.worker.jobTitle"
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: "/nike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Analyzes Zendesk ticket sentiment in Snowflake, escalates high-negativity patterns, creates ServiceNow cases, and alerts the customer experience team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Zendesk Customer Sentiment Escalation"
description: "Analyzes Zendesk ticket sentiment in Snowflake, escalates high-negativity patterns, creates ServiceNow cases, and alerts the customer experience team via Microsoft Teams."
tags:
- support
- zendesk
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: zendesk_customer_sen
port: 8080
tools:
- name: zendesk-customer
description: "Given an execution date, run the zendesk customer sentiment escalation process. Use for scheduled operations."
inputParameters:
- name: execution_date
in: body
type: string
description: "The execution date in YYYY-MM-DD format."
steps:
- name: get-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM ANALYTICS.ZENDESK_CUSTOMER_SENTIMENT_ESCALATION LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.ZENDESK_CUSTOMER_SENTIMENT_ESC_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "support"
short_description: "Zendesk Customer Sentiment Escalation processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_zendesk_customer_sen_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://nike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: "https://nike.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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Zendesk support ticket by ID.
naftiko: "0.5"
info:
label: "Zendesk Support Ticket Lookup"
description: "Retrieves a Zendesk support ticket by ID."
tags:
- support
- zendesk
- customer-service
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: get-ticket
description: "Given a Zendesk ticket ID, retrieve details. Use for support escalations."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The Zendesk ticket ID."
call: "zendesk.get-ticket"
with:
ticket_id: "{{ticket_id}}"
outputParameters:
- name: subject
type: string
mapping: "$.ticket.subject"
- name: status
type: string
mapping: "$.ticket.status"
consumes:
- type: http
namespace: zendesk
baseUri: "https://nike.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