Barclays Capabilities
Naftiko 0.5 capability definitions for Barclays - 100 capabilities showing integration workflows and service orchestrations.
Collects access entitlements, routes for review, revokes expired access, and creates audit records.
naftiko: "0.5"
info:
label: "Access Review Certification Pipeline"
description: "Collects access entitlements, routes for review, revokes expired access, and creates audit records."
tags:
- security
- okta
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: access_review_certification_pipeline
description: "Orchestrate access review certification pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-okta
type: call
call: "okta.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-okta.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Access Review Certification Pipeline step 3 complete."
consumes:
- type: http
namespace: okta
baseUri: "https://barclays.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: okta-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves a signed URL for a report file stored in Amazon S3. Used by compliance and audit teams to access archived regulatory reports.
naftiko: "0.5"
info:
label: "Amazon S3 Report Archive Retrieval"
description: "Retrieves a signed URL for a report file stored in Amazon S3. Used by compliance and audit teams to access archived regulatory reports."
tags:
- storage
- archive
- amazon-s3
capability:
exposes:
- type: mcp
namespace: report-archive
port: 8080
tools:
- name: get-archived-report
description: "Generate a pre-signed URL for an S3 archived report."
inputParameters:
- name: bucket
in: body
type: string
description: "S3 bucket name."
- name: object_key
in: body
type: string
description: "S3 object key (file path)."
call: "s3.get-presigned-url"
with:
bucket: "{{bucket}}"
key: "{{object_key}}"
consumes:
- type: http
namespace: s3
baseUri: "https://s3.eu-west-2.amazonaws.com"
authentication:
type: aws-sigv4
region: "eu-west-2"
access_key: "$secrets.aws_access_key"
secret_key: "$secrets.aws_secret_key"
resources:
- name: objects
path: "/{{bucket}}/{{key}}"
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: get-presigned-url
method: GET
When an AML alert fires, pulls transaction details from Oracle Database, enriches with customer profile from Salesforce, runs risk scoring, and creates a JIRA investigation case for the compliance team.
naftiko: "0.5"
info:
label: "AML Transaction Alert Triage"
description: "When an AML alert fires, pulls transaction details from Oracle Database, enriches with customer profile from Salesforce, runs risk scoring, and creates a JIRA investigation case for the compliance team."
tags:
- aml
- compliance
- oracle-database
- salesforce
- jira
capability:
exposes:
- type: mcp
namespace: aml-triage
port: 8080
tools:
- name: triage-aml-alert
description: "Triage an AML transaction alert by enriching with customer data and opening an investigation ticket."
inputParameters:
- name: alert_id
in: body
type: string
description: "The AML alert identifier from the monitoring system."
- name: transaction_id
in: body
type: string
description: "The transaction reference to investigate."
steps:
- name: get-transaction
type: call
call: "oracle.get-transaction"
with:
transaction_id: "{{transaction_id}}"
- name: get-customer-profile
type: call
call: "salesforce.get-account"
with:
account_id: "{{get-transaction.customer_account_id}}"
- name: create-investigation
type: call
call: "jira.create-issue"
with:
project: "AML"
issue_type: "Investigation"
summary: "AML Alert {{alert_id}} - {{get-customer-profile.Name}}"
description: "Transaction {{transaction_id}} amount {{get-transaction.amount}} {{get-transaction.currency}}. Customer risk: {{get-customer-profile.Risk_Rating__c}}."
priority: "High"
consumes:
- type: http
namespace: oracle
baseUri: "https://barclays-ords.db.oracle.com/ords/aml/v1"
authentication:
type: bearer
token: "$secrets.oracle_ords_token"
resources:
- name: transactions
path: "/transactions/{{transaction_id}}"
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-transaction
method: GET
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress.
naftiko: "0.5"
info:
label: "API Deprecation Notice Pipeline"
description: "Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress."
tags:
- engineering
- datadog
- jira
- slack
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: api_deprecation_notice_pipeline
description: "Orchestrate api deprecation notice pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "API Deprecation Notice Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves account details from the Avaloq core banking system by account number, returning balance, currency, status, and holder name. Used by operations staff for account inquiries.
naftiko: "0.5"
info:
label: "Avaloq Banking Core Account Inquiry"
description: "Retrieves account details from the Avaloq core banking system by account number, returning balance, currency, status, and holder name. Used by operations staff for account inquiries."
tags:
- core-banking
- accounts
- avaloq
capability:
exposes:
- type: mcp
namespace: core-banking
port: 8080
tools:
- name: get-account-details
description: "Look up an account in Avaloq core banking by account number."
inputParameters:
- name: account_number
in: body
type: string
description: "Avaloq account number."
call: "avaloq.get-account"
with:
account_number: "{{account_number}}"
outputParameters:
- name: balance
type: string
mapping: "$.account.balance"
- name: currency
type: string
mapping: "$.account.currency"
- name: status
type: string
mapping: "$.account.status"
- name: holder_name
type: string
mapping: "$.account.holderName"
consumes:
- type: http
namespace: avaloq
baseUri: "https://barclays-avaloq.internal.barclays.com/api/v1"
authentication:
type: bearer
token: "$secrets.avaloq_token"
resources:
- name: accounts
path: "/accounts/{{account_number}}"
inputParameters:
- name: account_number
in: path
operations:
- name: get-account
method: GET
Orchestrates a BACS batch payment submission by generating the payment file from Oracle, validating entries against Avaloq, submitting via Amazon SQS to the BACS gateway, and notifying treasury operations in Microsoft Teams.
naftiko: "0.5"
info:
label: "BACS Payment Batch Submission"
description: "Orchestrates a BACS batch payment submission by generating the payment file from Oracle, validating entries against Avaloq, submitting via Amazon SQS to the BACS gateway, and notifying treasury operations in Microsoft Teams."
tags:
- payments
- bacs
- oracle-database
- avaloq
- amazon-sqs
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: bacs-payments
port: 8080
tools:
- name: submit-bacs-batch
description: "Generate, validate, and submit a BACS payment batch with operations notification."
inputParameters:
- name: batch_id
in: body
type: string
description: "Payment batch identifier."
- name: processing_date
in: body
type: string
description: "BACS processing date (YYYY-MM-DD)."
steps:
- name: generate-file
type: call
call: "oracle.generate-bacs-file"
with:
batch_id: "{{batch_id}}"
processing_date: "{{processing_date}}"
- name: validate-accounts
type: call
call: "avaloq.validate-batch"
with:
batch_id: "{{batch_id}}"
payment_count: "{{generate-file.payment_count}}"
- name: submit-batch
type: call
call: "sqs.send-message"
with:
queue_url: "https://sqs.eu-west-2.amazonaws.com/barclays/bacs-submissions"
message_body: "{\"batchId\":\"{{batch_id}}\",\"processingDate\":\"{{processing_date}}\",\"paymentCount\":\"{{generate-file.payment_count}}\",\"totalAmount\":\"{{generate-file.total_amount}}\"}"
- name: notify-ops
type: call
call: "msteams.send-channel-message"
with:
team_id: "treasury-operations"
channel_id: "bacs-processing"
text: "BACS batch {{batch_id}} submitted for {{processing_date}}. Payments: {{generate-file.payment_count}}. Total: GBP {{generate-file.total_amount}}. Validation: {{validate-accounts.status}}."
consumes:
- type: http
namespace: oracle
baseUri: "https://barclays-ords.db.oracle.com/ords/payments/v1"
authentication:
type: bearer
token: "$secrets.oracle_ords_token"
resources:
- name: bacs-files
path: "/bacs/generate"
operations:
- name: generate-bacs-file
method: POST
- type: http
namespace: avaloq
baseUri: "https://barclays-avaloq.internal.barclays.com/api/v1"
authentication:
type: bearer
token: "$secrets.avaloq_token"
resources:
- name: batch-validation
path: "/payments/validate-batch"
operations:
- name: validate-batch
method: POST
- type: http
namespace: sqs
baseUri: "https://sqs.eu-west-2.amazonaws.com"
authentication:
type: aws-sigv4
region: "eu-west-2"
access_key: "$secrets.aws_access_key"
secret_key: "$secrets.aws_secret_key"
resources:
- name: messages
path: "/barclays/bacs-submissions"
operations:
- name: send-message
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves current monitoring alert status. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Alert Status Check"
description: "Retrieves current monitoring alert status. Used by Barclays teams."
tags:
- banking
- confluence
capability:
exposes:
- type: mcp
namespace: confluence
port: 8080
tools:
- name: get-alert_status_check
description: "Retrieves current monitoring alert status. Used by Barclays teams."
inputParameters:
- name: alert_id
in: body
type: string
description: "The alert_id to look up."
call: "confluence.get-alert_id"
with:
alert_id: "{{alert_id}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://barclays.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_alert_status_check
method: GET
Checks availability of an API endpoint. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays API Endpoint Status"
description: "Checks availability of an API endpoint. Used by Barclays teams."
tags:
- banking
- datadog
capability:
exposes:
- type: mcp
namespace: datadog
port: 8080
tools:
- name: get-api_endpoint_status
description: "Checks availability of an API endpoint. Used by Barclays teams."
inputParameters:
- name: endpoint_url
in: body
type: string
description: "The endpoint_url to look up."
call: "datadog.get-endpoint_url"
with:
endpoint_url: "{{endpoint_url}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_api_endpoint_status
method: GET
Identifies KYC records due for review, collects updated information, validates identity, and updates records.
naftiko: "0.5"
info:
label: "Client KYC Refresh Pipeline"
description: "Identifies KYC records due for review, collects updated information, validates identity, and updates records."
tags:
- compliance
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: barclays_client_kyc_refresh_pipeline
description: "Orchestrate client kyc refresh pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Client KYC Refresh Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves compliance check status. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Compliance Check Status"
description: "Retrieves compliance check status. Used by Barclays teams."
tags:
- banking
- okta
capability:
exposes:
- type: mcp
namespace: okta
port: 8080
tools:
- name: get-compliance_check_status
description: "Retrieves compliance check status. Used by Barclays teams."
inputParameters:
- name: check_id
in: body
type: string
description: "The check_id to look up."
call: "okta.get-check_id"
with:
check_id: "{{check_id}}"
consumes:
- type: http
namespace: okta
baseUri: "https://barclays.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_compliance_check_stat
method: GET
Queries cost and spending data. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Cost Report Query"
description: "Queries cost and spending data. Used by Barclays teams."
tags:
- banking
- github
capability:
exposes:
- type: mcp
namespace: github
port: 8080
tools:
- name: get-cost_report_query
description: "Queries cost and spending data. Used by Barclays teams."
inputParameters:
- name: cost_center
in: body
type: string
description: "The cost_center to look up."
call: "github.get-cost_center"
with:
cost_center: "{{cost_center}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_cost_report_query
method: GET
Collects applicant data, runs credit models, generates decisions, and notifies relationship managers.
naftiko: "0.5"
info:
label: "Credit Scoring Pipeline"
description: "Collects applicant data, runs credit models, generates decisions, and notifies relationship managers."
tags:
- lending
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: barclays_credit_scoring_pipeline
description: "Orchestrate credit scoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Credit Scoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Executes a read-only analytics query. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Database Query Runner"
description: "Executes a read-only analytics query. Used by Barclays teams."
tags:
- banking
- elasticsearch
capability:
exposes:
- type: mcp
namespace: elasticsearc
port: 8080
tools:
- name: get-database_query_runner
description: "Executes a read-only analytics query. Used by Barclays teams."
inputParameters:
- name: sql_query
in: body
type: string
description: "The sql_query to look up."
call: "elasticsearch.get-sql_query"
with:
sql_query: "{{sql_query}}"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://barclays-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_database_query_runner
method: GET
Checks status of a recent deployment. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Deployment Status Check"
description: "Checks status of a recent deployment. Used by Barclays teams."
tags:
- banking
- slack
capability:
exposes:
- type: mcp
namespace: slack
port: 8080
tools:
- name: get-deployment_status_check
description: "Checks status of a recent deployment. Used by Barclays teams."
inputParameters:
- name: deployment_id
in: body
type: string
description: "The deployment_id to look up."
call: "slack.get-deployment_id"
with:
deployment_id: "{{deployment_id}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_deployment_status_che
method: GET
Retrieves a document from knowledge management. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Document Retrieval"
description: "Retrieves a document from knowledge management. Used by Barclays teams."
tags:
- banking
- grafana
capability:
exposes:
- type: mcp
namespace: grafana
port: 8080
tools:
- name: get-document_retrieval
description: "Retrieves a document from knowledge management. Used by Barclays teams."
inputParameters:
- name: document_id
in: body
type: string
description: "The document_id to look up."
call: "grafana.get-document_id"
with:
document_id: "{{document_id}}"
consumes:
- type: http
namespace: grafana
baseUri: "https://barclays-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_document_retrieval
method: GET
Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
naftiko: "0.5"
info:
label: "Employee Onboarding Automation Pipeline"
description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: barclays_employee_onboarding_automation
description: "Orchestrate employee onboarding automation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Employee Onboarding Automation Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/barclays"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Searches application logs for matching patterns. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Log Search Query"
description: "Searches application logs for matching patterns. Used by Barclays teams."
tags:
- banking
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-log_search_query
description: "Searches application logs for matching patterns. Used by Barclays teams."
inputParameters:
- name: search_query
in: body
type: string
description: "The search_query to look up."
call: "salesforce.get-search_query"
with:
search_query: "{{search_query}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_log_search_query
method: GET
Monitors portfolio exposures, calculates VaR, detects limit breaches, and alerts risk management.
naftiko: "0.5"
info:
label: "Market Risk Monitoring Pipeline"
description: "Monitors portfolio exposures, calculates VaR, detects limit breaches, and alerts risk management."
tags:
- risk
- snowflake
- grafana
- pagerduty
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: barclays_market_risk_monitoring_pipeline
description: "Orchestrate market risk monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-grafana
type: call
call: "grafana.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Market Risk Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: grafana
baseUri: "https://barclays-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Queries metric values from a monitoring dashboard. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Metric Dashboard Query"
description: "Queries metric values from a monitoring dashboard. Used by Barclays teams."
tags:
- banking
- splunk
capability:
exposes:
- type: mcp
namespace: splunk
port: 8080
tools:
- name: get-metric_dashboard_query
description: "Queries metric values from a monitoring dashboard. Used by Barclays teams."
inputParameters:
- name: metric_name
in: body
type: string
description: "The metric_name to look up."
call: "splunk.get-metric_name"
with:
metric_name: "{{metric_name}}"
consumes:
- type: http
namespace: splunk
baseUri: "https://barclays-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_metric_dashboard_quer
method: GET
Checks the current status of a project. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Project Status Check"
description: "Checks the current status of a project. Used by Barclays teams."
tags:
- banking
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake
port: 8080
tools:
- name: get-project_status_check
description: "Checks the current status of a project. Used by Barclays teams."
inputParameters:
- name: project_key
in: body
type: string
description: "The project_key to look up."
call: "snowflake.get-project_key"
with:
project_key: "{{project_key}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_project_status_check
method: GET
Calculates capital ratios, generates regulatory reports, validates against thresholds, and submits.
naftiko: "0.5"
info:
label: "Regulatory Capital Reporting Pipeline"
description: "Calculates capital ratios, generates regulatory reports, validates against thresholds, and submits."
tags:
- regulatory
- snowflake
- powerbi
- confluence
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: barclays_regulatory_capital_reporting_pi
description: "Orchestrate regulatory capital reporting pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-confluence
type: call
call: "confluence.create-resource"
with:
channel: "{{notification_channel}}"
text: "Regulatory Capital Reporting Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: confluence
baseUri: "https://barclays.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
Retrieves code repository information. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Repository Info Lookup"
description: "Retrieves code repository information. Used by Barclays teams."
tags:
- banking
- workday
capability:
exposes:
- type: mcp
namespace: workday
port: 8080
tools:
- name: get-repository_info_lookup
description: "Retrieves code repository information. Used by Barclays teams."
inputParameters:
- name: repo_name
in: body
type: string
description: "The repo_name to look up."
call: "workday.get-repo_name"
with:
repo_name: "{{repo_name}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/barclays"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_repository_info_looku
method: GET
Searches application logs for matching patterns. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Log Search Query"
description: "Searches application logs for matching patterns. Used by Barclays teams."
tags:
- banking
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-log_search_query
description: "Searches application logs for matching patterns. Used by Barclays teams."
inputParameters:
- name: search_query
in: body
type: string
description: "The search_query to look up."
call: "salesforce.get-search_query"
with:
search_query: "{{search_query}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_salesforce_log_search
method: GET
Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
naftiko: "0.5"
info:
label: "Security Incident Response Pipeline"
description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
tags:
- security
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: barclays_security_incident_response_pipe
description: "Orchestrate security incident response pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-splunk
type: call
call: "splunk.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-splunk.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Incident Response Pipeline step 3 complete."
consumes:
- type: http
namespace: splunk
baseUri: "https://barclays-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Retrieves vulnerability scan results. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Security Scan Results"
description: "Retrieves vulnerability scan results. Used by Barclays teams."
tags:
- banking
- pagerduty
capability:
exposes:
- type: mcp
namespace: pagerduty
port: 8080
tools:
- name: get-security_scan_results
description: "Retrieves vulnerability scan results. Used by Barclays teams."
inputParameters:
- name: scan_id
in: body
type: string
description: "The scan_id to look up."
call: "pagerduty.get-scan_id"
with:
scan_id: "{{scan_id}}"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_security_scan_results
method: GET
Checks the health status of a monitored service. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Service Health Check"
description: "Checks the health status of a monitored service. Used by Barclays teams."
tags:
- banking
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-service_health_check
description: "Checks the health status of a monitored service. Used by Barclays teams."
inputParameters:
- name: health_target
in: body
type: string
description: "The health_target to look up."
call: "servicenow.get-health_target"
with:
health_target: "{{health_target}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_service_health_check
method: GET
Checks the health status of a monitored service. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Service Health Check"
description: "Checks the health status of a monitored service. Used by Barclays teams."
tags:
- banking
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-service_health_check
description: "Checks the health status of a monitored service. Used by Barclays teams."
inputParameters:
- name: health_target
in: body
type: string
description: "The health_target to look up."
call: "servicenow.get-health_target"
with:
health_target: "{{health_target}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_servicenow_service_he
method: GET
Queries metric values from a monitoring dashboard. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Metric Dashboard Query"
description: "Queries metric values from a monitoring dashboard. Used by Barclays teams."
tags:
- banking
- splunk
capability:
exposes:
- type: mcp
namespace: splunk
port: 8080
tools:
- name: get-metric_dashboard_query
description: "Queries metric values from a monitoring dashboard. Used by Barclays teams."
inputParameters:
- name: metric_name
in: body
type: string
description: "The metric_name to look up."
call: "splunk.get-metric_name"
with:
metric_name: "{{metric_name}}"
consumes:
- type: http
namespace: splunk
baseUri: "https://barclays-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_splunk_metric_dashboa
method: GET
Retrieves the details of a support ticket. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays Ticket Details Lookup"
description: "Retrieves the details of a support ticket. Used by Barclays teams."
tags:
- banking
- powerbi
capability:
exposes:
- type: mcp
namespace: powerbi
port: 8080
tools:
- name: get-ticket_details_lookup
description: "Retrieves the details of a support ticket. Used by Barclays teams."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The ticket_id to look up."
call: "powerbi.get-ticket_id"
with:
ticket_id: "{{ticket_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_ticket_details_lookup
method: GET
Monitors transactions for suspicious patterns, scores risk, creates alerts, and notifies compliance.
naftiko: "0.5"
info:
label: "Transaction Monitoring Pipeline"
description: "Monitors transactions for suspicious patterns, scores risk, creates alerts, and notifies compliance."
tags:
- compliance
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: barclays_transaction_monitoring_pipeline
description: "Orchestrate transaction monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Transaction Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves user account details from the directory. Used by Barclays teams.
naftiko: "0.5"
info:
label: "Barclays User Account Lookup"
description: "Retrieves user account details from the directory. Used by Barclays teams."
tags:
- banking
- jira
capability:
exposes:
- type: mcp
namespace: jira
port: 8080
tools:
- name: get-user_account_lookup
description: "Retrieves user account details from the directory. Used by Barclays teams."
inputParameters:
- name: user_id
in: body
type: string
description: "The user_id to look up."
call: "jira.get-user_id"
with:
user_id: "{{user_id}}"
consumes:
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: barclays_user_account_lookup
method: GET
Retrieves the latest economic indicator value from Bloomberg Economics by indicator code. Returns value, date, and prior reading for macro research.
naftiko: "0.5"
info:
label: "Bloomberg Economics Indicator Fetch"
description: "Retrieves the latest economic indicator value from Bloomberg Economics by indicator code. Returns value, date, and prior reading for macro research."
tags:
- research
- economics
- bloomberg-economics
capability:
exposes:
- type: mcp
namespace: macro-research
port: 8080
tools:
- name: get-economic-indicator
description: "Fetch an economic indicator from Bloomberg Economics."
inputParameters:
- name: indicator_code
in: body
type: string
description: "Bloomberg Economics indicator code (e.g. GDP CQOQ Index)."
call: "bloomberg-econ.get-indicator"
with:
indicator: "{{indicator_code}}"
outputParameters:
- name: value
type: string
mapping: "$.data.value"
- name: date
type: string
mapping: "$.data.date"
- name: prior
type: string
mapping: "$.data.prior"
consumes:
- type: http
namespace: bloomberg-econ
baseUri: "https://bql.data.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_api_key"
resources:
- name: economics
path: "/economics/{{indicator}}"
inputParameters:
- name: indicator
in: path
operations:
- name: get-indicator
method: GET
Retrieves real-time market data for a given security from Bloomberg Enterprise Data, returning price, volume, and daily change. Used by traders and portfolio managers for quick instrument checks.
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 daily change. Used by traders and portfolio managers for quick instrument checks."
tags:
- trading
- market-data
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-security-price
description: "Fetch real-time price, volume, and change for a Bloomberg security identifier."
inputParameters:
- name: ticker
in: body
type: string
description: "Bloomberg ticker symbol (e.g. BARC LN Equity)."
call: "bloomberg.get-security"
with:
ticker: "{{ticker}}"
outputParameters:
- name: last_price
type: string
mapping: "$.data.lastPrice"
- name: volume
type: string
mapping: "$.data.volume"
- name: change_pct
type: string
mapping: "$.data.changePct"
consumes:
- type: http
namespace: bloomberg
baseUri: "https://bql.data.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_api_key"
resources:
- name: securities
path: "/data/{{ticker}}"
inputParameters:
- name: ticker
in: path
operations:
- name: get-security
method: GET
Retrieves the latest Bloomberg news articles for a given topic or security. Returns headlines, timestamps, and article summaries for research analysts.
naftiko: "0.5"
info:
label: "Bloomberg News Feed"
description: "Retrieves the latest Bloomberg news articles for a given topic or security. Returns headlines, timestamps, and article summaries for research analysts."
tags:
- research
- news
- bloomberg-news
capability:
exposes:
- type: mcp
namespace: research-news
port: 8080
tools:
- name: get-bloomberg-news
description: "Fetch latest Bloomberg news by topic or security."
inputParameters:
- name: topic
in: body
type: string
description: "News topic or Bloomberg ticker."
call: "bloomberg-news.search-articles"
with:
query: "{{topic}}"
outputParameters:
- name: articles
type: array
mapping: "$.articles"
consumes:
- type: http
namespace: bloomberg-news
baseUri: "https://bql.data.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_api_key"
resources:
- name: news
path: "/news/search?query={{query}}"
inputParameters:
- name: query
in: query
operations:
- name: search-articles
method: GET
Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports.
naftiko: "0.5"
info:
label: "Capacity Planning Forecast Pipeline"
description: "Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports."
tags:
- infrastructure
- grafana
- snowflake
- powerbi
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: capacity_planning_forecast_pipeline
description: "Orchestrate capacity planning forecast pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-grafana
type: call
call: "grafana.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-grafana.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "Capacity Planning Forecast Pipeline step 3 complete."
consumes:
- type: http
namespace: grafana
baseUri: "https://barclays-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Orchestrates capital adequacy reporting by aggregating risk-weighted assets from Snowflake, computing capital ratios via Azure Databricks, generating the report in Power BI, uploading to SharePoint, and notifying the CFO office via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Capital Adequacy Report Pipeline"
description: "Orchestrates capital adequacy reporting by aggregating risk-weighted assets from Snowflake, computing capital ratios via Azure Databricks, generating the report in Power BI, uploading to SharePoint, and notifying the CFO office via Microsoft Outlook."
tags:
- risk-management
- capital-adequacy
- snowflake
- azure-databricks
- power-bi
- sharepoint
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: capital-reporting
port: 8080
tools:
- name: generate-capital-report
description: "Generate and distribute a capital adequacy report with ratio calculations."
inputParameters:
- name: reporting_date
in: body
type: string
description: "Reporting date (YYYY-MM-DD)."
steps:
- name: get-rwa
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT risk_category, SUM(rwa) as total_rwa FROM risk.risk_weighted_assets WHERE as_of_date = '{{reporting_date}}' GROUP BY risk_category"
warehouse: "RISK_WH"
database: "RISK_DB"
- name: compute-ratios
type: call
call: "databricks.run-job"
with:
job_id: "capital-ratio-calculator"
parameters: "{\"reporting_date\":\"{{reporting_date}}\"}"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "capital-reporting"
dataset_id: "capital-adequacy"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "finance_reporting"
folder_path: "Capital_Adequacy/{{reporting_date}}"
file_name: "capital_adequacy_{{reporting_date}}.pdf"
- name: notify-cfo
type: call
call: "outlook.send-mail"
with:
to: "cfo-office@barclays.com"
subject: "Capital Adequacy Report - {{reporting_date}}"
body: "CET1 Ratio: {{compute-ratios.cet1_ratio}}%. Tier 1: {{compute-ratios.tier1_ratio}}%. Total Capital: {{compute-ratios.total_capital_ratio}}%. Report: {{upload-report.url}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: databricks
baseUri: "https://barclays.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
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/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/finance-reporting@barclays.com/sendMail"
operations:
- name: send-mail
method: POST
Validates change requests, routes for approval, schedules implementation, and notifies stakeholders.
naftiko: "0.5"
info:
label: "Change Management Approval Pipeline"
description: "Validates change requests, routes for approval, schedules implementation, and notifies stakeholders."
tags:
- itsm
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: change_management_approval_pipeline
description: "Orchestrate change management approval pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Change Management Approval Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Identifies KYC records due for review, collects updated information, validates identity, and updates records.
naftiko: "0.5"
info:
label: "Client KYC Refresh Pipeline"
description: "Identifies KYC records due for review, collects updated information, validates identity, and updates records."
tags:
- compliance
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: client_kyc_refresh_pipeline
description: "Orchestrate client kyc refresh pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Client KYC Refresh Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Orchestrates institutional client onboarding by creating the client in Salesforce, provisioning access in SailPoint, setting up document storage in Box, and sending welcome instructions via Microsoft Teams.
naftiko: "0.5"
info:
label: "Client Onboarding Orchestrator"
description: "Orchestrates institutional client onboarding by creating the client in Salesforce, provisioning access in SailPoint, setting up document storage in Box, and sending welcome instructions via Microsoft Teams."
tags:
- client-onboarding
- salesforce
- sailpoint
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: client-onboarding
port: 8080
tools:
- name: onboard-institutional-client
description: "Onboard a new institutional client across CRM, identity, document storage, and communications."
inputParameters:
- name: client_name
in: body
type: string
description: "Legal name of the client entity."
- name: client_type
in: body
type: string
description: "Client type (hedge_fund, pension, corporate, sovereign)."
- name: relationship_manager
in: body
type: string
description: "Email of the assigned relationship manager."
steps:
- name: create-account
type: call
call: "salesforce.create-account"
with:
name: "{{client_name}}"
type: "{{client_type}}"
owner_email: "{{relationship_manager}}"
- name: provision-identity
type: call
call: "sailpoint.create-identity"
with:
name: "{{client_name}}"
type: "service_account"
source: "institutional_clients"
- name: create-folder
type: call
call: "box.create-folder"
with:
parent_id: "0"
name: "Client_{{create-account.id}}_{{client_name}}"
- name: notify-rm
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{relationship_manager}}"
text: "New client onboarded: {{client_name}} ({{client_type}}). Salesforce ID: {{create-account.id}}. Document folder: {{create-folder.url}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account"
operations:
- name: create-account
method: POST
- type: http
namespace: sailpoint
baseUri: "https://barclays.api.identitynow.com/v3"
authentication:
type: bearer
token: "$secrets.sailpoint_token"
resources:
- name: identities
path: "/accounts"
operations:
- name: create-identity
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: folders
path: "/folders"
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Orchestrates a wealth management suitability assessment by pulling client profile from Salesforce, risk questionnaire results from Oracle, running the suitability model on Azure Machine Learning, and storing the assessment in SharePoint.
naftiko: "0.5"
info:
label: "Client Suitability Assessment"
description: "Orchestrates a wealth management suitability assessment by pulling client profile from Salesforce, risk questionnaire results from Oracle, running the suitability model on Azure Machine Learning, and storing the assessment in SharePoint."
tags:
- wealth-management
- suitability
- salesforce
- oracle-database
- azure-machine-learning
- sharepoint
capability:
exposes:
- type: mcp
namespace: wealth-suitability
port: 8080
tools:
- name: assess-suitability
description: "Run a suitability assessment for a wealth management client."
inputParameters:
- name: client_id
in: body
type: string
description: "Salesforce client account ID."
- name: product_type
in: body
type: string
description: "Investment product type being assessed."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
account_id: "{{client_id}}"
- name: get-risk-questionnaire
type: call
call: "oracle.get-risk-questionnaire"
with:
client_id: "{{client_id}}"
- name: run-suitability-model
type: call
call: "azure-ml.score-model"
with:
model_name: "suitability-assessor"
input_data: "{\"client_type\":\"{{get-client.Type}}\",\"risk_tolerance\":\"{{get-risk-questionnaire.risk_tolerance}}\",\"investment_horizon\":\"{{get-risk-questionnaire.investment_horizon}}\",\"product_type\":\"{{product_type}}\"}"
- name: store-assessment
type: call
call: "sharepoint.upload-file"
with:
site_id: "wealth_management"
folder_path: "Suitability/{{client_id}}"
file_name: "suitability_{{product_type}}.json"
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: oracle
baseUri: "https://barclays-ords.db.oracle.com/ords/wealth/v1"
authentication:
type: bearer
token: "$secrets.oracle_ords_token"
resources:
- name: risk-questionnaires
path: "/risk-questionnaires/{{client_id}}"
inputParameters:
- name: client_id
in: path
operations:
- name: get-risk-questionnaire
method: GET
- type: http
namespace: azure-ml
baseUri: "https://barclays-ml.westeurope.inference.ml.azure.com"
authentication:
type: bearer
token: "$secrets.azure_ml_token"
resources:
- name: scoring
path: "/score"
operations:
- name: score-model
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
Collects audit events, validates against policies, generates compliance reports, and notifies auditors.
naftiko: "0.5"
info:
label: "Compliance Audit Trail Pipeline"
description: "Collects audit events, validates against policies, generates compliance reports, and notifies auditors."
tags:
- compliance
- elasticsearch
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: compliance_audit_trail_pipeline
description: "Orchestrate compliance audit trail pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-elasticsearch
type: call
call: "elasticsearch.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-elasticsearch.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Compliance Audit Trail Pipeline step 3 complete."
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://barclays-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: elasticsearch-op
method: POST
- type: http
namespace: confluence
baseUri: "https://barclays.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders.
naftiko: "0.5"
info:
label: "Cost Center Budget Tracking Pipeline"
description: "Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders."
tags:
- finance
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: cost_center_budget_tracking
description: "Orchestrate cost center budget tracking pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Cost Center Budget Tracking Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Assesses counterparty credit risk by pulling entity data from Refinitiv, querying exposure from Snowflake, computing risk metrics via Azure Machine Learning, and filing the assessment in SharePoint.
naftiko: "0.5"
info:
label: "Counterparty Risk Assessment"
description: "Assesses counterparty credit risk by pulling entity data from Refinitiv, querying exposure from Snowflake, computing risk metrics via Azure Machine Learning, and filing the assessment in SharePoint."
tags:
- risk-management
- counterparty-risk
- refinitiv
- snowflake
- azure-machine-learning
- sharepoint
capability:
exposes:
- type: mcp
namespace: counterparty-risk
port: 8080
tools:
- name: assess-counterparty
description: "Run a full counterparty risk assessment including exposure analysis and credit scoring."
inputParameters:
- name: counterparty_name
in: body
type: string
description: "Legal name of the counterparty."
- name: counterparty_lei
in: body
type: string
description: "Legal Entity Identifier."
steps:
- name: screen-entity
type: call
call: "refinitiv.screen-entity"
with:
entity_name: "{{counterparty_name}}"
entity_type: "organisation"
lei: "{{counterparty_lei}}"
- name: get-exposure
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT SUM(current_exposure) as total_exposure, SUM(potential_future_exposure) as pfe FROM risk.counterparty_exposure WHERE counterparty_lei = '{{counterparty_lei}}'"
warehouse: "RISK_WH"
database: "RISK_DB"
- name: compute-risk
type: call
call: "azure-ml.score-model"
with:
model_name: "counterparty-risk-model"
input_data: "{\"name\":\"{{counterparty_name}}\",\"lei\":\"{{counterparty_lei}}\",\"screening_result\":\"{{screen-entity.overallResult}}\",\"exposure\":\"{{get-exposure.total_exposure}}\"}"
- name: store-assessment
type: call
call: "sharepoint.upload-file"
with:
site_id: "risk_management"
folder_path: "Counterparty_Assessments/{{counterparty_lei}}"
file_name: "assessment_{{counterparty_lei}}.json"
consumes:
- type: http
namespace: refinitiv
baseUri: "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2"
authentication:
type: bearer
token: "$secrets.refinitiv_api_key"
resources:
- name: screening
path: "/cases/screeningRequest"
operations:
- name: screen-entity
method: POST
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: azure-ml
baseUri: "https://barclays-ml.westeurope.inference.ml.azure.com"
authentication:
type: bearer
token: "$secrets.azure_ml_token"
resources:
- name: scoring
path: "/score"
operations:
- name: score-model
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
Orchestrates credit risk scoring by pulling applicant data from Salesforce, running the credit model on Azure Databricks, storing results in Snowflake, and notifying the credit committee via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Credit Risk Model Scoring"
description: "Orchestrates credit risk scoring by pulling applicant data from Salesforce, running the credit model on Azure Databricks, storing results in Snowflake, and notifying the credit committee via Microsoft Outlook."
tags:
- risk-management
- credit-risk
- salesforce
- azure-databricks
- snowflake
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: credit-risk
port: 8080
tools:
- name: score-credit-risk
description: "Run credit risk model scoring for a loan applicant."
inputParameters:
- name: applicant_id
in: body
type: string
description: "Salesforce contact ID for the applicant."
- name: loan_amount
in: body
type: string
description: "Requested loan amount."
steps:
- name: get-applicant
type: call
call: "salesforce.get-contact"
with:
contact_id: "{{applicant_id}}"
- name: run-model
type: call
call: "databricks.run-job"
with:
job_id: "credit-risk-scorer"
parameters: "{\"name\":\"{{get-applicant.Name}}\",\"income\":\"{{get-applicant.Annual_Income__c}}\",\"loan_amount\":\"{{loan_amount}}\"}"
- name: store-result
type: call
call: "snowflake.execute-query"
with:
statement: "INSERT INTO credit.risk_scores (applicant_id, score, pd, lgd, timestamp) VALUES ('{{applicant_id}}', '{{run-model.score}}', '{{run-model.pd}}', '{{run-model.lgd}}', CURRENT_TIMESTAMP())"
warehouse: "RISK_WH"
database: "RISK_DB"
- name: send-notification
type: call
call: "outlook.send-mail"
with:
to: "credit-committee@barclays.com"
subject: "Credit Risk Score: {{get-applicant.Name}} - {{run-model.score}}"
body: "Applicant: {{get-applicant.Name}}. Loan: {{loan_amount}}. PD: {{run-model.pd}}. LGD: {{run-model.lgd}}. Score: {{run-model.score}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/sobjects/Contact/{{contact_id}}"
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- type: http
namespace: databricks
baseUri: "https://barclays.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/credit-service@barclays.com/sendMail"
operations:
- name: send-mail
method: POST
Collects applicant data, runs credit models, generates decisions, and notifies relationship managers.
naftiko: "0.5"
info:
label: "Credit Scoring Pipeline"
description: "Collects applicant data, runs credit models, generates decisions, and notifies relationship managers."
tags:
- lending
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: credit_scoring_pipeline
description: "Orchestrate credit scoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Credit Scoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM.
naftiko: "0.5"
info:
label: "Customer 360 Data Sync Pipeline"
description: "Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM."
tags:
- data
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: customer_360_data_sync_pipeline
description: "Orchestrate customer 360 data sync pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Customer 360 Data Sync Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards.
naftiko: "0.5"
info:
label: "Data Quality Monitoring Pipeline"
description: "Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards."
tags:
- data-quality
- snowflake
- jira
- grafana
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: data_quality_monitoring_pipeline
description: "Orchestrate data quality monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-grafana
type: call
call: "grafana.create-resource"
with:
channel: "{{notification_channel}}"
text: "Data Quality Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: grafana
baseUri: "https://barclays-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
Orchestrates a service health check by querying Datadog for active alerts, pulling recent error logs from Splunk, and posting a consolidated health summary to Microsoft Teams for the on-call team.
naftiko: "0.5"
info:
label: "Datadog Service Health Dashboard"
description: "Orchestrates a service health check by querying Datadog for active alerts, pulling recent error logs from Splunk, and posting a consolidated health summary to Microsoft Teams for the on-call team."
tags:
- operations
- monitoring
- datadog
- splunk
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: service-health
port: 8080
tools:
- name: check-service-health
description: "Run a consolidated service health check across monitoring and logging systems."
inputParameters:
- name: service_name
in: body
type: string
description: "Service name to check."
steps:
- name: check-alerts
type: call
call: "datadog.search-monitors"
with:
query: "tag:service:{{service_name}} status:alert"
- name: search-errors
type: call
call: "splunk.create-search"
with:
search: "index=applications service={{service_name}} level=ERROR earliest=-1h"
earliest_time: "-1h"
latest_time: "now"
- name: post-summary
type: call
call: "msteams.send-channel-message"
with:
team_id: "platform-engineering"
channel_id: "service-health"
text: "Service Health: {{service_name}}. Active alerts: {{check-alerts.total_count}}. Errors (1h): {{search-errors.result_count}}."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.eu/api/v1"
authentication:
type: apiKey
name: "DD-API-KEY"
in: header
value: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/search"
operations:
- name: search-monitors
method: GET
- type: http
namespace: splunk
baseUri: "https://barclays-splunk.splunkcloud.com:8089"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search-jobs
path: "/services/search/jobs"
operations:
- name: create-search
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Orchestrates a production deployment by triggering the GitHub Actions workflow, running smoke tests via Postman, checking Datadog health monitors, and posting the deployment result to Microsoft Teams.
naftiko: "0.5"
info:
label: "Deployment Pipeline Orchestrator"
description: "Orchestrates a production deployment by triggering the GitHub Actions workflow, running smoke tests via Postman, checking Datadog health monitors, and posting the deployment result to Microsoft Teams."
tags:
- devops
- ci-cd
- github-actions
- postman
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: deployment-pipeline
port: 8080
tools:
- name: deploy-to-production
description: "Trigger a full production deployment with smoke tests, health checks, and team notification."
inputParameters:
- name: repo
in: body
type: string
description: "GitHub repository (owner/repo)."
- name: workflow_id
in: body
type: string
description: "GitHub Actions workflow file name."
- name: ref
in: body
type: string
description: "Git ref to deploy (branch or tag)."
steps:
- name: trigger-deploy
type: call
call: "github.trigger-workflow"
with:
repo: "{{repo}}"
workflow_id: "{{workflow_id}}"
ref: "{{ref}}"
- name: run-smoke-tests
type: call
call: "postman.run-collection"
with:
collection_id: "smoke-tests-production"
environment: "production"
- name: check-health
type: call
call: "datadog.search-monitors"
with:
query: "tag:service:{{repo}} status:alert"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
team_id: "platform-engineering"
channel_id: "deployments"
text: "Deployment of {{repo}}@{{ref}} complete. Smoke tests: {{run-smoke-tests.status}}. Active alerts: {{check-health.total_count}}."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-dispatches
path: "/repos/{{repo}}/actions/workflows/{{workflow_id}}/dispatches"
inputParameters:
- name: repo
in: path
- name: workflow_id
in: path
operations:
- name: trigger-workflow
method: POST
- type: http
namespace: postman
baseUri: "https://api.getpostman.com"
authentication:
type: apiKey
name: "X-Api-Key"
in: header
value: "$secrets.postman_api_key"
resources:
- name: collection-runs
path: "/collections/{{collection_id}}/runs"
inputParameters:
- name: collection_id
in: path
operations:
- name: run-collection
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.eu/api/v1"
authentication:
type: apiKey
name: "DD-API-KEY"
in: header
value: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/search"
operations:
- name: search-monitors
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership.
naftiko: "0.5"
info:
label: "Disaster Recovery Readiness Pipeline"
description: "Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership."
tags:
- disaster-recovery
- servicenow
- confluence
- pagerduty
capability:
exposes:
- type: mcp
namespace: disaster-recovery
port: 8080
tools:
- name: disaster_recovery_readiness_pipeline
description: "Orchestrate disaster recovery readiness pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Disaster Recovery Readiness Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://barclays.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Orchestrates employee offboarding by terminating Workday record, revoking access in SailPoint, deactivating Azure AD account, and creating a ServiceNow decommission ticket.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "Orchestrates employee offboarding by terminating Workday record, revoking access in SailPoint, deactivating Azure AD account, and creating a ServiceNow decommission ticket."
tags:
- hr
- offboarding
- workday
- sailpoint
- azure-active-directory
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: offboard-employee
description: "Orchestrate full employee offboarding across HR, identity, and IT systems."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID."
- name: termination_date
in: body
type: string
description: "Last working date (YYYY-MM-DD)."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: revoke-access
type: call
call: "sailpoint.disable-identity"
with:
identity_id: "{{get-employee.sailpoint_id}}"
- name: disable-ad
type: call
call: "azure-ad.disable-user"
with:
user_principal_name: "{{get-employee.work_email}}"
- name: create-ticket
type: call
call: "servicenow.create-record"
with:
table: "sc_request"
short_description: "Offboarding: {{get-employee.full_name}} - equipment return and access cleanup"
description: "Termination date: {{termination_date}}. Revoke all access and arrange equipment collection."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/barclays"
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: sailpoint
baseUri: "https://barclays.api.identitynow.com/v3"
authentication:
type: bearer
token: "$secrets.sailpoint_token"
resources:
- name: identities
path: "/accounts/{{identity_id}}/disable"
inputParameters:
- name: identity_id
in: path
operations:
- name: disable-identity
method: POST
- type: http
namespace: azure-ad
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_principal_name}}"
inputParameters:
- name: user_principal_name
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: table-records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
naftiko: "0.5"
info:
label: "Employee Onboarding Automation Pipeline"
description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: employee_onboarding_automation
description: "Orchestrate employee onboarding automation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Employee Onboarding Automation Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/barclays"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Orchestrates end-of-day P&L aggregation by pulling trade data from Snowflake, computing PnL via Azure Databricks, updating Bloomberg AIM portfolio valuations, and distributing the PnL report to front office via Microsoft Outlook.
naftiko: "0.5"
info:
label: "End-of-Day PnL Aggregation"
description: "Orchestrates end-of-day P&L aggregation by pulling trade data from Snowflake, computing PnL via Azure Databricks, updating Bloomberg AIM portfolio valuations, and distributing the PnL report to front office via Microsoft Outlook."
tags:
- trading
- pnl
- snowflake
- azure-databricks
- bloomberg-aim
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: eod-pnl
port: 8080
tools:
- name: aggregate-eod-pnl
description: "Run end-of-day PnL aggregation with reporting and distribution."
inputParameters:
- name: trading_date
in: body
type: string
description: "Trading date (YYYY-MM-DD)."
- name: desk
in: body
type: string
description: "Trading desk identifier."
steps:
- name: get-trades
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT * FROM trading.trades WHERE trade_date = '{{trading_date}}' AND desk = '{{desk}}'"
warehouse: "TRADING_WH"
database: "TRADING_DB"
- name: compute-pnl
type: call
call: "databricks.run-job"
with:
job_id: "eod-pnl-calculator"
parameters: "{\"trading_date\":\"{{trading_date}}\",\"desk\":\"{{desk}}\"}"
- name: update-valuations
type: call
call: "bloomberg-aim.update-valuations"
with:
desk: "{{desk}}"
as_of_date: "{{trading_date}}"
realized_pnl: "{{compute-pnl.realized_pnl}}"
unrealized_pnl: "{{compute-pnl.unrealized_pnl}}"
- name: send-report
type: call
call: "outlook.send-mail"
with:
to: "{{desk}}-desk@barclays.com"
subject: "EOD PnL Report - {{desk}} - {{trading_date}}"
body: "Realized PnL: {{compute-pnl.realized_pnl}}. Unrealized PnL: {{compute-pnl.unrealized_pnl}}. Total: {{compute-pnl.total_pnl}}. Trades: {{compute-pnl.trade_count}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: databricks
baseUri: "https://barclays.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: valuations
path: "/valuations"
operations:
- name: update-valuations
method: PUT
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/trading-reports@barclays.com/sendMail"
operations:
- name: send-mail
method: POST
Retrieves company financial summary data from FactSet for a given ticker, returning revenue, EPS, market cap, and P/E ratio for analyst research.
naftiko: "0.5"
info:
label: "FactSet Company Financials Lookup"
description: "Retrieves company financial summary data from FactSet for a given ticker, returning revenue, EPS, market cap, and P/E ratio for analyst research."
tags:
- research
- market-data
- factset
capability:
exposes:
- type: mcp
namespace: research-data
port: 8080
tools:
- name: get-company-financials
description: "Fetch company financial summary from FactSet by ticker."
inputParameters:
- name: ticker
in: body
type: string
description: "FactSet ticker identifier."
call: "factset.get-fundamentals"
with:
ticker: "{{ticker}}"
outputParameters:
- name: revenue
type: string
mapping: "$.data.revenue"
- name: eps
type: string
mapping: "$.data.eps"
- name: market_cap
type: string
mapping: "$.data.marketCap"
- name: pe_ratio
type: string
mapping: "$.data.peRatio"
consumes:
- type: http
namespace: factset
baseUri: "https://api.factset.com/content/factset-fundamentals/v2"
authentication:
type: basic
username: "$secrets.factset_user"
password: "$secrets.factset_password"
resources:
- name: fundamentals
path: "/fundamentals?ids={{ticker}}"
inputParameters:
- name: ticker
in: query
operations:
- name: get-fundamentals
method: GET
Orchestrates a fixed income order by placing the order on Tradeweb, confirming execution, booking in Bloomberg AIM, and publishing the fill event to Apache Kafka for trade reporting.
naftiko: "0.5"
info:
label: "Fixed Income Order Execution"
description: "Orchestrates a fixed income order by placing the order on Tradeweb, confirming execution, booking in Bloomberg AIM, and publishing the fill event to Apache Kafka for trade reporting."
tags:
- trading
- fixed-income
- tradeweb
- bloomberg-aim
- apache-kafka
capability:
exposes:
- type: mcp
namespace: fi-trading
port: 8080
tools:
- name: execute-fi-order
description: "Execute a fixed income order through placement, booking, and event publication."
inputParameters:
- name: security_id
in: body
type: string
description: "Bond ISIN or identifier."
- name: side
in: body
type: string
description: "Order side (buy, sell)."
- name: quantity
in: body
type: string
description: "Face value / quantity."
- name: portfolio_id
in: body
type: string
description: "Target portfolio ID."
steps:
- name: place-order
type: call
call: "tradeweb.create-order"
with:
security_id: "{{security_id}}"
side: "{{side}}"
quantity: "{{quantity}}"
order_type: "limit"
- name: book-trade
type: call
call: "bloomberg-aim.create-order"
with:
portfolio_id: "{{portfolio_id}}"
security: "{{security_id}}"
side: "{{side}}"
quantity: "{{quantity}}"
price: "{{place-order.execution_price}}"
- name: publish-fill
type: call
call: "kafka.produce"
with:
topic: "fi.trades.fills"
key: "{{place-order.trade_id}}"
value: "{\"tradeId\":\"{{place-order.trade_id}}\",\"security\":\"{{security_id}}\",\"side\":\"{{side}}\",\"quantity\":\"{{quantity}}\",\"price\":\"{{place-order.execution_price}}\"}"
consumes:
- type: http
namespace: tradeweb
baseUri: "https://api.tradeweb.com/v1"
authentication:
type: bearer
token: "$secrets.tradeweb_api_key"
resources:
- name: orders
path: "/orders"
operations:
- name: create-order
method: POST
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: orders
path: "/orders"
operations:
- name: create-order
method: POST
- type: http
namespace: kafka
baseUri: "https://barclays-kafka.confluent.cloud/kafka/v3/clusters/barclays-prod"
authentication:
type: basic
username: "$secrets.kafka_api_key"
password: "$secrets.kafka_api_secret"
resources:
- name: records
path: "/topics/{{topic}}/records"
inputParameters:
- name: topic
in: path
operations:
- name: produce
method: POST
When a fraud alert is raised, pulls transaction details from Oracle, screens the customer in Refinitiv, creates a ServiceNow incident, and escalates to the fraud team in Microsoft Teams with all enriched context.
naftiko: "0.5"
info:
label: "Fraud Detection Alert Pipeline"
description: "When a fraud alert is raised, pulls transaction details from Oracle, screens the customer in Refinitiv, creates a ServiceNow incident, and escalates to the fraud team in Microsoft Teams with all enriched context."
tags:
- fraud
- security
- oracle-database
- refinitiv
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fraud-detection
port: 8080
tools:
- name: process-fraud-alert
description: "Process a fraud detection alert with transaction enrichment and escalation."
inputParameters:
- name: alert_id
in: body
type: string
description: "Fraud alert identifier."
- name: transaction_id
in: body
type: string
description: "Suspicious transaction reference."
steps:
- name: get-transaction
type: call
call: "oracle.get-transaction"
with:
transaction_id: "{{transaction_id}}"
- name: screen-customer
type: call
call: "refinitiv.screen-entity"
with:
entity_name: "{{get-transaction.customer_name}}"
entity_type: "individual"
- name: create-incident
type: call
call: "servicenow.create-record"
with:
table: "incident"
short_description: "Fraud Alert {{alert_id}} - {{get-transaction.customer_name}}"
category: "fraud"
priority: "1"
description: "Transaction {{transaction_id}}: {{get-transaction.amount}} {{get-transaction.currency}}. Screening result: {{screen-customer.overallResult}}."
- name: escalate
type: call
call: "msteams.send-channel-message"
with:
team_id: "fraud-operations"
channel_id: "alerts"
text: "FRAUD ALERT {{alert_id}}: {{get-transaction.customer_name}} - {{get-transaction.amount}} {{get-transaction.currency}}. Screening: {{screen-customer.overallResult}}. Incident: {{create-incident.number}}."
consumes:
- type: http
namespace: oracle
baseUri: "https://barclays-ords.db.oracle.com/ords/payments/v1"
authentication:
type: bearer
token: "$secrets.oracle_ords_token"
resources:
- name: transactions
path: "/transactions/{{transaction_id}}"
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-transaction
method: GET
- type: http
namespace: refinitiv
baseUri: "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2"
authentication:
type: bearer
token: "$secrets.refinitiv_api_key"
resources:
- name: screening
path: "/cases/screeningRequest"
operations:
- name: screen-entity
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: table-records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Orchestrates an FX spot trade from execution to confirmation by capturing the trade via Tradeweb, booking it in Bloomberg AIM, sending confirmation via Microsoft Outlook, and streaming the event to Apache Kafka for downstream consumers.
naftiko: "0.5"
info:
label: "FX Trade Lifecycle"
description: "Orchestrates an FX spot trade from execution to confirmation by capturing the trade via Tradeweb, booking it in Bloomberg AIM, sending confirmation via Microsoft Outlook, and streaming the event to Apache Kafka for downstream consumers."
tags:
- trading
- fx
- tradeweb
- bloomberg-aim
- microsoft-outlook
- apache-kafka
capability:
exposes:
- type: mcp
namespace: fx-trading
port: 8080
tools:
- name: process-fx-trade
description: "Process an FX spot trade through booking, confirmation, and event streaming."
inputParameters:
- name: trade_id
in: body
type: string
description: "Tradeweb FX trade identifier."
- name: counterparty_email
in: body
type: string
description: "Counterparty confirmation email address."
steps:
- name: get-trade
type: call
call: "tradeweb.get-trade"
with:
trade_id: "{{trade_id}}"
- name: book-trade
type: call
call: "bloomberg-aim.create-order"
with:
portfolio_id: "{{get-trade.portfolio_id}}"
security: "{{get-trade.currency_pair}}"
side: "{{get-trade.side}}"
quantity: "{{get-trade.notional}}"
price: "{{get-trade.rate}}"
- name: send-confirmation
type: call
call: "outlook.send-mail"
with:
to: "{{counterparty_email}}"
subject: "FX Trade Confirmation - {{trade_id}}"
body: "Trade {{trade_id}}: {{get-trade.side}} {{get-trade.notional}} {{get-trade.currency_pair}} at {{get-trade.rate}}. Settlement: {{get-trade.settlement_date}}."
- name: publish-event
type: call
call: "kafka.produce"
with:
topic: "fx.trades.completed"
key: "{{trade_id}}"
value: "{\"tradeId\":\"{{trade_id}}\",\"pair\":\"{{get-trade.currency_pair}}\",\"rate\":\"{{get-trade.rate}}\",\"notional\":\"{{get-trade.notional}}\"}"
consumes:
- type: http
namespace: tradeweb
baseUri: "https://api.tradeweb.com/v1"
authentication:
type: bearer
token: "$secrets.tradeweb_api_key"
resources:
- name: trades
path: "/trades/{{trade_id}}"
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: orders
path: "/orders"
operations:
- name: create-order
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/fx-confirmations@barclays.com/sendMail"
operations:
- name: send-mail
method: POST
- type: http
namespace: kafka
baseUri: "https://barclays-kafka.confluent.cloud/kafka/v3/clusters/barclays-prod"
authentication:
type: basic
username: "$secrets.kafka_api_key"
password: "$secrets.kafka_api_secret"
resources:
- name: records
path: "/topics/{{topic}}/records"
inputParameters:
- name: topic
in: path
operations:
- name: produce
method: POST
Queries Geneos monitoring for the health status of a managed entity. Returns severity, component name, and active alert count.
naftiko: "0.5"
info:
label: "Geneos System Health Status"
description: "Queries Geneos monitoring for the health status of a managed entity. Returns severity, component name, and active alert count."
tags:
- operations
- monitoring
- geneos
capability:
exposes:
- type: mcp
namespace: system-health
port: 8080
tools:
- name: get-system-health
description: "Check Geneos managed entity health status."
inputParameters:
- name: managed_entity
in: body
type: string
description: "Geneos managed entity name."
call: "geneos.get-entity-status"
with:
entity: "{{managed_entity}}"
outputParameters:
- name: severity
type: string
mapping: "$.entity.severity"
- name: active_alerts
type: string
mapping: "$.entity.activeAlertCount"
consumes:
- type: http
namespace: geneos
baseUri: "https://barclays-geneos.internal.barclays.com/api/v1"
authentication:
type: bearer
token: "$secrets.geneos_token"
resources:
- name: entities
path: "/managedEntities/{{entity}}/status"
inputParameters:
- name: entity
in: path
operations:
- name: get-entity-status
method: GET
Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops.
naftiko: "0.5"
info:
label: "Infrastructure Drift Detection Pipeline"
description: "Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops."
tags:
- devops
- github
- jira
- slack
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: infrastructure_drift_detection
description: "Orchestrate infrastructure drift detection pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-github
type: call
call: "github.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-github.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Infrastructure Drift Detection Pipeline step 3 complete."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: github-op
method: POST
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Orchestrates an IRS trade by capturing terms from Tradeweb, booking in Bloomberg AIM, calculating initial margin via Azure Machine Learning, and dispatching the confirmation to the counterparty via IBM MQ.
naftiko: "0.5"
info:
label: "Interest Rate Swap Lifecycle"
description: "Orchestrates an IRS trade by capturing terms from Tradeweb, booking in Bloomberg AIM, calculating initial margin via Azure Machine Learning, and dispatching the confirmation to the counterparty via IBM MQ."
tags:
- trading
- derivatives
- tradeweb
- bloomberg-aim
- azure-machine-learning
- ibm-mq
capability:
exposes:
- type: mcp
namespace: derivatives-trading
port: 8080
tools:
- name: process-irs-trade
description: "Process an interest rate swap from execution through margin calculation and confirmation."
inputParameters:
- name: trade_id
in: body
type: string
description: "Tradeweb IRS trade identifier."
steps:
- name: get-trade
type: call
call: "tradeweb.get-trade"
with:
trade_id: "{{trade_id}}"
- name: book-swap
type: call
call: "bloomberg-aim.create-order"
with:
portfolio_id: "{{get-trade.portfolio_id}}"
security: "{{get-trade.swap_identifier}}"
side: "{{get-trade.side}}"
quantity: "{{get-trade.notional}}"
price: "{{get-trade.fixed_rate}}"
- name: calc-margin
type: call
call: "azure-ml.score-model"
with:
model_name: "initial-margin-calculator"
input_data: "{\"notional\":\"{{get-trade.notional}}\",\"fixed_rate\":\"{{get-trade.fixed_rate}}\",\"tenor\":\"{{get-trade.tenor}}\",\"currency\":\"{{get-trade.currency}}\"}"
- name: send-confirmation
type: call
call: "ibmmq.send-message"
with:
queue: "DERIVATIVES.CONFIRMATIONS.OUT"
body: "{\"tradeId\":\"{{trade_id}}\",\"type\":\"IRS\",\"notional\":\"{{get-trade.notional}}\",\"fixedRate\":\"{{get-trade.fixed_rate}}\",\"floatingIndex\":\"{{get-trade.floating_index}}\",\"initialMargin\":\"{{calc-margin.margin_amount}}\"}"
consumes:
- type: http
namespace: tradeweb
baseUri: "https://api.tradeweb.com/v1"
authentication:
type: bearer
token: "$secrets.tradeweb_api_key"
resources:
- name: trades
path: "/trades/{{trade_id}}"
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: orders
path: "/orders"
operations:
- name: create-order
method: POST
- type: http
namespace: azure-ml
baseUri: "https://barclays-ml.westeurope.inference.ml.azure.com"
authentication:
type: bearer
token: "$secrets.azure_ml_token"
resources:
- name: scoring
path: "/score"
operations:
- name: score-model
method: POST
- type: http
namespace: ibmmq
baseUri: "https://barclays-mq.ibm.com/ibmmq/rest/v2"
authentication:
type: basic
username: "$secrets.ibmmq_user"
password: "$secrets.ibmmq_password"
resources:
- name: messages
path: "/messaging/qmgr/BARCMQ01/queue/{{queue}}/message"
inputParameters:
- name: queue
in: path
operations:
- name: send-message
method: POST
Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB.
naftiko: "0.5"
info:
label: "IT Asset Lifecycle Pipeline"
description: "Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB."
tags:
- operations
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: it_asset_lifecycle_pipeline
description: "Orchestrate it asset lifecycle pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "IT Asset Lifecycle Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves the latest build status for a Jenkins job. Returns build number, result, duration, and timestamp.
naftiko: "0.5"
info:
label: "Jenkins Build Status Check"
description: "Retrieves the latest build status for a Jenkins job. Returns build number, result, duration, and timestamp."
tags:
- devops
- ci-cd
- jenkins
capability:
exposes:
- type: mcp
namespace: ci-monitoring
port: 8080
tools:
- name: get-build-status
description: "Check the latest Jenkins build status for a job."
inputParameters:
- name: job_name
in: body
type: string
description: "Jenkins job name (can include folder path)."
call: "jenkins.get-last-build"
with:
job_name: "{{job_name}}"
outputParameters:
- name: build_number
type: string
mapping: "$.number"
- name: result
type: string
mapping: "$.result"
- name: duration
type: string
mapping: "$.duration"
consumes:
- type: http
namespace: jenkins
baseUri: "https://jenkins.barclays.com"
authentication:
type: basic
username: "$secrets.jenkins_user"
password: "$secrets.jenkins_api_token"
resources:
- name: builds
path: "/job/{{job_name}}/lastBuild/api/json"
inputParameters:
- name: job_name
in: path
operations:
- name: get-last-build
method: GET
Retrieves a Jira issue from the compliance project by key, returning summary, status, assignee, and due date.
naftiko: "0.5"
info:
label: "Jira Compliance Task Lookup"
description: "Retrieves a Jira issue from the compliance project by key, returning summary, status, assignee, and due date."
tags:
- compliance
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: compliance-tasks
port: 8080
tools:
- name: get-compliance-task
description: "Look up a Jira compliance task by issue key."
inputParameters:
- name: issue_key
in: body
type: string
description: "Jira issue key (e.g. COMP-1234)."
call: "jira.get-issue"
with:
issue_key: "{{issue_key}}"
outputParameters:
- name: summary
type: string
mapping: "$.fields.summary"
- name: status
type: string
mapping: "$.fields.status.name"
- name: assignee
type: string
mapping: "$.fields.assignee.displayName"
- name: due_date
type: string
mapping: "$.fields.duedate"
consumes:
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue/{{issue_key}}"
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Orchestrates publishing enriched trade events to Apache Kafka by pulling trade details from Tradeweb, enriching with Bloomberg market data, and producing the composite event to the trade events topic.
naftiko: "0.5"
info:
label: "Kafka Trade Event Stream Publishing"
description: "Orchestrates publishing enriched trade events to Apache Kafka by pulling trade details from Tradeweb, enriching with Bloomberg market data, and producing the composite event to the trade events topic."
tags:
- trading
- event-streaming
- tradeweb
- bloomberg-enterprise-data
- apache-kafka
capability:
exposes:
- type: mcp
namespace: trade-events
port: 8080
tools:
- name: publish-enriched-trade-event
description: "Enrich a trade with market data and publish to the Kafka trade events stream."
inputParameters:
- name: trade_id
in: body
type: string
description: "Tradeweb trade identifier."
steps:
- name: get-trade
type: call
call: "tradeweb.get-trade"
with:
trade_id: "{{trade_id}}"
- name: get-market-data
type: call
call: "bloomberg.get-security"
with:
ticker: "{{get-trade.security}}"
- name: publish-event
type: call
call: "kafka.produce"
with:
topic: "trades.enriched"
key: "{{trade_id}}"
value: "{\"tradeId\":\"{{trade_id}}\",\"security\":\"{{get-trade.security}}\",\"notional\":\"{{get-trade.notional}}\",\"lastPrice\":\"{{get-market-data.lastPrice}}\",\"volume\":\"{{get-market-data.volume}}\"}"
consumes:
- type: http
namespace: tradeweb
baseUri: "https://api.tradeweb.com/v1"
authentication:
type: bearer
token: "$secrets.tradeweb_api_key"
resources:
- name: trades
path: "/trades/{{trade_id}}"
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: bloomberg
baseUri: "https://bql.data.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_api_key"
resources:
- name: securities
path: "/data/{{ticker}}"
inputParameters:
- name: ticker
in: path
operations:
- name: get-security
method: GET
- type: http
namespace: kafka
baseUri: "https://barclays-kafka.confluent.cloud/kafka/v3/clusters/barclays-prod"
authentication:
type: basic
username: "$secrets.kafka_api_key"
password: "$secrets.kafka_api_secret"
resources:
- name: records
path: "/topics/{{topic}}/records"
inputParameters:
- name: topic
in: path
operations:
- name: produce
method: POST
Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports.
naftiko: "0.5"
info:
label: "Knowledge Base Freshness Pipeline"
description: "Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports."
tags:
- knowledge
- confluence
- jira
- slack
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: knowledge_base_freshness_pipeline
description: "Orchestrate knowledge base freshness pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-confluence
type: call
call: "confluence.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-confluence.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Knowledge Base Freshness Pipeline step 3 complete."
consumes:
- type: http
namespace: confluence
baseUri: "https://barclays.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Orchestrates customer identity verification during onboarding by pulling customer data from Salesforce, running sanctions screening via Refinitiv World-Check, and logging the verification result in ServiceNow for audit trail.
naftiko: "0.5"
info:
label: "KYC Customer Identity Verification"
description: "Orchestrates customer identity verification during onboarding by pulling customer data from Salesforce, running sanctions screening via Refinitiv World-Check, and logging the verification result in ServiceNow for audit trail."
tags:
- kyc
- compliance
- salesforce
- refinitiv
- servicenow
capability:
exposes:
- type: mcp
namespace: kyc-verification
port: 8080
tools:
- name: verify-customer-identity
description: "Run full KYC identity verification for a customer, including sanctions screening and audit logging."
inputParameters:
- name: customer_id
in: body
type: string
description: "The Salesforce customer account ID."
steps:
- name: fetch-customer
type: call
call: "salesforce.get-account"
with:
account_id: "{{customer_id}}"
- name: screen-sanctions
type: call
call: "refinitiv.screen-entity"
with:
entity_name: "{{fetch-customer.Name}}"
entity_type: "individual"
date_of_birth: "{{fetch-customer.PersonBirthdate}}"
- name: log-result
type: call
call: "servicenow.create-record"
with:
table: "u_kyc_verification"
short_description: "KYC screening for {{fetch-customer.Name}}"
result: "{{screen-sanctions.overallResult}}"
risk_score: "{{screen-sanctions.riskScore}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: refinitiv
baseUri: "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2"
authentication:
type: bearer
token: "$secrets.refinitiv_api_key"
resources:
- name: screening
path: "/cases/screeningRequest"
operations:
- name: screen-entity
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: table-records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Orchestrates daily LCR monitoring by pulling HQLA positions from Snowflake, net cash outflows from Oracle, computing the ratio via Azure Databricks, and alerting treasury via Microsoft Teams if below threshold.
naftiko: "0.5"
info:
label: "Liquidity Coverage Ratio Monitoring"
description: "Orchestrates daily LCR monitoring by pulling HQLA positions from Snowflake, net cash outflows from Oracle, computing the ratio via Azure Databricks, and alerting treasury via Microsoft Teams if below threshold."
tags:
- risk-management
- liquidity
- snowflake
- oracle-database
- azure-databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: liquidity-risk
port: 8080
tools:
- name: monitor-lcr
description: "Compute and monitor the Liquidity Coverage Ratio with threshold alerting."
inputParameters:
- name: reporting_date
in: body
type: string
description: "Reporting date (YYYY-MM-DD)."
- name: threshold_pct
in: body
type: string
description: "Alert threshold percentage (e.g. 100)."
steps:
- name: get-hqla
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT SUM(market_value) as hqla_total FROM treasury.hqla_positions WHERE as_of_date = '{{reporting_date}}'"
warehouse: "TREASURY_WH"
database: "TREASURY_DB"
- name: get-outflows
type: call
call: "oracle.get-cash-outflows"
with:
reporting_date: "{{reporting_date}}"
- name: compute-lcr
type: call
call: "databricks.run-job"
with:
job_id: "lcr-calculator"
parameters: "{\"hqla\":\"{{get-hqla.hqla_total}}\",\"net_outflows\":\"{{get-outflows.net_outflow_total}}\",\"threshold\":\"{{threshold_pct}}\"}"
- name: alert-treasury
type: call
call: "msteams.send-channel-message"
with:
team_id: "treasury"
channel_id: "liquidity-monitoring"
text: "LCR Report {{reporting_date}}: HQLA {{get-hqla.hqla_total}}, Net Outflows {{get-outflows.net_outflow_total}}, LCR {{compute-lcr.lcr_ratio}}%. Threshold: {{threshold_pct}}%. Status: {{compute-lcr.breach_status}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: oracle
baseUri: "https://barclays-ords.db.oracle.com/ords/treasury/v1"
authentication:
type: bearer
token: "$secrets.oracle_ords_token"
resources:
- name: cash-outflows
path: "/cash-outflows/{{reporting_date}}"
inputParameters:
- name: reporting_date
in: path
operations:
- name: get-cash-outflows
method: GET
- type: http
namespace: databricks
baseUri: "https://barclays.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Orchestrates a new loan application by creating the application in Salesforce, running credit checks via Refinitiv, generating risk documents in SharePoint, and notifying the lending team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Loan Origination Workflow"
description: "Orchestrates a new loan application by creating the application in Salesforce, running credit checks via Refinitiv, generating risk documents in SharePoint, and notifying the lending team via Microsoft Teams."
tags:
- lending
- loan-origination
- salesforce
- refinitiv
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lending-origination
port: 8080
tools:
- name: initiate-loan-application
description: "Create and process a new loan application through credit check, document provisioning, and team notification."
inputParameters:
- name: applicant_name
in: body
type: string
description: "Full name of the loan applicant."
- name: loan_amount
in: body
type: string
description: "Requested loan amount."
- name: loan_currency
in: body
type: string
description: "Currency code (e.g. GBP, USD)."
- name: loan_type
in: body
type: string
description: "Type of loan (mortgage, corporate, personal)."
steps:
- name: create-application
type: call
call: "salesforce.create-opportunity"
with:
name: "Loan - {{applicant_name}} - {{loan_amount}} {{loan_currency}}"
stage: "Application Received"
amount: "{{loan_amount}}"
type: "{{loan_type}}"
- name: credit-check
type: call
call: "refinitiv.screen-entity"
with:
entity_name: "{{applicant_name}}"
entity_type: "individual"
check_type: "credit"
- name: provision-docs
type: call
call: "sharepoint.create-folder"
with:
site_id: "lending_applications"
folder_path: "Applications/{{create-application.id}}_{{applicant_name}}"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
team_id: "lending-approvals"
channel_id: "new-applications"
text: "New {{loan_type}} loan application: {{applicant_name}} for {{loan_amount}} {{loan_currency}}. Credit score: {{credit-check.creditScore}}. Docs: {{provision-docs.url}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: create-opportunity
method: POST
- type: http
namespace: refinitiv
baseUri: "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2"
authentication:
type: bearer
token: "$secrets.refinitiv_api_key"
resources:
- name: screening
path: "/cases/screeningRequest"
operations:
- name: screen-entity
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Orchestrates margin call processing by computing margin requirements from Snowflake, generating the call notice in SharePoint, dispatching to the counterparty via IBM MQ, and creating a follow-up task in Jira for collateral management.
naftiko: "0.5"
info:
label: "Margin Call Processing"
description: "Orchestrates margin call processing by computing margin requirements from Snowflake, generating the call notice in SharePoint, dispatching to the counterparty via IBM MQ, and creating a follow-up task in Jira for collateral management."
tags:
- trading
- margin-calls
- snowflake
- sharepoint
- ibm-mq
- jira
capability:
exposes:
- type: mcp
namespace: margin-management
port: 8080
tools:
- name: process-margin-call
description: "Compute margin requirements, generate notice, dispatch to counterparty, and track follow-up."
inputParameters:
- name: counterparty_lei
in: body
type: string
description: "Counterparty Legal Entity Identifier."
- name: valuation_date
in: body
type: string
description: "Valuation date (YYYY-MM-DD)."
steps:
- name: compute-margin
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT counterparty_lei, SUM(mtm_value) as portfolio_mtm, SUM(collateral_value) as collateral_held, SUM(mtm_value) - SUM(collateral_value) as margin_shortfall FROM risk.counterparty_positions WHERE counterparty_lei = '{{counterparty_lei}}' AND valuation_date = '{{valuation_date}}' GROUP BY counterparty_lei"
warehouse: "RISK_WH"
database: "RISK_DB"
- name: generate-notice
type: call
call: "sharepoint.upload-file"
with:
site_id: "collateral_management"
folder_path: "Margin_Calls/{{counterparty_lei}}/{{valuation_date}}"
file_name: "margin_call_{{counterparty_lei}}_{{valuation_date}}.json"
- name: dispatch-notice
type: call
call: "ibmmq.send-message"
with:
queue: "MARGIN.CALLS.OUT"
body: "{\"lei\":\"{{counterparty_lei}}\",\"valuationDate\":\"{{valuation_date}}\",\"shortfall\":\"{{compute-margin.margin_shortfall}}\",\"portfolioMtm\":\"{{compute-margin.portfolio_mtm}}\"}"
- name: create-follow-up
type: call
call: "jira.create-issue"
with:
project: "COLL"
issue_type: "Task"
summary: "Margin Call: {{counterparty_lei}} - shortfall {{compute-margin.margin_shortfall}}"
description: "Margin call dispatched for {{valuation_date}}. Portfolio MTM: {{compute-margin.portfolio_mtm}}. Collateral held: {{compute-margin.collateral_held}}. Shortfall: {{compute-margin.margin_shortfall}}."
priority: "High"
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: ibmmq
baseUri: "https://barclays-mq.ibm.com/ibmmq/rest/v2"
authentication:
type: basic
username: "$secrets.ibmmq_user"
password: "$secrets.ibmmq_password"
resources:
- name: messages
path: "/messaging/qmgr/BARCMQ01/queue/{{queue}}/message"
inputParameters:
- name: queue
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Monitors portfolio exposures, calculates VaR, detects limit breaches, and alerts risk management.
naftiko: "0.5"
info:
label: "Market Risk Monitoring Pipeline"
description: "Monitors portfolio exposures, calculates VaR, detects limit breaches, and alerts risk management."
tags:
- risk
- snowflake
- grafana
- pagerduty
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: market_risk_monitoring_pipeline
description: "Orchestrate market risk monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-grafana
type: call
call: "grafana.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Market Risk Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: grafana
baseUri: "https://barclays-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Orchestrates a Value-at-Risk calculation by pulling positions from Bloomberg AIM, computing VaR via Azure Databricks, storing results in Snowflake, and sending a breach alert to Microsoft Teams if the limit is exceeded.
naftiko: "0.5"
info:
label: "Market Risk VaR Calculation Pipeline"
description: "Orchestrates a Value-at-Risk calculation by pulling positions from Bloomberg AIM, computing VaR via Azure Databricks, storing results in Snowflake, and sending a breach alert to Microsoft Teams if the limit is exceeded."
tags:
- risk-management
- var
- bloomberg-aim
- azure-databricks
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: market-risk
port: 8080
tools:
- name: calculate-var
description: "Run Value-at-Risk calculation for a trading book and alert on breaches."
inputParameters:
- name: book_id
in: body
type: string
description: "Trading book identifier."
- name: confidence_level
in: body
type: string
description: "VaR confidence level (e.g. 99, 95)."
- name: horizon_days
in: body
type: string
description: "Holding period in days."
steps:
- name: get-positions
type: call
call: "bloomberg-aim.get-positions"
with:
portfolio_id: "{{book_id}}"
- name: compute-var
type: call
call: "databricks.run-job"
with:
job_id: "var-calculator"
parameters: "{\"positions\":{{get-positions.holdings}},\"confidence\":\"{{confidence_level}}\",\"horizon\":\"{{horizon_days}}\"}"
- name: store-result
type: call
call: "snowflake.execute-query"
with:
statement: "INSERT INTO risk.var_results (book_id, var_amount, confidence, horizon, calc_date) VALUES ('{{book_id}}', '{{compute-var.var_amount}}', '{{confidence_level}}', '{{horizon_days}}', CURRENT_DATE())"
warehouse: "RISK_WH"
database: "RISK_DB"
- name: alert-breach
type: call
call: "msteams.send-channel-message"
with:
team_id: "market-risk"
channel_id: "var-alerts"
text: "VaR Report - Book {{book_id}}: {{compute-var.var_amount}} ({{confidence_level}}% / {{horizon_days}}d). Limit utilization: {{compute-var.limit_utilization}}%."
consumes:
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: positions
path: "/portfolios/{{portfolio_id}}/positions"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: databricks
baseUri: "https://barclays.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Checks the status of a Mastercard payment transaction by reference ID. Returns authorization status, amount, and settlement state.
naftiko: "0.5"
info:
label: "Mastercard Payment Gateway Status"
description: "Checks the status of a Mastercard payment transaction by reference ID. Returns authorization status, amount, and settlement state."
tags:
- payments
- card-processing
- mastercard
capability:
exposes:
- type: mcp
namespace: card-payments
port: 8080
tools:
- name: get-payment-status
description: "Check a Mastercard payment transaction status."
inputParameters:
- name: transaction_ref
in: body
type: string
description: "Mastercard transaction reference."
call: "mastercard.get-transaction"
with:
transaction_ref: "{{transaction_ref}}"
outputParameters:
- name: auth_status
type: string
mapping: "$.transaction.authorizationStatus"
- name: amount
type: string
mapping: "$.transaction.amount"
- name: settlement_status
type: string
mapping: "$.transaction.settlementStatus"
consumes:
- type: http
namespace: mastercard
baseUri: "https://sandbox.api.mastercard.com/mcob/v1"
authentication:
type: oauth2
token: "$secrets.mastercard_oauth_token"
resources:
- name: transactions
path: "/transactions/{{transaction_ref}}"
inputParameters:
- name: transaction_ref
in: path
operations:
- name: get-transaction
method: GET
Orchestrates a threat investigation in Microsoft Sentinel by querying for incidents, enriching with SailPoint identity data, creating a ServiceNow security incident, and alerting the SOC team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Microsoft Sentinel Threat Investigation"
description: "Orchestrates a threat investigation in Microsoft Sentinel by querying for incidents, enriching with SailPoint identity data, creating a ServiceNow security incident, and alerting the SOC team via Microsoft Teams."
tags:
- security
- threat-detection
- microsoft-sentinel
- sailpoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: threat-investigation
port: 8080
tools:
- name: investigate-threat
description: "Investigate a Microsoft Sentinel security incident with identity enrichment and escalation."
inputParameters:
- name: incident_id
in: body
type: string
description: "Microsoft Sentinel incident ID."
steps:
- name: get-incident
type: call
call: "sentinel.get-incident"
with:
incident_id: "{{incident_id}}"
- name: get-identity
type: call
call: "sailpoint.get-identity"
with:
identity_name: "{{get-incident.owner.assignedTo}}"
- name: create-security-incident
type: call
call: "servicenow.create-record"
with:
table: "sn_si_incident"
short_description: "Sentinel Alert: {{get-incident.properties.title}}"
severity: "{{get-incident.properties.severity}}"
description: "Sentinel incident {{incident_id}}: {{get-incident.properties.description}}. Affected user: {{get-identity.displayName}} ({{get-identity.department}})."
- name: alert-soc
type: call
call: "msteams.send-channel-message"
with:
team_id: "security-operations"
channel_id: "incidents"
text: "Sentinel Incident {{incident_id}}: {{get-incident.properties.title}}. Severity: {{get-incident.properties.severity}}. ServiceNow: {{create-security-incident.number}}."
consumes:
- type: http
namespace: sentinel
baseUri: "https://management.azure.com/subscriptions/barclays-sub/resourceGroups/security-rg/providers/Microsoft.SecurityInsights"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: incidents
path: "/incidents/{{incident_id}}?api-version=2023-11-01"
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: sailpoint
baseUri: "https://barclays.api.identitynow.com/v3"
authentication:
type: bearer
token: "$secrets.sailpoint_token"
resources:
- name: identities
path: "/search/identities?query=name:{{identity_name}}"
inputParameters:
- name: identity_name
in: query
operations:
- name: get-identity
method: GET
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: table-records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Orchestrates operational risk event recording by creating the event in ServiceNow, storing supporting evidence in Box, computing the risk impact via Azure Databricks, and notifying the operational risk committee via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Operational Risk Event Capture"
description: "Orchestrates operational risk event recording by creating the event in ServiceNow, storing supporting evidence in Box, computing the risk impact via Azure Databricks, and notifying the operational risk committee via Microsoft Outlook."
tags:
- risk-management
- operational-risk
- servicenow
- box
- azure-databricks
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: oprisk-management
port: 8080
tools:
- name: record-oprisk-event
description: "Record an operational risk event with evidence collection, impact assessment, and committee notification."
inputParameters:
- name: event_description
in: body
type: string
description: "Description of the operational risk event."
- name: business_unit
in: body
type: string
description: "Affected business unit."
- name: estimated_loss
in: body
type: string
description: "Estimated financial loss."
- name: currency
in: body
type: string
description: "Loss currency."
steps:
- name: create-event
type: call
call: "servicenow.create-record"
with:
table: "u_oprisk_events"
short_description: "OpRisk Event: {{business_unit}} - {{estimated_loss}} {{currency}}"
description: "{{event_description}}"
category: "operational_risk"
- name: create-evidence-folder
type: call
call: "box.create-folder"
with:
parent_id: "oprisk_evidence"
name: "Event_{{create-event.sys_id}}"
- name: assess-impact
type: call
call: "databricks.run-job"
with:
job_id: "oprisk-impact-assessor"
parameters: "{\"estimated_loss\":\"{{estimated_loss}}\",\"currency\":\"{{currency}}\",\"business_unit\":\"{{business_unit}}\"}"
- name: notify-committee
type: call
call: "outlook.send-mail"
with:
to: "oprisk-committee@barclays.com"
subject: "OpRisk Event: {{business_unit}} - {{estimated_loss}} {{currency}}"
body: "Event: {{event_description}}. Estimated loss: {{estimated_loss}} {{currency}}. Risk category: {{assess-impact.risk_category}}. Capital impact: {{assess-impact.capital_impact}}. ServiceNow: {{create-event.number}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: table-records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: folders
path: "/folders"
operations:
- name: create-folder
method: POST
- type: http
namespace: databricks
baseUri: "https://barclays.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/oprisk-reporting@barclays.com/sendMail"
operations:
- name: send-mail
method: POST
Orchestrates an international payment by validating the beneficiary in Oracle Database, formatting a SWIFT MT103 message, dispatching via IBM MQ, and logging the payment event to Splunk for monitoring.
naftiko: "0.5"
info:
label: "Payment Processing SWIFT Dispatch"
description: "Orchestrates an international payment by validating the beneficiary in Oracle Database, formatting a SWIFT MT103 message, dispatching via IBM MQ, and logging the payment event to Splunk for monitoring."
tags:
- payments
- swift
- oracle-database
- ibm-mq
- splunk
capability:
exposes:
- type: mcp
namespace: payments-processing
port: 8080
tools:
- name: dispatch-swift-payment
description: "Validate, format, and dispatch a SWIFT MT103 international payment with audit logging."
inputParameters:
- name: payment_ref
in: body
type: string
description: "Internal payment reference."
- name: beneficiary_account
in: body
type: string
description: "Beneficiary account number."
- name: amount
in: body
type: string
description: "Payment amount."
- name: currency
in: body
type: string
description: "ISO currency code."
- name: beneficiary_bic
in: body
type: string
description: "Beneficiary bank SWIFT BIC."
steps:
- name: validate-beneficiary
type: call
call: "oracle.get-beneficiary"
with:
account_number: "{{beneficiary_account}}"
- name: send-swift
type: call
call: "ibmmq.send-message"
with:
queue: "SWIFT.MT103.OUT"
body: "{\"ref\":\"{{payment_ref}}\",\"beneficiary\":\"{{validate-beneficiary.account_holder}}\",\"bic\":\"{{beneficiary_bic}}\",\"amount\":\"{{amount}}\",\"currency\":\"{{currency}}\"}"
- name: log-event
type: call
call: "splunk.send-event"
with:
index: "payments"
source: "swift-gateway"
event: "{\"payment_ref\":\"{{payment_ref}}\",\"status\":\"dispatched\",\"amount\":\"{{amount}}\",\"currency\":\"{{currency}}\"}"
consumes:
- type: http
namespace: oracle
baseUri: "https://barclays-ords.db.oracle.com/ords/payments/v1"
authentication:
type: bearer
token: "$secrets.oracle_ords_token"
resources:
- name: beneficiaries
path: "/beneficiaries/{{account_number}}"
inputParameters:
- name: account_number
in: path
operations:
- name: get-beneficiary
method: GET
- type: http
namespace: ibmmq
baseUri: "https://barclays-mq.ibm.com/ibmmq/rest/v2"
authentication:
type: basic
username: "$secrets.ibmmq_user"
password: "$secrets.ibmmq_password"
resources:
- name: messages
path: "/messaging/qmgr/BARCMQ01/queue/{{queue}}/message"
inputParameters:
- name: queue
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: splunk
baseUri: "https://barclays-splunk.splunkcloud.com:8088"
authentication:
type: bearer
token: "$secrets.splunk_hec_token"
resources:
- name: events
path: "/services/collector/event"
operations:
- name: send-event
method: POST
Orchestrates Politically Exposed Persons screening by pulling client data from Salesforce, running PEP screening in Refinitiv, storing the result in Oracle, and creating a compliance review task in Jira if flagged.
naftiko: "0.5"
info:
label: "PEP Screening Workflow"
description: "Orchestrates Politically Exposed Persons screening by pulling client data from Salesforce, running PEP screening in Refinitiv, storing the result in Oracle, and creating a compliance review task in Jira if flagged."
tags:
- compliance
- pep-screening
- salesforce
- refinitiv
- oracle-database
- jira
capability:
exposes:
- type: mcp
namespace: pep-screening
port: 8080
tools:
- name: screen-pep
description: "Run PEP screening for a client with automated escalation on positive matches."
inputParameters:
- name: client_id
in: body
type: string
description: "Salesforce client account ID."
steps:
- name: get-client
type: call
call: "salesforce.get-account"
with:
account_id: "{{client_id}}"
- name: run-screening
type: call
call: "refinitiv.screen-entity"
with:
entity_name: "{{get-client.Name}}"
entity_type: "individual"
screening_type: "pep"
- name: store-result
type: call
call: "oracle.insert-screening-result"
with:
client_id: "{{client_id}}"
screening_type: "PEP"
result: "{{run-screening.overallResult}}"
match_count: "{{run-screening.matchCount}}"
- name: create-review
type: call
call: "jira.create-issue"
with:
project: "COMP"
issue_type: "Review"
summary: "PEP Screening Review: {{get-client.Name}} - {{run-screening.overallResult}}"
description: "Client: {{get-client.Name}}. PEP matches: {{run-screening.matchCount}}. Result: {{run-screening.overallResult}}."
priority: "High"
consumes:
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: refinitiv
baseUri: "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2"
authentication:
type: bearer
token: "$secrets.refinitiv_api_key"
resources:
- name: screening
path: "/cases/screeningRequest"
operations:
- name: screen-entity
method: POST
- type: http
namespace: oracle
baseUri: "https://barclays-ords.db.oracle.com/ords/compliance/v1"
authentication:
type: bearer
token: "$secrets.oracle_ords_token"
resources:
- name: screening-results
path: "/screening-results"
operations:
- name: insert-screening-result
method: POST
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Initiates review cycles, collects feedback, aggregates scores, and distributes to managers.
naftiko: "0.5"
info:
label: "Performance Review Cycle Pipeline"
description: "Initiates review cycles, collects feedback, aggregates scores, and distributes to managers."
tags:
- hr
- workday
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: performance_review_cycle_pipeline
description: "Orchestrate performance review cycle pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Performance Review Cycle Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/barclays"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: confluence
baseUri: "https://barclays.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Triggers a Power BI dataset refresh for a specified workspace and dataset. Used by analysts to ensure dashboards display the latest data.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for a specified workspace and dataset. Used by analysts to ensure dashboards display the latest data."
tags:
- analytics
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics-reporting
port: 8080
tools:
- name: refresh-dashboard
description: "Trigger a Power BI dataset refresh."
inputParameters:
- name: workspace_id
in: body
type: string
description: "Power BI workspace (group) ID."
- name: dataset_id
in: body
type: string
description: "Power BI dataset ID."
call: "powerbi.refresh-dataset"
with:
group_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/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Orchestrates a real-time payment through the Faster Payments network by validating the payee in Avaloq, debiting the account, dispatching to the payments gateway via Amazon SQS, and logging to Splunk.
naftiko: "0.5"
info:
label: "Real-Time Payments Processing"
description: "Orchestrates a real-time payment through the Faster Payments network by validating the payee in Avaloq, debiting the account, dispatching to the payments gateway via Amazon SQS, and logging to Splunk."
tags:
- payments
- real-time-payments
- avaloq
- amazon-sqs
- splunk
capability:
exposes:
- type: mcp
namespace: rtp-processing
port: 8080
tools:
- name: process-faster-payment
description: "Process a Faster Payment through validation, debit, dispatch, and audit logging."
inputParameters:
- name: payer_account
in: body
type: string
description: "Payer account number."
- name: payee_account
in: body
type: string
description: "Payee account number."
- name: payee_sort_code
in: body
type: string
description: "Payee sort code."
- name: amount
in: body
type: string
description: "Payment amount in GBP."
- name: reference
in: body
type: string
description: "Payment reference."
steps:
- name: validate-payee
type: call
call: "avaloq.validate-account"
with:
account_number: "{{payee_account}}"
sort_code: "{{payee_sort_code}}"
- name: debit-account
type: call
call: "avaloq.create-debit"
with:
account_number: "{{payer_account}}"
amount: "{{amount}}"
currency: "GBP"
reference: "{{reference}}"
- name: dispatch-payment
type: call
call: "sqs.send-message"
with:
queue_url: "https://sqs.eu-west-2.amazonaws.com/barclays/faster-payments-outbound"
message_body: "{\"payerAccount\":\"{{payer_account}}\",\"payeeAccount\":\"{{payee_account}}\",\"sortCode\":\"{{payee_sort_code}}\",\"amount\":\"{{amount}}\",\"reference\":\"{{reference}}\",\"debitRef\":\"{{debit-account.transaction_id}}\"}"
- name: audit-log
type: call
call: "splunk.send-event"
with:
index: "payments"
source: "faster-payments"
event: "{\"type\":\"FPS\",\"payer\":\"{{payer_account}}\",\"payee\":\"{{payee_account}}\",\"amount\":\"{{amount}}\",\"status\":\"dispatched\"}"
consumes:
- type: http
namespace: avaloq
baseUri: "https://barclays-avaloq.internal.barclays.com/api/v1"
authentication:
type: bearer
token: "$secrets.avaloq_token"
resources:
- name: account-validation
path: "/accounts/{{account_number}}/validate"
inputParameters:
- name: account_number
in: path
operations:
- name: validate-account
method: GET
- name: debits
path: "/accounts/{{account_number}}/debits"
inputParameters:
- name: account_number
in: path
operations:
- name: create-debit
method: POST
- type: http
namespace: sqs
baseUri: "https://sqs.eu-west-2.amazonaws.com"
authentication:
type: aws-sigv4
region: "eu-west-2"
access_key: "$secrets.aws_access_key"
secret_key: "$secrets.aws_secret_key"
resources:
- name: messages
path: "/barclays/faster-payments-outbound"
operations:
- name: send-message
method: POST
- type: http
namespace: splunk
baseUri: "https://barclays-splunk.splunkcloud.com:8088"
authentication:
type: bearer
token: "$secrets.splunk_hec_token"
resources:
- name: events
path: "/services/collector/event"
operations:
- name: send-event
method: POST
Calculates capital ratios, generates regulatory reports, validates against thresholds, and submits.
naftiko: "0.5"
info:
label: "Regulatory Capital Reporting Pipeline"
description: "Calculates capital ratios, generates regulatory reports, validates against thresholds, and submits."
tags:
- regulatory
- snowflake
- powerbi
- confluence
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: regulatory_capital_reporting_pipeline
description: "Orchestrate regulatory capital reporting pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-confluence
type: call
call: "confluence.create-resource"
with:
channel: "{{notification_channel}}"
text: "Regulatory Capital Reporting Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: confluence
baseUri: "https://barclays.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
Orchestrates quarterly regulatory report generation by extracting data from Snowflake, generating the report in Power BI, uploading to SharePoint, and creating a Jira sign-off task for the compliance officer.
naftiko: "0.5"
info:
label: "Regulatory Report Generation"
description: "Orchestrates quarterly regulatory report generation by extracting data from Snowflake, generating the report in Power BI, uploading to SharePoint, and creating a Jira sign-off task for the compliance officer."
tags:
- compliance
- regulatory-reporting
- snowflake
- power-bi
- sharepoint
- jira
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: generate-regulatory-report
description: "Generate and distribute a quarterly regulatory report with sign-off tracking."
inputParameters:
- name: report_type
in: body
type: string
description: "Report type (e.g. COREP, FINREP, LCR, NSFR)."
- name: reporting_period
in: body
type: string
description: "Reporting period in YYYY-QN format."
steps:
- name: extract-data
type: call
call: "snowflake.execute-query"
with:
statement: "CALL regulatory.generate_report_data('{{report_type}}', '{{reporting_period}}')"
warehouse: "REGULATORY_WH"
database: "REGULATORY_DB"
- name: refresh-report
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "regulatory-reports"
dataset_id: "{{report_type}}-dataset"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "regulatory_reporting"
folder_path: "Reports/{{reporting_period}}/{{report_type}}"
file_name: "{{report_type}}_{{reporting_period}}.pdf"
- name: create-signoff
type: call
call: "jira.create-issue"
with:
project: "REG"
issue_type: "Task"
summary: "Sign-off required: {{report_type}} report for {{reporting_period}}"
description: "Report available at {{upload-report.url}}. Please review and approve."
priority: "High"
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
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/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves pending access certification items from SailPoint for a given reviewer. Returns identity name, entitlement, and application for each pending review.
naftiko: "0.5"
info:
label: "SailPoint Access Certification Review"
description: "Retrieves pending access certification items from SailPoint for a given reviewer. Returns identity name, entitlement, and application for each pending review."
tags:
- security
- identity-governance
- sailpoint
capability:
exposes:
- type: mcp
namespace: identity-governance
port: 8080
tools:
- name: get-pending-certifications
description: "Retrieve pending access certification items for a reviewer."
inputParameters:
- name: reviewer_id
in: body
type: string
description: "SailPoint reviewer identity ID."
call: "sailpoint.get-certifications"
with:
reviewer_id: "{{reviewer_id}}"
outputParameters:
- name: pending_items
type: array
mapping: "$.items"
consumes:
- type: http
namespace: sailpoint
baseUri: "https://barclays.api.identitynow.com/v3"
authentication:
type: bearer
token: "$secrets.sailpoint_token"
resources:
- name: certifications
path: "/certifications?filters=reviewer.id eq \"{{reviewer_id}}\" and phase eq \"ACTIVE\""
inputParameters:
- name: reviewer_id
in: query
operations:
- name: get-certifications
method: GET
Orchestrates sanctions list updates by fetching the latest list from Refinitiv, updating the screening database in Snowflake, triggering a re-screening batch on Azure Databricks, and notifying compliance via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Sanctions List Update Propagation"
description: "Orchestrates sanctions list updates by fetching the latest list from Refinitiv, updating the screening database in Snowflake, triggering a re-screening batch on Azure Databricks, and notifying compliance via Microsoft Outlook."
tags:
- compliance
- sanctions
- refinitiv
- snowflake
- azure-databricks
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: sanctions-management
port: 8080
tools:
- name: propagate-sanctions-update
description: "Propagate a sanctions list update across screening infrastructure and notify compliance."
inputParameters:
- name: list_type
in: body
type: string
description: "Sanctions list type (OFAC, EU, UN, HMT)."
steps:
- name: fetch-list
type: call
call: "refinitiv.get-sanctions-list"
with:
list_type: "{{list_type}}"
- name: update-database
type: call
call: "snowflake.execute-query"
with:
statement: "CALL compliance.update_sanctions_list('{{list_type}}', '{{fetch-list.version}}')"
warehouse: "COMPLIANCE_WH"
database: "COMPLIANCE_DB"
- name: trigger-rescreening
type: call
call: "databricks.run-job"
with:
job_id: "sanctions-rescreening"
parameters: "{\"list_type\":\"{{list_type}}\",\"version\":\"{{fetch-list.version}}\"}"
- name: notify-compliance
type: call
call: "outlook.send-mail"
with:
to: "sanctions-team@barclays.com"
subject: "Sanctions List Updated: {{list_type}} v{{fetch-list.version}}"
body: "{{list_type}} sanctions list updated to version {{fetch-list.version}}. Rescreening batch initiated. {{trigger-rescreening.affected_entities}} entities queued for review."
consumes:
- type: http
namespace: refinitiv
baseUri: "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2"
authentication:
type: bearer
token: "$secrets.refinitiv_api_key"
resources:
- name: sanctions-lists
path: "/lists/{{list_type}}"
inputParameters:
- name: list_type
in: path
operations:
- name: get-sanctions-list
method: GET
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: databricks
baseUri: "https://barclays.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/compliance-notices@barclays.com/sendMail"
operations:
- name: send-mail
method: POST
Orchestrates expense report processing by pulling the report from SAP Concur, validating against policy limits in Oracle, logging the approval in ServiceNow, and notifying the submitter via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Approval"
description: "Orchestrates expense report processing by pulling the report from SAP Concur, validating against policy limits in Oracle, logging the approval in ServiceNow, and notifying the submitter via Microsoft Teams."
tags:
- finance
- expense-management
- sap-concur
- oracle-database
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: expense-management
port: 8080
tools:
- name: process-expense-report
description: "Process and approve an expense report with policy validation and audit logging."
inputParameters:
- name: report_id
in: body
type: string
description: "SAP Concur expense report ID."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
- name: validate-policy
type: call
call: "oracle.validate-expense-policy"
with:
department: "{{get-report.department}}"
total_amount: "{{get-report.totalAmount}}"
expense_type: "{{get-report.expenseType}}"
- name: log-approval
type: call
call: "servicenow.create-record"
with:
table: "u_expense_approvals"
short_description: "Expense approval: {{get-report.employeeName}} - {{get-report.totalAmount}} {{get-report.currency}}"
description: "Report {{report_id}}. Policy check: {{validate-policy.result}}."
- name: notify-submitter
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-report.employeeEmail}}"
text: "Your expense report {{report_id}} ({{get-report.totalAmount}} {{get-report.currency}}) has been {{validate-policy.result}}. Reference: {{log-approval.number}}."
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: oracle
baseUri: "https://barclays-ords.db.oracle.com/ords/finance/v1"
authentication:
type: bearer
token: "$secrets.oracle_ords_token"
resources:
- name: policy-validation
path: "/expense-policy/validate"
operations:
- name: validate-expense-policy
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: table-records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
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
Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
naftiko: "0.5"
info:
label: "Security Incident Response Pipeline"
description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
tags:
- security
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: security_incident_response_pipeline
description: "Orchestrate security incident response pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-splunk
type: call
call: "splunk.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-splunk.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Incident Response Pipeline step 3 complete."
consumes:
- type: http
namespace: splunk
baseUri: "https://barclays-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Retrieves a ServiceNow incident by number and returns its state, priority, assignment group, and short description. Used by support teams for quick incident lookups.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status"
description: "Retrieves a ServiceNow incident by number and returns its state, priority, assignment group, and short description. Used by support teams for quick incident lookups."
tags:
- operations
- itsm
- servicenow
capability:
exposes:
- type: mcp
namespace: itsm-support
port: 8080
tools:
- name: get-incident-status
description: "Look up a ServiceNow incident by number."
inputParameters:
- name: incident_number
in: body
type: string
description: "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://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: query
operations:
- name: get-incident
method: GET
Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management.
naftiko: "0.5"
info:
label: "SLA Compliance Monitoring Pipeline"
description: "Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management."
tags:
- operations
- datadog
- servicenow
- powerbi
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: sla_compliance_monitoring_pipeline
description: "Orchestrate sla compliance monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "SLA Compliance Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Executes a parameterized query against the Snowflake risk data warehouse to retrieve portfolio exposure by asset class. Used by risk managers for daily limit checks.
naftiko: "0.5"
info:
label: "Snowflake Risk Exposure Query"
description: "Executes a parameterized query against the Snowflake risk data warehouse to retrieve portfolio exposure by asset class. Used by risk managers for daily limit checks."
tags:
- risk-management
- data-warehouse
- snowflake
capability:
exposes:
- type: mcp
namespace: risk-analytics
port: 8080
tools:
- name: query-risk-exposure
description: "Run a portfolio exposure query on Snowflake by portfolio ID and asset class."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "Portfolio identifier."
- name: asset_class
in: body
type: string
description: "Asset class filter (e.g. equities, fixed_income, fx)."
call: "snowflake.execute-query"
with:
statement: "SELECT asset_class, SUM(notional) as total_exposure, SUM(pnl) as total_pnl FROM risk.positions WHERE portfolio_id = '{{portfolio_id}}' AND asset_class = '{{asset_class}}' GROUP BY asset_class"
warehouse: "RISK_WH"
database: "RISK_DB"
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT.
naftiko: "0.5"
info:
label: "Software License Optimization Pipeline"
description: "Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT."
tags:
- operations
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: software_license_optimization
description: "Orchestrate software license optimization pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Software License Optimization Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Searches Splunk for security events matching a given query string and time range. Used by the SOC team for rapid threat investigation.
naftiko: "0.5"
info:
label: "Splunk Security Event Search"
description: "Searches Splunk for security events matching a given query string and time range. Used by the SOC team for rapid threat investigation."
tags:
- security
- siem
- splunk
capability:
exposes:
- type: mcp
namespace: security-monitoring
port: 8080
tools:
- name: search-security-events
description: "Search Splunk for security events by query and time range."
inputParameters:
- name: search_query
in: body
type: string
description: "Splunk search query (SPL)."
- name: earliest_time
in: body
type: string
description: "Earliest time for search (e.g. -24h, -7d)."
call: "splunk.create-search"
with:
search: "{{search_query}}"
earliest_time: "{{earliest_time}}"
latest_time: "now"
consumes:
- type: http
namespace: splunk
baseUri: "https://barclays-splunk.splunkcloud.com:8089"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search-jobs
path: "/services/search/jobs"
operations:
- name: create-search
method: POST
Orchestrates a regulatory stress test by pulling portfolio positions from Bloomberg AIM, applying scenario shocks via Azure Databricks, storing results in Snowflake, generating the report in Power BI, and emailing the risk committee.
naftiko: "0.5"
info:
label: "Stress Testing Orchestrator"
description: "Orchestrates a regulatory stress test by pulling portfolio positions from Bloomberg AIM, applying scenario shocks via Azure Databricks, storing results in Snowflake, generating the report in Power BI, and emailing the risk committee."
tags:
- risk-management
- stress-testing
- bloomberg-aim
- azure-databricks
- snowflake
- power-bi
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: stress-testing
port: 8080
tools:
- name: run-stress-test
description: "Execute a full stress testing scenario across the portfolio with reporting and notification."
inputParameters:
- name: scenario_name
in: body
type: string
description: "Stress scenario name (e.g. severe_recession, rate_shock_200bps)."
- name: portfolio_id
in: body
type: string
description: "Portfolio to stress test."
steps:
- name: get-positions
type: call
call: "bloomberg-aim.get-positions"
with:
portfolio_id: "{{portfolio_id}}"
- name: apply-scenario
type: call
call: "databricks.run-job"
with:
job_id: "stress-test-engine"
parameters: "{\"scenario\":\"{{scenario_name}}\",\"positions\":{{get-positions.holdings}}}"
- name: store-results
type: call
call: "snowflake.execute-query"
with:
statement: "INSERT INTO risk.stress_test_results (portfolio_id, scenario, pnl_impact, capital_impact, run_date) VALUES ('{{portfolio_id}}', '{{scenario_name}}', '{{apply-scenario.pnl_impact}}', '{{apply-scenario.capital_impact}}', CURRENT_DATE())"
warehouse: "RISK_WH"
database: "RISK_DB"
- name: refresh-report
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "risk-reporting"
dataset_id: "stress-test-results"
- name: notify-committee
type: call
call: "outlook.send-mail"
with:
to: "risk-committee@barclays.com"
subject: "Stress Test Complete: {{scenario_name}} - Portfolio {{portfolio_id}}"
body: "Scenario: {{scenario_name}}. PnL Impact: {{apply-scenario.pnl_impact}}. Capital Impact: {{apply-scenario.capital_impact}}. Dashboard refreshed."
consumes:
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: positions
path: "/portfolios/{{portfolio_id}}/positions"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: databricks
baseUri: "https://barclays.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
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/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/risk-reporting@barclays.com/sendMail"
operations:
- name: send-mail
method: POST
Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team.
naftiko: "0.5"
info:
label: "Third-Party Integration Health Pipeline"
description: "Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team."
tags:
- integrations
- datadog
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: integrations
port: 8080
tools:
- name: third_party_integration_health_pipeline
description: "Orchestrate third-party integration health pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Third-Party Integration Health Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
After a trade is executed on Tradeweb, fetches the trade details, retrieves counterparty data from Salesforce, publishes a settlement instruction to IBM MQ, and updates the position in Bloomberg AIM.
naftiko: "0.5"
info:
label: "Trade Execution Post-Trade Enrichment"
description: "After a trade is executed on Tradeweb, fetches the trade details, retrieves counterparty data from Salesforce, publishes a settlement instruction to IBM MQ, and updates the position in Bloomberg AIM."
tags:
- trading
- post-trade
- tradeweb
- salesforce
- ibm-mq
- bloomberg-aim
capability:
exposes:
- type: mcp
namespace: trade-enrichment
port: 8080
tools:
- name: enrich-trade
description: "Enrich a completed trade with counterparty data, publish settlement instruction, and update portfolio position."
inputParameters:
- name: trade_id
in: body
type: string
description: "The Tradeweb trade identifier."
steps:
- name: get-trade
type: call
call: "tradeweb.get-trade"
with:
trade_id: "{{trade_id}}"
- name: get-counterparty
type: call
call: "salesforce.get-account"
with:
account_id: "{{get-trade.counterparty_id}}"
- name: publish-settlement
type: call
call: "ibmmq.send-message"
with:
queue: "SETTLEMENT.INSTRUCTIONS"
body: "{\"tradeId\":\"{{trade_id}}\",\"counterparty\":\"{{get-counterparty.Name}}\",\"amount\":\"{{get-trade.notional}}\",\"currency\":\"{{get-trade.currency}}\",\"settleDate\":\"{{get-trade.settlement_date}}\"}"
- name: update-aim
type: call
call: "bloomberg-aim.update-position"
with:
portfolio_id: "{{get-trade.portfolio_id}}"
security: "{{get-trade.security}}"
quantity: "{{get-trade.quantity}}"
consumes:
- type: http
namespace: tradeweb
baseUri: "https://api.tradeweb.com/v1"
authentication:
type: bearer
token: "$secrets.tradeweb_api_key"
resources:
- name: trades
path: "/trades/{{trade_id}}"
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: salesforce
baseUri: "https://barclays.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: ibmmq
baseUri: "https://barclays-mq.ibm.com/ibmmq/rest/v2"
authentication:
type: basic
username: "$secrets.ibmmq_user"
password: "$secrets.ibmmq_password"
resources:
- name: messages
path: "/messaging/qmgr/BARCMQ01/queue/{{queue}}/message"
inputParameters:
- name: queue
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: positions
path: "/portfolios/{{portfolio_id}}/positions"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: update-position
method: PUT
Orchestrates trade surveillance by pulling suspicious trade patterns from Snowflake, enriching with trader details from Workday, screening the counterparty in Refinitiv, and filing a compliance report in ServiceNow.
naftiko: "0.5"
info:
label: "Trade Surveillance Alert Processing"
description: "Orchestrates trade surveillance by pulling suspicious trade patterns from Snowflake, enriching with trader details from Workday, screening the counterparty in Refinitiv, and filing a compliance report in ServiceNow."
tags:
- compliance
- trade-surveillance
- snowflake
- workday
- refinitiv
- servicenow
capability:
exposes:
- type: mcp
namespace: trade-surveillance
port: 8080
tools:
- name: process-surveillance-alert
description: "Process a trade surveillance alert with enrichment and compliance filing."
inputParameters:
- name: alert_id
in: body
type: string
description: "Surveillance alert identifier."
- name: trader_id
in: body
type: string
description: "Workday worker ID of the trader."
steps:
- name: get-alert-details
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT * FROM compliance.surveillance_alerts WHERE alert_id = '{{alert_id}}'"
warehouse: "COMPLIANCE_WH"
database: "COMPLIANCE_DB"
- name: get-trader
type: call
call: "workday.get-worker"
with:
worker_id: "{{trader_id}}"
- name: screen-counterparty
type: call
call: "refinitiv.screen-entity"
with:
entity_name: "{{get-alert-details.counterparty_name}}"
entity_type: "organisation"
- name: file-report
type: call
call: "servicenow.create-record"
with:
table: "u_surveillance_reports"
short_description: "Surveillance Alert {{alert_id}} - Trader: {{get-trader.full_name}}"
description: "Pattern: {{get-alert-details.pattern_type}}. Counterparty screening: {{screen-counterparty.overallResult}}. Trade volume: {{get-alert-details.trade_volume}}."
priority: "2"
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/barclays"
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: refinitiv
baseUri: "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2"
authentication:
type: bearer
token: "$secrets.refinitiv_api_key"
resources:
- name: screening
path: "/cases/screeningRequest"
operations:
- name: screen-entity
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: table-records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status.
naftiko: "0.5"
info:
label: "Training Compliance Tracker Pipeline"
description: "Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status."
tags:
- compliance
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: training_compliance_tracker_pipeline
description: "Orchestrate training compliance tracker pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Training Compliance Tracker Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/barclays"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Monitors transactions for suspicious patterns, scores risk, creates alerts, and notifies compliance.
naftiko: "0.5"
info:
label: "Transaction Monitoring Pipeline"
description: "Monitors transactions for suspicious patterns, scores risk, creates alerts, and notifies compliance."
tags:
- compliance
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: transaction_monitoring_pipeline
description: "Orchestrate transaction monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Transaction Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Orchestrates a portfolio reconciliation by extracting positions from Bloomberg AIM, running the reconciliation on Trioptima, logging discrepancies in Snowflake, and creating a Jira task for the operations team.
naftiko: "0.5"
info:
label: "Trioptima Portfolio Reconciliation"
description: "Orchestrates a portfolio reconciliation by extracting positions from Bloomberg AIM, running the reconciliation on Trioptima, logging discrepancies in Snowflake, and creating a Jira task for the operations team."
tags:
- operations
- reconciliation
- bloomberg-aim
- trioptima
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: portfolio-recon
port: 8080
tools:
- name: reconcile-portfolio
description: "Run portfolio reconciliation between internal positions and Trioptima, logging breaks."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "Bloomberg AIM portfolio identifier."
- name: recon_date
in: body
type: string
description: "Reconciliation date (YYYY-MM-DD)."
steps:
- name: get-positions
type: call
call: "bloomberg-aim.get-positions"
with:
portfolio_id: "{{portfolio_id}}"
- name: run-recon
type: call
call: "trioptima.submit-reconciliation"
with:
portfolio_id: "{{portfolio_id}}"
as_of_date: "{{recon_date}}"
positions: "{{get-positions.holdings}}"
- name: log-breaks
type: call
call: "snowflake.execute-query"
with:
statement: "INSERT INTO ops.recon_breaks SELECT * FROM TABLE(RESULT_SCAN('{{run-recon.query_id}}')) WHERE status = 'BREAK'"
warehouse: "OPS_WH"
database: "OPS_DB"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "OPS"
issue_type: "Task"
summary: "Recon breaks: Portfolio {{portfolio_id}} as of {{recon_date}}"
description: "{{run-recon.break_count}} breaks found. Review in Snowflake OPS_DB.ops.recon_breaks."
consumes:
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: positions
path: "/portfolios/{{portfolio_id}}/positions"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: trioptima
baseUri: "https://api.trioptima.com/v1"
authentication:
type: bearer
token: "$secrets.trioptima_token"
resources:
- name: reconciliations
path: "/reconciliations"
operations:
- name: submit-reconciliation
method: POST
- type: http
namespace: snowflake
baseUri: "https://barclays.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: "https://barclays.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement.
naftiko: "0.5"
info:
label: "Vendor Risk Assessment Pipeline"
description: "Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement."
tags:
- procurement
- servicenow
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: vendor_risk_assessment_pipeline
description: "Orchestrate vendor risk assessment pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Vendor Risk Assessment Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://barclays.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://barclays.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Orchestrates portfolio rebalancing by pulling current positions from Bloomberg AIM, computing target allocations via Azure Machine Learning, generating trade orders, and notifying the advisor in Microsoft Teams.
naftiko: "0.5"
info:
label: "Wealth Management Portfolio Rebalancing"
description: "Orchestrates portfolio rebalancing by pulling current positions from Bloomberg AIM, computing target allocations via Azure Machine Learning, generating trade orders, and notifying the advisor in Microsoft Teams."
tags:
- wealth-management
- portfolio
- bloomberg-aim
- azure-machine-learning
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wealth-rebalance
port: 8080
tools:
- name: rebalance-portfolio
description: "Trigger a portfolio rebalancing workflow for a wealth management client."
inputParameters:
- name: portfolio_id
in: body
type: string
description: "Bloomberg AIM portfolio identifier."
- name: risk_profile
in: body
type: string
description: "Client risk profile (conservative, moderate, aggressive)."
steps:
- name: get-positions
type: call
call: "bloomberg-aim.get-positions"
with:
portfolio_id: "{{portfolio_id}}"
- name: compute-targets
type: call
call: "azure-ml.score-model"
with:
model_name: "portfolio-optimizer"
input_data: "{\"positions\":{{get-positions.holdings}},\"risk_profile\":\"{{risk_profile}}\"}"
- name: notify-advisor
type: call
call: "msteams.send-channel-message"
with:
team_id: "wealth-advisory"
channel_id: "rebalancing"
text: "Portfolio {{portfolio_id}} rebalancing complete. Target allocation: {{compute-targets.targetAllocation}}. Trades required: {{compute-targets.tradeCount}}."
consumes:
- type: http
namespace: bloomberg-aim
baseUri: "https://aim.bloomberg.com/api/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_aim_token"
resources:
- name: positions
path: "/portfolios/{{portfolio_id}}/positions"
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: azure-ml
baseUri: "https://barclays-ml.westeurope.inference.ml.azure.com"
authentication:
type: bearer
token: "$secrets.azure_ml_token"
resources:
- name: scoring
path: "/score"
operations:
- name: score-model
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves employee details from Workday by worker ID, returning name, department, manager, and hire date.
naftiko: "0.5"
info:
label: "Workday Employee Lookup"
description: "Retrieves employee details from Workday by worker ID, returning name, department, manager, and hire date."
tags:
- hr
- employee-data
- workday
capability:
exposes:
- type: mcp
namespace: hr-data
port: 8080
tools:
- name: get-employee
description: "Look up a Workday employee by worker ID."
inputParameters:
- name: worker_id
in: body
type: string
description: "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: manager
type: string
mapping: "$.worker.manager.fullName"
- name: hire_date
type: string
mapping: "$.worker.hireDate"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/barclays"
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