Wells Fargo Capabilities
Naftiko 0.5 capability definitions for Wells Fargo - 141 capabilities showing integration workflows and service orchestrations.
Orchestrates the closure of a customer account by updating Salesforce, creating a ServiceNow task, running final balance checks in Snowflake, and notifying the relationship manager.
naftiko: "0.5"
info:
label: "Customer Account Closure Orchestrator"
description: "Orchestrates the closure of a customer account by updating Salesforce, creating a ServiceNow task, running final balance checks in Snowflake, and notifying the relationship manager."
tags:
- operations
- salesforce
- servicenow
- snowflake
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: account-ops
port: 8080
tools:
- name: close-customer-account
description: "Given a Salesforce account ID and closure reason, update the CRM record, create a ServiceNow closure task, verify zero balance, and notify the RM. Use for account termination requests."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID."
- name: closure_reason
in: body
type: string
description: "The reason for account closure."
steps:
- name: update-crm
type: call
call: "salesforce.update-account"
with:
account_id: "{{account_id}}"
status: "Pending Closure"
- name: create-task
type: call
call: "servicenow.create-incident"
with:
category: "account_closure"
short_description: "Account closure: {{account_id}} - {{closure_reason}}"
- name: verify-balance
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT balance FROM ACCOUNTS.BALANCES WHERE account_id='{{account_id}}'"
- name: notify-rm
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_rm_channel"
text: "Account {{account_id}} closure initiated. Task: {{create-task.number}}. Current balance: {{verify-balance.balance}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://wellsfargo.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: update-account
method: PATCH
- type: http
namespace: servicenow
baseUri: "https://wellsfargo.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: snowflake
baseUri: "https://wellsfargo.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 payroll summary data from ADP for a given pay period and returns total gross pay and headcount.
naftiko: "0.5"
info:
label: "ADP Payroll Summary Lookup"
description: "Retrieves payroll summary data from ADP for a given pay period and returns total gross pay and headcount."
tags:
- hr
- adp
- banking
capability:
exposes:
- type: mcp
namespace: payroll-lookup
port: 8080
tools:
- name: get-payroll-summary
description: "Given a pay period date, return the total gross pay and employee count from ADP. Use for payroll reconciliation."
inputParameters:
- name: pay_period_date
in: body
type: string
description: "The pay period end date in YYYY-MM-DD format."
call: "adp.get-payroll"
with:
pay_date: "{{pay_period_date}}"
outputParameters:
- name: total_gross
type: string
mapping: "$.payStatements[0].grossPayYTD.amountValue"
- name: employee_count
type: integer
mapping: "$.payStatements.length"
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com/payroll/v1"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: pay-statements
path: "/pay-statements?payDate={{pay_date}}"
inputParameters:
- name: pay_date
in: query
operations:
- name: get-payroll
method: GET
Monitors Alteryx workflow execution results, logs output metrics in Snowflake, and notifies the analytics team via Microsoft Teams when workflows fail.
naftiko: "0.5"
info:
label: "Alteryx Data Prep Workflow Monitor"
description: "Monitors Alteryx workflow execution results, logs output metrics in Snowflake, and notifies the analytics team via Microsoft Teams when workflows fail."
tags:
- analytics
- alteryx
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: alteryx_data_prep_wo
port: 8080
tools:
- name: alteryx-data
description: "Given an execution date, run the alteryx data prep workflow 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.ALTERYX_DATA_PREP_WORKFLOW_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.ALTERYX_DATA_PREP_WORKFLOW_MONITOR_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_alteryx_data_prep_wo_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Files a Suspicious Activity Report by extracting transaction patterns from Snowflake, creating a compliance case in Salesforce, uploading documentation to SharePoint, and alerting the BSA team.
naftiko: "0.5"
info:
label: "AML Suspicious Activity Report Chain"
description: "Files a Suspicious Activity Report by extracting transaction patterns from Snowflake, creating a compliance case in Salesforce, uploading documentation to SharePoint, and alerting the BSA team."
tags:
- compliance
- aml
- snowflake
- salesforce
- sharepoint
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: bsa-ops
port: 8080
tools:
- name: file-sar
description: "Given a customer ID and suspicious transaction IDs, extract patterns, create a compliance case, upload supporting docs, and alert BSA. Use when AML monitoring flags suspicious activity."
inputParameters:
- name: customer_id
in: body
type: string
description: "The customer identifier."
- name: transaction_ids
in: body
type: string
description: "Comma-separated list of suspicious transaction IDs."
steps:
- name: extract-patterns
type: call
call: "snowflake.execute-statement"
with:
statement: "CALL COMPLIANCE.EXTRACT_SAR_PATTERNS('{{customer_id}}', '{{transaction_ids}}')"
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "SAR Filing: Customer {{customer_id}}"
description: "{{extract-patterns.summary}}"
- name: upload-docs
type: call
call: "sharepoint.upload-file"
with:
site_id: "$secrets.bsa_site_id"
file_name: "SAR_{{customer_id}}_{{create-case.id}}.pdf"
- name: alert-bsa
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_bsa_channel"
text: "SAR filed for customer {{customer_id}}. Case: {{create-case.id}}. Patterns: {{extract-patterns.pattern_count}} flagged transactions."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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: salesforce
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/sites/{{site_id}}/drive/root:/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- 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
Screens banking transactions against AML watchlists in Snowflake, creates ServiceNow compliance cases for flagged transactions, and alerts the BSA team via Microsoft Teams.
naftiko: "0.5"
info:
label: "AML Transaction Screening Workflow"
description: "Screens banking transactions against AML watchlists in Snowflake, creates ServiceNow compliance cases for flagged transactions, and alerts the BSA team via Microsoft Teams."
tags:
- compliance
- aml
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aml-screening
port: 8080
tools:
- name: screen-transactions
description: "Given a batch ID and screening date, run AML checks, create cases for flagged transactions, and alert compliance. Use for daily AML batch screening."
inputParameters:
- name: batch_id
in: body
type: string
description: "The transaction batch ID."
- name: screening_date
in: body
type: string
description: "The screening date in YYYY-MM-DD format."
steps:
- name: run-screening
type: call
call: "snowflake.execute-statement"
with:
statement: "CALL COMPLIANCE.RUN_AML_SCREENING('{{batch_id}}', '{{screening_date}}')"
- name: get-flagged
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT COUNT(*) as flagged_count FROM COMPLIANCE.AML_FLAGS WHERE batch_id = '{{batch_id}}'"
- name: create-case
type: call
call: "servicenow.create-incident"
with:
category: "aml_compliance"
short_description: "AML screening batch {{batch_id}}: {{get-flagged.flagged_count}} flagged transactions"
- name: alert-bsa
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_bsa_channel"
text: "AML screening batch {{batch_id}} on {{screening_date}}: {{get-flagged.flagged_count}} transactions flagged. Case: {{create-case.number}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 Apache Kafka consumer group lag from Snowflake metrics, creates Jira tickets when lag exceeds thresholds, and alerts the streaming platform team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Apache Kafka Consumer Lag Monitor"
description: "Monitors Apache Kafka consumer group lag from Snowflake metrics, creates Jira tickets when lag exceeds thresholds, and alerts the streaming platform team via Microsoft Teams."
tags:
- data-engineering
- apache-kafka
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: apache_kafka_consume
port: 8080
tools:
- name: apache-kafka
description: "Given an execution date, run the apache kafka consumer lag 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.APACHE_KAFKA_CONSUMER_LAG_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.APACHE_KAFKA_CONSUMER_LAG_MONITOR_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Apache Kafka Consumer Lag Monitor - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_apache_kafka_consume_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Pulls Apigee API traffic and latency metrics, stores analytics in Snowflake, and distributes performance reports to the API team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Apigee API Gateway Performance Report"
description: "Pulls Apigee API traffic and latency metrics, stores analytics in Snowflake, and distributes performance reports to the API team via Microsoft Teams."
tags:
- api-management
- apigee
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: apigee_api_gateway_p
port: 8080
tools:
- name: apigee-api
description: "Given an execution date, run the apigee api gateway performance report 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.APIGEE_API_GATEWAY_PERFORMANCE_REPORT LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.APIGEE_API_GATEWAY_PERFORMANCE_REPORT_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_apigee_api_gateway_p_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 ATM fleet health by pulling device telemetry from Snowflake, creating ServiceNow incidents for offline units, and alerting the channel operations team.
naftiko: "0.5"
info:
label: "ATM Fleet Health Monitoring Chain"
description: "Monitors ATM fleet health by pulling device telemetry from Snowflake, creating ServiceNow incidents for offline units, and alerting the channel operations team."
tags:
- operations
- snowflake
- servicenow
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: atm-ops
port: 8080
tools:
- name: monitor-atm-fleet
description: "Given a region code, query ATM health data from Snowflake, auto-create incidents for offline ATMs, and notify channel ops. Use for daily ATM fleet monitoring."
inputParameters:
- name: region_code
in: body
type: string
description: "The geographic region code (e.g., WEST, EAST, CENTRAL)."
steps:
- name: get-offline-atms
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM OPS.ATM_HEALTH WHERE region='{{region_code}}' AND status='OFFLINE'"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "atm_outage"
short_description: "ATM outage in {{region_code}}: {{get-offline-atms.count}} units offline"
- name: notify-channel-ops
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_atm_channel"
text: "ATM fleet alert for {{region_code}}: {{get-offline-atms.count}} ATMs offline. Incident: {{create-incident.number}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 ATM error logs in Snowflake, identifies machines needing maintenance, creates ServiceNow work orders, and notifies the ATM operations team via Microsoft Teams.
naftiko: "0.5"
info:
label: "ATM Fleet Maintenance Scheduler"
description: "Analyzes ATM error logs in Snowflake, identifies machines needing maintenance, creates ServiceNow work orders, and notifies the ATM operations team via Microsoft Teams."
tags:
- operations
- atm
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: atm_fleet_maintenanc
port: 8080
tools:
- name: atm-fleet
description: "Given an execution date, run the atm fleet maintenance scheduler 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.ATM_FLEET_MAINTENANCE_SCHEDULER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.ATM_FLEET_MAINTENANCE_SCHEDULER_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "operations"
short_description: "ATM Fleet Maintenance Scheduler processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_atm_fleet_maintenanc_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 user in Azure Active Directory by UPN, returning profile, group memberships, and sign-in status.
naftiko: "0.5"
info:
label: "Azure Active Directory User Lookup"
description: "Looks up a user in Azure Active Directory by UPN, returning profile, group memberships, and sign-in status."
tags:
- identity
- azure-active-directory
- access-management
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-ad-user
description: "Given an Azure AD user principal name, retrieve the user profile and group count. Use for identity verification."
inputParameters:
- name: user_upn
in: body
type: string
description: "The user principal name, e.g. 'jdoe@wellsfargo.com'."
call: "azure-ad.get-user"
with:
user_upn: "{{user_upn}}"
outputParameters:
- name: display_name
type: string
mapping: "$.displayName"
- name: account_enabled
type: boolean
mapping: "$.accountEnabled"
consumes:
- type: http
namespace: azure-ad
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_upn}}"
inputParameters:
- name: user_upn
in: path
operations:
- name: get-user
method: GET
Retrieves an Azure AD user profile by UPN and returns display name, job title, and department.
naftiko: "0.5"
info:
label: "Azure Active Directory User Profile Lookup"
description: "Retrieves an Azure AD user profile by UPN and returns display name, job title, and department."
tags:
- identity
- microsoft-azure
- banking
capability:
exposes:
- type: mcp
namespace: iam-directory
port: 8080
tools:
- name: get-aad-user
description: "Given an Azure AD user principal name, return the display name, job title, and department. Use for identity verification."
inputParameters:
- name: user_upn
in: body
type: string
description: "The user principal name (e.g., jdoe@wellsfargo.com)."
call: "aad.get-user"
with:
upn: "{{user_upn}}"
outputParameters:
- name: display_name
type: string
mapping: "$.displayName"
- name: job_title
type: string
mapping: "$.jobTitle"
- name: department
type: string
mapping: "$.department"
consumes:
- type: http
namespace: aad
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{upn}}"
inputParameters:
- name: upn
in: path
operations:
- name: get-user
method: GET
Detects Azure billing anomalies above a daily spend threshold and notifies the FinOps team via Microsoft Teams with a cost breakdown by subscription.
naftiko: "0.5"
info:
label: "Azure Cloud Cost Anomaly Alert"
description: "Detects Azure billing anomalies above a daily spend threshold and notifies the FinOps team via Microsoft Teams with a cost breakdown by subscription."
tags:
- cloud
- finops
- azure
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-cost-ops
port: 8080
tools:
- name: alert-azure-cost-anomaly
description: "Given an Azure subscription ID and spend threshold, retrieve daily cost data and post an anomaly alert to the FinOps Teams channel if the threshold is exceeded. Use for daily cloud spend governance."
inputParameters:
- name: subscription_id
in: body
type: string
description: "Azure subscription ID to check (GUID format)."
- name: threshold_usd
in: body
type: number
description: "Daily spend threshold in USD above which to alert."
steps:
- name: get-usage-summary
type: call
call: azure-cost.get-usage-summary
with:
subscription_id: "{{subscription_id}}"
- name: post-cost-alert
type: call
call: msteams-finops.send-message
with:
channel_id: "$secrets.teams_finops_channel_id"
text: "Azure cost anomaly: Subscription {{subscription_id}} daily spend {{get-usage-summary.total_cost}} exceeds threshold ${{threshold_usd}}. Top service: {{get-usage-summary.top_service}}."
consumes:
- type: http
namespace: azure-cost
baseUri: "https://management.azure.com/subscriptions"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: usage-summary
path: "/{{subscription_id}}/providers/Microsoft.Consumption/usageDetails"
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-usage-summary
method: GET
- 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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Azure Data Factory pipeline runs, logs execution metrics in Snowflake, and alerts the data engineering team via Microsoft Teams when pipelines fail.
naftiko: "0.5"
info:
label: "Azure Data Factory Pipeline Monitor"
description: "Monitors Azure Data Factory pipeline runs, logs execution metrics in Snowflake, and alerts the data engineering team via Microsoft Teams when pipelines fail."
tags:
- data-engineering
- azure-data-factory
- snowflake
- 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_MONITOR_RESULTS SELECT * FROM staging"
- 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://wellsfargo.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
Analyzes AKS cluster utilization metrics in Snowflake, generates scaling recommendations, creates Jira tasks, and notifies the platform team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Azure Kubernetes Cluster Scaling Advisor"
description: "Analyzes AKS cluster utilization metrics in Snowflake, generates scaling recommendations, creates Jira tasks, and notifies the platform team via Microsoft Teams."
tags:
- infrastructure
- azure-kubernetes-service
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_kubernetes_clu
port: 8080
tools:
- name: azure-kubernetes
description: "Given an execution date, run the azure kubernetes cluster scaling advisor 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_KUBERNETES_CLUSTER_SCALING_ADVISOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.AZURE_KUBERNETES_CLUSTER_SCALING_ADVISOR_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Azure Kubernetes Cluster Scaling Advisor - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_azure_kubernetes_clu_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 the current month cost summary for an Azure resource group for FinOps reporting.
naftiko: "0.5"
info:
label: "Azure Resource Group Cost Summary"
description: "Retrieves the current month cost summary for an Azure resource group for FinOps reporting."
tags:
- finops
- microsoft-azure
- banking
capability:
exposes:
- type: mcp
namespace: cloud-cost
port: 8080
tools:
- name: get-cost-summary
description: "Given an Azure subscription ID and resource group name, return the current month cost total and currency. Use for cloud FinOps reviews."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The Azure subscription ID."
- name: resource_group
in: body
type: string
description: "The Azure resource group name."
call: "azure.get-cost"
with:
subscription_id: "{{subscription_id}}"
resource_group: "{{resource_group}}"
outputParameters:
- name: total_cost
type: string
mapping: "$.properties.rows[0][0]"
- name: currency
type: string
mapping: "$.properties.rows[0][1]"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: cost-management
path: "/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.CostManagement/query?api-version=2023-03-01"
inputParameters:
- name: subscription_id
in: path
- name: resource_group
in: path
operations:
- name: get-cost
method: POST
Checks the health status of a specified Azure resource, returning availability state.
naftiko: "0.5"
info:
label: "Azure Resource Health Check"
description: "Checks the health status of a specified Azure resource, returning availability state."
tags:
- cloud
- microsoft-azure
- infrastructure
capability:
exposes:
- type: mcp
namespace: cloud
port: 8080
tools:
- name: get-resource-health
description: "Given an Azure resource ID, retrieve its current availability status. Use for infrastructure monitoring."
inputParameters:
- name: resource_id
in: body
type: string
description: "The full Azure resource ID path."
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
Monitors Azure Service Bus dead-letter queues, logs failed messages in Snowflake, creates Jira investigation tickets, and alerts the integration team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Azure Service Bus Dead Letter Handler"
description: "Monitors Azure Service Bus dead-letter queues, logs failed messages in Snowflake, creates Jira investigation tickets, and alerts the integration team via Microsoft Teams."
tags:
- integration
- azure-service-bus
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_service_bus_de
port: 8080
tools:
- name: azure-service
description: "Given an execution date, run the azure service bus dead letter 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.AZURE_SERVICE_BUS_DEAD_LETTER_HANDLER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.AZURE_SERVICE_BUS_DEAD_LETTER_HANDLER_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Azure Service Bus Dead Letter Handler - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_azure_service_bus_de_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Triggers Azure Synapse data pipelines, monitors execution status, logs metrics in Snowflake, and alerts the data engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Azure Synapse Data Pipeline Orchestrator"
description: "Triggers Azure Synapse data pipelines, monitors execution status, logs metrics in Snowflake, and alerts the data engineering team via Microsoft Teams."
tags:
- data-engineering
- azure-synapse-analytics
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_synapse_data_p
port: 8080
tools:
- name: azure-synapse
description: "Given an execution date, run the azure synapse data pipeline orchestrator 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_SYNAPSE_DATA_PIPELINE_ORCHESTRATOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.AZURE_SYNAPSE_DATA_PIPELINE_ORCHESTRATOR_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_azure_synapse_data_p_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Reconciles Bloomberg AIM trade records against Snowflake settlement data, flags breaks, and notifies the middle office via Microsoft Teams.
naftiko: "0.5"
info:
label: "Bloomberg AIM Trade Reconciliation"
description: "Reconciles Bloomberg AIM trade records against Snowflake settlement data, flags breaks, and notifies the middle office via Microsoft Teams."
tags:
- trading
- bloomberg
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: bloomberg_aim_trade_
port: 8080
tools:
- name: bloomberg-aim
description: "Given an execution date, run the bloomberg aim trade reconciliation 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.BLOOMBERG_AIM_TRADE_RECONCILIATION LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.BLOOMBERG_AIM_TRADE_RECONCILIATION_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_bloomberg_aim_trade__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 the latest security price from Bloomberg for a given ticker, including bid, ask, and last trade.
naftiko: "0.5"
info:
label: "Bloomberg Security Price Lookup"
description: "Retrieves the latest security price from Bloomberg for a given ticker, including bid, ask, and last trade."
tags:
- trading
- bloomberg
- market-data
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-security-price
description: "Given a Bloomberg ticker, retrieve the latest price data. Use for real-time trading decisions."
inputParameters:
- name: ticker
in: body
type: string
description: "The Bloomberg security ticker, e.g. 'AAPL US Equity'."
call: "bloomberg.get-price"
with:
ticker: "{{ticker}}"
outputParameters:
- name: last_price
type: string
mapping: "$.data.last"
- name: bid
type: string
mapping: "$.data.bid"
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/fields"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: securities
path: "/securities/{{ticker}}/snapshot"
inputParameters:
- name: ticker
in: path
operations:
- name: get-price
method: GET
Retrieves metadata for a Box file including name, size, and shared link status.
naftiko: "0.5"
info:
label: "Box Document Metadata Lookup"
description: "Retrieves metadata for a Box file including name, size, and shared link status."
tags:
- content-management
- box
- banking
capability:
exposes:
- type: mcp
namespace: ecm-lookup
port: 8080
tools:
- name: get-file-info
description: "Given a Box file ID, return the file name, size in bytes, and shared link URL. Use for document management queries."
inputParameters:
- name: file_id
in: body
type: string
description: "The Box file ID."
call: "box.get-file"
with:
file_id: "{{file_id}}"
outputParameters:
- name: name
type: string
mapping: "$.name"
- name: size
type: integer
mapping: "$.size"
- name: shared_link
type: string
mapping: "$.shared_link.url"
consumes:
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: files
path: "/files/{{file_id}}"
inputParameters:
- name: file_id
in: path
operations:
- name: get-file
method: GET
Monitors network connectivity across branch locations via Snowflake metrics, creates ServiceNow incidents for outages, and notifies the NOC via Microsoft Teams.
naftiko: "0.5"
info:
label: "Branch Network Health Monitor"
description: "Monitors network connectivity across branch locations via Snowflake metrics, creates ServiceNow incidents for outages, and notifies the NOC via Microsoft Teams."
tags:
- networking
- infrastructure
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: branch_network_healt
port: 8080
tools:
- name: branch-network
description: "Given an execution date, run the branch network 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.BRANCH_NETWORK_HEALTH_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.BRANCH_NETWORK_HEALTH_MONITOR_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "networking"
short_description: "Branch Network Health Monitor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_branch_network_healt_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Synchronizes branch staffing forecasts by pulling headcount from Workday, comparing to traffic data in Snowflake, and sending staffing recommendations to branch managers.
naftiko: "0.5"
info:
label: "Branch Staffing Forecast Sync"
description: "Synchronizes branch staffing forecasts by pulling headcount from Workday, comparing to traffic data in Snowflake, and sending staffing recommendations to branch managers."
tags:
- hr
- workday
- snowflake
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: workforce-planning
port: 8080
tools:
- name: sync-branch-staffing
description: "Given a branch ID and forecast period, pull Workday headcount, compare to foot traffic data, and notify branch management with recommendations. Use for quarterly staffing reviews."
inputParameters:
- name: branch_id
in: body
type: string
description: "The branch location ID."
- name: forecast_period
in: body
type: string
description: "The forecast period in YYYY-QN format."
steps:
- name: get-headcount
type: call
call: "workday.get-headcount"
with:
location_id: "{{branch_id}}"
- name: get-traffic
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT avg_daily_traffic FROM OPS.BRANCH_TRAFFIC WHERE branch_id='{{branch_id}}' AND period='{{forecast_period}}'"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_branch_mgmt_channel"
text: "Branch {{branch_id}} staffing: current headcount {{get-headcount.count}}, avg daily traffic {{get-traffic.avg_daily_traffic}} for {{forecast_period}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/wellsfargo"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: headcount
path: "/workers?location={{location_id}}"
inputParameters:
- name: location_id
in: query
operations:
- name: get-headcount
method: GET
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 Calypso trade lifecycle events in Snowflake, flags stuck or aged trades, and alerts the trading operations team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Calypso Trade Lifecycle Monitor"
description: "Monitors Calypso trade lifecycle events in Snowflake, flags stuck or aged trades, and alerts the trading operations team via Microsoft Teams."
tags:
- trading
- calypso
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: calypso_trade_lifecy
port: 8080
tools:
- name: calypso-trade
description: "Given an execution date, run the calypso trade lifecycle 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.CALYPSO_TRADE_LIFECYCLE_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.CALYPSO_TRADE_LIFECYCLE_MONITOR_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_calypso_trade_lifecy_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 Checkmarx SAST scan results, logs findings in Snowflake, creates Jira remediation tickets for critical vulnerabilities, and alerts the AppSec team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Checkmarx SAST Scan Result Handler"
description: "Processes Checkmarx SAST scan results, logs findings in Snowflake, creates Jira remediation tickets for critical vulnerabilities, and alerts the AppSec team via Microsoft Teams."
tags:
- security
- checkmarx
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: checkmarx_sast_scan_
port: 8080
tools:
- name: checkmarx-sast
description: "Given an execution date, run the checkmarx sast scan result 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.CHECKMARX_SAST_SCAN_RESULT_HANDLER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.CHECKMARX_SAST_SCAN_RESULT_HANDLER_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Checkmarx SAST Scan Result Handler - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_checkmarx_sast_scan__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 Cisco Firepower detects an intrusion, logs the alert in Splunk, creates a ServiceNow security incident, and alerts the SOC via Microsoft Teams.
naftiko: "0.5"
info:
label: "Cisco Firepower IDS Alert Handler"
description: "When Cisco Firepower detects an intrusion, logs the alert in Splunk, creates a ServiceNow security incident, and alerts the SOC via Microsoft Teams."
tags:
- security
- cisco
- splunk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cisco_firepower_ids_
port: 8080
tools:
- name: cisco-firepower
description: "Given an execution date, run the cisco firepower ids 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.CISCO_FIREPOWER_IDS_ALERT_HANDLER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.CISCO_FIREPOWER_IDS_ALERT_HANDLER_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "security"
short_description: "Cisco Firepower IDS Alert Handler processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_cisco_firepower_ids__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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: splunk
baseUri: "https://wellsfargo-splunk.example.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: events
path: "/receivers/simple"
operations:
- name: index-event
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 current state of an AWS CloudWatch alarm and returns the state value and reason.
naftiko: "0.5"
info:
label: "CloudWatch Alarm Check"
description: "Checks the current state of an AWS CloudWatch alarm and returns the state value and reason."
tags:
- monitoring
- amazon-web-services
- cloudwatch
- banking
capability:
exposes:
- type: mcp
namespace: aws-monitoring
port: 8080
tools:
- name: get-alarm-status
description: "Given an AWS CloudWatch alarm name, retrieve its current state and state reason. Use for operational monitoring dashboards."
inputParameters:
- name: alarm_name
in: body
type: string
description: "The CloudWatch alarm name."
call: "cloudwatch.describe-alarm"
with:
alarm_name: "{{alarm_name}}"
outputParameters:
- name: state_value
type: string
mapping: "$.MetricAlarms[0].StateValue"
- name: state_reason
type: string
mapping: "$.MetricAlarms[0].StateReason"
consumes:
- type: http
namespace: cloudwatch
baseUri: "https://monitoring.us-east-1.amazonaws.com"
authentication:
type: apikey
key: "X-Amz-Security-Token"
value: "$secrets.aws_session_token"
placement: header
resources:
- name: alarms
path: "/?Action=DescribeAlarms&AlarmNames.member.1={{alarm_name}}"
inputParameters:
- name: alarm_name
in: query
operations:
- name: describe-alarm
method: GET
Monitors loan covenants by pulling financial ratios from Snowflake, comparing against thresholds, creating Jira alerts for breaches, and notifying the credit risk team.
naftiko: "0.5"
info:
label: "Commercial Loan Covenant Monitor"
description: "Monitors loan covenants by pulling financial ratios from Snowflake, comparing against thresholds, creating Jira alerts for breaches, and notifying the credit risk team."
tags:
- lending
- risk
- snowflake
- jira
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: credit-monitoring
port: 8080
tools:
- name: check-covenants
description: "Given a borrower ID and reporting date, pull financial ratios, check covenant thresholds, flag breaches, and notify credit risk. Use for quarterly covenant compliance checks."
inputParameters:
- name: borrower_id
in: body
type: string
description: "The commercial borrower identifier."
- name: reporting_date
in: body
type: string
description: "The covenant reporting date in YYYY-MM-DD format."
steps:
- name: get-ratios
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM LENDING.COVENANT_RATIOS WHERE borrower_id='{{borrower_id}}' AND report_date='{{reporting_date}}'"
- name: flag-breach
type: call
call: "jira.create-issue"
with:
project: "CRISK"
issue_type: "Bug"
summary: "Covenant breach: borrower {{borrower_id}} as of {{reporting_date}}"
- name: notify-credit
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_credit_channel"
text: "Covenant check for borrower {{borrower_id}} ({{reporting_date}}): {{get-ratios.breach_count}} breaches detected. Ticket: {{flag-breach.key}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 Confluence page by ID and returns the title, body content, and last modified date.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base Lookup"
description: "Retrieves a Confluence page by ID and returns the title, body content, and last modified date."
tags:
- documentation
- confluence
- banking
capability:
exposes:
- type: mcp
namespace: wiki-lookup
port: 8080
tools:
- name: get-page
description: "Given a Confluence page ID, return the page title, content body, and last modified date. Use for knowledge base lookups."
inputParameters:
- name: page_id
in: body
type: string
description: "The Confluence page ID."
call: "confluence.get-page"
with:
page_id: "{{page_id}}"
outputParameters:
- name: title
type: string
mapping: "$.title"
- name: body
type: string
mapping: "$.body.storage.value"
- name: last_modified
type: string
mapping: "$.version.when"
consumes:
- type: http
namespace: confluence
baseUri: "https://wellsfargo.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content/{{page_id}}?expand=body.storage,version"
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
Retrieves a Confluence wiki page by ID, returning title, space, and version number.
naftiko: "0.5"
info:
label: "Confluence Page Lookup"
description: "Retrieves a Confluence wiki page by ID, returning title, space, and version number."
tags:
- documentation
- confluence
- knowledge-management
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: get-page
description: "Given a Confluence page ID, retrieve the page title and space key. 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"
- name: space_key
type: string
mapping: "$.space.key"
consumes:
- type: http
namespace: confluence
baseUri: "https://wellsfargo.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content/{{page_id}}?expand=version,space"
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
When a consumer complaint is filed in Salesforce, categorizes it using Snowflake analytics, creates a ServiceNow case, and notifies the complaints team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Consumer Complaint Triage Workflow"
description: "When a consumer complaint is filed in Salesforce, categorizes it using Snowflake analytics, creates a ServiceNow case, and notifies the complaints team via Microsoft Teams."
tags:
- compliance
- consumer-complaints
- salesforce
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer_complaint_t
port: 8080
tools:
- name: consumer-complaint
description: "Given an execution date, run the consumer complaint triage 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.CONSUMER_COMPLAINT_TRIAGE_WORKFLOW LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.CONSUMER_COMPLAINT_TRIAGE_WORKFLOW_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "compliance"
short_description: "Consumer Complaint Triage Workflow processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_consumer_complaint_t_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Deploys a credit risk ML model by pulling the artifact from Azure ML, validating in Snowflake, registering in Databricks, and notifying the risk team.
naftiko: "0.5"
info:
label: "Credit Risk ML Model Deployment Chain"
description: "Deploys a credit risk ML model by pulling the artifact from Azure ML, validating in Snowflake, registering in Databricks, and notifying the risk team."
tags:
- risk
- azure-machine-learning
- snowflake
- databricks
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: ml-ops
port: 8080
tools:
- name: deploy-risk-model
description: "Given a model name and version, fetch the artifact, validate, register, and notify. Use for model promotion to production."
inputParameters:
- name: model_name
in: body
type: string
description: "The ML model name."
- name: model_version
in: body
type: string
description: "The model version to deploy."
steps:
- name: get-model
type: call
call: "azureml.get-model"
with:
model_name: "{{model_name}}"
version: "{{model_version}}"
- name: validate-model
type: call
call: "snowflake.execute-statement"
with:
statement: "CALL RISK.VALIDATE_MODEL('{{model_name}}', '{{model_version}}')"
- name: register-model
type: call
call: "databricks.register-model"
with:
model_name: "{{model_name}}"
version: "{{model_version}}"
- name: notify-risk
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_risk_channel"
text: "Model {{model_name}} v{{model_version}} deployed. Validation: {{validate-model.status}}."
consumes:
- type: http
namespace: azureml
baseUri: "https://ml.azure.com/api"
authentication:
type: bearer
token: "$secrets.azureml_token"
resources:
- name: models
path: "/models/{{model_name}}/versions/{{version}}"
inputParameters:
- name: model_name
in: path
- name: version
in: path
operations:
- name: get-model
method: GET
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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: databricks
baseUri: "https://wellsfargo.cloud.databricks.com/api/2.0"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: model-versions
path: "/mlflow/model-versions/create"
operations:
- name: register-model
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
Promotes a validated credit risk model from Databricks staging to production, logs the deployment in Snowflake, and notifies the risk analytics team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Credit Risk Model Deployment Pipeline"
description: "Promotes a validated credit risk model from Databricks staging to production, logs the deployment in Snowflake, and notifies the risk analytics team via Microsoft Teams."
tags:
- risk
- databricks
- snowflake
- microsoft-teams
- mlops
capability:
exposes:
- type: mcp
namespace: credit_risk_model_de
port: 8080
tools:
- name: credit-risk
description: "Given an execution date, run the credit risk model deployment 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.CREDIT_RISK_MODEL_DEPLOYMENT_PIPELINE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.CREDIT_RISK_MODEL_DEPLOYMENT_PIPELINE_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_credit_risk_model_de_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 account closure is requested in Salesforce, validates pending transactions in Snowflake, creates a ServiceNow task, and notifies branch operations via Microsoft Teams.
naftiko: "0.5"
info:
label: "Customer Account Closure Workflow"
description: "When an account closure is requested in Salesforce, validates pending transactions in Snowflake, creates a ServiceNow task, and notifies branch operations via Microsoft Teams."
tags:
- banking
- salesforce
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer_account_clo
port: 8080
tools:
- name: customer-account
description: "Given an execution date, run the customer account closure 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.CUSTOMER_ACCOUNT_CLOSURE_WORKFLOW LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.CUSTOMER_ACCOUNT_CLOSURE_WORKFLOW_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "banking"
short_description: "Customer Account Closure Workflow processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_customer_account_clo_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Scans vulnerability data in Snowflake, creates Jira remediation tickets for critical findings, and alerts the security team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Cybersecurity Vulnerability Remediation Tracker"
description: "Scans vulnerability data in Snowflake, creates Jira remediation tickets for critical findings, and alerts the security team via Microsoft Teams."
tags:
- security
- vulnerability
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cybersecurity_vulner
port: 8080
tools:
- name: cybersecurity-vulnerability
description: "Given an execution date, run the cybersecurity vulnerability remediation 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.CYBERSECURITY_VULNERABILITY_REMEDIATION_TRACKER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.CYBERSECURITY_VULNERABILITY_REMEDIATION_TRACKER_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Cybersecurity Vulnerability Remediation Tracker - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_cybersecurity_vulner_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Checks the current status of a Datadog monitor and returns the overall state and last triggered time.
naftiko: "0.5"
info:
label: "Datadog Monitor Status Check"
description: "Checks the current status of a Datadog monitor and returns the overall state and last triggered time."
tags:
- monitoring
- datadog
- banking
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-monitor-status
description: "Given a Datadog monitor ID, return the current overall status and last triggered timestamp. Use for operational health checks."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID."
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
outputParameters:
- name: overall_state
type: string
mapping: "$.overall_state"
- name: last_triggered
type: string
mapping: "$.overall_state_modified"
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: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
Queries Datadog for the current health status of a specified service, returning uptime and alert count.
naftiko: "0.5"
info:
label: "Datadog Service Health Check"
description: "Queries Datadog for the current health status of a specified service, returning uptime and alert count."
tags:
- monitoring
- datadog
- observability
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-service-health
description: "Given a Datadog service name, retrieve its health status and uptime. Use for operational readiness 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
Syncs Dealogic investment banking deal pipeline data to Snowflake, compares against targets, and notifies the deal team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Dealogic Deal Pipeline Sync"
description: "Syncs Dealogic investment banking deal pipeline data to Snowflake, compares against targets, and notifies the deal team via Microsoft Teams."
tags:
- investment-banking
- dealogic
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dealogic_deal_pipeli
port: 8080
tools:
- name: dealogic-deal
description: "Given an execution date, run the dealogic deal pipeline 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.DEALOGIC_DEAL_PIPELINE_SYNC LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.DEALOGIC_DEAL_PIPELINE_SYNC_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_dealogic_deal_pipeli_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 deposit rates change, updates the rate table in Snowflake, refreshes the Power BI dashboard, and notifies branch managers and treasury via Microsoft Teams.
naftiko: "0.5"
info:
label: "Deposit Rate Change Propagation"
description: "When deposit rates change, updates the rate table in Snowflake, refreshes the Power BI dashboard, and notifies branch managers and treasury via Microsoft Teams."
tags:
- treasury
- snowflake
- power-bi
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: rates-ops
port: 8080
tools:
- name: propagate-rate-change
description: "Given a product type and new rate, update the rate table, refresh dashboards, and notify stakeholders. Use when the ALCO committee approves rate changes."
inputParameters:
- name: product_type
in: body
type: string
description: "The deposit product type (e.g., SAVINGS, CD_12M, MMDA)."
- name: new_rate
in: body
type: string
description: "The new interest rate as a decimal (e.g., 0.0425)."
steps:
- name: update-rate
type: call
call: "snowflake.execute-statement"
with:
statement: "UPDATE TREASURY.DEPOSIT_RATES SET rate={{new_rate}}, effective_date=CURRENT_DATE WHERE product='{{product_type}}'"
- name: refresh-dashboard
type: call
call: "powerbi.trigger-refresh"
with:
dataset_id: "$secrets.rates_dataset_id"
- name: notify-treasury
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_treasury_channel"
text: "Deposit rate update: {{product_type}} now {{new_rate}}. Dashboard refreshed."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refreshes
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
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
Validates a digital banking release by checking the GitHub Actions pipeline, running smoke tests via Datadog, and posting results to Microsoft Teams.
naftiko: "0.5"
info:
label: "Digital Banking Release Validation"
description: "Validates a digital banking release by checking the GitHub Actions pipeline, running smoke tests via Datadog, and posting results to Microsoft Teams."
tags:
- devops
- github-actions
- datadog
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: release-ops
port: 8080
tools:
- name: validate-release
description: "Given a GitHub repository and release tag, verify CI pipeline passed, trigger synthetic tests, and notify the release team. Use after each digital banking deployment."
inputParameters:
- name: repo_name
in: body
type: string
description: "The GitHub repository name."
- name: release_tag
in: body
type: string
description: "The release tag (e.g., v2.5.1)."
steps:
- name: check-pipeline
type: call
call: "github.get-workflow-run"
with:
repo: "{{repo_name}}"
tag: "{{release_tag}}"
- name: run-synthetics
type: call
call: "datadog.trigger-synthetics"
with:
test_ids: "$secrets.digital_banking_test_ids"
- name: notify-release
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_release_channel"
text: "Release {{release_tag}} for {{repo_name}}: CI {{check-pipeline.conclusion}}, synthetics {{run-synthetics.status}}."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/wellsfargo/{{repo}}/actions/runs?branch={{tag}}"
inputParameters:
- name: repo
in: path
- name: tag
in: query
operations:
- name: get-workflow-run
method: GET
- 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: synthetics
path: "/synthetics/tests/trigger"
operations:
- name: trigger-synthetics
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
Assigns incoming leads in Microsoft Dynamics 365 based on territory rules in Snowflake, creates Jira tasks for follow-up, and notifies assigned reps via Microsoft Teams.
naftiko: "0.5"
info:
label: "Dynamics 365 CRM Lead Assignment"
description: "Assigns incoming leads in Microsoft Dynamics 365 based on territory rules in Snowflake, creates Jira tasks for follow-up, and notifies assigned reps via Microsoft Teams."
tags:
- sales
- microsoft-dynamics-365
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dynamic_365_crm_lead
port: 8080
tools:
- name: dynamic-365
description: "Given an execution date, run the dynamics 365 crm lead assignment 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.DYNAMIC_365_CRM_LEAD_ASSIGNMENT LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.DYNAMIC_365_CRM_LEAD_ASSIGNMENT_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Dynamics 365 CRM Lead Assignment - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_dynamic_365_crm_lead_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 an employee separation is processed in Workday, creates a ServiceNow offboarding task for access revocation and notifies HR Operations via Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Separation and Access Revocation"
description: "When an employee separation is processed in Workday, creates a ServiceNow offboarding task for access revocation and notifies HR Operations via Microsoft Teams."
tags:
- hr
- offboarding
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-employee-offboarding
description: "Given a Workday employee ID and separation date, create a ServiceNow access revocation task and notify HR Operations in Microsoft Teams. Invoke on any voluntary or involuntary separation at Wells Fargo."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "Workday worker ID of the departing employee."
- name: separation_date
in: body
type: string
description: "Last working day in ISO 8601 format (YYYY-MM-DD)."
- name: separation_type
in: body
type: string
description: "Separation type: voluntary, involuntary, retirement, transfer."
steps:
- name: get-worker
type: call
call: workday-off.get-worker
with:
worker_id: "{{workday_employee_id}}"
- name: create-offboarding-task
type: call
call: servicenow-off.create-task
with:
category: hr_offboarding
short_description: "Offboarding: {{get-worker.full_name}} — {{separation_date}}"
assigned_group: IT_Access_Management
description: "Employee {{workday_employee_id}} separating on {{separation_date}} ({{separation_type}}). All system access must be revoked."
- name: notify-hr-ops
type: call
call: msteams-hrops.send-message
with:
channel_id: "$secrets.teams_hrops_channel_id"
text: "Offboarding initiated: {{get-worker.full_name}} ({{workday_employee_id}}). Separation: {{separation_date}} ({{separation_type}}). ServiceNow task: {{create-offboarding-task.number}}."
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: "/wellsfargo/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow-off
baseUri: "https://wellsfargo.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
- type: http
namespace: msteams-hrops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves company fundamental data from FactSet including market cap, P/E ratio, and revenue.
naftiko: "0.5"
info:
label: "FactSet Company Fundamentals Lookup"
description: "Retrieves company fundamental data from FactSet including market cap, P/E ratio, and revenue."
tags:
- research
- factset
- financial-data
capability:
exposes:
- type: mcp
namespace: research
port: 8080
tools:
- name: get-fundamentals
description: "Given a FactSet entity ID, retrieve company fundamentals. Use for investment research and due diligence."
inputParameters:
- name: entity_id
in: body
type: string
description: "The FactSet entity ID."
call: "factset.get-fundamentals"
with:
entity_id: "{{entity_id}}"
outputParameters:
- name: market_cap
type: string
mapping: "$.data.marketCap"
- name: pe_ratio
type: string
mapping: "$.data.peRatio"
consumes:
- type: http
namespace: factset
baseUri: "https://api.factset.com/content/factset-fundamentals/v2"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_password"
resources:
- name: companies
path: "/fundamentals?ids={{entity_id}}"
inputParameters:
- name: entity_id
in: query
operations:
- name: get-fundamentals
method: GET
When a Figma design is marked as ready, creates Jira development tickets with design links, and notifies the engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Figma Design Handoff Workflow"
description: "When a Figma design is marked as ready, creates Jira development tickets with design links, and notifies the engineering team via Microsoft Teams."
tags:
- design
- figma
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: figma_design_handoff
port: 8080
tools:
- name: figma-design
description: "Given an execution date, run the figma design handoff 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.FIGMA_DESIGN_HANDOFF_WORKFLOW LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.FIGMA_DESIGN_HANDOFF_WORKFLOW_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Figma Design Handoff Workflow - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_figma_design_handoff_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 fraud alert is raised, pulls the transaction details from Snowflake, creates a Jira investigation ticket, and sends an urgent notification to the fraud operations team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Fraud Alert Investigation Chain"
description: "When a fraud alert is raised, pulls the transaction details from Snowflake, creates a Jira investigation ticket, and sends an urgent notification to the fraud operations team via Microsoft Teams."
tags:
- fraud
- snowflake
- jira
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: investigate-fraud-alert
description: "Given a transaction ID and alert severity, pull transaction details, open a Jira investigation ticket, and notify fraud ops. Use when real-time fraud alerts are triggered."
inputParameters:
- name: transaction_id
in: body
type: string
description: "The transaction ID flagged for fraud."
- name: alert_severity
in: body
type: string
description: "Alert severity level (HIGH, MEDIUM, LOW)."
steps:
- name: get-transaction
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM FRAUD.TRANSACTIONS WHERE txn_id='{{transaction_id}}'"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "FRAUD"
issue_type: "Bug"
summary: "Fraud alert [{{alert_severity}}]: txn {{transaction_id}}"
- name: notify-fraud-ops
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_fraud_channel"
text: "Fraud alert for txn {{transaction_id}} ({{alert_severity}}). Investigation ticket: {{create-ticket.key}}. Amount: {{get-transaction.amount}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 fraud scoring results in Snowflake, creates ServiceNow cases for high-risk transactions, and alerts the fraud operations team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Fraud Detection Alert Pipeline"
description: "Analyzes fraud scoring results in Snowflake, creates ServiceNow cases for high-risk transactions, and alerts the fraud operations team via Microsoft Teams."
tags:
- banking
- fraud
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fraud_detection_aler
port: 8080
tools:
- name: fraud-detection
description: "Given an execution date, run the fraud detection alert 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.FRAUD_DETECTION_ALERT_PIPELINE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.FRAUD_DETECTION_ALERT_PIPELINE_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "banking"
short_description: "Fraud Detection Alert Pipeline processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_fraud_detection_aler_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 GitHub Actions workflow fails on a protected branch, creates a Jira bug in the engineering project and posts an alert to the platform engineering Microsoft Teams channel.
naftiko: "0.5"
info:
label: "GitHub CI/CD Pipeline Failure to Jira"
description: "When a GitHub Actions workflow fails on a protected branch, creates a Jira bug in the engineering project and posts an alert to the platform engineering Microsoft Teams channel."
tags:
- devops
- cicd
- github
- jira
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: cicd-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a failed GitHub Actions run, create a Jira bug and alert the platform engineering Teams channel. Invoke on protected-branch pipeline failures for critical banking application repositories."
inputParameters:
- name: repo
in: body
type: string
description: "GitHub repository in owner/repo format (e.g. wells-fargo/core-banking-api)."
- name: workflow_run_id
in: body
type: string
description: "GitHub Actions workflow run ID that failed."
- name: branch
in: body
type: string
description: "Branch name where the failure occurred."
- name: commit_sha
in: body
type: string
description: "Commit SHA of the failed run."
steps:
- name: get-run-details
type: call
call: github.get-workflow-run
with:
repo: "{{repo}}"
run_id: "{{workflow_run_id}}"
- name: create-jira-bug
type: call
call: jira.create-issue
with:
project_key: PLAT
issuetype: Bug
summary: "[CI Failure] {{repo}} / {{branch}} — {{get-run-details.name}}"
description: "Workflow: {{get-run-details.name}}\nBranch: {{branch}}\nCommit: {{commit_sha}}\nURL: {{get-run-details.html_url}}"
- name: alert-platform-eng
type: call
call: msteams-platform.send-message
with:
channel_id: "$secrets.teams_platform_channel_id"
text: "CI/CD failure: {{repo}} | Branch: {{branch}} | Jira: {{create-jira-bug.key}} | Run: {{get-run-details.html_url}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repo}}/actions/runs/{{run_id}}"
inputParameters:
- name: repo
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: "https://wellsfargo.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-platform
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Collects GitHub Copilot usage metrics, stores analytics in Snowflake, and distributes adoption reports to engineering leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "GitHub Copilot Usage Analytics Reporter"
description: "Collects GitHub Copilot usage metrics, stores analytics in Snowflake, and distributes adoption reports to engineering leadership via Microsoft Teams."
tags:
- devops
- github-copilot
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_copilot_usage
port: 8080
tools:
- name: github-copilot
description: "Given an execution date, run the github copilot usage analytics 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.GITHUB_COPILOT_USAGE_ANALYTICS_REPORTER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.GITHUB_COPILOT_USAGE_ANALYTICS_REPORTER_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_github_copilot_usage_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 vulnerability alerts, logs them in Snowflake, creates Jira remediation tickets, and notifies the security engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "GitHub Dependabot Vulnerability Triage"
description: "Processes GitHub Dependabot vulnerability alerts, logs them 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_vu
port: 8080
tools:
- name: github-dependabot
description: "Given an execution date, run the github dependabot vulnerability 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_VULNERABILITY_TRIAGE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.GITHUB_DEPENDABOT_VULNERABILITY_TRIAGE_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "GitHub Dependabot Vulnerability Triage - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_github_dependabot_vu_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 including description, default branch, and open issue count.
naftiko: "0.5"
info:
label: "GitHub Repository Info Lookup"
description: "Retrieves metadata for a GitHub repository including description, default branch, and open issue count."
tags:
- devops
- github
- banking
capability:
exposes:
- type: mcp
namespace: scm-lookup
port: 8080
tools:
- name: get-repo-info
description: "Given a GitHub org and repo name, return the description, default branch, and open issues count. Use for developer portal lookups."
inputParameters:
- name: org
in: body
type: string
description: "The GitHub organization name."
- name: repo
in: body
type: string
description: "The GitHub repository name."
call: "github.get-repo"
with:
org: "{{org}}"
repo: "{{repo}}"
outputParameters:
- name: description
type: string
mapping: "$.description"
- name: default_branch
type: string
mapping: "$.default_branch"
- name: open_issues
type: integer
mapping: "$.open_issues_count"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{org}}/{{repo}}"
inputParameters:
- name: org
in: path
- name: repo
in: path
operations:
- name: get-repo
method: GET
Retrieves metadata for a GitHub repository including default branch, open issues, and visibility.
naftiko: "0.5"
info:
label: "GitHub Repository Info Lookup"
description: "Retrieves metadata for a GitHub repository including default branch, open issues, and visibility."
tags:
- devops
- github
- source-control
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-repo-info
description: "Given a GitHub org and repo name, retrieve repository 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"
- name: default_branch
type: string
mapping: "$.default_branch"
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
Scans GitHub repositories for open Dependabot and code scanning alerts, aggregates findings by severity, and posts a weekly digest to the AppSec Microsoft Teams channel.
naftiko: "0.5"
info:
label: "GitHub Repository Security Advisory Scan"
description: "Scans GitHub repositories for open Dependabot and code scanning alerts, aggregates findings by severity, and posts a weekly digest to the AppSec Microsoft Teams channel."
tags:
- devops
- security
- github
- microsoft-teams
- devsecops
- appsec
capability:
exposes:
- type: mcp
namespace: appsec-scanning
port: 8080
tools:
- name: digest-repo-security-alerts
description: "Given a GitHub organization and severity filter, retrieve open Dependabot and code scanning alerts and post a digest to the AppSec Teams channel. Use for weekly security hygiene reviews on banking application repositories."
inputParameters:
- name: github_org
in: body
type: string
description: "GitHub organization to scan (e.g. wells-fargo)."
- name: severity_filter
in: body
type: string
description: "Minimum severity to include: critical, high, medium."
steps:
- name: get-dependabot-alerts
type: call
call: github-sec.list-org-alerts
with:
org: "{{github_org}}"
severity: "{{severity_filter}}"
- name: post-security-digest
type: call
call: msteams-appsec.send-message
with:
channel_id: "$secrets.teams_appsec_channel_id"
text: "Weekly security scan for {{github_org}}: {{get-dependabot-alerts.total_count}} open alerts (Critical: {{get-dependabot-alerts.critical_count}}, High: {{get-dependabot-alerts.high_count}}). Review in GitHub Security."
consumes:
- type: http
namespace: github-sec
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: org-alerts
path: "/orgs/{{org}}/dependabot/alerts"
inputParameters:
- name: org
in: path
- name: severity
in: query
operations:
- name: list-org-alerts
method: GET
- type: http
namespace: msteams-appsec
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Grafana dashboard by UID and returns the title, panel count, and last updated timestamp.
naftiko: "0.5"
info:
label: "Grafana Dashboard Info Lookup"
description: "Retrieves a Grafana dashboard by UID and returns the title, panel count, and last updated timestamp."
tags:
- monitoring
- grafana
- banking
capability:
exposes:
- type: mcp
namespace: observability-dash
port: 8080
tools:
- name: get-dashboard
description: "Given a Grafana dashboard UID, return the dashboard title, number of panels, and last updated time. Use for observability catalog queries."
inputParameters:
- name: dashboard_uid
in: body
type: string
description: "The Grafana dashboard UID."
call: "grafana.get-dashboard"
with:
uid: "{{dashboard_uid}}"
outputParameters:
- name: title
type: string
mapping: "$.dashboard.title"
- name: panel_count
type: integer
mapping: "$.dashboard.panels.length"
- name: updated
type: string
mapping: "$.meta.updated"
consumes:
- type: http
namespace: grafana
baseUri: "https://grafana.wellsfargo.com/api"
authentication:
type: bearer
token: "$secrets.grafana_token"
resources:
- name: dashboards
path: "/dashboards/uid/{{uid}}"
inputParameters:
- name: uid
in: path
operations:
- name: get-dashboard
method: GET
Monitors IBM MQ queue depths from Snowflake metrics, flags queues approaching capacity, creates Jira tasks, and alerts the middleware team via Microsoft Teams.
naftiko: "0.5"
info:
label: "IBM MQ Queue Depth Monitor"
description: "Monitors IBM MQ queue depths from Snowflake metrics, flags queues approaching capacity, creates Jira tasks, and alerts the middleware team via Microsoft Teams."
tags:
- integration
- ibm-mq
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ibm_mq_queue_depth_m
port: 8080
tools:
- name: ibm-mq
description: "Given an execution date, run the ibm mq queue depth 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.IBM_MQ_QUEUE_DEPTH_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.IBM_MQ_QUEUE_DEPTH_MONITOR_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "IBM MQ Queue Depth Monitor - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_ibm_mq_queue_depth_m_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 Istio service mesh traffic patterns from Snowflake metrics, identifies anomalies, creates Jira investigation tickets, and alerts the platform team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Istio Service Mesh Traffic Analyzer"
description: "Analyzes Istio service mesh traffic patterns from Snowflake metrics, identifies anomalies, creates Jira investigation tickets, and alerts the platform team via Microsoft Teams."
tags:
- infrastructure
- istio
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: istio_service_mesh_t
port: 8080
tools:
- name: istio-service
description: "Given an execution date, run the istio service mesh traffic 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.ISTIO_SERVICE_MESH_TRAFFIC_ANALYZER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.ISTIO_SERVICE_MESH_TRAFFIC_ANALYZER_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Istio Service Mesh Traffic Analyzer - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_istio_service_mesh_t_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Manages IT change requests by creating a ServiceNow change record, running pre-change health checks in Datadog, and notifying the CAB via Microsoft Teams.
naftiko: "0.5"
info:
label: "IT Change Management Chain"
description: "Manages IT change requests by creating a ServiceNow change record, running pre-change health checks in Datadog, and notifying the CAB via Microsoft Teams."
tags:
- itsm
- servicenow
- datadog
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: process-change-request
description: "Given a change description, risk level, and implementation window, create the ServiceNow record, validate system health, and notify the CAB. Use for production change management."
inputParameters:
- name: change_description
in: body
type: string
description: "Description of the proposed change."
- name: risk_level
in: body
type: string
description: "Risk level: Low, Medium, High, Emergency."
steps:
- name: create-change
type: call
call: "servicenow.create-change"
with:
description: "{{change_description}}"
risk: "{{risk_level}}"
- name: health-check
type: call
call: "datadog.get-monitor"
with:
monitor_id: "$secrets.prod_health_monitor_id"
- name: notify-cab
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_cab_channel"
text: "Change request {{create-change.number}}: {{change_description}}. Risk: {{risk_level}}. System health: {{health-check.overall_state}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://wellsfargo.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request"
operations:
- name: create-change
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: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- 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 unused artifacts in JFrog Artifactory, logs cleanup candidates in Snowflake, creates Jira cleanup tasks, and notifies the DevOps team via Microsoft Teams.
naftiko: "0.5"
info:
label: "JFrog Artifactory Artifact Cleanup"
description: "Identifies unused artifacts in JFrog Artifactory, logs cleanup candidates in Snowflake, creates Jira cleanup tasks, and notifies the DevOps team via Microsoft Teams."
tags:
- devops
- jfrog-artifactory
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: jfrog_artifactory_ar
port: 8080
tools:
- name: jfrog-artifactory
description: "Given an execution date, run the jfrog artifactory artifact cleanup 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.JFROG_ARTIFACTORY_ARTIFACT_CLEANUP LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.JFROG_ARTIFACTORY_ARTIFACT_CLEANUP_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "JFrog Artifactory Artifact Cleanup - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_jfrog_artifactory_ar_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 Jira issue by key, returning summary, status, assignee, and priority.
naftiko: "0.5"
info:
label: "Jira Issue Lookup"
description: "Retrieves a Jira issue by key, returning summary, status, assignee, and priority."
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 the issue details. Use for status updates and triage."
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://wellsfargo.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue/{{issue_key}}"
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Retrieves completed sprint data from Jira, calculates story point velocity, and publishes the report to the technology leadership Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Jira Sprint Board Velocity Report"
description: "Retrieves completed sprint data from Jira, calculates story point velocity, and publishes the report to the technology leadership Microsoft Teams channel."
tags:
- devops
- jira
- microsoft-teams
- reporting
- agile
capability:
exposes:
- type: mcp
namespace: agile-metrics
port: 8080
tools:
- name: publish-sprint-velocity-report
description: "Given a Jira board ID and sprint ID, retrieve completed issues and story points, and post the velocity summary to the technology leadership Teams channel. Use after each sprint close."
inputParameters:
- name: board_id
in: body
type: string
description: "Jira board ID (numeric string)."
- name: sprint_id
in: body
type: string
description: "Jira sprint ID for the completed sprint."
steps:
- name: get-sprint-details
type: call
call: jira.get-sprint
with:
sprint_id: "{{sprint_id}}"
- name: get-completed-issues
type: call
call: jira.search-issues
with:
jql: "sprint = {{sprint_id}} AND status = Done"
- name: post-velocity-report
type: call
call: msteams-tech.send-message
with:
channel_id: "$secrets.teams_tech_channel_id"
text: "Sprint {{get-sprint-details.name}} velocity: {{get-completed-issues.total}} issues completed. Goal: {{get-sprint-details.goal}}. Board: {{board_id}}."
consumes:
- type: http
namespace: jira
baseUri: "https://wellsfargo.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: sprints
path: "/sprint/{{sprint_id}}"
inputParameters:
- name: sprint_id
in: path
operations:
- name: get-sprint
method: GET
- name: issues
path: "/search"
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: msteams-tech
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Jira issue by key and returns summary, status, assignee, and priority.
naftiko: "0.5"
info:
label: "Jira Ticket Lookup"
description: "Retrieves a Jira issue by key and returns summary, status, assignee, and priority."
tags:
- project-management
- jira
- banking
capability:
exposes:
- type: mcp
namespace: pm-lookup
port: 8080
tools:
- name: get-issue
description: "Given a Jira issue key, return the issue summary, status, assignee, and priority. Use for project tracking and status inquiries."
inputParameters:
- name: issue_key
in: body
type: string
description: "The Jira issue key (e.g., PROJ-123)."
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"
- name: assignee
type: string
mapping: "$.fields.assignee.displayName"
consumes:
- type: http
namespace: jira
baseUri: "https://wellsfargo.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
Audits Keycloak SSO sessions for anomalous patterns, logs findings in Snowflake, creates ServiceNow security incidents, and alerts the IAM team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Keycloak SSO Session Audit"
description: "Audits Keycloak SSO sessions for anomalous patterns, logs findings in Snowflake, creates ServiceNow security incidents, and alerts the IAM team via Microsoft Teams."
tags:
- security
- keycloak
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: keycloak_sso_session
port: 8080
tools:
- name: keycloak-sso
description: "Given an execution date, run the keycloak sso session 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.KEYCLOAK_SSO_SESSION_AUDIT LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.KEYCLOAK_SSO_SESSION_AUDIT_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "security"
short_description: "Keycloak SSO Session Audit processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_keycloak_sso_session_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Orchestrates Know Your Customer onboarding by creating a Salesforce case, running identity checks via Snowflake, provisioning access in Okta, and notifying the compliance team.
naftiko: "0.5"
info:
label: "KYC Customer Onboarding Workflow"
description: "Orchestrates Know Your Customer onboarding by creating a Salesforce case, running identity checks via Snowflake, provisioning access in Okta, and notifying the compliance team."
tags:
- compliance
- kyc
- salesforce
- snowflake
- okta
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: kyc-ops
port: 8080
tools:
- name: onboard-customer
description: "Given a customer name and application ID, create a CRM case, run KYC checks, provision access, and notify compliance. Use for new commercial banking customer onboarding."
inputParameters:
- name: customer_name
in: body
type: string
description: "The customer company name."
- name: application_id
in: body
type: string
description: "The KYC application ID."
steps:
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "KYC Onboarding: {{customer_name}}"
application_id: "{{application_id}}"
- name: run-kyc-checks
type: call
call: "snowflake.execute-statement"
with:
statement: "CALL COMPLIANCE.RUN_KYC_CHECK('{{application_id}}')"
- name: provision-access
type: call
call: "okta.create-user"
with:
company_name: "{{customer_name}}"
application_id: "{{application_id}}"
- name: notify-compliance
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_kyc_channel"
text: "KYC onboarding complete for {{customer_name}} ({{application_id}}). Case: {{create-case.id}}. KYC status: {{run-kyc-checks.result}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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: okta
baseUri: "https://wellsfargo.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users"
operations:
- name: create-user
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 an approved Workday job requisition and publishes it to LinkedIn Jobs, logging the external posting record back in Workday for recruiting pipeline tracking.
naftiko: "0.5"
info:
label: "LinkedIn Job Posting for Open Requisitions"
description: "Retrieves an approved Workday job requisition and publishes it to LinkedIn Jobs, logging the external posting record back in Workday for recruiting pipeline tracking."
tags:
- hr
- recruiting
- workday
- linkedin
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: post-job-to-linkedin
description: "Given a Workday job requisition ID, retrieve the job details and publish the opening to LinkedIn Jobs. Use when a requisition is approved and ready for external advertising."
inputParameters:
- name: requisition_id
in: body
type: string
description: "Workday job requisition ID (e.g. JR-00023456)."
- name: linkedin_organization_id
in: body
type: string
description: "LinkedIn organization ID for the Wells Fargo company page."
steps:
- name: get-requisition
type: call
call: workday-ta.get-job-requisition
with:
requisition_id: "{{requisition_id}}"
- name: publish-job-posting
type: call
call: linkedin.create-job-posting
with:
organization_id: "{{linkedin_organization_id}}"
title: "{{get-requisition.job_title}}"
description: "{{get-requisition.job_description}}"
location: "{{get-requisition.location}}"
consumes:
- type: http
namespace: workday-ta
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: job-requisitions
path: "/wellsfargo/jobRequisitions/{{requisition_id}}"
inputParameters:
- name: requisition_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
Monitors Linkerd golden signals from Snowflake metrics, flags SLO breaches, creates ServiceNow incidents, and alerts the SRE team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Linkerd Service Mesh Golden Signal Monitor"
description: "Monitors Linkerd golden signals from Snowflake metrics, flags SLO breaches, creates ServiceNow incidents, and alerts the SRE team via Microsoft Teams."
tags:
- infrastructure
- linkerd
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: linkerd_service_mesh
port: 8080
tools:
- name: linkerd-service
description: "Given an execution date, run the linkerd service mesh golden signal 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.LINKERD_SERVICE_MESH_GOLDEN_SIGNAL_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.LINKERD_SERVICE_MESH_GOLDEN_SIGNAL_MONITOR_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "infrastructure"
short_description: "Linkerd Service Mesh Golden Signal Monitor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_linkerd_service_mesh_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Tracks loan origination status by querying Snowflake for pipeline data, updating the Salesforce opportunity, and publishing a summary to Microsoft Teams.
naftiko: "0.5"
info:
label: "Loan Origination Status Tracker"
description: "Tracks loan origination status by querying Snowflake for pipeline data, updating the Salesforce opportunity, and publishing a summary to Microsoft Teams."
tags:
- lending
- snowflake
- salesforce
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: lending-ops
port: 8080
tools:
- name: track-loan-status
description: "Given a loan application ID, pull pipeline status from Snowflake, sync to Salesforce, and notify the originations team. Use for daily loan pipeline reviews."
inputParameters:
- name: loan_app_id
in: body
type: string
description: "The loan application ID."
steps:
- name: get-pipeline-status
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM LENDING.LOAN_PIPELINE WHERE app_id='{{loan_app_id}}'"
- name: update-opportunity
type: call
call: "salesforce.update-opportunity"
with:
opportunity_id: "{{get-pipeline-status.sf_opportunity_id}}"
stage: "{{get-pipeline-status.current_stage}}"
- name: notify-originations
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_lending_channel"
text: "Loan {{loan_app_id}} status: {{get-pipeline-status.current_stage}}. Updated in Salesforce."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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: salesforce
baseUri: "https://wellsfargo.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: update-opportunity
method: PATCH
- 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 data classification results from Microsoft Purview, aggregates in Snowflake, and distributes the compliance summary to the data governance team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Microsoft Purview Data Classification Report"
description: "Pulls data classification results from Microsoft Purview, aggregates in Snowflake, and distributes the compliance summary to the data governance team via Microsoft Teams."
tags:
- data-governance
- microsoft-purview
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: microsoft_purview_da
port: 8080
tools:
- name: microsoft-purview
description: "Given an execution date, run the microsoft purview data classification report 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_PURVIEW_DATA_CLASSIFICATION_REPORT LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.MICROSOFT_PURVIEW_DATA_CLASSIFICATION_REPORT_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_microsoft_purview_da_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
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 a Teams team ID, channel ID, and message text, post a message. Use for automated notifications."
inputParameters:
- name: team_id
in: body
type: string
description: "The Teams team ID."
- name: channel_id
in: body
type: string
description: "The Teams 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
Retrieves mortgage application documents from Salesforce, validates completeness in Snowflake, and notifies the underwriting team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Mortgage Application Document Verification"
description: "Retrieves mortgage application documents from Salesforce, validates completeness in Snowflake, and notifies the underwriting team via Microsoft Teams."
tags:
- banking
- mortgage
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mortgage-ops
port: 8080
tools:
- name: verify-mortgage-docs
description: "Given a mortgage application ID, verify document completeness and notify underwriting. Use for mortgage pipeline processing."
inputParameters:
- name: application_id
in: body
type: string
description: "The mortgage application ID."
steps:
- name: get-application
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{application_id}}"
- name: check-documents
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT COUNT(*) as doc_count FROM MORTGAGE.APPLICATION_DOCS WHERE app_id = '{{application_id}}'"
- name: notify-underwriting
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_underwriting_channel"
text: "Mortgage app {{application_id}} ({{get-application.stage}}): {{check-documents.doc_count}} documents uploaded."
consumes:
- type: http
namespace: salesforce
baseUri: "https://wellsfargo.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: snowflake
baseUri: "https://wellsfargo.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 mortgage application is submitted, retrieves the applicant record from Salesforce, runs document verification via Snowflake, and notifies the underwriting team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Mortgage Document Verification Chain"
description: "When a mortgage application is submitted, retrieves the applicant record from Salesforce, runs document verification via Snowflake, and notifies the underwriting team in Microsoft Teams."
tags:
- lending
- salesforce
- snowflake
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: mortgage-ops
port: 8080
tools:
- name: verify-mortgage-docs
description: "Given a Salesforce case ID for a mortgage application, pull applicant details, run document checks, and notify underwriters. Use when new mortgage applications enter the pipeline."
inputParameters:
- name: case_id
in: body
type: string
description: "The Salesforce case ID for the mortgage application."
- name: applicant_email
in: body
type: string
description: "The applicant email address."
steps:
- name: get-case
type: call
call: "salesforce.get-case"
with:
case_id: "{{case_id}}"
- name: verify-docs
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM LENDING.DOC_VERIFICATION WHERE case_id='{{case_id}}'"
- name: notify-underwriting
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_underwriting_channel"
text: "Mortgage doc verification complete for case {{case_id}} ({{get-case.applicant_name}}). Status: {{verify-docs.status}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case/{{case_id}}"
inputParameters:
- name: case_id
in: path
operations:
- name: get-case
method: GET
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 n8n automation workflow fails, captures error details, creates a ServiceNow incident, and notifies the automation team via Microsoft Teams.
naftiko: "0.5"
info:
label: "n8n Workflow Failure Handler"
description: "When an n8n automation workflow fails, captures error details, creates a ServiceNow incident, and notifies the automation team via Microsoft Teams."
tags:
- automation
- n8n
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: n8n_workflow_failure
port: 8080
tools:
- name: n8n-workflow
description: "Given an execution date, run the n8n workflow 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.N8N_WORKFLOW_FAILURE_HANDLER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.N8N_WORKFLOW_FAILURE_HANDLER_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "automation"
short_description: "n8n Workflow Failure Handler processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_n8n_workflow_failure_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 employee is created in Workday, opens a ServiceNow IT onboarding ticket, provisions Microsoft 365 access, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "New Employee Onboarding Orchestrator"
description: "When a new employee is created in Workday, opens a ServiceNow IT onboarding ticket, provisions Microsoft 365 access, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-employee-onboarding
description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence across ServiceNow and Microsoft Teams. Invoke when a new banker, analyst, or operations associate begins employment at Wells Fargo."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID for the new employee."
- name: start_date
in: body
type: string
description: "Employment start date in ISO 8601 format (YYYY-MM-DD)."
- name: business_line
in: body
type: string
description: "Wells Fargo business line (e.g. Consumer Banking, Wealth Management, Commercial Banking)."
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: "{{workday_employee_id}}"
- name: open-it-ticket
type: call
call: servicenow.create-incident
with:
category: hr_onboarding
short_description: "New employee onboarding: {{get-worker.full_name}} — {{business_line}}"
assigned_group: IT_Onboarding
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: "{{get-worker.work_email}}"
text: "Welcome to Wells Fargo, {{get-worker.first_name}}! Your IT onboarding ticket is {{open-it-ticket.number}}. Your start date is {{start_date}}."
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: "/wellsfargo/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://wellsfargo.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: chats
path: "/users/{{upn}}/chats"
inputParameters:
- name: upn
in: path
operations:
- name: send-message
method: POST
When a new hire start date approaches, creates an Azure AD account, provisions SailPoint entitlements, opens a ServiceNow hardware request, and notifies the manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "New Hire IT Provisioning Workflow"
description: "When a new hire start date approaches, creates an Azure AD account, provisions SailPoint entitlements, opens a ServiceNow hardware request, and notifies the manager via Microsoft Teams."
tags:
- hr
- onboarding
- azure-active-directory
- sailpoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: new_hire_it_provisio
port: 8080
tools:
- name: new-hire
description: "Given an execution date, run the new hire it provisioning 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.NEW_HIRE_IT_PROVISIONING_WORKFLOW LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.NEW_HIRE_IT_PROVISIONING_WORKFLOW_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "hr"
short_description: "New Hire IT Provisioning Workflow processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_new_hire_it_provisio_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 application health status from New Relic including response time, error rate, and throughput.
naftiko: "0.5"
info:
label: "New Relic Application Health Check"
description: "Retrieves application health status from New Relic including response time, error rate, and throughput."
tags:
- monitoring
- new-relic
- banking
capability:
exposes:
- type: mcp
namespace: apm-health
port: 8080
tools:
- name: get-app-health
description: "Given a New Relic application ID, return the current response time, error rate, and throughput. Use for application performance monitoring."
inputParameters:
- name: app_id
in: body
type: string
description: "The New Relic application ID."
call: "newrelic.get-application"
with:
app_id: "{{app_id}}"
outputParameters:
- name: response_time
type: string
mapping: "$.application.application_summary.response_time"
- name: error_rate
type: string
mapping: "$.application.application_summary.error_rate"
- name: throughput
type: string
mapping: "$.application.application_summary.throughput"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: apikey
key: "X-Api-Key"
value: "$secrets.newrelic_api_key"
placement: header
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-application
method: GET
Retrieves an Okta user profile by login email, returning status, name, and last login time.
naftiko: "0.5"
info:
label: "Okta User Lookup"
description: "Retrieves an Okta user profile by login email, returning status, name, and last login time."
tags:
- identity
- okta
- banking
capability:
exposes:
- type: mcp
namespace: iam-lookup
port: 8080
tools:
- name: get-user
description: "Given an Okta user login email, return the user status, display name, and last login timestamp. Use for access management verification."
inputParameters:
- name: user_login
in: body
type: string
description: "The Okta user login email address."
call: "okta.get-user"
with:
login: "{{user_login}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: display_name
type: string
mapping: "$.profile.displayName"
- name: last_login
type: string
mapping: "$.lastLogin"
consumes:
- type: http
namespace: okta
baseUri: "https://wellsfargo.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users/{{login}}"
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
Retrieves regulatory documents from SharePoint, summarizes them using the OpenAI API, stores summaries in Snowflake, and distributes to the legal team via Microsoft Teams.
naftiko: "0.5"
info:
label: "OpenAI Document Summarization Pipeline"
description: "Retrieves regulatory documents from SharePoint, summarizes them using the OpenAI API, stores summaries in Snowflake, and distributes to the legal team via Microsoft Teams."
tags:
- ai
- openai
- sharepoint
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: openai_document_summ
port: 8080
tools:
- name: openai-document
description: "Given an execution date, run the openai document summarization 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.OPENAI_DOCUMENT_SUMMARIZATION_PIPELINE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.OPENAI_DOCUMENT_SUMMARIZATION_PIPELINE_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_openai_document_summ_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 Palo Alto Networks detects a critical threat, logs the event in Splunk, creates a ServiceNow security incident, and alerts the SOC via Microsoft Teams.
naftiko: "0.5"
info:
label: "Palo Alto Firewall Threat Handler"
description: "When Palo Alto Networks detects a critical threat, logs the event in Splunk, creates a ServiceNow security incident, and alerts the SOC via Microsoft Teams."
tags:
- security
- palo-alto-networks
- splunk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: palo_alto_firewall_t
port: 8080
tools:
- name: palo-alto
description: "Given an execution date, run the palo alto firewall threat 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.PALO_ALTO_FIREWALL_THREAT_HANDLER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.PALO_ALTO_FIREWALL_THREAT_HANDLER_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "security"
short_description: "Palo Alto Firewall Threat Handler processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_palo_alto_firewall_t_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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: splunk
baseUri: "https://wellsfargo-splunk.example.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: events
path: "/receivers/simple"
operations:
- name: index-event
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 Palo Alto Networks detects a critical threat, creates a ServiceNow security incident, enriches it with threat intelligence, and alerts the SOC Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Palo Alto Networks Security Incident Triage"
description: "When Palo Alto Networks detects a critical threat, creates a ServiceNow security incident, enriches it with threat intelligence, and alerts the SOC Microsoft Teams channel."
tags:
- security
- palo-alto
- servicenow
- microsoft-teams
- secops
- incident-response
capability:
exposes:
- type: mcp
namespace: soc-ops
port: 8080
tools:
- name: triage-network-threat
description: "Given a Palo Alto Networks threat ID and severity, create a ServiceNow security incident and alert the SOC Microsoft Teams channel. Invoke on critical or high Palo Alto threat notifications."
inputParameters:
- name: threat_id
in: body
type: string
description: "Palo Alto Networks threat log ID."
- name: severity
in: body
type: string
description: "Threat severity: critical, high, medium."
- name: source_ip
in: body
type: string
description: "Source IP address of the detected threat."
- name: threat_name
in: body
type: string
description: "Name or type of the detected threat (e.g. command-and-control, malware)."
steps:
- name: get-threat-details
type: call
call: palo-alto.get-threat-log
with:
threat_id: "{{threat_id}}"
- name: create-security-incident
type: call
call: servicenow-soc.create-incident
with:
category: security
impact: "{{severity}}"
short_description: "Network threat: {{threat_name}} from {{source_ip}}"
description: "Palo Alto threat {{threat_id}}: {{threat_name}}. Source: {{source_ip}}. Category: {{get-threat-details.category}}."
- name: alert-soc
type: call
call: msteams-soc.send-message
with:
channel_id: "$secrets.teams_soc_channel_id"
text: "SOC Alert: {{severity}} threat — {{threat_name}} from {{source_ip}}. ServiceNow: {{create-security-incident.number}}. Threat ID: {{threat_id}}."
consumes:
- type: http
namespace: palo-alto
baseUri: "https://wfc-panorama.internal/restapi/v10.1"
authentication:
type: apikey
key: "X-PAN-KEY"
value: "$secrets.palo_alto_api_key"
placement: header
resources:
- name: threat-logs
path: "/log/threat"
inputParameters:
- name: threat_id
in: query
operations:
- name: get-threat-log
method: GET
- type: http
namespace: servicenow-soc
baseUri: "https://wellsfargo.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/sn_si_incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-soc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates PCI-DSS compliance scanning by triggering Palo Alto vulnerability scans, storing results in Snowflake, creating remediation tickets in Jira, and notifying the security team.
naftiko: "0.5"
info:
label: "PCI-DSS Compliance Scan Chain"
description: "Orchestrates PCI-DSS compliance scanning by triggering Palo Alto vulnerability scans, storing results in Snowflake, creating remediation tickets in Jira, and notifying the security team."
tags:
- security
- pci
- palo-alto-networks
- snowflake
- jira
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: security-compliance
port: 8080
tools:
- name: run-pci-scan
description: "Given a target environment and scan scope, run vulnerability scans, record findings, create remediation tickets, and alert security. Use for quarterly PCI-DSS compliance."
inputParameters:
- name: environment
in: body
type: string
description: "Target environment (PRODUCTION, STAGING, DR)."
- name: scan_scope
in: body
type: string
description: "Scan scope (FULL, DELTA, CARDHOLDER_ONLY)."
steps:
- name: trigger-scan
type: call
call: "paloalto.run-scan"
with:
environment: "{{environment}}"
scope: "{{scan_scope}}"
- name: store-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO SECURITY.PCI_SCAN_RESULTS VALUES ('{{environment}}', '{{scan_scope}}', CURRENT_TIMESTAMP)"
- name: create-remediation
type: call
call: "jira.create-issue"
with:
project: "PCIDSS"
issue_type: "Task"
summary: "PCI scan findings: {{environment}} ({{scan_scope}}) - {{trigger-scan.finding_count}} issues"
- name: notify-security
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_security_channel"
text: "PCI-DSS scan complete for {{environment}}: {{trigger-scan.finding_count}} findings. Remediation: {{create-remediation.key}}."
consumes:
- type: http
namespace: paloalto
baseUri: "https://panorama.wellsfargo.com/restapi/v10.1"
authentication:
type: apikey
key: "X-PAN-KEY"
value: "$secrets.paloalto_api_key"
placement: header
resources:
- name: scans
path: "/vulnerability/scan"
operations:
- name: run-scan
method: POST
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Triggers a Postman collection test run and returns the pass/fail summary.
naftiko: "0.5"
info:
label: "Postman API Collection Test Runner"
description: "Triggers a Postman collection test run and returns the pass/fail summary."
tags:
- devops
- postman
- api-testing
capability:
exposes:
- type: mcp
namespace: api-testing
port: 8080
tools:
- name: run-collection
description: "Given a Postman collection ID, trigger a test run and return results. Use for API regression testing."
inputParameters:
- name: collection_id
in: body
type: string
description: "The Postman collection ID."
call: "postman.run-collection"
with:
collection_id: "{{collection_id}}"
outputParameters:
- name: total_tests
type: integer
mapping: "$.run.stats.tests.total"
- name: failed_tests
type: integer
mapping: "$.run.stats.tests.failed"
consumes:
- type: http
namespace: postman
baseUri: "https://api.getpostman.com"
authentication:
type: apikey
key: "X-Api-Key"
value: "$secrets.postman_api_key"
placement: header
resources:
- name: collections
path: "/collections/{{collection_id}}/run"
inputParameters:
- name: collection_id
in: path
operations:
- name: run-collection
method: POST
Checks the last refresh status of a Power BI dataset and returns the refresh state and timestamp.
naftiko: "0.5"
info:
label: "Power BI Dataset Refresh Check"
description: "Checks the last refresh status of a Power BI dataset and returns the refresh state and timestamp."
tags:
- analytics
- power-bi
- banking
capability:
exposes:
- type: mcp
namespace: bi-ops
port: 8080
tools:
- name: get-refresh-status
description: "Given a Power BI group ID and dataset ID, return the last refresh status and end time. Use for dashboard reliability monitoring."
inputParameters:
- name: group_id
in: body
type: string
description: "The Power BI workspace (group) ID."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID."
call: "powerbi.get-refresh-history"
with:
group_id: "{{group_id}}"
dataset_id: "{{dataset_id}}"
outputParameters:
- name: status
type: string
mapping: "$.value[0].status"
- name: end_time
type: string
mapping: "$.value[0].endTime"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refreshes
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: get-refresh-history
method: GET
Checks the last refresh status and timestamp for a Power BI dataset.
naftiko: "0.5"
info:
label: "Power BI Dataset Refresh Status"
description: "Checks the last refresh status and timestamp for a Power BI dataset."
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-dataset-refresh-status
description: "Given a Power BI workspace and dataset ID, retrieve the last refresh status. Use for dashboard monitoring."
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."
call: "powerbi.get-refresh-history"
with:
workspace_id: "{{workspace_id}}"
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: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: get-refresh-history
method: GET
Triggers a Power BI dataset refresh for regulatory compliance dashboards and posts the refresh status to the compliance Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Power BI Regulatory Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for regulatory compliance dashboards and posts the refresh status to the compliance Microsoft Teams channel."
tags:
- compliance
- data
- power-bi
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: compliance-reporting
port: 8080
tools:
- name: refresh-regulatory-dashboard
description: "Given a Power BI workspace ID and dataset ID, trigger a refresh for a regulatory compliance dashboard and post the result to the compliance Teams channel. Use after Snowflake regulatory data pipelines complete."
inputParameters:
- name: workspace_id
in: body
type: string
description: "Power BI workspace (group) ID."
- name: dataset_id
in: body
type: string
description: "Power BI dataset ID for the regulatory dashboard."
- name: report_name
in: body
type: string
description: "Human-readable name of the regulatory report (e.g. CCAR Dashboard)."
steps:
- name: trigger-refresh
type: call
call: powerbi.trigger-refresh
with:
group_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-compliance
type: call
call: msteams-pbi.send-message
with:
channel_id: "$secrets.teams_compliance_channel_id"
text: "Power BI refresh triggered: {{report_name}} (dataset {{dataset_id}}). Status: {{trigger-refresh.status}}."
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/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams-pbi
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers Power Query data model refreshes, validates row counts in Snowflake, and notifies the BI team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Power Query Data Model Refresh Chain"
description: "Triggers Power Query data model refreshes, validates row counts in Snowflake, and notifies the BI team via Microsoft Teams."
tags:
- analytics
- power-query
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: power_query_data_mod
port: 8080
tools:
- name: power-query
description: "Given an execution date, run the power query data model refresh 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.POWER_QUERY_DATA_MODEL_REFRESH_CHAIN LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.POWER_QUERY_DATA_MODEL_REFRESH_CHAIN_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_power_query_data_mod_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Analyzes Qlik Sense application usage patterns from Snowflake, identifies underutilized assets, creates Jira optimization tasks, and notifies the BI team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Qlik Sense App Usage Analyzer"
description: "Analyzes Qlik Sense application usage patterns from Snowflake, identifies underutilized assets, creates Jira optimization tasks, and notifies the BI team via Microsoft Teams."
tags:
- analytics
- qlik-sense
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: qlik_sense_app_usage
port: 8080
tools:
- name: qlik-sense
description: "Given an execution date, run the qlik sense app usage 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.QLIK_SENSE_APP_USAGE_ANALYZER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.QLIK_SENSE_APP_USAGE_ANALYZER_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Qlik Sense App Usage Analyzer - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_qlik_sense_app_usage_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Prepares stress test data by aggregating loan portfolios in Snowflake, validates data quality, refreshes Power BI reports, and notifies the CCAR team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Quarterly Stress Test Data Preparation"
description: "Prepares stress test data by aggregating loan portfolios in Snowflake, validates data quality, refreshes Power BI reports, and notifies the CCAR team via Microsoft Teams."
tags:
- risk
- regulatory
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quarterly_stress_tes
port: 8080
tools:
- name: quarterly-stress
description: "Given an execution date, run the quarterly stress test data preparation 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.QUARTERLY_STRESS_TEST_DATA_PREPARATION LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.QUARTERLY_STRESS_TEST_DATA_PREPARATION_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_quarterly_stress_tes_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Validates Refinitiv market data feed quality in Snowflake, flags stale or missing data points, and alerts the market data team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Refinitiv Market Data Quality Validator"
description: "Validates Refinitiv market data feed quality in Snowflake, flags stale or missing data points, and alerts the market data team via Microsoft Teams."
tags:
- trading
- refinitiv
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: refinitiv_market_dat
port: 8080
tools:
- name: refinitiv-market
description: "Given an execution date, run the refinitiv market data quality validator 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.REFINITIV_MARKET_DATA_QUALITY_VALIDATOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.REFINITIV_MARKET_DATA_QUALITY_VALIDATOR_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_refinitiv_market_dat_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Computes regulatory capital ratios from Snowflake, refreshes the Power BI compliance dashboard, and distributes to the finance team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Regulatory Capital Report Generator"
description: "Computes regulatory capital ratios from Snowflake, refreshes the Power BI compliance dashboard, and distributes to the finance team via Microsoft Teams."
tags:
- compliance
- regulatory
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory_capital_r
port: 8080
tools:
- name: regulatory-capital
description: "Given an execution date, run the regulatory capital report 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.REGULATORY_CAPITAL_REPORT_GENERATOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.REGULATORY_CAPITAL_REPORT_GENERATOR_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_regulatory_capital_r_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Generates a quarterly regulatory compliance report by pulling data from Snowflake, refreshing Power BI dashboards, uploading to SharePoint, and notifying stakeholders via Microsoft Teams.
naftiko: "0.5"
info:
label: "Regulatory Compliance Report Generator"
description: "Generates a quarterly regulatory compliance report by pulling data from Snowflake, refreshing Power BI dashboards, uploading to SharePoint, and notifying stakeholders via Microsoft Teams."
tags:
- compliance
- snowflake
- power-bi
- sharepoint
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: compliance-reporting
port: 8080
tools:
- name: generate-compliance-report
description: "Given a regulatory report type and reporting period, extract compliance data, refresh the Power BI dashboard, upload to SharePoint, and notify stakeholders. Use for OCC and Fed reporting cycles."
inputParameters:
- name: report_type
in: body
type: string
description: "The regulatory report type (e.g., CCAR, DFAST, BSA)."
- name: reporting_period
in: body
type: string
description: "The reporting period in YYYY-QN format."
steps:
- name: extract-data
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM COMPLIANCE.{{report_type}}_DATA WHERE period='{{reporting_period}}'"
- name: refresh-dashboard
type: call
call: "powerbi.trigger-refresh"
with:
dataset_id: "$secrets.compliance_dataset_id"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "$secrets.compliance_site_id"
file_name: "{{report_type}}_{{reporting_period}}.xlsx"
- name: notify-compliance
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_compliance_channel"
text: "{{report_type}} report for {{reporting_period}} is ready. SharePoint link: {{upload-report.webUrl}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refreshes
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/sites/{{site_id}}/drive/root:/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- 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 identity governance status for a user in SailPoint, returning access certifications and risk score.
naftiko: "0.5"
info:
label: "SailPoint Identity Governance Check"
description: "Checks the identity governance status for a user in SailPoint, returning access certifications and risk score."
tags:
- identity
- sailpoint
- governance
capability:
exposes:
- type: mcp
namespace: identity-governance
port: 8080
tools:
- name: get-identity-status
description: "Given a SailPoint identity ID, retrieve governance status including pending certifications and risk score. Use for access reviews."
inputParameters:
- name: identity_id
in: body
type: string
description: "The SailPoint identity ID."
call: "sailpoint.get-identity"
with:
identity_id: "{{identity_id}}"
outputParameters:
- name: risk_score
type: integer
mapping: "$.riskScore"
- name: pending_certifications
type: integer
mapping: "$.pendingCertifications"
consumes:
- type: http
namespace: sailpoint
baseUri: "https://wellsfargo.api.identitynow.com/v3"
authentication:
type: bearer
token: "$secrets.sailpoint_token"
resources:
- name: identities
path: "/identities/{{identity_id}}"
inputParameters:
- name: identity_id
in: path
operations:
- name: get-identity
method: GET
Retrieves a Salesforce account record by account ID, returning name, industry, and annual revenue.
naftiko: "0.5"
info:
label: "Salesforce Account Detail Lookup"
description: "Retrieves a Salesforce account record by account ID, returning name, industry, and annual revenue."
tags:
- crm
- salesforce
- banking
capability:
exposes:
- type: mcp
namespace: crm-lookup
port: 8080
tools:
- name: get-account
description: "Given a Salesforce account ID, return the account name, industry, and annual revenue. Use for relationship manager inquiries."
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: industry
type: string
mapping: "$.Industry"
- name: annual_revenue
type: string
mapping: "$.AnnualRevenue"
consumes:
- type: http
namespace: salesforce
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
Retrieves a Salesforce account by ID, returning name, industry, annual revenue, and relationship tier.
naftiko: "0.5"
info:
label: "Salesforce Account Lookup"
description: "Retrieves a Salesforce account by ID, returning name, industry, annual revenue, and relationship tier."
tags:
- sales
- salesforce
- crm
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-account
description: "Given a Salesforce account ID, retrieve account details including industry and revenue. Use for client 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: annual_revenue
type: string
mapping: "$.AnnualRevenue"
consumes:
- type: http
namespace: salesforce
baseUri: "https://wellsfargo.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
Synchronizes Salesforce opportunity pipeline data to Snowflake for executive revenue reporting and notifies the sales leadership team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce CRM Opportunity Pipeline Sync"
description: "Synchronizes Salesforce opportunity pipeline data to Snowflake for executive revenue reporting and notifies the sales leadership team via Microsoft Teams."
tags:
- sales
- crm
- salesforce
- snowflake
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: crm-reporting
port: 8080
tools:
- name: sync-opportunity-pipeline
description: "Given a Salesforce forecast category and fiscal quarter, retrieve open opportunities, write a pipeline snapshot to Snowflake, and notify sales leadership in Microsoft Teams. Use for quarterly pipeline reviews."
inputParameters:
- name: fiscal_quarter
in: body
type: string
description: "Fiscal quarter in YYYY-QN format (e.g. 2025-Q2)."
- name: forecast_category
in: body
type: string
description: "Salesforce forecast category filter (e.g. Commit, BestCase, Pipeline)."
steps:
- name: get-opportunities
type: call
call: salesforce.search-opportunities
with:
fiscal_quarter: "{{fiscal_quarter}}"
forecast_category: "{{forecast_category}}"
- name: write-pipeline-snapshot
type: call
call: snowflake.insert-row
with:
table: "SALES.PIPELINE_SNAPSHOTS"
fiscal_quarter: "{{fiscal_quarter}}"
opportunity_count: "{{get-opportunities.totalSize}}"
total_amount: "{{get-opportunities.total_amount}}"
- name: notify-leadership
type: call
call: msteams-sales.send-message
with:
channel_id: "$secrets.teams_sales_channel_id"
text: "Pipeline sync complete for {{fiscal_quarter}} ({{forecast_category}}): {{get-opportunities.totalSize}} opportunities, total value {{get-opportunities.total_amount}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: search-opportunities
method: GET
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: insert-row
method: POST
- type: http
namespace: msteams-sales
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs churn prediction models in Snowflake against Salesforce CRM data, identifies at-risk accounts, and notifies relationship managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Customer Churn Prediction Pipeline"
description: "Runs churn prediction models in Snowflake against Salesforce CRM data, identifies at-risk accounts, and notifies relationship managers via Microsoft Teams."
tags:
- analytics
- salesforce
- snowflake
- microsoft-teams
- machine-learning
capability:
exposes:
- type: mcp
namespace: salesforce_customer_
port: 8080
tools:
- name: salesforce-customer
description: "Given an execution date, run the salesforce customer churn prediction 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.SALESFORCE_CUSTOMER_CHURN_PREDICTION_PIPELINE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SALESFORCE_CUSTOMER_CHURN_PREDICTION_PIPELINE_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_salesforce_customer__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 new commercial banking customer is approved, creates a Salesforce onboarding case, links the account record, and notifies the relationship manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Customer Onboarding Case Creation"
description: "When a new commercial banking customer is approved, creates a Salesforce onboarding case, links the account record, and notifies the relationship manager via Microsoft Teams."
tags:
- customer-onboarding
- salesforce
- microsoft-teams
- commercial-banking
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: create-customer-onboarding-case
description: "Given a Salesforce account ID and relationship manager UPN, create a customer onboarding case linked to the account and notify the relationship manager in Microsoft Teams. Use when a commercial banking customer completes credit approval."
inputParameters:
- name: account_id
in: body
type: string
description: "Salesforce account ID for the approved commercial customer."
- name: rm_upn
in: body
type: string
description: "Microsoft UPN of the assigned relationship manager."
- name: product_type
in: body
type: string
description: "Product being onboarded (e.g. Commercial Credit Line, Treasury Services)."
steps:
- name: get-account
type: call
call: salesforce-acct.get-account
with:
account_id: "{{account_id}}"
- name: create-onboarding-case
type: call
call: salesforce-case.create-case
with:
account_id: "{{account_id}}"
subject: "Customer Onboarding: {{get-account.name}} — {{product_type}}"
type: New_Customer_Onboarding
- name: notify-rm
type: call
call: msteams-rm.send-message
with:
recipient_upn: "{{rm_upn}}"
text: "Onboarding case created for {{get-account.name}}: {{product_type}}. Salesforce case: {{create-onboarding-case.case_number}}. Please complete onboarding tasks in Salesforce."
consumes:
- type: http
namespace: salesforce-acct
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: salesforce-case
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: msteams-rm
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/users/{{upn}}/chats"
inputParameters:
- name: upn
in: path
operations:
- name: send-message
method: POST
When a Salesforce customer NPS survey response is marked detractor, creates a follow-up case, assigns it to the relationship manager, and sends a recovery notification via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce NPS Survey Follow-Up Workflow"
description: "When a Salesforce customer NPS survey response is marked detractor, creates a follow-up case, assigns it to the relationship manager, and sends a recovery notification via Microsoft Teams."
tags:
- customer-experience
- salesforce
- microsoft-teams
- nps
- customer-support
capability:
exposes:
- type: mcp
namespace: nps-recovery
port: 8080
tools:
- name: handle-nps-detractor
description: "Given a Salesforce survey response ID, retrieve the detractor's account details, create a recovery case, and notify the relationship manager in Microsoft Teams. Invoke when an NPS score of 0-6 is submitted."
inputParameters:
- name: survey_response_id
in: body
type: string
description: "Salesforce survey response record ID."
- name: nps_score
in: body
type: integer
description: "NPS score submitted (0-10)."
steps:
- name: get-survey-response
type: call
call: salesforce-survey.get-survey-response
with:
response_id: "{{survey_response_id}}"
- name: create-recovery-case
type: call
call: salesforce-nps.create-case
with:
account_id: "{{get-survey-response.account_id}}"
subject: "NPS Detractor Recovery: Score {{nps_score}} — {{get-survey-response.account_name}}"
type: NPS_Recovery
- name: notify-rm
type: call
call: msteams-nps.send-message
with:
recipient_upn: "{{get-survey-response.rm_upn}}"
text: "NPS detractor alert: {{get-survey-response.account_name}} scored {{nps_score}}. Recovery case created: {{create-recovery-case.case_number}}. Please reach out within 24 hours."
consumes:
- type: http
namespace: salesforce-survey
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: survey-responses
path: "/sobjects/SurveyQuestionResponse/{{response_id}}"
inputParameters:
- name: response_id
in: path
operations:
- name: get-survey-response
method: GET
- type: http
namespace: salesforce-nps
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: msteams-nps
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/users/{{upn}}/chats"
inputParameters:
- name: upn
in: path
operations:
- name: send-message
method: POST
Pulls Salesforce win/loss data into Snowflake, generates analysis reports, refreshes Power BI dashboards, and sends insights to sales leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Win/Loss Analyzer"
description: "Pulls Salesforce win/loss data into Snowflake, generates analysis reports, refreshes Power BI dashboards, and sends insights to sales leadership via Microsoft Teams."
tags:
- sales
- salesforce
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_opportuni
port: 8080
tools:
- name: salesforce-opportunity
description: "Given an execution date, run the salesforce opportunity win/loss 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.SALESFORCE_OPPORTUNITY_WIN_LOSS_ANALYZER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SALESFORCE_OPPORTUNITY_WIN_LOSS_ANALYZER_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_salesforce_opportuni_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 Salesforce opportunity is closed (won or lost), syncs the outcome data to Snowflake for sales analytics and posts a notification to the sales leadership Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Win/Loss Snowflake Sync"
description: "When a Salesforce opportunity is closed (won or lost), syncs the outcome data to Snowflake for sales analytics and posts a notification to the sales leadership Microsoft Teams channel."
tags:
- sales
- salesforce
- snowflake
- microsoft-teams
- analytics
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: sync-opportunity-outcome
description: "Given a Salesforce opportunity ID and close type (won or lost), retrieve full opportunity details, write the record to Snowflake sales analytics, and notify the sales leadership Teams channel. Invoke when an opportunity stage changes to Closed Won or Closed Lost."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "Salesforce opportunity ID (18-character)."
- name: close_type
in: body
type: string
description: "Close outcome: won or lost."
steps:
- name: get-opportunity
type: call
call: salesforce-opp.get-opportunity
with:
opportunity_id: "{{opportunity_id}}"
- name: write-to-snowflake
type: call
call: snowflake-sales.execute-statement
with:
statement: "INSERT INTO SALES.OPPORTUNITY_OUTCOMES VALUES ('{{opportunity_id}}', '{{get-opportunity.name}}', '{{close_type}}', {{get-opportunity.amount}}, '{{get-opportunity.close_date}}')"
- name: notify-sales-leadership
type: call
call: msteams-sales-ops.send-message
with:
channel_id: "$secrets.teams_sales_channel_id"
text: "Opportunity {{close_type}}: {{get-opportunity.name}} — {{get-opportunity.amount}} {{get-opportunity.currency_iso_code}}. Closed by {{get-opportunity.owner_name}}."
consumes:
- type: http
namespace: salesforce-opp
baseUri: "https://wellsfargo.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: snowflake-sales
baseUri: "https://wellsfargo.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-sales-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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an SAP Concur expense report exceeds policy limits, logs the exception in Snowflake, creates a ServiceNow approval task, and notifies the manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Concur Expense Over-Limit Escalation"
description: "When an SAP Concur expense report exceeds policy limits, logs the exception in Snowflake, creates a ServiceNow approval task, and notifies the manager via Microsoft Teams."
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_concur_expense_o
port: 8080
tools:
- name: sap-concur
description: "Given an execution date, run the sap concur expense over-limit 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.SAP_CONCUR_EXPENSE_OVER_LIMIT_ESCALATION LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_CONCUR_EXPENSE_OVER_LIMIT_ESCALATION_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "finance"
short_description: "SAP Concur Expense Over-Limit Escalation processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_concur_expense_o_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 pending SAP Concur expense report, checks SAP GL cost center budget, and routes an approval notification to the manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Approval"
description: "Retrieves a pending SAP Concur expense report, checks SAP GL cost center budget, and routes an approval notification to the manager via Microsoft Teams."
tags:
- finance
- sap
- microsoft-teams
- expense-management
- approval
capability:
exposes:
- type: mcp
namespace: expense-approval
port: 8080
tools:
- name: route-expense-for-approval
description: "Given a Concur expense report ID and manager UPN, retrieve report details, validate against the SAP GL cost center budget, and send an approval notification to the manager in Microsoft Teams."
inputParameters:
- name: expense_report_id
in: body
type: string
description: "SAP Concur expense report ID."
- name: manager_upn
in: body
type: string
description: "Microsoft UPN of the approving manager."
steps:
- name: get-expense-report
type: call
call: concur.get-expense-report
with:
report_id: "{{expense_report_id}}"
- name: notify-manager
type: call
call: msteams-expense.send-message
with:
recipient_upn: "{{manager_upn}}"
text: "Expense report pending approval: {{get-expense-report.name}} by {{get-expense-report.employee_name}}, total {{get-expense-report.total_amount}} {{get-expense-report.currency}}. Review in Concur."
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: msteams-expense
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/users/{{upn}}/chats"
inputParameters:
- name: upn
in: path
operations:
- name: send-message
method: POST
Retrieves cost center details from SAP including responsible person and company code.
naftiko: "0.5"
info:
label: "SAP Cost Center Lookup"
description: "Retrieves cost center details from SAP including responsible person and company code."
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 the master data. Use for budget allocation and 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"
- name: responsible_person
type: string
mapping: "$.d.PersonResponsible"
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-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
Retrieves the general ledger account balance from SAP for a given company code and fiscal period.
naftiko: "0.5"
info:
label: "SAP General Ledger Balance Lookup"
description: "Retrieves the general ledger account balance from SAP for a given company code and fiscal period."
tags:
- finance
- sap
- accounting
capability:
exposes:
- type: mcp
namespace: accounting
port: 8080
tools:
- name: get-gl-balance
description: "Given a SAP company code and GL account, retrieve the account balance. Use for financial close and variance analysis."
inputParameters:
- name: company_code
in: body
type: string
description: "The SAP company code."
- name: gl_account
in: body
type: string
description: "The GL account number."
call: "sap.get-gl-balance"
with:
company_code: "{{company_code}}"
gl_account: "{{gl_account}}"
outputParameters:
- name: balance
type: string
mapping: "$.d.EndingBalanceAmtInCoCodeCrcy"
- name: currency
type: string
mapping: "$.d.CompanyCodeCurrency"
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: gl-balances
path: "/A_GLAccountLineItem"
operations:
- name: get-gl-balance
method: GET
Queries SAP for open journal entries and unreconciled items that block period close, then creates a ServiceNow task for each blocker and notifies the finance Slack channel.
naftiko: "0.5"
info:
label: "SAP General Ledger Period Close Check"
description: "Queries SAP for open journal entries and unreconciled items that block period close, then creates a ServiceNow task for each blocker and notifies the finance Slack channel."
tags:
- finance
- sap
- servicenow
- slack
- period-close
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: check-gl-period-close
description: "Given a SAP company code and fiscal period, check for open general ledger items, create ServiceNow tasks for each blocker, and post a readiness summary to the finance Slack channel. Use at month-end for period close orchestration."
inputParameters:
- name: company_code
in: body
type: string
description: "SAP company code (e.g. WFC1 for Wells Fargo US)."
- name: fiscal_period
in: body
type: string
description: "Fiscal period in YYYYMM format (e.g. 202503)."
steps:
- name: get-open-items
type: call
call: sap.get-gl-open-items
with:
company_code: "{{company_code}}"
fiscal_period: "{{fiscal_period}}"
- name: create-close-task
type: call
call: servicenow-finance.create-task
with:
category: finance_period_close
short_description: "GL close blocker: {{company_code}} — {{fiscal_period}}"
description: "Open GL items blocking period close: {{get-open-items.open_count}} items, total {{get-open-items.total_amount}}"
- name: post-summary
type: call
call: slack-finance.post-message
with:
channel: "finance-close-ops"
text: "Period close readiness {{company_code}}/{{fiscal_period}}: {{get-open-items.open_count}} blocking items. Task: {{create-close-task.number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://wfc-s4.sap.com/sap/opu/odata/sap/ZFI_GL_CLOSE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: gl-open-items
path: "/GLOpenItemSet"
inputParameters:
- name: company_code
in: query
- name: fiscal_period
in: query
operations:
- name: get-gl-open-items
method: GET
- type: http
namespace: servicenow-finance
baseUri: "https://wellsfargo.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
- type: http
namespace: slack-finance
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
Retrieves the current balance for a SAP general ledger account by company code and GL account number.
naftiko: "0.5"
info:
label: "SAP General Ledger Balance Lookup"
description: "Retrieves the current balance for a SAP general ledger account by company code and GL account number."
tags:
- finance
- sap
- banking
capability:
exposes:
- type: mcp
namespace: erp-finance
port: 8080
tools:
- name: get-gl-balance
description: "Given a company code and GL account number, return the current balance and currency from SAP. Use for finance reconciliation."
inputParameters:
- name: company_code
in: body
type: string
description: "The SAP company code (e.g., 1000)."
- name: gl_account
in: body
type: string
description: "The GL account number."
call: "sap.get-gl-balance"
with:
company_code: "{{company_code}}"
gl_account: "{{gl_account}}"
outputParameters:
- name: balance
type: string
mapping: "$.d.Balance"
- name: currency
type: string
mapping: "$.d.Currency"
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-s4.sap.com/sap/opu/odata/sap/API_GLACCOUNTBALANCE"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: gl-balances
path: "/A_GLAccountBalance(CompanyCode='{{company_code}}',GLAccount='{{gl_account}}')"
inputParameters:
- name: company_code
in: path
- name: gl_account
in: path
operations:
- name: get-gl-balance
method: GET
Posts intercompany journal entries in SAP, validates the posting via Snowflake balance check, and notifies the accounting team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Intercompany Journal Entry Poster"
description: "Posts intercompany journal entries in SAP, validates the posting via Snowflake balance check, and notifies the accounting team via Microsoft Teams."
tags:
- finance
- sap
- snowflake
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: post-intercompany-je
description: "Given debit and credit company codes and amount, post the entry in SAP, verify balances, and notify accounting. Use for month-end intercompany settlements."
inputParameters:
- name: debit_company
in: body
type: string
description: "The debit company code."
- name: credit_company
in: body
type: string
description: "The credit company code."
- name: amount
in: body
type: string
description: "The journal entry amount."
steps:
- name: post-entry
type: call
call: "sap.post-journal"
with:
debit_company: "{{debit_company}}"
credit_company: "{{credit_company}}"
amount: "{{amount}}"
- name: verify-balance
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT balance FROM FINANCE.IC_BALANCES WHERE company_code='{{debit_company}}'"
- name: notify-accounting
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_accounting_channel"
text: "Intercompany JE posted: {{debit_company}} -> {{credit_company}}, amount ${{amount}}. Doc: {{post-entry.document_number}}."
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-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_JournalEntryItemBasic"
operations:
- name: post-journal
method: POST
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Executes SAP period-end close steps, validates balancing entries in Snowflake, and notifies the accounting team via Microsoft Teams with close status.
naftiko: "0.5"
info:
label: "SAP Period-End Close Automation"
description: "Executes SAP period-end close steps, validates balancing entries in Snowflake, and notifies the accounting team via Microsoft Teams with close status."
tags:
- finance
- sap
- snowflake
- microsoft-teams
- accounting
capability:
exposes:
- type: mcp
namespace: sap_period_end_close
port: 8080
tools:
- name: sap-period
description: "Given an execution date, run the sap period-end close 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_END_CLOSE_AUTOMATION LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SAP_PERIOD_END_CLOSE_AUTOMATION_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_sap_period_end_close_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 SAP purchase order by number and returns status, vendor, and total amount.
naftiko: "0.5"
info:
label: "SAP Purchase Order Detail Lookup"
description: "Retrieves a SAP purchase order by number and returns status, vendor, and total amount."
tags:
- procurement
- sap
- banking
capability:
exposes:
- type: mcp
namespace: erp-procurement
port: 8080
tools:
- name: get-purchase-order
description: "Given a SAP purchase order number, return the PO status, vendor name, total amount, and currency. Use for procurement verification."
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_amount
type: string
mapping: "$.d.TotalAmount"
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-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 vendor master record by vendor number and returns the name, payment terms, and city.
naftiko: "0.5"
info:
label: "SAP Vendor Master Detail Lookup"
description: "Retrieves a SAP vendor master record by vendor number and returns the name, payment terms, and city."
tags:
- procurement
- sap
- banking
capability:
exposes:
- type: mcp
namespace: erp-vendor
port: 8080
tools:
- name: get-vendor
description: "Given a SAP vendor number, return the vendor name, payment terms, and city. Use for vendor due diligence and onboarding checks."
inputParameters:
- name: vendor_number
in: body
type: string
description: "The SAP vendor number."
call: "sap.get-vendor"
with:
vendor_number: "{{vendor_number}}"
outputParameters:
- name: name
type: string
mapping: "$.d.VendorName"
- name: payment_terms
type: string
mapping: "$.d.PaymentTerms"
- name: city
type: string
mapping: "$.d.City"
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-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
Retrieves vendor master data from SAP by vendor number, returning name, payment terms, and banking details.
naftiko: "0.5"
info:
label: "SAP Vendor Master Lookup"
description: "Retrieves vendor master data from SAP by vendor number, returning name, payment terms, and banking details."
tags:
- procurement
- sap
- vendor-management
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-vendor
description: "Given a SAP vendor number, retrieve the vendor master record. 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"
- name: payment_terms
type: string
mapping: "$.d.PaymentTerms"
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-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
Submits a ServiceNow change request for a planned banking system change and notifies the change approver in Microsoft Teams when the CAB review is scheduled.
naftiko: "0.5"
info:
label: "ServiceNow Change Request Approval Workflow"
description: "Submits a ServiceNow change request for a planned banking system change and notifies the change approver in Microsoft Teams when the CAB review is scheduled."
tags:
- itsm
- servicenow
- microsoft-teams
- change-management
- approval
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-system-change-request
description: "Given change details and an approver UPN, submit a ServiceNow change request and notify the approver in Microsoft Teams. Use for planned changes to core banking, payments, and compliance systems."
inputParameters:
- name: short_description
in: body
type: string
description: "Brief description of the planned change."
- name: description
in: body
type: string
description: "Detailed description including impact assessment and rollback plan."
- name: scheduled_start
in: body
type: string
description: "Scheduled start time in ISO 8601 format."
- name: approver_upn
in: body
type: string
description: "Microsoft UPN of the change approver."
steps:
- name: create-change-request
type: call
call: servicenow-chg.create-change
with:
short_description: "{{short_description}}"
description: "{{description}}"
start_date: "{{scheduled_start}}"
type: normal
- name: notify-approver
type: call
call: msteams-chg.send-message
with:
recipient_upn: "{{approver_upn}}"
text: "Change request submitted for your approval: {{short_description}}. Change number: {{create-change-request.number}}. Scheduled: {{scheduled_start}}. Review in ServiceNow."
consumes:
- type: http
namespace: servicenow-chg
baseUri: "https://wellsfargo.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
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: chats
path: "/users/{{upn}}/chats"
inputParameters:
- name: upn
in: path
operations:
- name: send-message
method: POST
Evaluates ServiceNow change requests against historical failure data in Snowflake, assigns a risk score, and notifies the CAB via Microsoft Teams.
naftiko: "0.5"
info:
label: "ServiceNow Change Risk Assessor"
description: "Evaluates ServiceNow change requests against historical failure data in Snowflake, assigns a risk score, and notifies the CAB via Microsoft Teams."
tags:
- itsm
- servicenow
- snowflake
- microsoft-teams
- change-management
capability:
exposes:
- type: mcp
namespace: servicenow_change_ri
port: 8080
tools:
- name: servicenow-change
description: "Given an execution date, run the servicenow change risk assessor 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.SERVICENOW_CHANGE_RISK_ASSESSOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SERVICENOW_CHANGE_RISK_ASSESSOR_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "itsm"
short_description: "ServiceNow Change Risk Assessor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_servicenow_change_ri_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 ServiceNow incident by number and returns priority, state, and assigned group.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Looks up a ServiceNow incident by number and returns priority, state, and assigned group."
tags:
- itsm
- servicenow
- banking
capability:
exposes:
- type: mcp
namespace: itsm-lookup
port: 8080
tools:
- name: get-incident-status
description: "Given a ServiceNow incident number, return the incident state, priority, and assigned group. Use for IT support status checks."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
call: "servicenow.get-incident"
with:
number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assigned_to
type: string
mapping: "$.result.assignment_group.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://wellsfargo.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?number={{number}}"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
Retrieves the current status, priority, and assignment group for a ServiceNow incident by number.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status Lookup"
description: "Retrieves the current status, priority, and assignment group for a ServiceNow incident 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 and priority. Use for status checks."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow 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://wellsfargo.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 ServiceNow P1 or P2 incident is created for a core banking system, creates a linked Jira issue in the engineering project and notifies the engineering on-call via Microsoft Teams.
naftiko: "0.5"
info:
label: "ServiceNow ITSM Incident to Jira Sync"
description: "When a ServiceNow P1 or P2 incident is created for a core banking system, creates a linked Jira issue in the engineering project and notifies the engineering on-call via Microsoft Teams."
tags:
- itsm
- servicenow
- jira
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: itsm-bridge
port: 8080
tools:
- name: sync-incident-to-jira
description: "Given a ServiceNow incident number and priority, create a linked Jira issue and notify the on-call engineering team in Microsoft Teams. Use for P1/P2 incidents affecting core banking applications."
inputParameters:
- name: incident_number
in: body
type: string
description: "ServiceNow incident number (e.g. INC0001234)."
- name: priority
in: body
type: string
description: "Incident priority: P1 or P2."
- name: affected_system
in: body
type: string
description: "Name of the affected banking system."
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
number: "{{incident_number}}"
- name: create-jira-issue
type: call
call: jira-ops.create-issue
with:
project_key: OPS
issuetype: Incident
summary: "[{{priority}}] {{get-incident.short_description}}"
description: "ServiceNow: {{incident_number}}\nSystem: {{affected_system}}\nDetails: {{get-incident.description}}"
- name: notify-oncall
type: call
call: msteams-oncall.send-message
with:
channel_id: "$secrets.teams_oncall_channel_id"
text: "{{priority}} Incident: {{get-incident.short_description}} | System: {{affected_system}} | ServiceNow: {{incident_number}} | Jira: {{create-jira-issue.key}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://wellsfargo.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: jira-ops
baseUri: "https://wellsfargo.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-oncall
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Executes a read-only SQL query against Snowflake and returns the result set for ad-hoc analytics.
naftiko: "0.5"
info:
label: "Snowflake Ad-Hoc Query Executor"
description: "Executes a read-only SQL query against Snowflake and returns the result set for ad-hoc analytics."
tags:
- data
- snowflake
- banking
capability:
exposes:
- type: mcp
namespace: data-query
port: 8080
tools:
- name: execute-query
description: "Given a SQL statement, execute it against the Wells Fargo Snowflake warehouse and return the result set. Use for ad-hoc reporting queries."
inputParameters:
- name: sql_statement
in: body
type: string
description: "The SQL SELECT statement to execute."
call: "snowflake.execute-statement"
with:
statement: "{{sql_statement}}"
outputParameters:
- name: row_count
type: integer
mapping: "$.resultSetMetaData.numRows"
- name: rows
type: array
mapping: "$.data"
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
Executes data quality checks on Snowflake AML transaction tables, logs results to a compliance audit table, and alerts the AML compliance team via Microsoft Teams if thresholds are breached.
naftiko: "0.5"
info:
label: "Snowflake Anti-Money Laundering Data Quality Check"
description: "Executes data quality checks on Snowflake AML transaction tables, logs results to a compliance audit table, and alerts the AML compliance team via Microsoft Teams if thresholds are breached."
tags:
- compliance
- data
- snowflake
- microsoft-teams
- aml
- data-quality
capability:
exposes:
- type: mcp
namespace: aml-data-quality
port: 8080
tools:
- name: run-aml-data-quality-check
description: "Given a Snowflake AML table name and as-of date, execute row count and null-check validations, log results, and alert the AML compliance Teams channel if any check fails. Use daily before AML transaction monitoring batch runs."
inputParameters:
- name: aml_table
in: body
type: string
description: "Snowflake AML table to validate (e.g. COMPLIANCE.AML_TRANSACTIONS)."
- name: as_of_date
in: body
type: string
description: "Date partition to validate in YYYY-MM-DD format."
- name: min_row_count
in: body
type: integer
description: "Minimum expected row count for the given date partition."
steps:
- name: run-quality-checks
type: call
call: snowflake-aml.execute-statement
with:
statement: "SELECT COUNT(*) as row_count, SUM(CASE WHEN account_id IS NULL THEN 1 ELSE 0 END) as null_accounts FROM {{aml_table}} WHERE transaction_date = '{{as_of_date}}'"
- name: notify-aml-team
type: call
call: msteams-aml.send-message
with:
channel_id: "$secrets.teams_aml_channel_id"
text: "AML data quality check for {{aml_table}} on {{as_of_date}}: Row count={{run-quality-checks.row_count}} (min: {{min_row_count}}), Null accounts={{run-quality-checks.null_accounts}}. Status: {{run-quality-checks.status}}."
consumes:
- type: http
namespace: snowflake-aml
baseUri: "https://wellsfargo.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-aml
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Snowflake task history for failed ETL jobs supporting core banking and compliance data feeds, creates ServiceNow tickets for failures, and notifies the data engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Snowflake Data Pipeline Health Monitor"
description: "Queries Snowflake task history for failed ETL jobs supporting core banking and compliance data feeds, creates ServiceNow tickets for failures, and notifies the data engineering team via Microsoft Teams."
tags:
- data
- snowflake
- servicenow
- microsoft-teams
- monitoring
- etl
capability:
exposes:
- type: mcp
namespace: data-pipeline-health
port: 8080
tools:
- name: monitor-etl-pipeline-health
description: "Given a Snowflake schema and lookback window in hours, check for failed task runs, create a ServiceNow task for each failure, and post a health summary to the data-engineering Teams channel. Use for daily ETL health checks on banking data pipelines."
inputParameters:
- name: schema_name
in: body
type: string
description: "Snowflake schema to check (e.g. BANKING.ETL_CORE)."
- name: lookback_hours
in: body
type: integer
description: "Hours of task history to inspect (e.g. 24)."
steps:
- name: check-task-failures
type: call
call: snowflake-etl.execute-statement
with:
statement: "SELECT name, state, error_message, scheduled_time FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(SCHEDULED_TIME_RANGE_START=>DATEADD('hour', -{{lookback_hours}}, CURRENT_TIMESTAMP()))) WHERE STATE = 'FAILED'"
- name: create-failure-ticket
type: call
call: servicenow-data.create-task
with:
category: data_pipeline
short_description: "ETL failures in {{schema_name}} — last {{lookback_hours}}h"
description: "Failed Snowflake tasks detected: {{check-task-failures.row_count}} failures\n{{check-task-failures.results}}"
- name: notify-data-eng
type: call
call: msteams-dataeng.send-message
with:
channel_id: "$secrets.teams_dataeng_channel_id"
text: "Pipeline health: {{schema_name}} — {{check-task-failures.row_count}} failures in last {{lookback_hours}}h. ServiceNow: {{create-failure-ticket.number}}."
consumes:
- type: http
namespace: snowflake-etl
baseUri: "https://wellsfargo.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-data
baseUri: "https://wellsfargo.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
- type: http
namespace: msteams-dataeng
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs data quality checks against Snowflake SLA definitions, logs results, creates ServiceNow incidents for violations, and alerts data stewards via Microsoft Teams.
naftiko: "0.5"
info:
label: "Snowflake Data Quality SLA Monitor"
description: "Runs data quality checks against Snowflake SLA definitions, logs results, creates ServiceNow incidents for violations, and alerts data stewards via Microsoft Teams."
tags:
- data-quality
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: snowflake_data_quali
port: 8080
tools:
- name: snowflake-data
description: "Given an execution date, run the snowflake data quality sla 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.SNOWFLAKE_DATA_QUALITY_SLA_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SNOWFLAKE_DATA_QUALITY_SLA_MONITOR_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "data-quality"
short_description: "Snowflake Data Quality SLA Monitor processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_snowflake_data_quali_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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 status of a Snowflake data share and returns consumer access details and last refresh time.
naftiko: "0.5"
info:
label: "Snowflake Data Share Consumer Check"
description: "Checks the status of a Snowflake data share and returns consumer access details and last refresh time."
tags:
- data
- snowflake
- data-sharing
capability:
exposes:
- type: mcp
namespace: data-sharing
port: 8080
tools:
- name: check-data-share
description: "Given a Snowflake share name, check consumer access status and data freshness. Use for data partnership monitoring."
inputParameters:
- name: share_name
in: body
type: string
description: "The Snowflake data share name."
call: "snowflake.get-share"
with:
share_name: "{{share_name}}"
outputParameters:
- name: consumer_count
type: integer
mapping: "$.data.consumer_count"
- name: last_refresh
type: string
mapping: "$.data.last_refresh_time"
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: shares
path: "/shares/{{share_name}}"
inputParameters:
- name: share_name
in: path
operations:
- name: get-share
method: GET
Executes a read-only SQL query against the Wells Fargo Snowflake data warehouse and returns results.
naftiko: "0.5"
info:
label: "Snowflake Query Executor"
description: "Executes a read-only SQL query against the Wells Fargo Snowflake data warehouse and returns results."
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 and return results. Use for analytics and data validation."
inputParameters:
- name: sql_statement
in: body
type: string
description: "The read-only 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://wellsfargo.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
Executes a Snowflake query to produce a regulatory reporting dataset, validates row counts, and posts the validation summary to the compliance Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Snowflake Regulatory Reporting Data Product"
description: "Executes a Snowflake query to produce a regulatory reporting dataset, validates row counts, and posts the validation summary to the compliance Microsoft Teams channel."
tags:
- compliance
- data
- snowflake
- microsoft-teams
- regulatory-reporting
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: run-regulatory-report
description: "Given a report name and reporting date, execute the corresponding Snowflake regulatory query, validate output row counts against expected thresholds, and post a validation summary to the compliance Teams channel. Use for OCC, Fed, and CFPB reporting runs."
inputParameters:
- name: report_name
in: body
type: string
description: "Regulatory report identifier (e.g. CALL_REPORT, HMDA, CCAR)."
- name: as_of_date
in: body
type: string
description: "Report as-of date in ISO 8601 format (YYYY-MM-DD)."
- name: expected_min_rows
in: body
type: integer
description: "Minimum expected row count for validation."
steps:
- name: execute-report-query
type: call
call: snowflake-reg.execute-statement
with:
statement: "CALL REGULATORY.RUN_REPORT('{{report_name}}', '{{as_of_date}}')"
- name: notify-compliance
type: call
call: msteams-compliance.send-message
with:
channel_id: "$secrets.teams_compliance_channel_id"
text: "Regulatory report {{report_name}} as of {{as_of_date}} completed. Row count: {{execute-report-query.row_count}} (min expected: {{expected_min_rows}}). Status: {{execute-report-query.status}}."
consumes:
- type: http
namespace: snowflake-reg
baseUri: "https://wellsfargo.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-compliance
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Executes a Splunk search query and returns matching log events for a given time range.
naftiko: "0.5"
info:
label: "Splunk Log Search"
description: "Executes a Splunk search query and returns matching log events for a given time range."
tags:
- security
- splunk
- logging
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: search-logs
description: "Given a Splunk search query and time range, execute the search and return events. Use for security investigations."
inputParameters:
- name: search_query
in: body
type: string
description: "The Splunk SPL search query."
- name: earliest_time
in: body
type: string
description: "Search start time, e.g. '-24h'."
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://wellsfargo-splunk.example.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: searches
path: "/search/jobs"
operations:
- name: create-search
method: POST
Runs a Splunk search query and returns matching log events for security and operations investigations.
naftiko: "0.5"
info:
label: "Splunk Security Log Search"
description: "Runs a Splunk search query and returns matching log events for security and operations investigations."
tags:
- security
- splunk
- banking
capability:
exposes:
- type: mcp
namespace: siem-search
port: 8080
tools:
- name: search-logs
description: "Given a Splunk search query string, execute the search and return matching events. Use for incident investigation and audit log review."
inputParameters:
- name: search_query
in: body
type: string
description: "The Splunk SPL search query."
call: "splunk.create-search"
with:
search: "{{search_query}}"
outputParameters:
- name: event_count
type: integer
mapping: "$.entry[0].content.eventCount"
- name: results
type: array
mapping: "$.entry[0].content.results"
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.wellsfargo.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search-jobs
path: "/search/jobs"
operations:
- name: create-search
method: POST
When Splunk Enterprise Security generates a critical notable event, creates a ServiceNow P1 security incident and posts a triage summary to the SOC Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Splunk SIEM Alert to Incident Chain"
description: "When Splunk Enterprise Security generates a critical notable event, creates a ServiceNow P1 security incident and posts a triage summary to the SOC Microsoft Teams channel."
tags:
- security
- splunk
- servicenow
- microsoft-teams
- secops
- siem
capability:
exposes:
- type: mcp
namespace: siem-ops
port: 8080
tools:
- name: handle-siem-alert
description: "Given a Splunk notable event ID, severity, and description, create a ServiceNow security incident and alert the SOC Teams channel. Invoke on critical or high Splunk ES notable events for financial system threats."
inputParameters:
- name: event_id
in: body
type: string
description: "Splunk notable event ID from Enterprise Security."
- name: severity
in: body
type: string
description: "Event severity: critical, high, medium."
- name: event_description
in: body
type: string
description: "Human-readable description of the notable event."
- name: affected_system
in: body
type: string
description: "Name of the affected banking system or application."
steps:
- name: create-si-incident
type: call
call: servicenow-siem.create-incident
with:
category: security
subcategory: siem_alert
impact: "{{severity}}"
short_description: "SIEM alert: {{event_description}} on {{affected_system}}"
description: "Splunk event {{event_id}}: {{event_description}}. Affected: {{affected_system}}. Severity: {{severity}}."
- name: alert-soc-team
type: call
call: msteams-siem.send-message
with:
channel_id: "$secrets.teams_soc_channel_id"
text: "SIEM Incident: {{event_description}} | System: {{affected_system}} | Severity: {{severity}} | ServiceNow: {{create-si-incident.number}} | Splunk: {{event_id}}"
consumes:
- type: http
namespace: servicenow-siem
baseUri: "https://wellsfargo.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: security-incidents
path: "/table/sn_si_incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-siem
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tests Splunk SIEM correlation rules against historical data in Snowflake, logs test results, and notifies the security engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Splunk SIEM Correlation Rule Tester"
description: "Tests Splunk SIEM correlation rules against historical data in Snowflake, logs test results, and notifies the security engineering team via Microsoft Teams."
tags:
- security
- splunk
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: splunk_siem_correlat
port: 8080
tools:
- name: splunk-siem
description: "Given an execution date, run the splunk siem correlation rule tester 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.SPLUNK_SIEM_CORRELATION_RULE_TESTER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.SPLUNK_SIEM_CORRELATION_RULE_TESTER_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_splunk_siem_correlat_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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: splunk
baseUri: "https://wellsfargo-splunk.example.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: events
path: "/receivers/simple"
operations:
- name: index-event
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 of a SQL Server database, returning size, active connections, and backup status.
naftiko: "0.5"
info:
label: "SQL Server Database Health Check"
description: "Checks the health of a SQL Server database, returning size, active connections, and backup status."
tags:
- database
- sql-server
- infrastructure
capability:
exposes:
- type: mcp
namespace: database
port: 8080
tools:
- name: get-db-health
description: "Given a SQL Server instance and database name, retrieve health metrics. Use for database monitoring."
inputParameters:
- name: instance
in: body
type: string
description: "The SQL Server instance name."
- name: database_name
in: body
type: string
description: "The database name."
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM DBA.SQLSERVER_HEALTH WHERE instance='{{instance}}' AND db_name='{{database_name}}'"
outputParameters:
- name: size_gb
type: string
mapping: "$.data.rows[0].size_gb"
- name: backup_status
type: string
mapping: "$.data.rows[0].backup_status"
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
Sends a message to a Microsoft Teams channel for team notifications and alerts.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Message Sender"
description: "Sends a message to a Microsoft Teams channel for team notifications and alerts."
tags:
- communication
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: messaging
port: 8080
tools:
- name: send-channel-message
description: "Given a Teams channel ID and message text, post the message to the channel. Use for automated notifications."
inputParameters:
- name: channel_id
in: body
type: string
description: "The Microsoft Teams channel ID."
- name: message_text
in: body
type: string
description: "The message body text to send."
call: "msteams.send-message"
with:
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: messages
path: "/teams/$secrets.teams_team_id/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reconciles daily cash positions by pulling balances from SAP and Snowflake, flagging discrepancies in Jira, and alerting the treasury team.
naftiko: "0.5"
info:
label: "Treasury Cash Position Reconciliation"
description: "Reconciles daily cash positions by pulling balances from SAP and Snowflake, flagging discrepancies in Jira, and alerting the treasury team."
tags:
- treasury
- sap
- snowflake
- jira
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: treasury-recon
port: 8080
tools:
- name: reconcile-cash-positions
description: "Given a valuation date and currency, pull SAP and Snowflake balances, compare them, and flag any discrepancies. Use for daily treasury reconciliation."
inputParameters:
- name: valuation_date
in: body
type: string
description: "The valuation date in YYYY-MM-DD format."
- name: currency
in: body
type: string
description: "The currency code (e.g., USD, EUR)."
steps:
- name: get-sap-balance
type: call
call: "sap.get-gl-balance"
with:
company_code: "1000"
gl_account: "100000"
- name: get-snowflake-balance
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT balance FROM TREASURY.CASH_POSITIONS WHERE val_date='{{valuation_date}}' AND currency='{{currency}}'"
- name: flag-discrepancy
type: call
call: "jira.create-issue"
with:
project: "TREAS"
issue_type: "Task"
summary: "Cash position discrepancy: {{currency}} on {{valuation_date}}"
- name: notify-treasury
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_treasury_channel"
text: "Cash recon for {{currency}} on {{valuation_date}}: SAP={{get-sap-balance.balance}}, Snowflake={{get-snowflake-balance.balance}}. Ticket: {{flag-discrepancy.key}}."
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-s4.sap.com/sap/opu/odata/sap/API_GLACCOUNTBALANCE"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: gl-balances
path: "/A_GLAccountBalance(CompanyCode='{{company_code}}',GLAccount='{{gl_account}}')"
inputParameters:
- name: company_code
in: path
- name: gl_account
in: path
operations:
- name: get-gl-balance
method: GET
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Reconciles daily cash positions across banking systems in Snowflake, flags discrepancies, and notifies the treasury team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Treasury Cash Position Reconciliation"
description: "Reconciles daily cash positions across banking systems in Snowflake, flags discrepancies, and notifies the treasury team via Microsoft Teams."
tags:
- treasury
- finance
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: treasury_cash_positi
port: 8080
tools:
- name: treasury-cash
description: "Given an execution date, run the treasury cash position reconciliation 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.TREASURY_CASH_POSITION_RECONCILIATION LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.TREASURY_CASH_POSITION_RECONCILIATION_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_treasury_cash_positi_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Performs a vendor risk assessment by pulling vendor data from SAP, running risk scoring in Snowflake, creating a Jira review ticket, and notifying procurement.
naftiko: "0.5"
info:
label: "Vendor Risk Assessment Workflow"
description: "Performs a vendor risk assessment by pulling vendor data from SAP, running risk scoring in Snowflake, creating a Jira review ticket, and notifying procurement."
tags:
- procurement
- sap
- snowflake
- jira
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: vendor-risk
port: 8080
tools:
- name: assess-vendor-risk
description: "Given a SAP vendor number, pull vendor master data, compute risk score, open a Jira review ticket, and notify procurement. Use for annual vendor risk reviews."
inputParameters:
- name: vendor_number
in: body
type: string
description: "The SAP vendor number."
steps:
- name: get-vendor
type: call
call: "sap.get-vendor"
with:
vendor_number: "{{vendor_number}}"
- name: compute-risk
type: call
call: "snowflake.execute-statement"
with:
statement: "CALL PROCUREMENT.COMPUTE_VENDOR_RISK('{{vendor_number}}')"
- name: create-review
type: call
call: "jira.create-issue"
with:
project: "VRISK"
issue_type: "Task"
summary: "Vendor risk review: {{get-vendor.name}} ({{vendor_number}}) - Score: {{compute-risk.risk_score}}"
- name: notify-procurement
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_procurement_channel"
text: "Vendor risk assessment complete for {{get-vendor.name}}: score {{compute-risk.risk_score}}. Review: {{create-review.key}}."
consumes:
- type: http
namespace: sap
baseUri: "https://wellsfargo-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
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Pulls client portfolio performance from Snowflake, enriches with FactSet market data, and sends personalized review digests to relationship managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Wealth Management Client Review Digest"
description: "Pulls client portfolio performance from Snowflake, enriches with FactSet market data, and sends personalized review digests to relationship managers via Microsoft Teams."
tags:
- wealth-management
- snowflake
- factset
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wealth_management_cl
port: 8080
tools:
- name: wealth-management
description: "Given an execution date, run the wealth management client review 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.WEALTH_MANAGEMENT_CLIENT_REVIEW_DIGEST LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WEALTH_MANAGEMENT_CLIENT_REVIEW_DIGEST_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_wealth_management_cl_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Detects portfolio drift by querying allocation data from Snowflake, comparing to target weights, and notifying advisors via Microsoft Teams with Salesforce case creation.
naftiko: "0.5"
info:
label: "Wealth Management Portfolio Rebalance Alert"
description: "Detects portfolio drift by querying allocation data from Snowflake, comparing to target weights, and notifying advisors via Microsoft Teams with Salesforce case creation."
tags:
- wealth-management
- snowflake
- salesforce
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: wm-ops
port: 8080
tools:
- name: alert-rebalance
description: "Given a portfolio ID and drift threshold, check current allocations, flag drifted positions, create an advisor action case, and send notification. Use for daily portfolio monitoring."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "The client portfolio identifier."
- name: drift_threshold
in: body
type: string
description: "The maximum allowed drift percentage (e.g., 5.0)."
steps:
- name: check-drift
type: call
call: "snowflake.execute-statement"
with:
statement: "CALL WM.CHECK_PORTFOLIO_DRIFT('{{portfolio_id}}', {{drift_threshold}})"
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "Rebalance needed: portfolio {{portfolio_id}}"
description: "Drift detected: {{check-drift.max_drift}}% exceeds {{drift_threshold}}% threshold"
- name: notify-advisor
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_wm_channel"
text: "Portfolio {{portfolio_id}} rebalance alert: max drift {{check-drift.max_drift}}%. Case: {{create-case.id}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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: salesforce
baseUri: "https://wellsfargo.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: 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 wire transfer exceeds the threshold, pulls transaction details from Snowflake, creates a ServiceNow approval task, and escalates to the treasury team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Wire Transfer Approval Escalation"
description: "When a high-value wire transfer exceeds the threshold, pulls transaction details from Snowflake, creates a ServiceNow approval task, and escalates to the treasury team via Microsoft Teams."
tags:
- treasury
- snowflake
- servicenow
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: treasury-ops
port: 8080
tools:
- name: escalate-wire-transfer
description: "Given a wire transfer ID and amount, verify the transaction, create an approval task, and notify treasury. Use for wire transfers above the auto-approval limit."
inputParameters:
- name: transfer_id
in: body
type: string
description: "The wire transfer transaction ID."
- name: amount
in: body
type: string
description: "The transfer amount in USD."
steps:
- name: get-transfer
type: call
call: "snowflake.execute-statement"
with:
statement: "SELECT * FROM TREASURY.WIRE_TRANSFERS WHERE transfer_id='{{transfer_id}}'"
- name: create-approval
type: call
call: "servicenow.create-incident"
with:
category: "wire_approval"
short_description: "Wire transfer approval: {{transfer_id}} (${{amount}})"
- name: notify-treasury
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_treasury_channel"
text: "Wire transfer {{transfer_id}} for ${{amount}} requires approval. Task: {{create-approval.number}}. Beneficiary: {{get-transfer.beneficiary}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Screens international wire transfers against OFAC sanctions lists in Snowflake, flags matches in ServiceNow, and alerts the compliance team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Wire Transfer Sanctions Check"
description: "Screens international wire transfers against OFAC sanctions lists in Snowflake, flags matches in ServiceNow, and alerts the compliance team via Microsoft Teams."
tags:
- compliance
- sanctions
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wire_transfer_sancti
port: 8080
tools:
- name: wire-transfer
description: "Given an execution date, run the wire transfer sanctions check 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.WIRE_TRANSFER_SANCTIONS_CHECK LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WIRE_TRANSFER_SANCTIONS_CHECK_RESULTS SELECT * FROM staging"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
category: "compliance"
short_description: "Wire Transfer Sanctions Check processing complete"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_wire_transfer_sancti_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Initiates the annual compensation review cycle by pulling current comp data from Snowflake, creating Jira tracking tasks, and notifying HR business partners via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Annual Compensation Review Launcher"
description: "Initiates the annual compensation review cycle by pulling current comp data from Snowflake, creating Jira tracking tasks, and notifying HR business partners via Microsoft Teams."
tags:
- hr
- compensation
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_annual_compe
port: 8080
tools:
- name: workday-annual
description: "Given an execution date, run the workday annual compensation review 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_ANNUAL_COMPENSATION_REVIEW_LAUNCHER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_ANNUAL_COMPENSATION_REVIEW_LAUNCHER_RESULTS SELECT * FROM staging"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "WFOPS"
issue_type: "Task"
summary: "Workday Annual Compensation Review Launcher - review required"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_annual_compe_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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://wellsfargo.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
Identifies employees who have not completed benefits enrollment in Workday, logs status in Snowflake, and sends reminders via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Benefits Open Enrollment Reminder"
description: "Identifies employees who have not completed benefits enrollment in Workday, logs status 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_REMINDER LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_BENEFITS_OPEN_ENROLLMENT_REMINDER_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://wellsfargo.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 compensation review proposals from Workday for a given cycle and notifies HR business partners via Microsoft Teams with a summary of merit increases pending approval.
naftiko: "0.5"
info:
label: "Workday Compensation Review Notification"
description: "Retrieves compensation review proposals from Workday for a given cycle and notifies HR business partners via Microsoft Teams with a summary of merit increases pending approval."
tags:
- hr
- workday
- microsoft-teams
- compensation
- approval
capability:
exposes:
- type: mcp
namespace: compensation-review
port: 8080
tools:
- name: notify-compensation-review
description: "Given a Workday compensation review cycle ID, retrieve proposal counts and totals, and notify the HRBP team in Microsoft Teams. Use to kick off the annual compensation review approval workflow."
inputParameters:
- name: review_cycle_id
in: body
type: string
description: "Workday compensation review cycle ID."
- name: review_period_label
in: body
type: string
description: "Human-readable review period (e.g. 2025 Annual Merit Increase)."
steps:
- name: get-review-summary
type: call
call: workday.get-comp-review
with:
cycle_id: "{{review_cycle_id}}"
- name: notify-hrbp
type: call
call: msteams-hrbp.send-message
with:
channel_id: "$secrets.teams_hrbp_channel_id"
text: "Compensation review {{review_period_label}} is open: {{get-review-summary.total_proposals}} proposals, total increase {{get-review-summary.total_amount}}. Please complete approvals in Workday by {{get-review-summary.deadline}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: comp-reviews
path: "/wellsfargo/compensationReviewCycles/{{cycle_id}}"
inputParameters:
- name: cycle_id
in: path
operations:
- name: get-comp-review
method: GET
- type: http
namespace: msteams-hrbp
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Returns current headcount by department, cost center, and business line from Workday for finance and workforce planning reporting.
naftiko: "0.5"
info:
label: "Workday Headcount and Cost Center Report"
description: "Returns current headcount by department, cost center, and business line from Workday for finance and workforce planning reporting."
tags:
- hr
- finance
- workday
- reporting
- headcount
capability:
exposes:
- type: mcp
namespace: hr-finance-reporting
port: 8080
tools:
- name: get-headcount-report
description: "Returns active employee headcount grouped by department, cost center, and business line from Workday. Use for workforce planning, regulatory staffing disclosures, and budget reviews."
call: workday.get-headcount
outputParameters:
- name: workers
type: array
mapping: "$.data[*]"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: headcount
path: "/wellsfargo/workers"
operations:
- name: get-headcount
method: GET
Compares actual Workday headcount against forecast in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Headcount Forecast Variance"
description: "Compares actual Workday headcount against forecast 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_fo
port: 8080
tools:
- name: workday-headcount
description: "Given an execution date, run the workday headcount forecast variance 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_FORECAST_VARIANCE LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_HEADCOUNT_FORECAST_VARIANCE_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_headcount_fo_channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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 Workday payroll tax filing status, logs compliance metrics in Snowflake, and alerts the payroll compliance team via Microsoft Teams when filings are overdue.
naftiko: "0.5"
info:
label: "Workday Payroll Tax Filing Monitor"
description: "Monitors Workday payroll tax filing status, logs compliance metrics in Snowflake, and alerts the payroll compliance team via Microsoft Teams when filings are overdue."
tags:
- hr
- payroll
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_payroll_tax_
port: 8080
tools:
- name: workday-payroll
description: "Given an execution date, run the workday payroll tax filing 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.WORKDAY_PAYROLL_TAX_FILING_MONITOR LIMIT 100"
- name: process-results
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO ANALYTICS.WORKDAY_PAYROLL_TAX_FILING_MONITOR_RESULTS SELECT * FROM staging"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "$secrets.teams_workday_payroll_tax__channel"
text: "Process complete. Results logged."
consumes:
- type: http
namespace: snowflake
baseUri: "https://wellsfargo.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
Looks up a Workday worker profile by employee ID, returning name, title, department, and manager.
naftiko: "0.5"
info:
label: "Workday Worker Profile Lookup"
description: "Looks up a Workday worker profile by employee ID, returning name, title, department, and manager."
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 including job title and department. 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: "/wellsfargo/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Retrieves a Zendesk support ticket by ID, returning subject, status, requester, and priority.
naftiko: "0.5"
info:
label: "Zendesk Ticket Lookup"
description: "Retrieves a Zendesk support ticket by ID, returning subject, status, requester, and priority."
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 ticket details including status and priority. 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://wellsfargo.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