UBS Capabilities
Naftiko 0.5 capability definitions for UBS - 100 capabilities showing integration workflows and service orchestrations.
On high-value transaction detection via Mastercard, pulls client profile from Salesforce, checks against compliance watchlists, and escalates suspicious activity through ServiceNow and Microsoft Teams.
naftiko: "0.5"
info:
label: "AML Transaction Screening Pipeline"
description: "On high-value transaction detection via Mastercard, pulls client profile from Salesforce, checks against compliance watchlists, and escalates suspicious activity through ServiceNow and Microsoft Teams."
tags:
- compliance
- aml
- financial-crime
- mastercard
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aml-screening
port: 8080
tools:
- name: screen-transaction
description: "Screen a high-value transaction for AML, pulling client data and escalating if suspicious."
inputParameters:
- name: transaction_ref
in: body
type: string
description: "The Mastercard transaction reference."
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: compliance_email
in: body
type: string
description: "The compliance officer email."
steps:
- name: get-transaction
type: call
call: "mastercard.get-transaction"
with:
transaction_ref: "{{transaction_ref}}"
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: open-sar
type: call
call: "servicenow.create-incident"
with:
short_description: "AML alert: {{get-client.Name}} — {{get-transaction.amount}} {{get-transaction.merchant_name}}"
description: "Transaction: {{transaction_ref}}. Amount: {{get-transaction.amount}}. Merchant: {{get-transaction.merchant_name}}. Client segment: {{get-client.Client_Segment__c}}. Auth status: {{get-transaction.auth_status}}."
assigned_group: "Financial_Crime_Unit"
category: "aml_screening"
priority: "1"
- name: alert-compliance
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{compliance_email}}"
text: "AML ALERT: Suspicious transaction for {{get-client.Name}}. Amount: {{get-transaction.amount}}. Incident: {{open-sar.number}}. Immediate review required."
consumes:
- type: http
namespace: mastercard
baseUri: "https://api.mastercard.com/fraud/v2"
authentication:
type: oauth1
consumer_key: "$secrets.mastercard_consumer_key"
signing_key: "$secrets.mastercard_signing_key"
resources:
- name: transactions
path: "/transactions/{{transaction_ref}}"
inputParameters:
- name: transaction_ref
in: path
operations:
- name: get-transaction
method: GET
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
naftiko: "0.5"
info:
label: "Annual Compliance Certification Orchestrator"
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
tags:
- compliance
- hr
- legal
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-annual-compliance-certification-orchestrator
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
naftiko: "0.5"
info:
label: "API Lifecycle Management Orchestrator"
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
tags:
- engineering
- api
- operations
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: run-api-lifecycle-management-orchestrator
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves user identity attributes from Azure Active Directory by UPN, used for access reviews and entitlement checks.
naftiko: "0.5"
info:
label: "Azure AD User Lookup"
description: "Retrieves user identity attributes from Azure Active Directory by UPN, used for access reviews and entitlement checks."
tags:
- security
- identity
- azure-active-directory
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user-identity
description: "Fetch Azure AD user profile by user principal name."
inputParameters:
- name: upn
in: body
type: string
description: "The user principal name (e.g. jane.doe@ubs.com)."
call: "azuread.get-user"
with:
upn: "{{upn}}"
outputParameters:
- name: display_name
type: string
mapping: "$.displayName"
- name: job_title
type: string
mapping: "$.jobTitle"
- name: department
type: string
mapping: "$.department"
- name: account_enabled
type: boolean
mapping: "$.accountEnabled"
consumes:
- type: http
namespace: azuread
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
When an Azure DevOps release pipeline requires approval, fetches the release details, validates the change request in ServiceNow, and notifies the approver via Microsoft Teams with a one-click approval link.
naftiko: "0.5"
info:
label: "Azure DevOps Deployment Approval"
description: "When an Azure DevOps release pipeline requires approval, fetches the release details, validates the change request in ServiceNow, and notifies the approver via Microsoft Teams with a one-click approval link."
tags:
- operations
- deployment
- azure-devops
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: release-approval
port: 8080
tools:
- name: request-deployment-approval
description: "Fetch release details, validate the change request, and send approval notification."
inputParameters:
- name: release_id
in: body
type: string
description: "The Azure DevOps release ID."
- name: project
in: body
type: string
description: "The Azure DevOps project name."
- name: change_request_number
in: body
type: string
description: "The ServiceNow change request number."
- name: approver_email
in: body
type: string
description: "The approver email."
steps:
- name: get-release
type: call
call: "azdevops.get-release"
with:
project: "{{project}}"
release_id: "{{release_id}}"
- name: get-change-request
type: call
call: "servicenow.get-change"
with:
change_number: "{{change_request_number}}"
- name: notify-approver
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{approver_email}}"
text: "Deployment approval needed: {{get-release.name}} ({{project}}). CR: {{change_request_number}} — {{get-change-request.short_description}}. Status: {{get-change-request.state}}. Approve: {{get-release.approval_url}}."
consumes:
- type: http
namespace: azdevops
baseUri: "https://vsrm.dev.azure.com/ubs"
authentication:
type: bearer
token: "$secrets.azdevops_token"
resources:
- name: releases
path: "/{{project}}/_apis/release/releases/{{release_id}}?api-version=7.0"
inputParameters:
- name: project
in: path
- name: release_id
in: path
operations:
- name: get-release
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request?sysparm_query=number={{change_number}}"
inputParameters:
- name: change_number
in: path
operations:
- name: get-change
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Checks the execution status of a trade order in Bloomberg AIM by order ID, returning fill quantity, average price, and settlement details.
naftiko: "0.5"
info:
label: "Bloomberg AIM Order Status"
description: "Checks the execution status of a trade order in Bloomberg AIM by order ID, returning fill quantity, average price, and settlement details."
tags:
- trading
- order-management
- bloomberg-aim
capability:
exposes:
- type: mcp
namespace: trade-ops
port: 8080
tools:
- name: get-order-status
description: "Retrieve the execution status of a Bloomberg AIM order."
inputParameters:
- name: order_id
in: body
type: string
description: "The Bloomberg AIM order identifier."
call: "aim.get-order"
with:
order_id: "{{order_id}}"
outputParameters:
- name: status
type: string
mapping: "$.order.status"
- name: filled_qty
type: number
mapping: "$.order.filledQuantity"
- name: avg_price
type: number
mapping: "$.order.averagePrice"
- name: settlement_date
type: string
mapping: "$.order.settlementDate"
consumes:
- type: http
namespace: aim
baseUri: "https://api.bloomberg.com/eap/aim/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: orders
path: "/orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
Retrieves real-time market data for a given security from Bloomberg Enterprise Data, returning price, volume, and change metrics for wealth advisors and trading desks.
naftiko: "0.5"
info:
label: "Bloomberg Market Data Lookup"
description: "Retrieves real-time market data for a given security from Bloomberg Enterprise Data, returning price, volume, and change metrics for wealth advisors and trading desks."
tags:
- trading
- market-data
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-security-quote
description: "Fetch real-time quote data for a security by Bloomberg ticker symbol."
inputParameters:
- name: ticker
in: body
type: string
description: "Bloomberg ticker symbol (e.g. UBSG SW Equity)."
call: "bloomberg.get-quote"
with:
ticker: "{{ticker}}"
outputParameters:
- name: last_price
type: number
mapping: "$.data.lastPrice"
- name: volume
type: number
mapping: "$.data.volume"
- name: change_pct
type: number
mapping: "$.data.changePct"
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: quotes
path: "/quotes/{{ticker}}"
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
On client account closure in Salesforce, archives documents in SharePoint, closes open ServiceNow tickets, revokes Salesforce access, and notifies the relationship manager and compliance via Microsoft Teams.
naftiko: "0.5"
info:
label: "Client Offboarding Orchestrator"
description: "On client account closure in Salesforce, archives documents in SharePoint, closes open ServiceNow tickets, revokes Salesforce access, and notifies the relationship manager and compliance via Microsoft Teams."
tags:
- wealth-management
- offboarding
- salesforce
- sharepoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: client-offboarding
port: 8080
tools:
- name: offboard-client
description: "Execute full client offboarding: archive documents, close tickets, deactivate records, and notify stakeholders."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: rm_email
in: body
type: string
description: "The relationship manager email."
- name: compliance_email
in: body
type: string
description: "The compliance officer email."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: archive-docs
type: call
call: "sharepoint.move-folder"
with:
site_id: "wealth_client_docs"
source_path: "Clients/{{get-client.Name}}_{{client_id}}"
dest_path: "Archive/{{get-client.Name}}_{{client_id}}"
- name: close-ticket
type: call
call: "servicenow.create-task"
with:
short_description: "Client offboarding: {{get-client.Name}}"
description: "Account closure initiated. Documents archived to {{archive-docs.dest_url}}. All open items to be reviewed and closed."
assigned_group: "Wealth_Operations"
category: "client_offboarding"
- name: notify-rm
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{rm_email}}"
text: "Client offboarding complete: {{get-client.Name}}. Documents archived. Closure ticket: {{close-ticket.number}}."
- name: notify-compliance
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{compliance_email}}"
text: "Client account closed: {{get-client.Name}} ({{client_id}}). Retention archive: {{archive-docs.dest_url}}. Review ticket: {{close-ticket.number}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{source_path}}:/move"
inputParameters:
- name: site_id
in: path
- name: source_path
in: path
operations:
- name: move-folder
method: POST
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
On new wealth management client creation in Salesforce, provisions a SharePoint document vault, creates a Workday cost center assignment, opens a ServiceNow onboarding ticket, and sends a Microsoft Teams notification to the relationship manager.
naftiko: "0.5"
info:
label: "Client Onboarding Orchestrator"
description: "On new wealth management client creation in Salesforce, provisions a SharePoint document vault, creates a Workday cost center assignment, opens a ServiceNow onboarding ticket, and sends a Microsoft Teams notification to the relationship manager."
tags:
- wealth-management
- onboarding
- salesforce
- sharepoint
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: client-onboarding
port: 8080
tools:
- name: onboard-wealth-client
description: "Given a Salesforce client ID and relationship manager employee ID, orchestrate the full onboarding sequence including document provisioning, IT setup, and RM notification."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce account ID for the new wealth client."
- name: rm_employee_id
in: body
type: string
description: "The Workday employee ID of the assigned relationship manager."
- name: client_segment
in: body
type: string
description: "The client segment (e.g. UHNW, HNW, Affluent)."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: get-rm
type: call
call: "workday.get-worker"
with:
worker_id: "{{rm_employee_id}}"
- name: provision-vault
type: call
call: "sharepoint.create-folder"
with:
site_id: "wealth_client_docs"
folder_path: "Clients/{{get-client.Name}}_{{client_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New wealth client onboarding: {{get-client.Name}}"
category: "client_onboarding"
assigned_group: "Wealth_Operations"
description: "Client: {{get-client.Name}} ({{client_segment}}). RM: {{get-rm.full_name}}. Document vault: {{provision-vault.url}}."
- name: notify-rm
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-rm.work_email}}"
text: "New client onboarding initiated: {{get-client.Name}} ({{client_segment}}). Ticket: {{open-ticket.number}}. Docs: {{provision-vault.url}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: servicenow
baseUri: "https://ubs.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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the risk profile for a client.
naftiko: "0.5"
info:
label: "Client Risk Profile Lookup"
description: "Retrieves the risk profile for a client."
tags:
- risk
- wealth-management
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: get-client
description: "Retrieves the risk profile for a client."
inputParameters:
- name: entity_id
in: body
type: string
description: "The client risk profile lookup identifier."
call: "risk-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: risk-api
baseUri: "https://api.ubs.com/risk/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: client
path: "/client/risk/profile/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-client
method: GET
Performs a suitability check for a proposed investment by pulling client risk profile from Salesforce, product risk data from FactSet, and regulatory constraints, then creates a compliance record in ServiceNow.
naftiko: "0.5"
info:
label: "Client Suitability Assessment"
description: "Performs a suitability check for a proposed investment by pulling client risk profile from Salesforce, product risk data from FactSet, and regulatory constraints, then creates a compliance record in ServiceNow."
tags:
- compliance
- suitability
- salesforce
- factset
- servicenow
capability:
exposes:
- type: mcp
namespace: suitability
port: 8080
tools:
- name: assess-suitability
description: "Check if a proposed investment is suitable for a client based on risk profile and product characteristics."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: product_id
in: body
type: string
description: "The FactSet product identifier."
- name: investment_amount
in: body
type: number
description: "The proposed investment amount."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: get-product-risk
type: call
call: "factset.get-product-risk"
with:
product_id: "{{product_id}}"
- name: log-assessment
type: call
call: "servicenow.create-task"
with:
short_description: "Suitability assessment: {{get-client.Name}} — {{product_id}}"
description: "Client risk profile: {{get-client.Risk_Profile__c}}. Product risk rating: {{get-product-risk.risk_rating}}. Amount: {{investment_amount}}. Client segment: {{get-client.Client_Segment__c}}."
assigned_group: "Compliance_Suitability"
category: "suitability_review"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: product-risk
path: "/products/{{product_id}}/risk"
inputParameters:
- name: product_id
in: path
operations:
- name: get-product-risk
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Checks compliance status for a transaction.
naftiko: "0.5"
info:
label: "Compliance Check Status"
description: "Checks compliance status for a transaction."
tags:
- compliance
- risk
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: get-compliance
description: "Checks compliance status for a transaction."
inputParameters:
- name: entity_id
in: body
type: string
description: "The compliance check status identifier."
call: "compliance-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: compliance-api
baseUri: "https://api.ubs.com/compliance/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: compliance
path: "/compliance/check/status/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-compliance
method: GET
On new compliance regulation release, identifies affected employees from Workday, enrolls them in Pluralsight training courses, tracks completion in ServiceNow, and notifies managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Compliance Training Enrollment Pipeline"
description: "On new compliance regulation release, identifies affected employees from Workday, enrolls them in Pluralsight training courses, tracks completion in ServiceNow, and notifies managers via Microsoft Teams."
tags:
- compliance
- training
- workday
- pluralsight
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-training
port: 8080
tools:
- name: enroll-compliance-training
description: "Enroll employees in mandatory compliance training, create a tracking task, and notify the department manager."
inputParameters:
- name: department
in: body
type: string
description: "The department code for affected employees."
- name: course_id
in: body
type: string
description: "The Pluralsight course identifier."
- name: regulation_name
in: body
type: string
description: "Name of the compliance regulation."
- name: manager_email
in: body
type: string
description: "The department manager email."
steps:
- name: get-employees
type: call
call: "workday.get-department-workers"
with:
department: "{{department}}"
- name: enroll-course
type: call
call: "pluralsight.enroll-users"
with:
course_id: "{{course_id}}"
user_emails: "{{get-employees.email_list}}"
- name: create-tracker
type: call
call: "servicenow.create-task"
with:
short_description: "Compliance training: {{regulation_name}} — {{department}}"
description: "Enrolled {{get-employees.count}} employees in Pluralsight course {{course_id}}. Regulation: {{regulation_name}}. Deadline: 30 days."
assigned_group: "Compliance_Training"
category: "mandatory_training"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{manager_email}}"
text: "Compliance training assigned: {{regulation_name}}. {{get-employees.count}} team members enrolled in course {{course_id}}. Tracker: {{create-tracker.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: department-workers
path: "/workers?department={{department}}"
inputParameters:
- name: department
in: query
operations:
- name: get-department-workers
method: GET
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/api/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: enrollments
path: "/courses/{{course_id}}/enrollments"
inputParameters:
- name: course_id
in: path
operations:
- name: enroll-users
method: POST
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Searches UBS Confluence for a knowledge article by keyword, returning page title, URL, and excerpt for internal support workflows.
naftiko: "0.5"
info:
label: "Confluence Knowledge Article Retrieval"
description: "Searches UBS Confluence for a knowledge article by keyword, returning page title, URL, and excerpt for internal support workflows."
tags:
- knowledge-management
- support
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: search-articles
description: "Search Confluence for knowledge articles matching a query string."
inputParameters:
- name: query
in: body
type: string
description: "The search query for Confluence."
call: "confluence.search"
with:
query: "{{query}}"
outputParameters:
- name: results
type: array
mapping: "$.results"
consumes:
- type: http
namespace: confluence
baseUri: "https://ubs.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: search
path: "/search?cql=text~\"{{query}}\""
inputParameters:
- name: query
in: query
operations:
- name: search
method: GET
Retrieves a Confluence wiki page.
naftiko: "0.5"
info:
label: "Confluence Page Viewer"
description: "Retrieves a Confluence wiki page."
tags:
- collaboration
- confluence
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-confluence
description: "Retrieves a Confluence wiki page."
inputParameters:
- name: entity_id
in: body
type: string
description: "The confluence page viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.ubs.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: confluence
path: "/confluence/page/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-confluence
method: GET
Before processing a cross-border payment, validates the beneficiary against Mastercard fraud screening, checks sanctions via Salesforce compliance records, converts currency via Bloomberg FX, and logs the approval in ServiceNow.
naftiko: "0.5"
info:
label: "Cross-Border Payment Compliance Check"
description: "Before processing a cross-border payment, validates the beneficiary against Mastercard fraud screening, checks sanctions via Salesforce compliance records, converts currency via Bloomberg FX, and logs the approval in ServiceNow."
tags:
- payments
- compliance
- cross-border
- mastercard
- salesforce
- bloomberg-enterprise-data
- servicenow
capability:
exposes:
- type: mcp
namespace: cross-border-payments
port: 8080
tools:
- name: validate-cross-border-payment
description: "Validate a cross-border payment against fraud, sanctions, and FX requirements before processing."
inputParameters:
- name: beneficiary_id
in: body
type: string
description: "The beneficiary client ID in Salesforce."
- name: amount
in: body
type: number
description: "The payment amount in source currency."
- name: source_currency
in: body
type: string
description: "The source currency code."
- name: target_currency
in: body
type: string
description: "The target currency code."
- name: transaction_ref
in: body
type: string
description: "The payment transaction reference."
steps:
- name: get-beneficiary
type: call
call: "salesforce.get-account"
with:
client_id: "{{beneficiary_id}}"
- name: screen-fraud
type: call
call: "mastercard.screen-payment"
with:
transaction_ref: "{{transaction_ref}}"
amount: "{{amount}}"
- name: get-fx-rate
type: call
call: "bloomberg.get-fx-rate"
with:
currency_pair: "{{source_currency}}{{target_currency}}"
- name: log-approval
type: call
call: "servicenow.create-task"
with:
short_description: "Cross-border payment: {{get-beneficiary.Name}} {{amount}} {{source_currency}}"
description: "Beneficiary: {{get-beneficiary.Name}}. Amount: {{amount}} {{source_currency}} -> {{target_currency}} at rate {{get-fx-rate.rate}}. Fraud screen: {{screen-fraud.result}}. Ref: {{transaction_ref}}."
assigned_group: "Payment_Operations"
category: "cross_border_payment"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: mastercard
baseUri: "https://api.mastercard.com/fraud/v2"
authentication:
type: oauth1
consumer_key: "$secrets.mastercard_consumer_key"
signing_key: "$secrets.mastercard_signing_key"
resources:
- name: screening
path: "/screening"
operations:
- name: screen-payment
method: POST
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: fx-rates
path: "/fx/{{currency_pair}}"
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-fx-rate
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
naftiko: "0.5"
info:
label: "Cross-Functional Project Kickoff Orchestrator"
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
tags:
- project-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: run-cross-functional-project-kickoff-orchestrator
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
naftiko: "0.5"
info:
label: "Customer Data Privacy Request Handler"
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
tags:
- compliance
- privacy
- customer-service
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-customer-data-privacy-request-handler
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
naftiko: "0.5"
info:
label: "Customer Journey Mapping Orchestrator"
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
tags:
- customer-experience
- analytics
- product-management
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: run-customer-journey-mapping-orchestrator
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
naftiko: "0.5"
info:
label: "Data Governance Review Orchestrator"
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
tags:
- data-governance
- compliance
- analytics
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: run-data-governance-review-orchestrator
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Queries Datadog for the health status of a specific host or service, returning uptime, CPU, and alert status for UBS platform engineering.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Health Check"
description: "Queries Datadog for the health status of a specific host or service, returning uptime, CPU, and alert status for UBS platform engineering."
tags:
- operations
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-host-health
description: "Retrieve Datadog health metrics for a host by hostname."
inputParameters:
- name: hostname
in: body
type: string
description: "The hostname to query in Datadog."
call: "datadog.get-host"
with:
hostname: "{{hostname}}"
outputParameters:
- name: status
type: string
mapping: "$.host_list[0].up"
- name: cpu_pct
type: number
mapping: "$.host_list[0].metrics.cpu"
- name: alerts
type: number
mapping: "$.host_list[0].alerts_count"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
name: "DD-API-KEY"
in: header
value: "$secrets.datadog_api_key"
resources:
- name: hosts
path: "/hosts?filter={{hostname}}"
inputParameters:
- name: hostname
in: query
operations:
- name: get-host
method: GET
Manages derivatives collateral by pulling margin requirements from Bloomberg AIM, verifying collateral positions in FactSet, updating Salesforce records, and alerting the middle office via Microsoft Teams.
naftiko: "0.5"
info:
label: "Derivatives Collateral Management"
description: "Manages derivatives collateral by pulling margin requirements from Bloomberg AIM, verifying collateral positions in FactSet, updating Salesforce records, and alerting the middle office via Microsoft Teams."
tags:
- trading
- derivatives
- collateral-management
- bloomberg-aim
- factset
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: collateral-mgmt
port: 8080
tools:
- name: manage-collateral
description: "Check margin requirements, verify collateral adequacy, update records, and notify the middle office."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "The portfolio identifier."
- name: counterparty_id
in: body
type: string
description: "The Salesforce counterparty account ID."
- name: middle_office_email
in: body
type: string
description: "The middle office team email."
steps:
- name: get-margin-req
type: call
call: "aim.get-margin-requirement"
with:
portfolio_id: "{{portfolio_id}}"
- name: get-collateral
type: call
call: "factset.get-collateral-positions"
with:
portfolio_id: "{{portfolio_id}}"
- name: update-counterparty
type: call
call: "salesforce.update-account"
with:
client_id: "{{counterparty_id}}"
margin_status: "{{get-margin-req.status}}"
collateral_value: "{{get-collateral.total_value}}"
- name: notify-middle-office
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{middle_office_email}}"
text: "Collateral update: Portfolio {{portfolio_id}}. Margin required: {{get-margin-req.amount}}. Collateral posted: {{get-collateral.total_value}}. Status: {{get-margin-req.status}}."
consumes:
- type: http
namespace: aim
baseUri: "https://api.bloomberg.com/eap/aim/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: margin
path: "/portfolios/{{portfolio_id}}/margin"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-margin-requirement
method: GET
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: collateral
path: "/portfolios/{{portfolio_id}}/collateral"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-collateral-positions
method: GET
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: update-account
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
naftiko: "0.5"
info:
label: "Digital Transformation Progress Orchestrator"
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
tags:
- strategy
- analytics
- project-management
capability:
exposes:
- type: mcp
namespace: strategy
port: 8080
tools:
- name: run-digital-transformation-progress-orchestrator
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
naftiko: "0.5"
info:
label: "Disaster Recovery Test Orchestrator"
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
tags:
- infrastructure
- operations
- compliance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-disaster-recovery-test-orchestrator
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves employee details from Workday, pulls Azure AD entitlements, compares against role-based access policies, and opens a ServiceNow remediation ticket if discrepancies are found.
naftiko: "0.5"
info:
label: "Employee Access Review Orchestrator"
description: "Retrieves employee details from Workday, pulls Azure AD entitlements, compares against role-based access policies, and opens a ServiceNow remediation ticket if discrepancies are found."
tags:
- security
- access-review
- workday
- azure-active-directory
- servicenow
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: run-access-review
description: "Given an employee ID, pull HR data and AD entitlements, and create a remediation ticket if access drift is detected."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
- name: upn
in: body
type: string
description: "The Azure AD user principal name."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: get-ad-user
type: call
call: "azuread.get-user"
with:
upn: "{{upn}}"
- name: get-ad-groups
type: call
call: "azuread.get-user-groups"
with:
upn: "{{upn}}"
- name: open-remediation
type: call
call: "servicenow.create-incident"
with:
short_description: "Access review drift: {{get-employee.full_name}}"
description: "Employee: {{get-employee.full_name}} ({{get-employee.department}}). AD groups: {{get-ad-groups.group_count}}. Review required for role alignment."
assigned_group: "IAM_Operations"
category: "access_review"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azuread
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
- name: user-groups
path: "/users/{{upn}}/memberOf"
inputParameters:
- name: upn
in: path
operations:
- name: get-user-groups
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.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
Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
tags:
- hr
- identity
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-employee-offboarding-orchestrator
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
On employee termination in Workday, disables the Azure AD account, creates a ServiceNow deprovisioning ticket, archives the employee SharePoint folder, and notifies HR and IT via Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Termination Access Revocation"
description: "On employee termination in Workday, disables the Azure AD account, creates a ServiceNow deprovisioning ticket, archives the employee SharePoint folder, and notifies HR and IT via Microsoft Teams."
tags:
- security
- offboarding
- workday
- azure-active-directory
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: employee-offboarding
port: 8080
tools:
- name: revoke-terminated-access
description: "Disable identity, deprovision systems, archive documents, and notify stakeholders on employee termination."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
- name: upn
in: body
type: string
description: "The Azure AD user principal name."
- name: hr_email
in: body
type: string
description: "The HR representative email."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: disable-account
type: call
call: "azuread.disable-user"
with:
upn: "{{upn}}"
- name: archive-docs
type: call
call: "sharepoint.move-folder"
with:
site_id: "employee_docs"
source_path: "Active/{{get-employee.full_name}}"
dest_path: "Terminated/{{get-employee.full_name}}"
- name: open-deprov-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Access revocation: {{get-employee.full_name}}"
description: "Terminated employee: {{get-employee.full_name}} ({{get-employee.department}}). AD account disabled. Documents archived. Complete application deprovisioning."
assigned_group: "IAM_Operations"
category: "employee_termination"
- name: notify-hr
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{hr_email}}"
text: "Access revocation complete: {{get-employee.full_name}}. AD disabled, docs archived. Deprovisioning ticket: {{open-deprov-ticket.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{upn}}"
inputParameters:
- name: upn
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{source_path}}:/move"
inputParameters:
- name: site_id
in: path
- name: source_path
in: path
operations:
- name: move-folder
method: POST
- type: http
namespace: servicenow
baseUri: "https://ubs.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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When new Bloomberg Intelligence research is published, extracts key findings, updates the corresponding Salesforce opportunity, uploads the report to SharePoint, and notifies relevant advisors via Microsoft Teams.
naftiko: "0.5"
info:
label: "Equity Research Distribution"
description: "When new Bloomberg Intelligence research is published, extracts key findings, updates the corresponding Salesforce opportunity, uploads the report to SharePoint, and notifies relevant advisors via Microsoft Teams."
tags:
- research
- distribution
- bloomberg-intelligence
- salesforce
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: research-distribution
port: 8080
tools:
- name: distribute-research
description: "Distribute a Bloomberg Intelligence research note to advisors, updating CRM and document storage."
inputParameters:
- name: research_id
in: body
type: string
description: "The Bloomberg Intelligence research note ID."
- name: ticker
in: body
type: string
description: "The relevant security ticker."
- name: advisor_emails
in: body
type: string
description: "Comma-separated list of advisor emails to notify."
steps:
- name: get-research
type: call
call: "bloomberg.get-intelligence-note"
with:
research_id: "{{research_id}}"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "research_library"
file_path: "EquityResearch/{{ticker}}/{{research_id}}.pdf"
content: "{{get-research.content}}"
- name: notify-advisors
type: call
call: "msteams.send-channel-message"
with:
channel_id: "equity_research"
text: "New research: {{get-research.title}} ({{ticker}}). Rating: {{get-research.rating}}. Target: {{get-research.target_price}}. Report: {{upload-report.url}}."
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/intelligence/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: notes
path: "/notes/{{research_id}}"
inputParameters:
- name: research_id
in: path
operations:
- name: get-intelligence-note
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
naftiko: "0.5"
info:
label: "Executive Dashboard Refresh Orchestrator"
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
tags:
- analytics
- power-bi
- business
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-executive-dashboard-refresh-orchestrator
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves the current holdings of a managed portfolio from FactSet, returning positions, weights, and asset class breakdown for portfolio managers.
naftiko: "0.5"
info:
label: "FactSet Portfolio Holdings"
description: "Retrieves the current holdings of a managed portfolio from FactSet, returning positions, weights, and asset class breakdown for portfolio managers."
tags:
- wealth-management
- portfolio
- factset
capability:
exposes:
- type: mcp
namespace: portfolio-data
port: 8080
tools:
- name: get-portfolio-holdings
description: "Fetch current holdings for a portfolio by FactSet portfolio ID."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "The FactSet portfolio identifier."
call: "factset.get-holdings"
with:
portfolio_id: "{{portfolio_id}}"
outputParameters:
- name: holdings
type: array
mapping: "$.data.holdings"
- name: total_market_value
type: number
mapping: "$.data.totalMarketValue"
- name: currency
type: string
mapping: "$.data.currency"
consumes:
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: portfolios
path: "/portfolios/{{portfolio_id}}/holdings"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
Orchestrates finance workflow 1 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 1"
description: "Orchestrates finance workflow 1 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-001
description: "Orchestrates finance workflow 1 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 1 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates finance workflow 2 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 2"
description: "Orchestrates finance workflow 2 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-002
description: "Orchestrates finance workflow 2 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 2 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves finance operational data for workflow 3.
naftiko: "0.5"
info:
label: "Finance Data Query 3"
description: "Retrieves finance operational data for workflow 3."
tags:
- finance
- operations
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-data-3
description: "Query finance data for workflow 3."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "finance-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: finance-api
baseUri: "https://api.ubs.com/finance/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-3
method: GET
Orchestrates finance workflow 4 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 4"
description: "Orchestrates finance workflow 4 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-004
description: "Orchestrates finance workflow 4 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 4 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates finance workflow 5 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 5"
description: "Orchestrates finance workflow 5 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-005
description: "Orchestrates finance workflow 5 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 5 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves finance operational data for workflow 6.
naftiko: "0.5"
info:
label: "Finance Data Query 6"
description: "Retrieves finance operational data for workflow 6."
tags:
- finance
- operations
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-data-6
description: "Query finance data for workflow 6."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "finance-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: finance-api
baseUri: "https://api.ubs.com/finance/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-6
method: GET
Orchestrates finance workflow 7 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 7"
description: "Orchestrates finance workflow 7 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-007
description: "Orchestrates finance workflow 7 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 7 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates finance workflow 8 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 8"
description: "Orchestrates finance workflow 8 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-008
description: "Orchestrates finance workflow 8 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 8 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves finance operational data for workflow 9.
naftiko: "0.5"
info:
label: "Finance Data Query 9"
description: "Retrieves finance operational data for workflow 9."
tags:
- finance
- operations
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-data-9
description: "Query finance data for workflow 9."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "finance-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: finance-api
baseUri: "https://api.ubs.com/finance/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-9
method: GET
Orchestrates finance workflow 10 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 10"
description: "Orchestrates finance workflow 10 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-010
description: "Orchestrates finance workflow 10 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 10 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates finance workflow 11 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 11"
description: "Orchestrates finance workflow 11 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-011
description: "Orchestrates finance workflow 11 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 11 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves finance operational data for workflow 12.
naftiko: "0.5"
info:
label: "Finance Data Query 12"
description: "Retrieves finance operational data for workflow 12."
tags:
- finance
- operations
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-data-12
description: "Query finance data for workflow 12."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "finance-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: finance-api
baseUri: "https://api.ubs.com/finance/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-12
method: GET
Orchestrates finance workflow 13 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 13"
description: "Orchestrates finance workflow 13 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-013
description: "Orchestrates finance workflow 13 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 13 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates finance workflow 14 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Finance Workflow 14"
description: "Orchestrates finance workflow 14 by coordinating across systems, validating data, and sending notifications."
tags:
- finance
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: run-finance-workflow-014
description: "Orchestrates finance workflow 14 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Finance Workflow 14 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves finance operational data for workflow 15.
naftiko: "0.5"
info:
label: "Finance Data Query 15"
description: "Retrieves finance operational data for workflow 15."
tags:
- finance
- operations
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-data-15
description: "Query finance data for workflow 15."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "finance-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: finance-api
baseUri: "https://api.ubs.com/finance/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-15
method: GET
Computes regulatory capital ratios by extracting risk-weighted assets from SAP, market risk figures from Bloomberg, and operational risk data from ServiceNow, then publishes results to SharePoint and notifies the CFO office.
naftiko: "0.5"
info:
label: "FINMA Regulatory Capital Calculation"
description: "Computes regulatory capital ratios by extracting risk-weighted assets from SAP, market risk figures from Bloomberg, and operational risk data from ServiceNow, then publishes results to SharePoint and notifies the CFO office."
tags:
- compliance
- regulatory-capital
- finma
- sap
- bloomberg-enterprise-data
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-capital
port: 8080
tools:
- name: calculate-capital-ratios
description: "Compute CET1, Tier 1, and total capital ratios from risk data across SAP, Bloomberg, and ServiceNow."
inputParameters:
- name: company_code
in: body
type: string
description: "The SAP company code."
- name: reporting_date
in: body
type: string
description: "The reporting date (YYYY-MM-DD)."
- name: cfo_email
in: body
type: string
description: "The CFO office email for notification."
steps:
- name: get-rwa
type: call
call: "sap.get-rwa"
with:
company_code: "{{company_code}}"
date: "{{reporting_date}}"
- name: get-market-risk
type: call
call: "bloomberg.get-var"
with:
entity: "UBS"
date: "{{reporting_date}}"
- name: get-op-risk
type: call
call: "servicenow.get-risk-events"
with:
company_code: "{{company_code}}"
period: "{{reporting_date}}"
- name: publish-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "regulatory_capital"
file_path: "Reports/{{company_code}}_{{reporting_date}}_capital.json"
content: "{\"rwa\": \"{{get-rwa.total_rwa}}\", \"market_var\": \"{{get-market-risk.var_99}}\", \"op_risk_events\": \"{{get-op-risk.event_count}}\", \"date\": \"{{reporting_date}}\"}"
- name: notify-cfo
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{cfo_email}}"
text: "Regulatory capital report ready: {{company_code}} as of {{reporting_date}}. RWA: {{get-rwa.total_rwa}}. Market VaR: {{get-market-risk.var_99}}. Report: {{publish-report.url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://ubs-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
inputParameters:
- name: Accept
in: header
value: "application/json"
resources:
- name: rwa
path: "/RiskWeightedAssets?$filter=CompanyCode eq '{{company_code}}' and ReportingDate eq '{{date}}'"
inputParameters:
- name: company_code
in: query
- name: date
in: query
operations:
- name: get-rwa
method: GET
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: risk
path: "/risk/var?entity={{entity}}&date={{date}}"
inputParameters:
- name: entity
in: query
- name: date
in: query
operations:
- name: get-var
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: risk-events
path: "/table/risk_event?sysparm_query=company_code={{company_code}}^period={{period}}"
inputParameters:
- name: company_code
in: query
- name: period
in: query
operations:
- name: get-risk-events
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: 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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Monitors bond trade settlement by checking Bloomberg AIM order status, verifying Tradeweb execution details, and notifying the operations team via Microsoft Teams when settlement is confirmed or fails.
naftiko: "0.5"
info:
label: "Fixed Income Trade Settlement Tracker"
description: "Monitors bond trade settlement by checking Bloomberg AIM order status, verifying Tradeweb execution details, and notifying the operations team via Microsoft Teams when settlement is confirmed or fails."
tags:
- trading
- settlement
- fixed-income
- bloomberg-aim
- tradeweb
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: settlement-ops
port: 8080
tools:
- name: track-bond-settlement
description: "Track settlement status for a fixed income trade across Bloomberg AIM and Tradeweb, notifying ops on completion."
inputParameters:
- name: order_id
in: body
type: string
description: "The Bloomberg AIM order identifier."
- name: isin
in: body
type: string
description: "The bond ISIN."
- name: ops_team_email
in: body
type: string
description: "Email of the operations team member to notify."
steps:
- name: get-aim-status
type: call
call: "aim.get-order"
with:
order_id: "{{order_id}}"
- name: get-tradeweb-execution
type: call
call: "tradeweb.get-execution"
with:
isin: "{{isin}}"
order_ref: "{{order_id}}"
- name: notify-ops
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{ops_team_email}}"
text: "Settlement update for {{isin}}: AIM status={{get-aim-status.status}}, settled={{get-aim-status.settlement_date}}. Tradeweb confirm: {{get-tradeweb-execution.confirmation_id}}."
consumes:
- type: http
namespace: aim
baseUri: "https://api.bloomberg.com/eap/aim/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: orders
path: "/orders/{{order_id}}"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: tradeweb
baseUri: "https://api.tradeweb.com/v2"
authentication:
type: bearer
token: "$secrets.tradeweb_token"
resources:
- name: executions
path: "/executions?isin={{isin}}&orderRef={{order_ref}}"
inputParameters:
- name: isin
in: query
- name: order_ref
in: query
operations:
- name: get-execution
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves performance data for an investment fund.
naftiko: "0.5"
info:
label: "Fund Performance Report"
description: "Retrieves performance data for an investment fund."
tags:
- investments
- analytics
capability:
exposes:
- type: mcp
namespace: investments
port: 8080
tools:
- name: get-fund
description: "Retrieves performance data for an investment fund."
inputParameters:
- name: entity_id
in: body
type: string
description: "The fund performance report identifier."
call: "investments-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: investments-api
baseUri: "https://api.ubs.com/investments/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: fund
path: "/fund/performance/report/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-fund
method: GET
Executes a foreign exchange spot trade by fetching live FX rates from Bloomberg, submitting the order through Bloomberg AIM, updating the client record in Salesforce, and confirming via Microsoft Teams.
naftiko: "0.5"
info:
label: "FX Spot Trade Execution"
description: "Executes a foreign exchange spot trade by fetching live FX rates from Bloomberg, submitting the order through Bloomberg AIM, updating the client record in Salesforce, and confirming via Microsoft Teams."
tags:
- trading
- fx
- bloomberg-enterprise-data
- bloomberg-aim
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fx-trading
port: 8080
tools:
- name: execute-fx-spot
description: "Execute a spot FX trade with live rates, order submission, and client notification."
inputParameters:
- name: currency_pair
in: body
type: string
description: "The currency pair (e.g. EURCHF, USDCHF)."
- name: amount
in: body
type: number
description: "The notional amount in base currency."
- name: side
in: body
type: string
description: "BUY or SELL."
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: trader_email
in: body
type: string
description: "The trader email for confirmation."
steps:
- name: get-fx-rate
type: call
call: "bloomberg.get-fx-rate"
with:
currency_pair: "{{currency_pair}}"
- name: submit-order
type: call
call: "aim.create-fx-order"
with:
currency_pair: "{{currency_pair}}"
amount: "{{amount}}"
side: "{{side}}"
rate: "{{get-fx-rate.rate}}"
- name: update-client
type: call
call: "salesforce.create-activity"
with:
client_id: "{{client_id}}"
subject: "FX {{side}} {{amount}} {{currency_pair}} at {{get-fx-rate.rate}}"
- name: confirm-trader
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{trader_email}}"
text: "FX trade confirmed: {{side}} {{amount}} {{currency_pair}} at {{get-fx-rate.rate}}. Order: {{submit-order.order_id}}. Settlement: {{submit-order.settlement_date}}."
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: fx-rates
path: "/fx/{{currency_pair}}"
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-fx-rate
method: GET
- type: http
namespace: aim
baseUri: "https://api.bloomberg.com/eap/aim/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: fx-orders
path: "/fx/orders"
operations:
- name: create-fx-order
method: POST
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: activities
path: "/sobjects/Task"
operations:
- name: create-activity
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves a file from Google Drive.
naftiko: "0.5"
info:
label: "Google Drive File Viewer"
description: "Retrieves a file from Google Drive."
tags:
- collaboration
- google-drive
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-google
description: "Retrieves a file from Google Drive."
inputParameters:
- name: entity_id
in: body
type: string
description: "The google drive file viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.ubs.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: google
path: "/google/drive/file/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-google
method: GET
When a critical ServiceNow incident is created, enriches it with Datadog infrastructure metrics and New Relic application performance data, then alerts the on-call engineering team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Incident Escalation with Monitoring Enrichment"
description: "When a critical ServiceNow incident is created, enriches it with Datadog infrastructure metrics and New Relic application performance data, then alerts the on-call engineering team via Microsoft Teams."
tags:
- operations
- incident-management
- servicenow
- datadog
- new-relic
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-enrichment
port: 8080
tools:
- name: enrich-and-escalate
description: "Enrich a ServiceNow incident with monitoring data from Datadog and New Relic, then escalate via Teams."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number."
- name: hostname
in: body
type: string
description: "The affected infrastructure hostname."
- name: app_id
in: body
type: string
description: "The New Relic application ID."
- name: oncall_email
in: body
type: string
description: "The on-call engineer email."
steps:
- name: get-incident
type: call
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
- name: get-infra-health
type: call
call: "datadog.get-host"
with:
hostname: "{{hostname}}"
- name: get-app-metrics
type: call
call: "newrelic.get-app"
with:
app_id: "{{app_id}}"
- name: alert-oncall
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{oncall_email}}"
text: "CRITICAL: {{get-incident.short_description}}. Host {{hostname}}: CPU={{get-infra-health.cpu_pct}}%, alerts={{get-infra-health.alerts}}. App error rate: {{get-app-metrics.error_rate}}%. Incident: {{incident_number}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
name: "DD-API-KEY"
in: header
value: "$secrets.datadog_api_key"
resources:
- name: hosts
path: "/hosts?filter={{hostname}}"
inputParameters:
- name: hostname
in: query
operations:
- name: get-host
method: GET
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: apiKey
name: "Api-Key"
in: header
value: "$secrets.newrelic_api_key"
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-app
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Triggers an Informatica data quality job for client master data, validates results against the SAP source system, and logs quality metrics in ServiceNow for the data governance team.
naftiko: "0.5"
info:
label: "Informatica Data Quality Pipeline Trigger"
description: "Triggers an Informatica data quality job for client master data, validates results against the SAP source system, and logs quality metrics in ServiceNow for the data governance team."
tags:
- data-governance
- data-quality
- informatica
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-data-quality-check
description: "Trigger an Informatica DQ job, validate against SAP, and log results for data governance."
inputParameters:
- name: job_name
in: body
type: string
description: "The Informatica data quality job name."
- name: source_entity
in: body
type: string
description: "The SAP source entity to validate (e.g. BP_MASTER)."
- name: company_code
in: body
type: string
description: "The SAP company code."
steps:
- name: trigger-dq-job
type: call
call: "informatica.run-job"
with:
job_name: "{{job_name}}"
- name: get-sap-count
type: call
call: "sap.get-entity-count"
with:
entity: "{{source_entity}}"
company_code: "{{company_code}}"
- name: log-results
type: call
call: "servicenow.create-task"
with:
short_description: "DQ results: {{job_name}} — {{source_entity}}"
description: "Job: {{job_name}}. Status: {{trigger-dq-job.status}}. Records processed: {{trigger-dq-job.records_processed}}. SAP source count: {{get-sap-count.count}}. Company: {{company_code}}."
assigned_group: "Data_Governance"
category: "data_quality"
consumes:
- type: http
namespace: informatica
baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
authentication:
type: bearer
token: "$secrets.informatica_token"
resources:
- name: jobs
path: "/job"
operations:
- name: run-job
method: POST
- type: http
namespace: sap
baseUri: "https://ubs-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
inputParameters:
- name: Accept
in: header
value: "application/json"
resources:
- name: entity-count
path: "/{{entity}}/$count?$filter=CompanyCode eq '{{company_code}}'"
inputParameters:
- name: entity
in: path
- name: company_code
in: query
operations:
- name: get-entity-count
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
naftiko: "0.5"
info:
label: "Infrastructure Capacity Planning Orchestrator"
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
tags:
- infrastructure
- planning
- finance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-infrastructure-capacity-planning-orchestrator
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Logs an investment committee decision by recording the vote in Salesforce, uploading meeting minutes to SharePoint, updating the Bloomberg AIM model portfolio, and notifying all committee members via Microsoft Teams.
naftiko: "0.5"
info:
label: "Investment Committee Decision Logger"
description: "Logs an investment committee decision by recording the vote in Salesforce, uploading meeting minutes to SharePoint, updating the Bloomberg AIM model portfolio, and notifying all committee members via Microsoft Teams."
tags:
- investment-management
- governance
- salesforce
- sharepoint
- bloomberg-aim
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: investment-committee
port: 8080
tools:
- name: log-committee-decision
description: "Record an investment committee decision across CRM, documents, and portfolio systems."
inputParameters:
- name: decision_id
in: body
type: string
description: "The unique decision identifier."
- name: decision_type
in: body
type: string
description: "Decision type (allocation_change, new_position, exit_position, model_update)."
- name: model_id
in: body
type: string
description: "The Bloomberg AIM model portfolio ID."
- name: committee_channel
in: body
type: string
description: "The Microsoft Teams channel ID for the committee."
steps:
- name: record-decision
type: call
call: "salesforce.create-activity"
with:
subject: "IC Decision: {{decision_id}} — {{decision_type}}"
description: "Investment committee decision logged. Type: {{decision_type}}. Model: {{model_id}}."
- name: upload-minutes
type: call
call: "sharepoint.upload-file"
with:
site_id: "investment_committee"
file_path: "Minutes/{{decision_id}}_minutes.json"
content: "{\"decision_id\": \"{{decision_id}}\", \"type\": \"{{decision_type}}\", \"model\": \"{{model_id}}\"}"
- name: update-model
type: call
call: "aim.update-model"
with:
model_id: "{{model_id}}"
decision_ref: "{{decision_id}}"
- name: notify-committee
type: call
call: "msteams.send-channel-message"
with:
channel_id: "{{committee_channel}}"
text: "IC Decision {{decision_id}} recorded: {{decision_type}}. Model {{model_id}} updated. Minutes: {{upload-minutes.url}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: activities
path: "/sobjects/Task"
operations:
- name: create-activity
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: aim
baseUri: "https://api.bloomberg.com/eap/aim/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: models
path: "/models/{{model_id}}"
inputParameters:
- name: model_id
in: path
operations:
- name: update-model
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
naftiko: "0.5"
info:
label: "IT Change Management Orchestrator"
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
tags:
- it
- servicenow
- operations
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: run-it-change-management-orchestrator
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed IT Change Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a Jira ticket by issue key.
naftiko: "0.5"
info:
label: "Jira Ticket Viewer"
description: "Retrieves a Jira ticket by issue key."
tags:
- engineering
- jira
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-jira
description: "Retrieves a Jira ticket by issue key."
inputParameters:
- name: entity_id
in: body
type: string
description: "The jira ticket viewer identifier."
call: "engineering-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: engineering-api
baseUri: "https://api.ubs.com/engineering/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: jira
path: "/jira/ticket/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-jira
method: GET
Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
naftiko: "0.5"
info:
label: "Knowledge Base Refresh Orchestrator"
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
tags:
- knowledge-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: knowledge-management
port: 8080
tools:
- name: run-knowledge-base-refresh-orchestrator
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
On KYC review initiation, retrieves client data from Salesforce, requests document uploads via SharePoint, creates a compliance review task in ServiceNow, and notifies the compliance officer in Microsoft Teams.
naftiko: "0.5"
info:
label: "KYC Document Collection Pipeline"
description: "On KYC review initiation, retrieves client data from Salesforce, requests document uploads via SharePoint, creates a compliance review task in ServiceNow, and notifies the compliance officer in Microsoft Teams."
tags:
- compliance
- kyc
- salesforce
- sharepoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-kyc
port: 8080
tools:
- name: initiate-kyc-review
description: "Start a KYC document collection process for a client, provisioning document storage and compliance review tasks."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: review_type
in: body
type: string
description: "KYC review type (initial, periodic, event-driven)."
- name: compliance_officer_email
in: body
type: string
description: "Email of the assigned compliance officer."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: create-doc-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "kyc_documents"
folder_path: "KYC/{{get-client.Name}}_{{client_id}}/{{review_type}}"
- name: open-review
type: call
call: "servicenow.create-task"
with:
short_description: "KYC {{review_type}} review: {{get-client.Name}}"
description: "Client: {{get-client.Name}}. Segment: {{get-client.Client_Segment__c}}. Document folder: {{create-doc-folder.url}}. Review type: {{review_type}}."
assigned_group: "Compliance_KYC"
category: "kyc_review"
- name: notify-officer
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{compliance_officer_email}}"
text: "KYC review initiated for {{get-client.Name}} ({{review_type}}). Task: {{open-review.number}}. Upload docs: {{create-doc-folder.url}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a high-net-worth prospect engages on LinkedIn, creates a Salesforce lead, enriches with ZoomInfo data, and notifies the assigned private banker via Microsoft Teams.
naftiko: "0.5"
info:
label: "LinkedIn Advisor Lead Capture"
description: "When a high-net-worth prospect engages on LinkedIn, creates a Salesforce lead, enriches with ZoomInfo data, and notifies the assigned private banker via Microsoft Teams."
tags:
- sales
- lead-capture
- linkedin
- salesforce
- zoominfo
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lead-capture
port: 8080
tools:
- name: capture-linkedin-lead
description: "Create and enrich a lead from LinkedIn engagement for private banking outreach."
inputParameters:
- name: linkedin_profile_url
in: body
type: string
description: "The LinkedIn profile URL of the prospect."
- name: engagement_type
in: body
type: string
description: "The engagement type (comment, share, message)."
- name: banker_email
in: body
type: string
description: "The assigned private banker email."
steps:
- name: enrich-contact
type: call
call: "zoominfo.enrich-person"
with:
linkedin_url: "{{linkedin_profile_url}}"
- name: create-lead
type: call
call: "salesforce.create-lead"
with:
first_name: "{{enrich-contact.first_name}}"
last_name: "{{enrich-contact.last_name}}"
company: "{{enrich-contact.company}}"
title: "{{enrich-contact.title}}"
email: "{{enrich-contact.email}}"
lead_source: "LinkedIn_{{engagement_type}}"
- name: notify-banker
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{banker_email}}"
text: "New HNW lead: {{enrich-contact.first_name}} {{enrich-contact.last_name}} ({{enrich-contact.title}} at {{enrich-contact.company}}). Source: LinkedIn {{engagement_type}}. Lead ID: {{create-lead.id}}. Net worth estimate: {{enrich-contact.estimated_net_worth}}."
consumes:
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com/search"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: person-enrich
path: "/enrich/person"
operations:
- name: enrich-person
method: POST
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead"
operations:
- name: create-lead
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Processes a margin call by fetching portfolio valuations from FactSet, calculating exposure in Bloomberg, creating a Salesforce case for the client, and alerting the credit risk team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Margin Call Processing"
description: "Processes a margin call by fetching portfolio valuations from FactSet, calculating exposure in Bloomberg, creating a Salesforce case for the client, and alerting the credit risk team via Microsoft Teams."
tags:
- risk-management
- margin-call
- factset
- bloomberg-enterprise-data
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: margin-calls
port: 8080
tools:
- name: process-margin-call
description: "Calculate margin shortfall, create a client case, and alert the credit risk team."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "The FactSet portfolio identifier."
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: margin_requirement
in: body
type: number
description: "The current margin requirement amount."
- name: credit_risk_email
in: body
type: string
description: "The credit risk team email."
steps:
- name: get-portfolio-value
type: call
call: "factset.get-holdings"
with:
portfolio_id: "{{portfolio_id}}"
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: create-case
type: call
call: "salesforce.create-case"
with:
client_id: "{{client_id}}"
subject: "Margin call: portfolio {{portfolio_id}}"
description: "Portfolio value: {{get-portfolio-value.total_market_value}} {{get-portfolio-value.currency}}. Margin requirement: {{margin_requirement}}. Shortfall requires immediate attention."
- name: alert-credit-risk
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{credit_risk_email}}"
text: "MARGIN CALL: {{get-client.Name}} ({{client_id}}). Portfolio value: {{get-portfolio-value.total_market_value}} {{get-portfolio-value.currency}}. Required: {{margin_requirement}}. Case: {{create-case.case_number}}."
consumes:
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: portfolios
path: "/portfolios/{{portfolio_id}}/holdings"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- 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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
naftiko: "0.5"
info:
label: "Marketing Campaign Performance Orchestrator"
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
tags:
- marketing
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: run-marketing-campaign-performance-orchestrator
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Verifies a Mastercard transaction by reference ID, returning authorization status, merchant details, and amount for fraud review teams.
naftiko: "0.5"
info:
label: "Mastercard Transaction Verification"
description: "Verifies a Mastercard transaction by reference ID, returning authorization status, merchant details, and amount for fraud review teams."
tags:
- payments
- fraud-detection
- mastercard
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: verify-transaction
description: "Verify a Mastercard transaction by reference ID."
inputParameters:
- name: transaction_ref
in: body
type: string
description: "The Mastercard transaction reference ID."
call: "mastercard.get-transaction"
with:
transaction_ref: "{{transaction_ref}}"
outputParameters:
- name: auth_status
type: string
mapping: "$.transaction.authorizationStatus"
- name: amount
type: number
mapping: "$.transaction.amount"
- name: merchant_name
type: string
mapping: "$.transaction.merchant.name"
consumes:
- type: http
namespace: mastercard
baseUri: "https://api.mastercard.com/fraud/v2"
authentication:
type: oauth1
consumer_key: "$secrets.mastercard_consumer_key"
signing_key: "$secrets.mastercard_signing_key"
resources:
- name: transactions
path: "/transactions/{{transaction_ref}}"
inputParameters:
- name: transaction_ref
in: path
operations:
- name: get-transaction
method: GET
Sends a message to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Message Sender"
description: "Sends a message to a Microsoft Teams channel."
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-microsoft
description: "Sends a message to a Microsoft Teams channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The microsoft teams message sender identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.ubs.com/communications/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: microsoft
path: "/microsoft/teams/message/sender/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-microsoft
method: GET
Retrieves application performance metrics from New Relic for a given application ID, including response time, throughput, and error rate.
naftiko: "0.5"
info:
label: "New Relic Application Performance"
description: "Retrieves application performance metrics from New Relic for a given application ID, including response time, throughput, and error rate."
tags:
- operations
- performance
- new-relic
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-app-performance
description: "Fetch New Relic APM metrics for an application by ID."
inputParameters:
- name: app_id
in: body
type: string
description: "The New Relic application ID."
call: "newrelic.get-app"
with:
app_id: "{{app_id}}"
outputParameters:
- name: response_time
type: number
mapping: "$.application.application_summary.response_time"
- name: throughput
type: number
mapping: "$.application.application_summary.throughput"
- name: error_rate
type: number
mapping: "$.application.application_summary.error_rate"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: apiKey
name: "Api-Key"
in: header
value: "$secrets.newrelic_api_key"
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-app
method: GET
Retrieves a journal entry from Oracle Cloud Financials by entry ID, returning header and line details for reconciliation workflows.
naftiko: "0.5"
info:
label: "Oracle Cloud Financials Journal Entry"
description: "Retrieves a journal entry from Oracle Cloud Financials by entry ID, returning header and line details for reconciliation workflows."
tags:
- finance
- reconciliation
- oracle-cloud
capability:
exposes:
- type: mcp
namespace: finance-oracle
port: 8080
tools:
- name: get-journal-entry
description: "Fetch an Oracle Cloud Financials journal entry by ID."
inputParameters:
- name: journal_id
in: body
type: string
description: "The Oracle Cloud journal entry identifier."
call: "oracle.get-journal"
with:
journal_id: "{{journal_id}}"
outputParameters:
- name: status
type: string
mapping: "$.Status"
- name: total_debit
type: number
mapping: "$.TotalDebit"
- name: total_credit
type: number
mapping: "$.TotalCredit"
consumes:
- type: http
namespace: oracle
baseUri: "https://ubs-cloud.oraclecloud.com/fscmRestApi/resources/v2"
authentication:
type: basic
username: "$secrets.oracle_user"
password: "$secrets.oracle_password"
resources:
- name: journals
path: "/journals/{{journal_id}}"
inputParameters:
- name: journal_id
in: path
operations:
- name: get-journal
method: GET
Retrieves portfolio holdings for a client account.
naftiko: "0.5"
info:
label: "Portfolio Holdings Lookup"
description: "Retrieves portfolio holdings for a client account."
tags:
- wealth-management
- finance
capability:
exposes:
- type: mcp
namespace: wealth-management
port: 8080
tools:
- name: get-portfolio
description: "Retrieves portfolio holdings for a client account."
inputParameters:
- name: entity_id
in: body
type: string
description: "The portfolio holdings lookup identifier."
call: "wealth-management-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: wealth-management-api
baseUri: "https://api.ubs.com/wealth-management/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: portfolio
path: "/portfolio/holdings/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-portfolio
method: GET
Retrieves current portfolio holdings from FactSet, compares against target allocation, generates rebalancing trades via Bloomberg AIM, and notifies the portfolio manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Portfolio Rebalancing Workflow"
description: "Retrieves current portfolio holdings from FactSet, compares against target allocation, generates rebalancing trades via Bloomberg AIM, and notifies the portfolio manager via Microsoft Teams."
tags:
- wealth-management
- portfolio
- rebalancing
- factset
- bloomberg-aim
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: portfolio-rebalance
port: 8080
tools:
- name: rebalance-portfolio
description: "Given a portfolio ID and target allocation model, calculate drift, generate rebalancing orders, and notify the portfolio manager."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "The FactSet portfolio identifier."
- name: model_id
in: body
type: string
description: "The target allocation model identifier."
- name: pm_email
in: body
type: string
description: "The portfolio manager email for notification."
steps:
- name: get-holdings
type: call
call: "factset.get-holdings"
with:
portfolio_id: "{{portfolio_id}}"
- name: get-model
type: call
call: "factset.get-model"
with:
model_id: "{{model_id}}"
- name: generate-orders
type: call
call: "aim.create-basket"
with:
portfolio_id: "{{portfolio_id}}"
model_id: "{{model_id}}"
current_holdings: "{{get-holdings.holdings}}"
target_weights: "{{get-model.weights}}"
- name: notify-pm
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{pm_email}}"
text: "Rebalancing initiated for portfolio {{portfolio_id}}. {{generate-orders.order_count}} orders generated. Basket ID: {{generate-orders.basket_id}}. Review in Bloomberg AIM."
consumes:
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: portfolios
path: "/portfolios/{{portfolio_id}}/holdings"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- name: models
path: "/models/{{model_id}}"
inputParameters:
- name: model_id
in: path
operations:
- name: get-model
method: GET
- type: http
namespace: aim
baseUri: "https://api.bloomberg.com/eap/aim/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: baskets
path: "/baskets"
operations:
- name: create-basket
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Triggers a dataset refresh in Power BI for a specified workspace and dataset, used to ensure wealth reporting dashboards reflect the latest data.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresh"
description: "Triggers a dataset refresh in Power BI for a specified workspace and dataset, used to ensure wealth reporting dashboards reflect the latest data."
tags:
- reporting
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-dataset
description: "Trigger a Power BI dataset refresh by workspace and dataset ID."
inputParameters:
- name: workspace_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.refresh-dataset"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Triggers a Power BI dataset refresh.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresher"
description: "Triggers a Power BI dataset refresh."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-power
description: "Triggers a Power BI dataset refresh."
inputParameters:
- name: entity_id
in: body
type: string
description: "The power bi dashboard refresher identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.ubs.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: power
path: "/power/bi/dashboard/refresher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-power
method: GET
Generates an investment proposal for a private banking client by pulling client preferences from Salesforce, recommended allocations from FactSet, and market context from Bloomberg, then uploads the proposal to SharePoint and notifies the advisor.
naftiko: "0.5"
info:
label: "Private Banking Investment Proposal"
description: "Generates an investment proposal for a private banking client by pulling client preferences from Salesforce, recommended allocations from FactSet, and market context from Bloomberg, then uploads the proposal to SharePoint and notifies the advisor."
tags:
- private-banking
- investment-proposal
- salesforce
- factset
- bloomberg-enterprise-data
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: investment-proposals
port: 8080
tools:
- name: generate-proposal
description: "Create an investment proposal document from client preferences, model portfolios, and market data."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: risk_profile
in: body
type: string
description: "Client risk profile (conservative, balanced, growth, aggressive)."
- name: advisor_email
in: body
type: string
description: "The private banker email."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: get-model
type: call
call: "factset.get-model"
with:
model_id: "ubs_{{risk_profile}}"
- name: get-outlook
type: call
call: "bloomberg.get-research"
with:
topic: "ubs_cio_outlook"
- name: upload-proposal
type: call
call: "sharepoint.upload-file"
with:
site_id: "investment_proposals"
file_path: "Proposals/{{get-client.Name}}_{{risk_profile}}_proposal.json"
content: "{\"client\": \"{{get-client.Name}}\", \"risk_profile\": \"{{risk_profile}}\", \"model_weights\": {{get-model.weights}}, \"cio_outlook\": \"{{get-outlook.summary}}\"}"
- name: notify-advisor
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{advisor_email}}"
text: "Investment proposal ready for {{get-client.Name}} ({{risk_profile}} profile). Document: {{upload-proposal.url}}. Model: ubs_{{risk_profile}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: models
path: "/models/{{model_id}}"
inputParameters:
- name: model_id
in: path
operations:
- name: get-model
method: GET
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: research
path: "/research/{{topic}}"
inputParameters:
- name: topic
in: path
operations:
- name: get-research
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: 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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
naftiko: "0.5"
info:
label: "Procurement Spend Analysis Orchestrator"
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
tags:
- procurement
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-procurement-spend-analysis-orchestrator
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
naftiko: "0.5"
info:
label: "Quarterly Business Review Orchestrator"
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
tags:
- analytics
- business
- sharepoint
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-quarterly-business-review-orchestrator
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Generates a quarterly performance report by pulling portfolio returns from FactSet, benchmark data from Bloomberg, client context from Salesforce, and uploads the final report to SharePoint for advisor distribution.
naftiko: "0.5"
info:
label: "Quarterly Client Performance Report"
description: "Generates a quarterly performance report by pulling portfolio returns from FactSet, benchmark data from Bloomberg, client context from Salesforce, and uploads the final report to SharePoint for advisor distribution."
tags:
- wealth-management
- reporting
- quarterly-review
- factset
- bloomberg-enterprise-data
- salesforce
- sharepoint
capability:
exposes:
- type: mcp
namespace: quarterly-reports
port: 8080
tools:
- name: generate-quarterly-report
description: "Compile portfolio performance, benchmark comparison, and client context into a quarterly report."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: portfolio_id
in: body
type: string
description: "The FactSet portfolio identifier."
- name: benchmark_ticker
in: body
type: string
description: "The Bloomberg benchmark ticker (e.g. SPX Index)."
- name: quarter
in: body
type: string
description: "The reporting quarter (e.g. 2026-Q1)."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: get-portfolio-perf
type: call
call: "factset.get-performance"
with:
portfolio_id: "{{portfolio_id}}"
period: "{{quarter}}"
- name: get-benchmark
type: call
call: "bloomberg.get-quote"
with:
ticker: "{{benchmark_ticker}}"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "client_reports"
file_path: "Quarterly/{{quarter}}/{{get-client.Name}}_{{portfolio_id}}.json"
content: "{\"client\": \"{{get-client.Name}}\", \"quarter\": \"{{quarter}}\", \"portfolio_return\": \"{{get-portfolio-perf.total_return}}\", \"benchmark_return\": \"{{get-benchmark.change_pct}}\", \"alpha\": \"{{get-portfolio-perf.alpha}}\"}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: performance
path: "/portfolios/{{portfolio_id}}/performance?period={{period}}"
inputParameters:
- name: portfolio_id
in: path
- name: period
in: query
operations:
- name: get-performance
method: GET
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: quotes
path: "/quotes/{{ticker}}"
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
Extracts financial data from SAP, enriches with Bloomberg reference data, validates against Oracle Cloud Financials, and logs the submission in ServiceNow for regulatory audit trail.
naftiko: "0.5"
info:
label: "Regulatory Reporting Data Pipeline"
description: "Extracts financial data from SAP, enriches with Bloomberg reference data, validates against Oracle Cloud Financials, and logs the submission in ServiceNow for regulatory audit trail."
tags:
- compliance
- regulatory-reporting
- sap
- bloomberg-enterprise-data
- oracle-cloud
- servicenow
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: prepare-regulatory-submission
description: "Extract, validate, and log a regulatory data submission across SAP, Bloomberg, Oracle, and ServiceNow."
inputParameters:
- name: report_type
in: body
type: string
description: "Regulatory report type (e.g. FINMA, MiFID, Basel)."
- name: company_code
in: body
type: string
description: "The SAP company code."
- name: reporting_period
in: body
type: string
description: "The reporting period (e.g. 2026-Q1)."
steps:
- name: get-gl-data
type: call
call: "sap.get-gl-extract"
with:
company_code: "{{company_code}}"
period: "{{reporting_period}}"
- name: get-reference-data
type: call
call: "bloomberg.get-reference-data"
with:
dataset: "regulatory_reference"
period: "{{reporting_period}}"
- name: validate-oracle
type: call
call: "oracle.get-trial-balance"
with:
company_code: "{{company_code}}"
period: "{{reporting_period}}"
- name: log-submission
type: call
call: "servicenow.create-task"
with:
short_description: "{{report_type}} submission: {{company_code}} {{reporting_period}}"
description: "GL records: {{get-gl-data.record_count}}. Oracle validation: {{validate-oracle.status}}. Reference data enriched."
assigned_group: "Regulatory_Reporting"
category: "regulatory_submission"
consumes:
- type: http
namespace: sap
baseUri: "https://ubs-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
inputParameters:
- name: Accept
in: header
value: "application/json"
- name: sap-client
in: header
value: "100"
resources:
- name: gl-extract
path: "/A_GLAccountLineItem?$filter=CompanyCode eq '{{company_code}}' and FiscalPeriod eq '{{period}}'"
inputParameters:
- name: company_code
in: query
- name: period
in: query
operations:
- name: get-gl-extract
method: GET
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: reference
path: "/{{dataset}}?period={{period}}"
inputParameters:
- name: dataset
in: path
- name: period
in: query
operations:
- name: get-reference-data
method: GET
- type: http
namespace: oracle
baseUri: "https://ubs-cloud.oraclecloud.com/fscmRestApi/resources/v2"
authentication:
type: basic
username: "$secrets.oracle_user"
password: "$secrets.oracle_password"
resources:
- name: trial-balance
path: "/trialBalances?companyCode={{company_code}}&period={{period}}"
inputParameters:
- name: company_code
in: query
- name: period
in: query
operations:
- name: get-trial-balance
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Pulls portfolio holdings from FactSet, enriches with Bloomberg market data, calculates sector exposure, refreshes the Power BI risk dashboard, and alerts the risk manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Risk Exposure Report Generator"
description: "Pulls portfolio holdings from FactSet, enriches with Bloomberg market data, calculates sector exposure, refreshes the Power BI risk dashboard, and alerts the risk manager via Microsoft Teams."
tags:
- risk-management
- reporting
- factset
- bloomberg-enterprise-data
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk-reporting
port: 8080
tools:
- name: generate-risk-report
description: "Generate an exposure report for a portfolio, refresh the risk dashboard, and alert the risk manager."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "The FactSet portfolio identifier."
- name: workspace_id
in: body
type: string
description: "The Power BI workspace ID for the risk dashboard."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID for the risk dashboard."
- name: risk_manager_email
in: body
type: string
description: "Email of the risk manager to notify."
steps:
- name: get-holdings
type: call
call: "factset.get-holdings"
with:
portfolio_id: "{{portfolio_id}}"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-risk-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{risk_manager_email}}"
text: "Risk exposure report updated for portfolio {{portfolio_id}}. Total positions: {{get-holdings.holdings.length}}. Market value: {{get-holdings.total_market_value}} {{get-holdings.currency}}. Dashboard refreshed."
consumes:
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: portfolios
path: "/portfolios/{{portfolio_id}}/holdings"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- 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: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves a Salesforce account by account ID.
naftiko: "0.5"
info:
label: "Salesforce Account Viewer"
description: "Retrieves a Salesforce account by account ID."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-salesforce
description: "Retrieves a Salesforce account by account ID."
inputParameters:
- name: entity_id
in: body
type: string
description: "The salesforce account viewer identifier."
call: "sales-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: sales-api
baseUri: "https://api.ubs.com/sales/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: salesforce
path: "/salesforce/account/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-salesforce
method: GET
Looks up a wealth management client record in Salesforce by client ID, returning relationship manager assignment, AUM tier, and contact details.
naftiko: "0.5"
info:
label: "Salesforce Client Relationship Lookup"
description: "Looks up a wealth management client record in Salesforce by client ID, returning relationship manager assignment, AUM tier, and contact details."
tags:
- client-management
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: client-crm
port: 8080
tools:
- name: get-client-record
description: "Retrieve a Salesforce client record by UBS client ID."
inputParameters:
- name: client_id
in: body
type: string
description: "The UBS client identifier stored in Salesforce."
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
outputParameters:
- name: client_name
type: string
mapping: "$.Name"
- name: relationship_manager
type: string
mapping: "$.Owner.Name"
- name: aum_tier
type: string
mapping: "$.AUM_Tier__c"
- name: segment
type: string
mapping: "$.Client_Segment__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
Screens a client or counterparty against global sanctions lists by pulling entity data from Salesforce, running screening via the compliance system, and escalating matches through ServiceNow and Microsoft Teams.
naftiko: "0.5"
info:
label: "Sanctions Screening Pipeline"
description: "Screens a client or counterparty against global sanctions lists by pulling entity data from Salesforce, running screening via the compliance system, and escalating matches through ServiceNow and Microsoft Teams."
tags:
- compliance
- sanctions
- screening
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sanctions-screening
port: 8080
tools:
- name: screen-entity
description: "Screen a client or counterparty against sanctions lists and escalate any matches."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce account ID."
- name: screening_type
in: body
type: string
description: "Screening type (onboarding, periodic, transaction)."
- name: compliance_email
in: body
type: string
description: "The compliance officer email."
steps:
- name: get-entity
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: create-screening-task
type: call
call: "servicenow.create-task"
with:
short_description: "Sanctions screening: {{get-entity.Name}} ({{screening_type}})"
description: "Entity: {{get-entity.Name}}. Type: {{screening_type}}. Country: {{get-entity.BillingCountry}}. Segment: {{get-entity.Client_Segment__c}}."
assigned_group: "Financial_Crime_Unit"
category: "sanctions_screening"
- name: alert-compliance
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{compliance_email}}"
text: "Sanctions screening initiated: {{get-entity.Name}} ({{screening_type}}). Task: {{create-screening-task.number}}. Country: {{get-entity.BillingCountry}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the current general ledger account balance from SAP S/4HANA for a given company code and GL account, used by finance and treasury teams.
naftiko: "0.5"
info:
label: "SAP General Ledger Balance"
description: "Retrieves the current general ledger account balance from SAP S/4HANA for a given company code and GL account, used by finance and treasury teams."
tags:
- finance
- accounting
- sap
capability:
exposes:
- type: mcp
namespace: finance-gl
port: 8080
tools:
- name: get-gl-balance
description: "Fetch the GL account balance from SAP by company code and account number."
inputParameters:
- name: company_code
in: body
type: string
description: "The SAP company code (e.g. UB01)."
- name: gl_account
in: body
type: string
description: "The general ledger account number."
call: "sap.get-gl-balance"
with:
company_code: "{{company_code}}"
gl_account: "{{gl_account}}"
outputParameters:
- name: balance
type: number
mapping: "$.d.EndingBalanceAmtInCoCodeCrcy"
- name: currency
type: string
mapping: "$.d.CompanyCodeCurrency"
consumes:
- type: http
namespace: sap
baseUri: "https://ubs-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
inputParameters:
- name: Accept
in: header
value: "application/json"
- name: sap-client
in: header
value: "100"
resources:
- name: gl-accounts
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
Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
naftiko: "0.5"
info:
label: "Security Audit Orchestrator"
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
tags:
- security
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: run-security-audit-orchestrator
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Security Audit Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Creates a new incident in ServiceNow.
naftiko: "0.5"
info:
label: "ServiceNow Incident Creator"
description: "Creates a new incident in ServiceNow."
tags:
- it
- servicenow
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: get-servicenow
description: "Creates a new incident in ServiceNow."
inputParameters:
- name: entity_id
in: body
type: string
description: "The servicenow incident creator identifier."
call: "it-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: it-api
baseUri: "https://api.ubs.com/it/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: servicenow
path: "/servicenow/incident/creator/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-servicenow
method: GET
Retrieves the current status and assignment details of a ServiceNow incident for UBS IT operations teams.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status"
description: "Retrieves the current status and assignment details of a ServiceNow incident for UBS IT operations teams."
tags:
- operations
- incident-management
- servicenow
capability:
exposes:
- type: mcp
namespace: it-operations
port: 8080
tools:
- name: get-incident-status
description: "Look up a ServiceNow incident by number and return its status, priority, and assigned group."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g. INC0012345)."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assigned_to
type: string
mapping: "$.result.assigned_to.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
Sends a notification to a Slack channel.
naftiko: "0.5"
info:
label: "Slack Notification Publisher"
description: "Sends a notification to a Slack channel."
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-slack
description: "Sends a notification to a Slack channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The slack notification publisher identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.ubs.com/communications/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: slack
path: "/slack/notification/publisher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-slack
method: GET
Runs an analytics query against the Snowflake data warehouse.
naftiko: "0.5"
info:
label: "Snowflake Analytics Query"
description: "Runs an analytics query against the Snowflake data warehouse."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-snowflake
description: "Runs an analytics query against the Snowflake data warehouse."
inputParameters:
- name: entity_id
in: body
type: string
description: "The snowflake analytics query identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.ubs.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: snowflake
path: "/snowflake/analytics/query/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-snowflake
method: GET
Triggers a SonarQube security scan on a trading platform codebase, creates Azure DevOps work items for critical findings, and notifies the engineering lead via Microsoft Teams.
naftiko: "0.5"
info:
label: "SonarQube Security Scan with JIRA Tracking"
description: "Triggers a SonarQube security scan on a trading platform codebase, creates Azure DevOps work items for critical findings, and notifies the engineering lead via Microsoft Teams."
tags:
- security
- code-quality
- sonarqube
- azure-devops
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-scanning
port: 8080
tools:
- name: scan-and-track
description: "Run a SonarQube scan, create work items for critical findings, and notify the engineering lead."
inputParameters:
- name: project_key
in: body
type: string
description: "The SonarQube project key."
- name: azdo_project
in: body
type: string
description: "The Azure DevOps project name."
- name: lead_email
in: body
type: string
description: "The engineering lead email."
steps:
- name: get-scan-results
type: call
call: "sonarqube.get-issues"
with:
project_key: "{{project_key}}"
severity: "CRITICAL"
- name: create-work-item
type: call
call: "azdevops.create-work-item"
with:
project: "{{azdo_project}}"
title: "SonarQube critical: {{get-scan-results.issue_count}} findings in {{project_key}}"
description: "{{get-scan-results.issue_count}} critical security findings. Top issue: {{get-scan-results.top_issue}}. Run full scan review."
- name: notify-lead
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{lead_email}}"
text: "Security scan alert: {{get-scan-results.issue_count}} critical findings in {{project_key}}. Work item: {{create-work-item.id}}. Immediate remediation required."
consumes:
- type: http
namespace: sonarqube
baseUri: "https://sonarqube.ubs.com/api"
authentication:
type: bearer
token: "$secrets.sonarqube_token"
resources:
- name: issues
path: "/issues/search?componentKeys={{project_key}}&severities={{severity}}"
inputParameters:
- name: project_key
in: query
- name: severity
in: query
operations:
- name: get-issues
method: GET
- type: http
namespace: azdevops
baseUri: "https://dev.azure.com/ubs"
authentication:
type: bearer
token: "$secrets.azdevops_token"
resources:
- name: work-items
path: "/{{project}}/_apis/wit/workitems/$Bug?api-version=7.0"
inputParameters:
- name: project
in: path
operations:
- name: create-work-item
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Runs a portfolio stress test by fetching holdings from FactSet, applying shock scenarios from Bloomberg Economics, computing P&L impact, and publishing results to Power BI with risk committee notification.
naftiko: "0.5"
info:
label: "Stress Testing Scenario Runner"
description: "Runs a portfolio stress test by fetching holdings from FactSet, applying shock scenarios from Bloomberg Economics, computing P&L impact, and publishing results to Power BI with risk committee notification."
tags:
- risk-management
- stress-testing
- factset
- bloomberg-economics
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: stress-testing
port: 8080
tools:
- name: run-stress-test
description: "Apply a macroeconomic stress scenario to a portfolio and publish the results."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "The FactSet portfolio identifier."
- name: scenario_id
in: body
type: string
description: "The Bloomberg Economics scenario identifier."
- 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."
- name: risk_committee_email
in: body
type: string
description: "The risk committee distribution email."
steps:
- name: get-holdings
type: call
call: "factset.get-holdings"
with:
portfolio_id: "{{portfolio_id}}"
- name: get-scenario
type: call
call: "bloomberg.get-scenario"
with:
scenario_id: "{{scenario_id}}"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-committee
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{risk_committee_email}}"
text: "Stress test complete: {{get-scenario.name}} applied to portfolio {{portfolio_id}}. Positions: {{get-holdings.holdings.length}}. Dashboard refreshed. Review results in Power BI."
consumes:
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: portfolios
path: "/portfolios/{{portfolio_id}}/holdings"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/economics/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: scenarios
path: "/scenarios/{{scenario_id}}"
inputParameters:
- name: scenario_id
in: path
operations:
- name: get-scenario
method: GET
- 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: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Prices a structured product by fetching underlying security data from Bloomberg, running valuation model via FactSet, and publishing the indicative price to the Salesforce opportunity record with advisor notification.
naftiko: "0.5"
info:
label: "Structured Products Pricing Pipeline"
description: "Prices a structured product by fetching underlying security data from Bloomberg, running valuation model via FactSet, and publishing the indicative price to the Salesforce opportunity record with advisor notification."
tags:
- trading
- structured-products
- bloomberg-enterprise-data
- factset
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: structured-pricing
port: 8080
tools:
- name: price-structured-product
description: "Generate an indicative price for a structured product and update the client opportunity."
inputParameters:
- name: underlying_ticker
in: body
type: string
description: "The Bloomberg ticker of the underlying security."
- name: product_type
in: body
type: string
description: "The structured product type (e.g. autocallable, reverse-convertible, barrier)."
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID."
- name: advisor_email
in: body
type: string
description: "The advisor email for notification."
steps:
- name: get-underlying
type: call
call: "bloomberg.get-quote"
with:
ticker: "{{underlying_ticker}}"
- name: run-valuation
type: call
call: "factset.run-pricing-model"
with:
underlying_price: "{{get-underlying.lastPrice}}"
product_type: "{{product_type}}"
volatility: "{{get-underlying.impliedVol}}"
- name: update-opportunity
type: call
call: "salesforce.update-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
indicative_price: "{{run-valuation.indicative_price}}"
pricing_date: "{{run-valuation.pricing_date}}"
- name: notify-advisor
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{advisor_email}}"
text: "Structured product priced: {{product_type}} on {{underlying_ticker}}. Indicative: {{run-valuation.indicative_price}}. Underlying: {{get-underlying.lastPrice}}. Opportunity updated."
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: quotes
path: "/quotes/{{ticker}}"
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: pricing-models
path: "/pricing/structured"
operations:
- name: run-pricing-model
method: POST
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
naftiko: "0.5"
info:
label: "Sustainability Metrics Collection Orchestrator"
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
tags:
- sustainability
- analytics
- compliance
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: run-sustainability-metrics-collection-orchestrator
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Triggers a Teradata analytics query for portfolio risk metrics, pushes results to Power BI, and alerts the analytics team via Microsoft Teams when thresholds are breached.
naftiko: "0.5"
info:
label: "Teradata Analytics Refresh and Alert"
description: "Triggers a Teradata analytics query for portfolio risk metrics, pushes results to Power BI, and alerts the analytics team via Microsoft Teams when thresholds are breached."
tags:
- analytics
- data
- teradata
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: analytics-refresh
port: 8080
tools:
- name: refresh-risk-analytics
description: "Run Teradata risk analytics, refresh Power BI, and alert on threshold breaches."
inputParameters:
- name: query_name
in: body
type: string
description: "The Teradata stored query name."
- 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."
- name: analytics_email
in: body
type: string
description: "The analytics team email."
steps:
- name: run-query
type: call
call: "teradata.execute-query"
with:
query_name: "{{query_name}}"
- name: refresh-bi
type: call
call: "powerbi.refresh-dataset"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{analytics_email}}"
text: "Risk analytics refresh complete: {{query_name}}. Records: {{run-query.row_count}}. Power BI dashboard updated. Review for threshold breaches."
consumes:
- type: http
namespace: teradata
baseUri: "https://ubs-teradata.cloud.teradata.com/api/v1"
authentication:
type: bearer
token: "$secrets.teradata_token"
resources:
- name: queries
path: "/queries/{{query_name}}/execute"
inputParameters:
- name: query_name
in: path
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
naftiko: "0.5"
info:
label: "Third Party Risk Assessment Orchestrator"
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
tags:
- risk
- procurement
- compliance
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: run-third-party-risk-assessment-orchestrator
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Before executing an equity trade via Bloomberg AIM, validates the order against compliance rules, checks client suitability in Salesforce, and logs the trade decision in ServiceNow for audit.
naftiko: "0.5"
info:
label: "Trade Execution with Compliance Pre-Check"
description: "Before executing an equity trade via Bloomberg AIM, validates the order against compliance rules, checks client suitability in Salesforce, and logs the trade decision in ServiceNow for audit."
tags:
- trading
- compliance
- bloomberg-aim
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: trade-compliance
port: 8080
tools:
- name: execute-compliant-trade
description: "Validate compliance, check client suitability, execute a trade via Bloomberg AIM, and create an audit record in ServiceNow."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce account ID for the client."
- name: ticker
in: body
type: string
description: "The Bloomberg ticker symbol."
- name: side
in: body
type: string
description: "BUY or SELL."
- name: quantity
in: body
type: number
description: "Number of shares to trade."
- name: portfolio_id
in: body
type: string
description: "The managed portfolio identifier."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: get-quote
type: call
call: "bloomberg.get-quote"
with:
ticker: "{{ticker}}"
- name: submit-order
type: call
call: "aim.create-order"
with:
ticker: "{{ticker}}"
side: "{{side}}"
quantity: "{{quantity}}"
portfolio_id: "{{portfolio_id}}"
- name: log-audit
type: call
call: "servicenow.create-task"
with:
short_description: "Trade executed: {{side}} {{quantity}} {{ticker}} for {{get-client.Name}}"
description: "Portfolio: {{portfolio_id}}. Price: {{get-quote.lastPrice}}. Order: {{submit-order.order_id}}. Segment: {{get-client.Client_Segment__c}}."
assigned_group: "Compliance_Audit"
category: "trade_audit"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: quotes
path: "/quotes/{{ticker}}"
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: aim
baseUri: "https://api.bloomberg.com/eap/aim/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: orders
path: "/orders"
operations:
- name: create-order
method: POST
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Checks the settlement status of a trade.
naftiko: "0.5"
info:
label: "Trade Settlement Status"
description: "Checks the settlement status of a trade."
tags:
- trading
- operations
capability:
exposes:
- type: mcp
namespace: trading
port: 8080
tools:
- name: get-trade
description: "Checks the settlement status of a trade."
inputParameters:
- name: entity_id
in: body
type: string
description: "The trade settlement status identifier."
call: "trading-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: trading-api
baseUri: "https://api.ubs.com/trading/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: trade
path: "/trade/settlement/status/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-trade
method: GET
Retrieves the latest request-for-quote pricing for a fixed income security on Tradeweb, used by bond trading desks.
naftiko: "0.5"
info:
label: "Tradeweb RFQ Price Check"
description: "Retrieves the latest request-for-quote pricing for a fixed income security on Tradeweb, used by bond trading desks."
tags:
- trading
- fixed-income
- tradeweb
capability:
exposes:
- type: mcp
namespace: fixed-income-trading
port: 8080
tools:
- name: get-rfq-price
description: "Fetch latest Tradeweb RFQ pricing for a bond by ISIN."
inputParameters:
- name: isin
in: body
type: string
description: "The ISIN of the fixed income security."
call: "tradeweb.get-rfq"
with:
isin: "{{isin}}"
outputParameters:
- name: bid_price
type: number
mapping: "$.rfq.bidPrice"
- name: ask_price
type: number
mapping: "$.rfq.askPrice"
- name: mid_yield
type: number
mapping: "$.rfq.midYield"
consumes:
- type: http
namespace: tradeweb
baseUri: "https://api.tradeweb.com/v2"
authentication:
type: bearer
token: "$secrets.tradeweb_token"
resources:
- name: rfqs
path: "/rfq/{{isin}}"
inputParameters:
- name: isin
in: path
operations:
- name: get-rfq
method: GET
Reconciles treasury cash positions by pulling SAP GL balances, Oracle Cloud payment data, and Bloomberg FX rates, then logs discrepancies in ServiceNow for investigation.
naftiko: "0.5"
info:
label: "Treasury Cash Position Reconciliation"
description: "Reconciles treasury cash positions by pulling SAP GL balances, Oracle Cloud payment data, and Bloomberg FX rates, then logs discrepancies in ServiceNow for investigation."
tags:
- treasury
- cash-management
- reconciliation
- sap
- oracle-cloud
- bloomberg-enterprise-data
- servicenow
capability:
exposes:
- type: mcp
namespace: treasury-recon
port: 8080
tools:
- name: reconcile-cash-position
description: "Pull GL balances, payment data, and FX rates to reconcile cash positions across entities."
inputParameters:
- name: company_code
in: body
type: string
description: "The SAP company code."
- name: currency
in: body
type: string
description: "The reporting currency (e.g. CHF, USD, EUR)."
- name: as_of_date
in: body
type: string
description: "The reconciliation date (YYYY-MM-DD)."
steps:
- name: get-gl-balance
type: call
call: "sap.get-cash-balance"
with:
company_code: "{{company_code}}"
currency: "{{currency}}"
- name: get-payments
type: call
call: "oracle.get-payments"
with:
company_code: "{{company_code}}"
date: "{{as_of_date}}"
- name: get-fx-rate
type: call
call: "bloomberg.get-fx-rate"
with:
currency_pair: "{{currency}}CHF"
- name: log-discrepancy
type: call
call: "servicenow.create-task"
with:
short_description: "Cash recon: {{company_code}} {{currency}} as of {{as_of_date}}"
description: "GL balance: {{get-gl-balance.balance}} {{currency}}. Payments total: {{get-payments.total}}. FX rate: {{get-fx-rate.rate}}. Review for discrepancies."
assigned_group: "Treasury_Operations"
category: "cash_reconciliation"
consumes:
- type: http
namespace: sap
baseUri: "https://ubs-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
inputParameters:
- name: Accept
in: header
value: "application/json"
resources:
- name: cash-balance
path: "/A_GLAccountBalance?$filter=CompanyCode eq '{{company_code}}' and Currency eq '{{currency}}'"
inputParameters:
- name: company_code
in: query
- name: currency
in: query
operations:
- name: get-cash-balance
method: GET
- type: http
namespace: oracle
baseUri: "https://ubs-cloud.oraclecloud.com/fscmRestApi/resources/v2"
authentication:
type: basic
username: "$secrets.oracle_user"
password: "$secrets.oracle_password"
resources:
- name: payments
path: "/payments?companyCode={{company_code}}&date={{date}}"
inputParameters:
- name: company_code
in: query
- name: date
in: query
operations:
- name: get-payments
method: GET
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: fx-rates
path: "/fx/{{currency_pair}}"
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-fx-rate
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
naftiko: "0.5"
info:
label: "Vendor Contract Renewal Pipeline"
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
tags:
- procurement
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-vendor-contract-renewal-pipeline
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.ubs.com/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.ubs.com/v2"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Assesses a third-party vendor by pulling the vendor record from Salesforce, retrieving compliance attestations from SharePoint, scoring risk, and logging the assessment in ServiceNow.
naftiko: "0.5"
info:
label: "Vendor Risk Assessment Workflow"
description: "Assesses a third-party vendor by pulling the vendor record from Salesforce, retrieving compliance attestations from SharePoint, scoring risk, and logging the assessment in ServiceNow."
tags:
- risk-management
- vendor-risk
- salesforce
- sharepoint
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-risk
port: 8080
tools:
- name: assess-vendor-risk
description: "Perform a vendor risk assessment by pulling vendor data, compliance docs, and logging the outcome."
inputParameters:
- name: vendor_id
in: body
type: string
description: "The Salesforce vendor account ID."
- name: assessment_type
in: body
type: string
description: "Assessment type (initial, annual, event-triggered)."
steps:
- name: get-vendor
type: call
call: "salesforce.get-account"
with:
client_id: "{{vendor_id}}"
- name: get-attestations
type: call
call: "sharepoint.list-files"
with:
site_id: "vendor_compliance"
folder_path: "Attestations/{{get-vendor.Name}}"
- name: log-assessment
type: call
call: "servicenow.create-task"
with:
short_description: "Vendor risk assessment: {{get-vendor.Name}} ({{assessment_type}})"
description: "Vendor: {{get-vendor.Name}}. Type: {{assessment_type}}. Attestation docs: {{get-attestations.file_count}}. Industry: {{get-vendor.Industry}}."
assigned_group: "Vendor_Risk_Management"
category: "vendor_assessment"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}:/children"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: list-files
method: GET
- type: http
namespace: servicenow
baseUri: "https://ubs.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Prepares a client review meeting by pulling the client profile from Salesforce, portfolio performance from FactSet, recent market commentary from Bloomberg News, and creating a summary in SharePoint for the advisor.
naftiko: "0.5"
info:
label: "Wealth Advisor Client Review Prep"
description: "Prepares a client review meeting by pulling the client profile from Salesforce, portfolio performance from FactSet, recent market commentary from Bloomberg News, and creating a summary in SharePoint for the advisor."
tags:
- wealth-management
- client-review
- salesforce
- factset
- bloomberg-news
- sharepoint
capability:
exposes:
- type: mcp
namespace: advisor-prep
port: 8080
tools:
- name: prepare-client-review
description: "Aggregate client data, portfolio performance, and market context into a review document for the wealth advisor."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: portfolio_id
in: body
type: string
description: "The FactSet portfolio identifier."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: get-performance
type: call
call: "factset.get-performance"
with:
portfolio_id: "{{portfolio_id}}"
- name: get-market-news
type: call
call: "bloomberg.get-news"
with:
topic: "wealth management outlook"
- name: save-review-doc
type: call
call: "sharepoint.upload-file"
with:
site_id: "advisor_reviews"
file_path: "Reviews/{{get-client.Name}}_{{portfolio_id}}_review.json"
content: "{\"client\": \"{{get-client.Name}}\", \"segment\": \"{{get-client.Client_Segment__c}}\", \"ytd_return\": \"{{get-performance.ytd_return}}\", \"market_summary\": \"{{get-market-news.headline}}\"}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: factset
baseUri: "https://api.factset.com/analytics/v3"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_api_key"
resources:
- name: performance
path: "/portfolios/{{portfolio_id}}/performance"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-performance
method: GET
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/news/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: news
path: "/stories?topic={{topic}}&limit=5"
inputParameters:
- name: topic
in: query
operations:
- name: get-news
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
Prepares a wealth transfer plan by pulling client family structure from Salesforce, estate planning documents from SharePoint, tax implications from SAP, and creating a review meeting in Microsoft Teams.
naftiko: "0.5"
info:
label: "Wealth Transfer Planning Workflow"
description: "Prepares a wealth transfer plan by pulling client family structure from Salesforce, estate planning documents from SharePoint, tax implications from SAP, and creating a review meeting in Microsoft Teams."
tags:
- private-banking
- wealth-transfer
- estate-planning
- salesforce
- sharepoint
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wealth-transfer
port: 8080
tools:
- name: prepare-wealth-transfer
description: "Compile family structure, estate documents, and tax data for a wealth transfer planning session."
inputParameters:
- name: client_id
in: body
type: string
description: "The Salesforce client account ID."
- name: advisor_email
in: body
type: string
description: "The private banker email."
- name: company_code
in: body
type: string
description: "The SAP company code for tax jurisdiction."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
client_id: "{{client_id}}"
- name: get-estate-docs
type: call
call: "sharepoint.list-files"
with:
site_id: "estate_planning"
folder_path: "Clients/{{get-client.Name}}_{{client_id}}"
- name: get-tax-data
type: call
call: "sap.get-tax-summary"
with:
client_id: "{{client_id}}"
company_code: "{{company_code}}"
- name: notify-advisor
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{advisor_email}}"
text: "Wealth transfer prep ready for {{get-client.Name}}. Estate docs: {{get-estate-docs.file_count}} files. Tax jurisdiction: {{company_code}}. Effective tax rate: {{get-tax-data.effective_rate}}%. Schedule client meeting."
consumes:
- type: http
namespace: salesforce
baseUri: "https://ubs.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}:/children"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: list-files
method: GET
- type: http
namespace: sap
baseUri: "https://ubs-s4.sap.com/sap/opu/odata/sap/API_TAX_REPORTING_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: tax-summary
path: "/TaxSummary?$filter=ClientId eq '{{client_id}}' and CompanyCode eq '{{company_code}}'"
inputParameters:
- name: client_id
in: query
- name: company_code
in: query
operations:
- name: get-tax-summary
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Fetches an employee profile from Workday by worker ID, returning name, department, cost center, and reporting chain for HR and compliance workflows.
naftiko: "0.5"
info:
label: "Workday Employee Profile Lookup"
description: "Fetches an employee profile from Workday by worker ID, returning name, department, cost center, and reporting chain for HR and compliance workflows."
tags:
- hr
- employee-data
- workday
capability:
exposes:
- type: mcp
namespace: hr-data
port: 8080
tools:
- name: get-employee-profile
description: "Retrieve a Workday employee profile by worker ID."
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: department
type: string
mapping: "$.worker.department"
- name: cost_center
type: string
mapping: "$.worker.costCenter"
- name: manager_id
type: string
mapping: "$.worker.managerId"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Retrieves employee profile from Workday.
naftiko: "0.5"
info:
label: "Workday Employee Profile"
description: "Retrieves employee profile from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-workday
description: "Retrieves employee profile from Workday."
inputParameters:
- name: entity_id
in: body
type: string
description: "The workday employee profile identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.ubs.com/hr/v1"
authentication:
type: bearer
token: "$secrets.ubs_api_token"
resources:
- name: workday
path: "/workday/employee/profile/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-workday
method: GET